| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 | 
							- #
 
- # 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 libraries that must be linked in:
 
- EXTRALIBS = {
 
-     'gl' : '$(EXTRALIBS_OPENGL)',
 
-     'xml' : '$(EXTRALIBS_XML)',
 
-     'html' : '$(EXTRALIBS_HTML)',
 
-     'adv' : '$(PLUGIN_ADV_EXTRALIBS)',
 
-     'media' : '$(EXTRALIBS_MEDIA)',
 
- }
 
- 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 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)
 
 
  |