]>
git.saurik.com Git - wxWidgets.git/blob - build/bakefiles/wxwin.py
2 # Helper functions for wxWindows 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):
14 def __noopSubst(func
, name
):
16 utils
.addSubstituteCallback('CFG', __noopSubst
)
17 utils
.addSubstituteCallback('LIBDIRNAME', __noopSubst
)
21 """Creates wxWindows library identifier from bakefile target ID that
22 follows this convention: DLLs end with 'dll', static libraries
23 end with 'lib'. If withPrefix=1, then _wxid is returned instead
25 if id.endswith('dll') or id.endswith('lib'):
32 # All libs that are part of the main library (i.e. non-contrib):
33 MAIN_LIBS
= ['mono', 'base', 'core', 'adv', 'html', 'xml', 'net',
35 # List of library names/ids for categories with different names:
36 LIBS_NOGUI
= ['xml', 'net', 'odbc']
37 LIBS_GUI
= ['core', 'adv', 'html', 'gl', 'dbgrid']
40 """Returns string that can be used as library name, including name
41 suffixes, prefixes, version tags etc. This must be kept in sync
42 with variables defined in common.bkl!"""
44 return '$(WXNAMEPREFIXGUI)$(WXNAMESUFFIX)$(WXVERSIONTAG)$(HOST_SUFFIX)'
46 return '$(WXNAMEPREFIX)$(WXNAMESUFFIX)$(WXVERSIONTAG)$(HOST_SUFFIX)'
47 if wxid
in LIBS_NOGUI
:
48 return '$(WXNAMEPREFIX)$(WXNAMESUFFIX)_%s$(WXVERSIONTAG)$(HOST_SUFFIX)' % wxid
49 return '$(WXNAMEPREFIXGUI)$(WXNAMESUFFIX)_%s$(WXVERSIONTAG)$(HOST_SUFFIX)' % wxid
52 """Returns string that can be used as DLL name, including name
53 suffixes, prefixes, version tags etc. This must be kept in sync
54 with variables defined in common.bkl!"""
56 return '$(WXDLLNAMEPREFIXGUI)$(WXNAMESUFFIX)$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)'
58 return '$(WXDLLNAMEPREFIX)$(WXNAMESUFFIX)$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)'
59 if wxid
in LIBS_NOGUI
:
60 return '$(WXDLLNAMEPREFIX)$(WXNAMESUFFIX)_%s$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)' % wxid
61 return '$(WXDLLNAMEPREFIXGUI)$(WXNAMESUFFIX)_%s$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)' % wxid
64 def libToLink(wxlibname
):
65 """Returns string to pass to <sys-lib> when linking against 'wxlibname'.
66 For one of main libraries, libToLink('foo') returns '$(WXLIB_FOO)' which
67 must be defined in common.bkl as either nothing (in monolithic build) or
68 mkLibName('foo') (otherwise).
69 For contrib libraries, it returns mkDllName(wxlibname).
71 if wxlibname
in MAIN_LIBS
:
72 return '$(WXLIB_%s)' % wxlibname
.upper()
74 return mkLibName(wxlibname
)
78 VERSION_FILE
= '../../include/wx/version.h'
81 """Returns wxWindows version as a tuple: (major,minor,release)."""
84 f
= open(VERSION_FILE
, 'rt')
87 major
= minor
= release
= None
89 if not l
.startswith('#define'): continue
90 splitted
= l
.strip().split()
91 if splitted
[0] != '#define': continue
92 if len(splitted
) < 3: continue
95 if value
== None: continue
96 if name
== 'wxMAJOR_VERSION': major
= int(value
)
97 if name
== 'wxMINOR_VERSION': minor
= int(value
)
98 if name
== 'wxRELEASE_NUMBER': release
= int(value
)
99 if major
!= None and minor
!= None and release
!= None:
101 wxVersion
= (major
, minor
, release
)
104 def getVersionMajor():
105 return getVersion()[0]
106 def getVersionMinor():
107 return getVersion()[1]
108 def getVersionRelease():
109 return getVersion()[2]
112 def headersOnly(files
):
113 """Filters 'files' so that only headers are left. Used with
114 <msvc-project-files> to add headers to VC++ projects but not files such
117 def callback(cond
, sources
):
119 if sources
[0].isspace(): prefix
=' '
120 if sources
[-1].isspace(): suffix
=' '
122 for s
in sources
.split():
125 return '%s%s%s' % (prf
, ' '.join(retval
), suf
)
126 return utils
.substitute2(files
, callback
)