Skip to content

Commit

Permalink
Merge pull request wxWidgets#1208 from RobinD42/some-build-fixes
Browse files Browse the repository at this point in the history
Enable wxPython's build to check results of wxWidgets configuration

(cherry picked from commit a6f6fff)
  • Loading branch information
RobinD42 committed Apr 18, 2019
1 parent 96c41be commit 40e5ce8
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 3 deletions.
4 changes: 4 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,10 @@ Changes in this release include the following:

* Updated sip to version 4.19.16.

* Added helper functions to check results of wxWidgets configure during the
build of wxPython. Currently used to determine if the wx webview library
should be added to the link command. (#1138)




Expand Down
34 changes: 34 additions & 0 deletions buildtools/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,12 @@ def finishSetup(self, wx_config=None, debug=None):
]
self.lflags = None

# These confuse WAF, but since it already reliably picks the correct
# MSVC it shouldn't hurt to get rid of them.
for name in ['CC', 'CXX']:
if os.environ.get(name):
os.environ.pop(name)

# Other MSVC flags...
# Uncomment these to have debug info for all kinds of builds
#self.cflags += ['/Od', '/Z7']
Expand Down Expand Up @@ -570,6 +576,34 @@ def adjustLFLAGS(self, lflags, libdirs, libs):
return newLFLAGS


def checkSetup(self, build_dir, flag):
"""
Find the setup.h generated by wxWidgets and return True if the given
flag (eg. "wxUSE_WEBKIT") is enabled.
"""
def _find_setup():
for dirpath, dirnames, filenames in os.walk(build_dir):
for name in filenames:
if name == 'setup.h':
return opj(dirpath, name)
return None

setup = _find_setup()
with open(setup, 'rt') as f:
for line in f:
if flag in line:
return '1' in line.split()
return False


def findWxConfigDir(self, wx_config):
output = runcmd(wx_config + " --cflags", getOutput=True, echoCmd=False)
# We expect that the first -I flag is the path we're looking for here
configDir = output.split()[0]
assert configDir.startswith('-I')
configDir = configDir[2:]
return configDir


# We'll use a factory function so we can use the Configuration class as a singleton
_config = None
Expand Down
15 changes: 12 additions & 3 deletions wscript
Original file line number Diff line number Diff line change
Expand Up @@ -92,9 +92,11 @@ def configure(conf):
conf.env.PYTHON = conf.options.python
conf.load('python')
conf.check_python_version(minver=(2,7,0))
if isWindows:
if isWindows or isDarwin:
# Search for the Python headers without doing some stuff that could
# incorrectly fail on Windows. See my_check_python_headers below.
# incorrectly fail on Windows. Seems to help on Darwin too. See
# my_check_python_headers below.
# TODO: Check if it can/should be used on other platforms too.
conf.my_check_python_headers()
else:
conf.check_python_headers()
Expand Down Expand Up @@ -181,6 +183,9 @@ def configure(conf):


else:
# TODO: Double-check that this works when using an installed wxWidgets
wxConfigDir = cfg.findWxConfigDir(conf.options.wx_config)

# Configuration stuff for non-Windows ports using wx-config
conf.env.CFLAGS_WX = list()
conf.env.CXXFLAGS_WX = list()
Expand Down Expand Up @@ -221,8 +226,12 @@ def configure(conf):
uselib_store='WXGL', mandatory=True,
msg='Finding libs for WXGL')

if cfg.checkSetup(wxConfigDir, 'wxUSE_WEBVIEW'):
wv_libs = '--libs webview,core,net'
else:
wv_libs = '--libs core,net'
conf.check_cfg(path=conf.options.wx_config, package='',
args='--cxxflags --libs webview,core,net' + rpath,
args='--cxxflags ' + wv_libs + rpath,
uselib_store='WXWEBVIEW', mandatory=True,
msg='Finding libs for WXWEBVIEW')

Expand Down

0 comments on commit 40e5ce8

Please sign in to comment.