]> git.saurik.com Git - wxWidgets.git/blame - build/bakefiles/wxwin.py
don't confuse wxDF_UNICODETEXT and wxDF_TEXT
[wxWidgets.git] / build / bakefiles / wxwin.py
CommitLineData
ddf98968 1#
77ffb593 2# Helper functions for wxWidgets bakefiles
ddf98968
VS
3#
4# $Id$
5#
6
7
cff5df9f
VS
8import utils
9
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):
404d4609
VS
14def __noopSubst(func, name):
15 return '$(%s)' % name
cff5df9f 16utils.addSubstituteCallback('CFG', __noopSubst)
404d4609 17utils.addSubstituteCallback('LIBDIRNAME', __noopSubst)
ee929bcf 18utils.addSubstituteCallback('SETUPHDIR', __noopSubst)
8004cb2b 19utils.addSubstituteCallback('OBJS', __noopSubst)
cff5df9f
VS
20
21
ddf98968 22def mk_wxid(id):
77ffb593 23 """Creates wxWidgets library identifier from bakefile target ID that
ddf98968
VS
24 follows this convention: DLLs end with 'dll', static libraries
25 end with 'lib'. If withPrefix=1, then _wxid is returned instead
26 of wxid."""
27 if id.endswith('dll') or id.endswith('lib'):
28 wxid = id[:-3]
29 else:
30 wxid = id
31 return wxid
32
33
3560dc76 34# All libs that are part of the main library (i.e. non-contrib):
83b9886f
VS
35MAIN_LIBS = ['mono', 'base', 'core', 'adv', 'html', 'xml', 'net',
36 'odbc', 'dbgrid']
ddf98968 37# List of library names/ids for categories with different names:
83b9886f
VS
38LIBS_NOGUI = ['xml', 'net', 'odbc']
39LIBS_GUI = ['core', 'adv', 'html', 'gl', 'dbgrid']
22cef566
VS
40# Additional libraries that must be linked in:
41EXTRALIBS = {
42 'gl' : '$(EXTRALIBS_OPENGL)',
43 'xml' : '$(EXTRALIBS_XML)',
c839485c 44 'html' : '$(EXTRALIBS_HTML)',
22cef566 45 'odbc' : '$(EXTRALIBS_ODBC)',
c79241a2 46 'adv' : '$(PLUGIN_ADV_EXTRALIBS)',
22cef566 47}
ddf98968
VS
48
49def mkLibName(wxid):
50 """Returns string that can be used as library name, including name
51 suffixes, prefixes, version tags etc. This must be kept in sync
52 with variables defined in common.bkl!"""
53 if wxid == 'mono':
ea66c762 54 return '$(WXNAMEPREFIXGUI)$(WXNAMESUFFIX)$(WXVERSIONTAG)$(HOST_SUFFIX)'
e6978d5b 55 if wxid == 'base':
ea66c762 56 return '$(WXNAMEPREFIX)$(WXNAMESUFFIX)$(WXVERSIONTAG)$(HOST_SUFFIX)'
e6978d5b 57 if wxid in LIBS_NOGUI:
ea66c762
VS
58 return '$(WXNAMEPREFIX)$(WXNAMESUFFIX)_%s$(WXVERSIONTAG)$(HOST_SUFFIX)' % wxid
59 return '$(WXNAMEPREFIXGUI)$(WXNAMESUFFIX)_%s$(WXVERSIONTAG)$(HOST_SUFFIX)' % wxid
ddf98968
VS
60
61def mkDllName(wxid):
62 """Returns string that can be used as DLL name, including name
63 suffixes, prefixes, version tags etc. This must be kept in sync
64 with variables defined in common.bkl!"""
65 if wxid == 'mono':
4fc5f509 66 return '$(WXDLLNAMEPREFIXGUI)$(WXNAMESUFFIX)$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)'
e6978d5b
VS
67 if wxid == 'base':
68 return '$(WXDLLNAMEPREFIX)$(WXNAMESUFFIX)$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)'
69 if wxid in LIBS_NOGUI:
4fc5f509
VS
70 return '$(WXDLLNAMEPREFIX)$(WXNAMESUFFIX)_%s$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)' % wxid
71 return '$(WXDLLNAMEPREFIXGUI)$(WXNAMESUFFIX)_%s$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)' % wxid
ddf98968
VS
72
73
74def libToLink(wxlibname):
75 """Returns string to pass to <sys-lib> when linking against 'wxlibname'.
3560dc76
VS
76 For one of main libraries, libToLink('foo') returns '$(WXLIB_FOO)' which
77 must be defined in common.bkl as either nothing (in monolithic build) or
78 mkLibName('foo') (otherwise).
79 For contrib libraries, it returns mkDllName(wxlibname).
80 """
81 if wxlibname in MAIN_LIBS:
82 return '$(WXLIB_%s)' % wxlibname.upper()
83 else:
84 return mkLibName(wxlibname)
ddf98968 85
22cef566
VS
86def extraLdflags(wxlibname):
87 if wxlibname in EXTRALIBS:
88 return EXTRALIBS[wxlibname]
89 else:
90 return ''
ddf98968
VS
91
92wxVersion = None
93VERSION_FILE = '../../include/wx/version.h'
94
95def getVersion():
77ffb593 96 """Returns wxWidgets version as a tuple: (major,minor,release)."""
ddf98968
VS
97 global wxVersion
98 if wxVersion == None:
99 f = open(VERSION_FILE, 'rt')
100 lines = f.readlines()
101 f.close()
102 major = minor = release = None
103 for l in lines:
104 if not l.startswith('#define'): continue
105 splitted = l.strip().split()
106 if splitted[0] != '#define': continue
107 if len(splitted) < 3: continue
108 name = splitted[1]
109 value = splitted[2]
110 if value == None: continue
111 if name == 'wxMAJOR_VERSION': major = int(value)
112 if name == 'wxMINOR_VERSION': minor = int(value)
113 if name == 'wxRELEASE_NUMBER': release = int(value)
114 if major != None and minor != None and release != None:
115 break
116 wxVersion = (major, minor, release)
117 return wxVersion
118
119def getVersionMajor():
120 return getVersion()[0]
121def getVersionMinor():
122 return getVersion()[1]
123def getVersionRelease():
124 return getVersion()[2]
390c0cfb
VS
125
126
127def headersOnly(files):
128 """Filters 'files' so that only headers are left. Used with
129 <msvc-project-files> to add headers to VC++ projects but not files such
130 as arrimpl.cpp."""
131
132 def callback(cond, sources):
133 prf = suf = ''
5d38306b
VS
134 if sources[0].isspace(): prf=' '
135 if sources[-1].isspace(): suf=' '
390c0cfb
VS
136 retval = []
137 for s in sources.split():
138 if s.endswith('.h'):
139 retval.append(s)
140 return '%s%s%s' % (prf, ' '.join(retval), suf)
141 return utils.substitute2(files, callback)
dce0742b
VS
142
143
144def makeDspDependency(lib):
145 """Returns suitable entry for <depends-on-dsp> for main libs."""
c79241a2 146 return '%s:$(nativePaths(WXTOPDIR))build\\msw\\wx_%s.dsp' % (lib,lib)