Just include wxWebViewChromium in the webview library if it's enabled during the build. There doesn't seem to be any reason to build a separate library for it, it's not really different from the other disabled by default wxWebView backend (Edge). And now that we don't need to link with an extra library, there is also no need to have a separate webview_chromium sample, so just add a possibility to run webview sample itself using Chromium backend by setting WX_WEBVIEW_BACKEND environment variable.
165 lines
5.8 KiB
Python
165 lines
5.8 KiB
Python
#
|
|
# Helper functions for wxWidgets bakefiles
|
|
#
|
|
#
|
|
|
|
|
|
import utils
|
|
|
|
# We use 'CFG' option in places where bakefile doesn't like it, so we must
|
|
# register a substitution function for it that provides additional knowledge
|
|
# about the option (in this case that it does not contain dir separators and
|
|
# so utils.nativePaths() doesn't have to do anything with it):
|
|
|
|
try:
|
|
# this fails in 0.1.4 and 0.1.5 has different subst.callbacks signature:
|
|
utils.checkBakefileVersion('0.1.5')
|
|
def __noopSubst(name, func, caller):
|
|
return '$(%s)' % name
|
|
except AttributeError:
|
|
def __noopSubst(func, name):
|
|
return '$(%s)' % name
|
|
utils.addSubstituteCallback('CFG', __noopSubst)
|
|
utils.addSubstituteCallback('LIBDIRNAME', __noopSubst)
|
|
utils.addSubstituteCallback('SETUPHDIR', __noopSubst)
|
|
utils.addSubstituteCallback('OBJS', __noopSubst)
|
|
|
|
|
|
def mk_wxid(id):
|
|
"""Creates wxWidgets library identifier from bakefile target ID that
|
|
follows this convention: DLLs end with 'dll', static libraries
|
|
end with 'lib'. If withPrefix=1, then _wxid is returned instead
|
|
of wxid."""
|
|
if id.endswith('dll') or id.endswith('lib'):
|
|
wxid = id[:-3]
|
|
else:
|
|
wxid = id
|
|
return wxid
|
|
|
|
|
|
# All libs that are part of the main library:
|
|
MAIN_LIBS = ['mono', 'base', 'core', 'adv', 'html', 'xml', 'net', 'webview',
|
|
'media', 'qa', 'xrc', 'aui', 'ribbon', 'propgrid', 'richtext', 'stc']
|
|
# List of library names/ids for categories with different names:
|
|
LIBS_NOGUI = ['xml', 'net']
|
|
LIBS_GUI = ['core', 'adv', 'html', 'gl', 'qa', 'xrc', 'media',
|
|
'aui', 'propgrid', 'richtext', 'stc', 'ribbon', 'webview']
|
|
# Additional ld flags
|
|
EXTRALDFLAGS = {
|
|
'webview' : '$(EXTRALDFLAGS_WEBVIEW)',
|
|
}
|
|
# Additional libraries that must be linked in:
|
|
EXTRALIBS = {
|
|
'gl' : '$(EXTRALIBS_OPENGL)',
|
|
'xml' : '$(EXTRALIBS_XML)',
|
|
'html' : '$(EXTRALIBS_HTML)',
|
|
'adv' : '$(PLUGIN_ADV_EXTRALIBS)',
|
|
'media' : '$(EXTRALIBS_MEDIA)',
|
|
'stc' : '$(EXTRALIBS_STC)',
|
|
'webview' : '$(EXTRALIBS_WEBVIEW)',
|
|
}
|
|
|
|
def mkLibName(wxid):
|
|
"""Returns string that can be used as library name, including name
|
|
suffixes, prefixes, version tags etc. This must be kept in sync
|
|
with variables defined in common.bkl!"""
|
|
if wxid == 'mono':
|
|
return '$(WXNAMEPREFIXGUI)$(WXNAMESUFFIX)$(WXVERSIONTAG)$(HOST_SUFFIX)'
|
|
if wxid == 'base':
|
|
return '$(WXNAMEPREFIX)$(WXNAMESUFFIX)$(WXVERSIONTAG)$(HOST_SUFFIX)'
|
|
if wxid in LIBS_NOGUI:
|
|
return '$(WXNAMEPREFIX)$(WXNAMESUFFIX)_%s$(WXVERSIONTAG)$(HOST_SUFFIX)' % wxid
|
|
return '$(WXNAMEPREFIXGUI)$(WXNAMESUFFIX)_%s$(WXVERSIONTAG)$(HOST_SUFFIX)' % wxid
|
|
|
|
def mkDllName(wxid):
|
|
"""Returns string that can be used as DLL name, including name
|
|
suffixes, prefixes, version tags etc. This must be kept in sync
|
|
with variables defined in common.bkl!"""
|
|
if wxid == 'mono':
|
|
return '$(WXDLLNAMEPREFIXGUI)$(WXNAMESUFFIX)$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)'
|
|
if wxid == 'base':
|
|
return '$(WXDLLNAMEPREFIX)$(WXNAMESUFFIX)$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)'
|
|
if wxid in LIBS_NOGUI:
|
|
return '$(WXDLLNAMEPREFIX)$(WXNAMESUFFIX)_%s$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)' % wxid
|
|
return '$(WXDLLNAMEPREFIXGUI)$(WXNAMESUFFIX)_%s$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)' % wxid
|
|
|
|
|
|
def libToLink(wxlibname):
|
|
"""Returns string to pass to <sys-lib> when linking against 'wxlibname'.
|
|
For one of main libraries, libToLink('foo') returns '$(WXLIB_FOO)' which
|
|
must be defined in common.bkl as either nothing (in monolithic build) or
|
|
mkLibName('foo') (otherwise).
|
|
"""
|
|
if wxlibname in MAIN_LIBS:
|
|
return '$(WXLIB_%s)' % wxlibname.upper()
|
|
else:
|
|
return mkLibName(wxlibname)
|
|
|
|
|
|
def extraLdflags(wxlibname):
|
|
if wxlibname in EXTRALDFLAGS:
|
|
return EXTRALDFLAGS[wxlibname]
|
|
else:
|
|
return ''
|
|
|
|
def extraLdlibs(wxlibname):
|
|
if wxlibname in EXTRALIBS:
|
|
return EXTRALIBS[wxlibname]
|
|
else:
|
|
return ''
|
|
|
|
wxVersion = None
|
|
VERSION_FILE = '../../include/wx/version.h'
|
|
|
|
def getVersion():
|
|
"""Returns wxWidgets version as a tuple: (major,minor,release)."""
|
|
global wxVersion
|
|
if wxVersion == None:
|
|
f = open(VERSION_FILE, 'rt')
|
|
lines = f.readlines()
|
|
f.close()
|
|
major = minor = release = None
|
|
for l in lines:
|
|
if not l.startswith('#define'): continue
|
|
splitline = l.strip().split()
|
|
if splitline[0] != '#define': continue
|
|
if len(splitline) < 3: continue
|
|
name = splitline[1]
|
|
value = splitline[2]
|
|
if value == None: continue
|
|
if name == 'wxMAJOR_VERSION': major = int(value)
|
|
if name == 'wxMINOR_VERSION': minor = int(value)
|
|
if name == 'wxRELEASE_NUMBER': release = int(value)
|
|
if major != None and minor != None and release != None:
|
|
break
|
|
wxVersion = (major, minor, release)
|
|
return wxVersion
|
|
|
|
def getVersionMajor():
|
|
return getVersion()[0]
|
|
def getVersionMinor():
|
|
return getVersion()[1]
|
|
def getVersionRelease():
|
|
return getVersion()[2]
|
|
|
|
|
|
def headersOnly(files):
|
|
"""Filters 'files' so that only headers are left. Used with
|
|
<msvc-project-files> to add headers to VC++ projects but not files such
|
|
as arrimpl.cpp."""
|
|
|
|
def callback(cond, sources):
|
|
prf = suf = ''
|
|
if sources[0].isspace(): prf=' '
|
|
if sources[-1].isspace(): suf=' '
|
|
retval = []
|
|
for s in sources.split():
|
|
if s.endswith('.h'):
|
|
retval.append(s)
|
|
return '%s%s%s' % (prf, ' '.join(retval), suf)
|
|
return utils.substitute2(files, callback)
|
|
|
|
|
|
def makeDspDependency(lib):
|
|
"""Returns suitable entry for <depends-on-dsp> for main libs."""
|
|
return '%s:$(nativePaths(WXTOPDIR))build\\msw\\wx_%s.dsp' % (lib,lib)
|