]>
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
)
18 utils
.addSubstituteCallback('SETUPHDIR', __noopSubst
)
19 utils
.addSubstituteCallback('OBJS', __noopSubst
)
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
27 if id.endswith('dll') or id.endswith('lib'):
34 # All libs that are part of the main library (i.e. non-contrib):
35 MAIN_LIBS
= ['mono', 'base', 'core', 'adv', 'html', 'xml', 'net',
37 # List of library names/ids for categories with different names:
38 LIBS_NOGUI
= ['xml', 'net', 'odbc']
39 LIBS_GUI
= ['core', 'adv', 'html', 'gl', 'dbgrid']
40 # Additional libraries that must be linked in:
42 'gl' : '$(EXTRALIBS_OPENGL)',
43 'xml' : '$(EXTRALIBS_XML)',
44 'html' : '$(EXTRALIBS_HTML)',
45 'odbc' : '$(EXTRALIBS_ODBC)',
49 """Returns string that can be used as library name, including name
50 suffixes, prefixes, version tags etc. This must be kept in sync
51 with variables defined in common.bkl!"""
53 return '$(WXNAMEPREFIXGUI)$(WXNAMESUFFIX)$(WXVERSIONTAG)$(HOST_SUFFIX)'
55 return '$(WXNAMEPREFIX)$(WXNAMESUFFIX)$(WXVERSIONTAG)$(HOST_SUFFIX)'
56 if wxid
in LIBS_NOGUI
:
57 return '$(WXNAMEPREFIX)$(WXNAMESUFFIX)_%s$(WXVERSIONTAG)$(HOST_SUFFIX)' % wxid
58 return '$(WXNAMEPREFIXGUI)$(WXNAMESUFFIX)_%s$(WXVERSIONTAG)$(HOST_SUFFIX)' % wxid
61 """Returns string that can be used as DLL name, including name
62 suffixes, prefixes, version tags etc. This must be kept in sync
63 with variables defined in common.bkl!"""
65 return '$(WXDLLNAMEPREFIXGUI)$(WXNAMESUFFIX)$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)'
67 return '$(WXDLLNAMEPREFIX)$(WXNAMESUFFIX)$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)'
68 if wxid
in LIBS_NOGUI
:
69 return '$(WXDLLNAMEPREFIX)$(WXNAMESUFFIX)_%s$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)' % wxid
70 return '$(WXDLLNAMEPREFIXGUI)$(WXNAMESUFFIX)_%s$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)' % wxid
73 def libToLink(wxlibname
):
74 """Returns string to pass to <sys-lib> when linking against 'wxlibname'.
75 For one of main libraries, libToLink('foo') returns '$(WXLIB_FOO)' which
76 must be defined in common.bkl as either nothing (in monolithic build) or
77 mkLibName('foo') (otherwise).
78 For contrib libraries, it returns mkDllName(wxlibname).
80 if wxlibname
in MAIN_LIBS
:
81 return '$(WXLIB_%s)' % wxlibname
.upper()
83 return mkLibName(wxlibname
)
85 def extraLdflags(wxlibname
):
86 if wxlibname
in EXTRALIBS
:
87 return EXTRALIBS
[wxlibname
]
92 VERSION_FILE
= '../../include/wx/version.h'
95 """Returns wxWindows version as a tuple: (major,minor,release)."""
98 f
= open(VERSION_FILE
, 'rt')
101 major
= minor
= release
= None
103 if not l
.startswith('#define'): continue
104 splitted
= l
.strip().split()
105 if splitted
[0] != '#define': continue
106 if len(splitted
) < 3: continue
109 if value
== None: continue
110 if name
== 'wxMAJOR_VERSION': major
= int(value
)
111 if name
== 'wxMINOR_VERSION': minor
= int(value
)
112 if name
== 'wxRELEASE_NUMBER': release
= int(value
)
113 if major
!= None and minor
!= None and release
!= None:
115 wxVersion
= (major
, minor
, release
)
118 def getVersionMajor():
119 return getVersion()[0]
120 def getVersionMinor():
121 return getVersion()[1]
122 def getVersionRelease():
123 return getVersion()[2]
126 def headersOnly(files
):
127 """Filters 'files' so that only headers are left. Used with
128 <msvc-project-files> to add headers to VC++ projects but not files such
131 def callback(cond
, sources
):
133 if sources
[0].isspace(): prf
=' '
134 if sources
[-1].isspace(): suf
=' '
136 for s
in sources
.split():
139 return '%s%s%s' % (prf
, ' '.join(retval
), suf
)
140 return utils
.substitute2(files
, callback
)
143 def makeDspDependency(lib
):
144 """Returns suitable entry for <depends-on-dsp> for main libs."""
145 return '%s:$(nativePaths(WXTOPDIR))build\msw\wx_%s.dsp' % (lib
,lib
)