]>
git.saurik.com Git - wxWidgets.git/blob - build/bakefiles/wxwin.py
   2 # Helper functions for wxWidgets bakefiles 
  10 # We use 'CFG' option in places where bakefile doesn't like it, so we must 
  11 # register a substitution function for it that provides additional knowledge 
  12 # about the option (in this case that it does not contain dir separators and 
  13 # so utils.nativePaths() doesn't have to do anything with it): 
  16     # this fails in 0.1.4 and 0.1.5 has different subst.callbacks signature: 
  17     utils
.checkBakefileVersion('0.1.5')  
  18     def __noopSubst(name
, func
, caller
): 
  20 except AttributeError: 
  21     def __noopSubst(func
, name
): 
  23 utils
.addSubstituteCallback('CFG', __noopSubst
) 
  24 utils
.addSubstituteCallback('LIBDIRNAME', __noopSubst
) 
  25 utils
.addSubstituteCallback('SETUPHDIR', __noopSubst
) 
  26 utils
.addSubstituteCallback('OBJS', __noopSubst
) 
  30     """Creates wxWidgets library identifier from bakefile target ID that 
  31        follows this convention: DLLs end with 'dll', static libraries 
  32        end with 'lib'. If withPrefix=1, then _wxid is returned instead 
  34     if id.endswith('dll') or id.endswith('lib'): 
  41 # All libs that are part of the main library: 
  42 MAIN_LIBS 
= ['mono', 'base', 'core', 'adv', 'html', 'xml', 'net', 
  43              'media', 'qa', 'xrc', 'aui', 'richtext', 'stc'] 
  44 # List of library names/ids for categories with different names: 
  45 LIBS_NOGUI 
= ['xml', 'net'] 
  46 LIBS_GUI   
= ['core', 'adv', 'html', 'gl', 'qa', 'xrc', 'media', 
  47               'aui', 'richtext', 'stc'] 
  48 # Additional libraries that must be linked in: 
  50     'gl' : '$(EXTRALIBS_OPENGL)', 
  51     'xml' : '$(EXTRALIBS_XML)', 
  52     'html' : '$(EXTRALIBS_HTML)', 
  53     'adv' : '$(PLUGIN_ADV_EXTRALIBS)', 
  54     'media' : '$(EXTRALIBS_MEDIA)', 
  58     """Returns string that can be used as library name, including name 
  59        suffixes, prefixes, version tags etc. This must be kept in sync 
  60        with variables defined in common.bkl!""" 
  62         return '$(WXNAMEPREFIXGUI)$(WXNAMESUFFIX)$(WXVERSIONTAG)$(HOST_SUFFIX)' 
  64         return '$(WXNAMEPREFIX)$(WXNAMESUFFIX)$(WXVERSIONTAG)$(HOST_SUFFIX)' 
  65     if wxid 
in LIBS_NOGUI
: 
  66         return '$(WXNAMEPREFIX)$(WXNAMESUFFIX)_%s$(WXVERSIONTAG)$(HOST_SUFFIX)' % wxid
 
  67     return '$(WXNAMEPREFIXGUI)$(WXNAMESUFFIX)_%s$(WXVERSIONTAG)$(HOST_SUFFIX)' % wxid
 
  70     """Returns string that can be used as DLL name, including name 
  71        suffixes, prefixes, version tags etc. This must be kept in sync 
  72        with variables defined in common.bkl!""" 
  74         return '$(WXDLLNAMEPREFIXGUI)$(WXNAMESUFFIX)$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)' 
  76         return '$(WXDLLNAMEPREFIX)$(WXNAMESUFFIX)$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)' 
  77     if wxid 
in LIBS_NOGUI
: 
  78         return '$(WXDLLNAMEPREFIX)$(WXNAMESUFFIX)_%s$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)' % wxid
 
  79     return '$(WXDLLNAMEPREFIXGUI)$(WXNAMESUFFIX)_%s$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)' % wxid
 
  82 def libToLink(wxlibname
): 
  83     """Returns string to pass to <sys-lib> when linking against 'wxlibname'. 
  84        For one of main libraries, libToLink('foo') returns '$(WXLIB_FOO)' which 
  85        must be defined in common.bkl as either nothing (in monolithic build) or 
  86        mkLibName('foo') (otherwise). 
  88     if wxlibname 
in MAIN_LIBS
: 
  89         return '$(WXLIB_%s)' % wxlibname
.upper() 
  91         return mkLibName(wxlibname
) 
  94 def extraLdflags(wxlibname
): 
  95     if wxlibname 
in EXTRALIBS
: 
  96         return EXTRALIBS
[wxlibname
] 
 101 VERSION_FILE 
= '../../include/wx/version.h' 
 104     """Returns wxWidgets version as a tuple: (major,minor,release).""" 
 106     if wxVersion 
== None: 
 107         f 
= open(VERSION_FILE
, 'rt') 
 108         lines 
= f
.readlines() 
 110         major 
= minor 
= release 
= None 
 112             if not l
.startswith('#define'): continue 
 113             splitline 
= l
.strip().split() 
 114             if splitline
[0] != '#define': continue 
 115             if len(splitline
) < 3: continue 
 118             if value 
== None: continue 
 119             if name 
== 'wxMAJOR_VERSION': major 
= int(value
) 
 120             if name 
== 'wxMINOR_VERSION': minor 
= int(value
) 
 121             if name 
== 'wxRELEASE_NUMBER': release 
= int(value
) 
 122             if major 
!= None and minor 
!= None and release 
!= None: 
 124         wxVersion 
= (major
, minor
, release
) 
 127 def getVersionMajor(): 
 128     return getVersion()[0] 
 129 def getVersionMinor(): 
 130     return getVersion()[1] 
 131 def getVersionRelease(): 
 132     return getVersion()[2] 
 135 def headersOnly(files
): 
 136     """Filters 'files' so that only headers are left. Used with 
 137        <msvc-project-files> to add headers to VC++ projects but not files such 
 140     def callback(cond
, sources
): 
 142         if sources
[0].isspace(): prf
=' ' 
 143         if sources
[-1].isspace(): suf
=' ' 
 145         for s 
in sources
.split(): 
 148         return '%s%s%s' % (prf
, ' '.join(retval
), suf
) 
 149     return utils
.substitute2(files
, callback
) 
 152 def makeDspDependency(lib
): 
 153     """Returns suitable entry for <depends-on-dsp> for main libs.""" 
 154     return '%s:$(nativePaths(WXTOPDIR))build\\msw\\wx_%s.dsp' % (lib
,lib
)