]> git.saurik.com Git - wxWidgets.git/blame - build/bakefiles/wxwin.py
more visible banner after installation
[wxWidgets.git] / build / bakefiles / wxwin.py
CommitLineData
ddf98968
VS
1#
2# Helper functions for wxWindows bakefiles
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
VS
22def mk_wxid(id):
23 """Creates wxWindows library identifier from bakefile target ID that
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']
ddf98968
VS
40
41def mkLibName(wxid):
42 """Returns string that can be used as library name, including name
43 suffixes, prefixes, version tags etc. This must be kept in sync
44 with variables defined in common.bkl!"""
45 if wxid == 'mono':
ea66c762 46 return '$(WXNAMEPREFIXGUI)$(WXNAMESUFFIX)$(WXVERSIONTAG)$(HOST_SUFFIX)'
e6978d5b 47 if wxid == 'base':
ea66c762 48 return '$(WXNAMEPREFIX)$(WXNAMESUFFIX)$(WXVERSIONTAG)$(HOST_SUFFIX)'
e6978d5b 49 if wxid in LIBS_NOGUI:
ea66c762
VS
50 return '$(WXNAMEPREFIX)$(WXNAMESUFFIX)_%s$(WXVERSIONTAG)$(HOST_SUFFIX)' % wxid
51 return '$(WXNAMEPREFIXGUI)$(WXNAMESUFFIX)_%s$(WXVERSIONTAG)$(HOST_SUFFIX)' % wxid
ddf98968
VS
52
53def mkDllName(wxid):
54 """Returns string that can be used as DLL name, including name
55 suffixes, prefixes, version tags etc. This must be kept in sync
56 with variables defined in common.bkl!"""
57 if wxid == 'mono':
4fc5f509 58 return '$(WXDLLNAMEPREFIXGUI)$(WXNAMESUFFIX)$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)'
e6978d5b
VS
59 if wxid == 'base':
60 return '$(WXDLLNAMEPREFIX)$(WXNAMESUFFIX)$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)'
61 if wxid in LIBS_NOGUI:
4fc5f509
VS
62 return '$(WXDLLNAMEPREFIX)$(WXNAMESUFFIX)_%s$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)' % wxid
63 return '$(WXDLLNAMEPREFIXGUI)$(WXNAMESUFFIX)_%s$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)' % wxid
ddf98968
VS
64
65
66def libToLink(wxlibname):
67 """Returns string to pass to <sys-lib> when linking against 'wxlibname'.
3560dc76
VS
68 For one of main libraries, libToLink('foo') returns '$(WXLIB_FOO)' which
69 must be defined in common.bkl as either nothing (in monolithic build) or
70 mkLibName('foo') (otherwise).
71 For contrib libraries, it returns mkDllName(wxlibname).
72 """
73 if wxlibname in MAIN_LIBS:
74 return '$(WXLIB_%s)' % wxlibname.upper()
75 else:
76 return mkLibName(wxlibname)
ddf98968
VS
77
78
79wxVersion = None
80VERSION_FILE = '../../include/wx/version.h'
81
82def getVersion():
83 """Returns wxWindows version as a tuple: (major,minor,release)."""
84 global wxVersion
85 if wxVersion == None:
86 f = open(VERSION_FILE, 'rt')
87 lines = f.readlines()
88 f.close()
89 major = minor = release = None
90 for l in lines:
91 if not l.startswith('#define'): continue
92 splitted = l.strip().split()
93 if splitted[0] != '#define': continue
94 if len(splitted) < 3: continue
95 name = splitted[1]
96 value = splitted[2]
97 if value == None: continue
98 if name == 'wxMAJOR_VERSION': major = int(value)
99 if name == 'wxMINOR_VERSION': minor = int(value)
100 if name == 'wxRELEASE_NUMBER': release = int(value)
101 if major != None and minor != None and release != None:
102 break
103 wxVersion = (major, minor, release)
104 return wxVersion
105
106def getVersionMajor():
107 return getVersion()[0]
108def getVersionMinor():
109 return getVersion()[1]
110def getVersionRelease():
111 return getVersion()[2]
390c0cfb
VS
112
113
114def headersOnly(files):
115 """Filters 'files' so that only headers are left. Used with
116 <msvc-project-files> to add headers to VC++ projects but not files such
117 as arrimpl.cpp."""
118
119 def callback(cond, sources):
120 prf = suf = ''
121 if sources[0].isspace(): prefix=' '
122 if sources[-1].isspace(): suffix=' '
123 retval = []
124 for s in sources.split():
125 if s.endswith('.h'):
126 retval.append(s)
127 return '%s%s%s' % (prf, ' '.join(retval), suf)
128 return utils.substitute2(files, callback)
dce0742b
VS
129
130
131def makeDspDependency(lib):
132 """Returns suitable entry for <depends-on-dsp> for main libs."""
133
134 DEPS_TABLE = {
135 'core':'base',
136 'adv':'core',
137 'html':'core',
138 'xml':'base',
139 'net':'base',
140 'odbc':'base',
141 'dbgrid':'adv,odbc',
142 }
143 if lib in DEPS_TABLE:
144 deps = ':%s' % DEPS_TABLE[lib]
145 else:
146 deps = ''
147 return '%s:$(nativePaths(WXTOPDIR))build\msw\wx_%s.dsp%s' % (lib,lib,deps)