wxWidgets/build/bakefiles/wxwin.py
Václav Slavík 3560dc761f added ability to build contrib samples
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@21727 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2003-07-06 22:47:37 +00:00

108 lines
3.8 KiB
Python

#
# Helper functions for wxWindows bakefiles
#
# $Id$
#
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):
def __noopSubst(func, opt):
return '$(%s)' % opt.name
utils.addSubstituteCallback('CFG', __noopSubst)
def mk_wxid(id):
"""Creates wxWindows 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 (i.e. non-contrib):
MAIN_LIBS = ['mono', 'base', 'core', 'html']
# List of library names/ids for categories with different names:
LIBS_NOGUI = ['']
LIBS_GUI = ['core', 'html']
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)'
if wxid == 'base':
return '$(WXNAMEPREFIX)$(WXNAMESUFFIX)$(WXVERSIONTAG)'
if wxid in LIBS_NOGUI:
return '$(WXNAMEPREFIX)$(WXNAMESUFFIX)_%s$(WXVERSIONTAG)' % wxid
return '$(WXNAMEPREFIXGUI)$(WXNAMESUFFIX)_%s$(WXVERSIONTAG)' % 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).
For contrib libraries, it returns mkDllName(wxlibname).
"""
if wxlibname in MAIN_LIBS:
return '$(WXLIB_%s)' % wxlibname.upper()
else:
return mkLibName(wxlibname)
wxVersion = None
VERSION_FILE = '../../include/wx/version.h'
def getVersion():
"""Returns wxWindows 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
splitted = l.strip().split()
if splitted[0] != '#define': continue
if len(splitted) < 3: continue
name = splitted[1]
value = splitted[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]