X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9c605285c8e427236193c0e368e6f0700659e262..300b44a9336a9610fef256afb412e8fb6b51840f:/wxPython/config.py diff --git a/wxPython/config.py b/wxPython/config.py index af616106ed..2232b65deb 100644 --- a/wxPython/config.py +++ b/wxPython/config.py @@ -37,10 +37,10 @@ import distutils.command.clean #---------------------------------------------------------------------- VER_MAJOR = 2 # The first three must match wxWidgets -VER_MINOR = 7 +VER_MINOR = 9 VER_RELEASE = 0 VER_SUBREL = 0 # wxPython release num for x.y.z release of wxWidgets -VER_FLAGS = "pre" # release flags, such as prerelease or RC num, etc. +VER_FLAGS = "" # release flags, such as prerelease or RC num, etc. DESCRIPTION = "Cross platform GUI toolkit for Python" AUTHOR = "Robin Dunn" @@ -82,7 +82,6 @@ BUILD_GLCANVAS = 1 # If true, build the contrib/glcanvas extension module BUILD_OGL = 0 # If true, build the contrib/ogl extension module BUILD_STC = 1 # If true, build the contrib/stc extension module BUILD_GIZMOS = 1 # Build a module for the gizmos contrib library -BUILD_ANIMATE = 1 # Build a module for the animate contrib library BUILD_DLLWIDGET = 0# Build a module that enables unknown wx widgets # to be loaded from a DLL and to be used from Python. @@ -99,14 +98,14 @@ USE_SWIG = 0 # Should we actually execute SWIG, or just use the SWIG = "swig" # The swig executable to use. -BUILD_RENAMERS = 1 # Should we build the renamer modules too? +BUILD_RENAMERS = 0 # Should we build the renamer modules too? FULL_DOCS = 0 # Some docstrings are split into a basic docstring and a # details string. Setting this flag to 1 will # cause the two strings to be combined and output # as the full docstring. -UNICODE = 0 # This will pass the 'wxUSE_UNICODE' flag to SWIG and +UNICODE = 1 # This will pass the 'wxUSE_UNICODE' flag to SWIG and # will ensure that the right headers are found and the # right libs are linked. @@ -155,12 +154,12 @@ WX_CONFIG = None # Usually you shouldn't need to touch this, but you can set SYS_WX_CONFIG = None # When installing an in tree build, setup.py uses wx-config # for two different purposes. First, to determine the prefix - # where files will be installed, and secondly, to initialise - # build_options.py with the correct options for it. - # WX_CONFIG is used for the first task. SYS_WX_CONFIG may - # be set independently, to the value that should appear in - # build_options.py, if it is different to that. The default - # is to use the value of WX_CONFIG. + # where files will be installed, and secondly, to initialise + # build_options.py with the correct options for it. + # WX_CONFIG is used for the first task. SYS_WX_CONFIG may + # be set independently, to the value that should appear in + # build_options.py, if it is different to that. The default + # is to use the value of WX_CONFIG. WXPORT = 'gtk2' # On Linux/Unix there are several ports of wxWidgets available. # Setting this value lets you select which will be used for @@ -178,7 +177,7 @@ CONTRIBS_INC = "" # A dir to add as an -I flag when compiling the contribs # Some MSW build settings -MONOLITHIC = 1 # The core wxWidgets lib can be built as either a +MONOLITHIC = 0 # The core wxWidgets lib can be built as either a # single monolithic DLL or as a collection of DLLs. # This flag controls which set of libs will be used # on Windows. (For other platforms it is automatic @@ -255,7 +254,7 @@ WXPYTHON_TYPE_TABLE = '_wxPython_table' #---------------------------------------------------------------------- # Boolean (int) flags -for flag in [ 'BUILD_ACTIVEX', 'BUILD_ANIMATE', 'BUILD_DLLWIDGET', +for flag in [ 'BUILD_ACTIVEX', 'BUILD_DLLWIDGET', 'BUILD_GIZMOS', 'BUILD_GLCANVAS', 'BUILD_OGL', 'BUILD_STC', 'CORE_ONLY', 'PREP_ONLY', 'USE_SWIG', 'UNICODE', @@ -271,7 +270,8 @@ for flag in [ 'BUILD_ACTIVEX', 'BUILD_ANIMATE', 'BUILD_DLLWIDGET', # String options for option in ['WX_CONFIG', 'SYS_WX_CONFIG', 'WXDLLVER', 'BUILD_BASE', - 'WXPORT', 'SWIG', 'CONTRIBS_INC', 'WXPY_SRC', 'FLAVOUR', + 'WXPORT', 'SWIG', 'CONTRIBS_INC', 'WXPY_SRC', 'FLAVOUR', + 'VER_FLAGS', ]: for x in range(len(sys.argv)): if sys.argv[x].find(option) == 0: @@ -283,41 +283,6 @@ for option in ['WX_CONFIG', 'SYS_WX_CONFIG', 'WXDLLVER', 'BUILD_BASE', sys.argv = filter(None, sys.argv) -#---------------------------------------------------------------------- -# build options file -#---------------------------------------------------------------------- - -if SYS_WX_CONFIG is None: - SYS_WX_CONFIG = WX_CONFIG - -build_options_template = """ -UNICODE=%d -UNDEF_NDEBUG=%d -INSTALL_MULTIVERSION=%d -FLAVOUR="%s" -EP_ADD_OPTS=%d -EP_FULL_VER=%d -WX_CONFIG="%s" -WXPORT="%s" -MONOLITHIC=%d -FINAL=%d -HYBRID=%d -""" % (UNICODE, UNDEF_NDEBUG, INSTALL_MULTIVERSION, FLAVOUR, EP_ADD_OPTS, - EP_FULL_VER, SYS_WX_CONFIG, WXPORT, MONOLITHIC, FINAL, HYBRID) - -try: - from build_options import * -except: - build_options_file = os.path.join(os.path.dirname(__file__), "build_options.py") - if not os.path.exists(build_options_file): - try: - myfile = open(build_options_file, "w") - myfile.write(build_options_template) - myfile.close() - except: - print "WARNING: Unable to create build_options.py." - - #---------------------------------------------------------------------- # some helper functions #---------------------------------------------------------------------- @@ -363,11 +328,6 @@ def run_swig(files, dir, gendir, package, USE_SWIG, force, swig_args, if USE_SWIG and not os.path.exists(os.path.join(dir, gendir)): os.mkdir(os.path.join(dir, gendir)) - if USE_SWIG and not os.path.exists(os.path.join("docs", "xml-raw")): - if not os.path.exists("docs"): - os.mkdir("docs") - os.mkdir(os.path.join("docs", "xml-raw")) - sources = [] if add_under: pre = '_' @@ -378,7 +338,6 @@ def run_swig(files, dir, gendir, package, USE_SWIG, force, swig_args, i_file = os.path.join(dir, file) py_file = os.path.join(dir, gendir, pre+basefile+'.py') cpp_file = os.path.join(dir, gendir, pre+basefile+'_wrap.cpp') - xml_file = os.path.join("docs", "xml-raw", basefile+pre+'_swig.xml') if add_under: interface = ['-interface', '_'+basefile+'_'] @@ -422,7 +381,7 @@ def run_swig(files, dir, gendir, package, USE_SWIG, force, swig_args, # Then run swig for real cmd = [ swig_cmd ] + swig_args + interface + \ - ['-I'+dir, '-o', cpp_file, '-xmlout', xml_file, i_file] + ['-I'+dir, '-o', cpp_file, i_file] msg(' '.join(cmd)) spawn(cmd) @@ -434,6 +393,18 @@ def run_swig(files, dir, gendir, package, USE_SWIG, force, swig_args, return sources +def swig_version(): + # It may come on either stdout or stderr, depending on the + # version, so read both. + i, o, e = os.popen3(SWIG + ' -version', 't') + stext = o.read() + e.read() + import re + match = re.search(r'[0-9]+\.[0-9]+\.[0-9]+$', stext, re.MULTILINE) + if not match: + raise 'NotFound' + SVER = match.group(0) + return SVER + # Specializations of some distutils command classes class wx_smart_install_data(distutils.command.install_data.install_data): @@ -531,6 +502,7 @@ def build_locale_dir(destdir, verbose=1): moFiles = glob.glob(opj(WXDIR, 'locale', '*.mo')) for src in moFiles: lang = os.path.splitext(os.path.basename(src))[0] + #dest = opj(destdir, lang) dest = opj(destdir, lang, 'LC_MESSAGES') mkpath(dest, verbose=verbose) copy_file(src, opj(dest, 'wxstd.mo'), update=1, verbose=verbose) @@ -580,6 +552,19 @@ def makeLibName(name): return [libname] +def findLib(name, libdirs): + name = makeLibName(name)[0] + if os.name == 'posix': + dirs = libdirs + ['/usr/lib', '/usr/local/lib'] + name = 'lib'+name + else: + dirs = libdirs[:] + for d in dirs: + p = os.path.join(d, name) + if glob.glob(p+'*') != []: + return True + return False + def adjustCFLAGS(cflags, defines, includes): '''Extract the raw -I, -D, and -U flags and put them into @@ -602,7 +587,7 @@ def adjustCFLAGS(cflags, defines, includes): -def adjustLFLAGS(lfags, libdirs, libs): +def adjustLFLAGS(lflags, libdirs, libs): '''Extract the -L and -l flags and put them in libdirs and libs as needed''' newLFLAGS = [] for flag in lflags: @@ -613,7 +598,11 @@ def adjustLFLAGS(lfags, libdirs, libs): else: newLFLAGS.append(flag) - return newLFLAGS + # remove any flags for universal binaries, we'll get those from + # distutils instead + return [flag for flag in newLFLAGS + if flag not in ['-isysroot', '-arch', 'ppc', 'i386'] and + not flag.startswith('/Developer') ] @@ -623,11 +612,13 @@ def getExtraPath(shortVer=True, addOpts=False): if shortVer: # short version, just Major.Minor ep = "wx-%d.%d" % (VER_MAJOR, VER_MINOR) - + # plus release if minor is odd if VER_MINOR % 2 == 1: ep += ".%d" % VER_RELEASE + ##ep = "wx-%d.%d.%d" % (VER_MAJOR, VER_MINOR, VER_RELEASE) + else: # long version, full version ep = "wx-%d.%d.%d.%d" % (VER_MAJOR, VER_MINOR, VER_RELEASE, VER_SUBREL) @@ -652,7 +643,6 @@ if CORE_ONLY: BUILD_GIZMOS = 0 BUILD_DLLWIDGET = 0 BUILD_ACTIVEX = 0 - BUILD_ANIMATE = 0 if debug: FINAL = 0 @@ -700,6 +690,7 @@ if os.name == 'nt': ('WXUSINGDLL', '1'), ('SWIG_TYPE_TABLE', WXPYTHON_TYPE_TABLE), + ('SWIG_PYTHON_OUTPUT_TUPLE', None), ('WXP_USE_THREAD', '1'), ] @@ -712,6 +703,9 @@ if os.name == 'nt': if not FINAL or HYBRID: defines.append( ('__WXDEBUG__', None) ) + if UNICODE: + defines.append( ('wxUSE_UNICODE', 1) ) + libdirs = [ opj(WXDIR, 'lib', 'vc_dll') ] if MONOLITHIC: libs = makeLibName('') @@ -722,7 +716,6 @@ if os.name == 'nt': makeLibName('core')[0], makeLibName('adv')[0], makeLibName('html')[0], - makeLibName('xrc')[0], ] libs = libs + ['kernel32', 'user32', 'gdi32', 'comdlg32', @@ -754,7 +747,7 @@ elif os.name == 'posix': WXDIR = '..' includes = ['include', 'src'] defines = [('SWIG_TYPE_TABLE', WXPYTHON_TYPE_TABLE), - ('HAVE_CONFIG_H', None), + ('SWIG_PYTHON_OUTPUT_TUPLE', None), ('WXP_USE_THREAD', '1'), ] if UNDEF_NDEBUG: @@ -782,6 +775,7 @@ elif os.name == 'posix': cflags.append('-O3') lflags = os.popen(WX_CONFIG + ' --libs', 'r').read()[:-1] + MONOLITHIC = (lflags.find("_xrc") == -1) lflags = lflags.split() WXBASENAME = os.popen(WX_CONFIG + ' --basename').read()[:-1] @@ -836,16 +830,49 @@ else: raise 'Sorry, platform not supported...' +#---------------------------------------------------------------------- +# build options file +#---------------------------------------------------------------------- + +if SYS_WX_CONFIG is None: + SYS_WX_CONFIG = WX_CONFIG + +build_options_template = """ +UNICODE=%d +UNDEF_NDEBUG=%d +INSTALL_MULTIVERSION=%d +FLAVOUR="%s" +EP_ADD_OPTS=%d +EP_FULL_VER=%d +WX_CONFIG="%s" +WXPORT="%s" +MONOLITHIC=%d +FINAL=%d +HYBRID=%d +""" % (UNICODE, UNDEF_NDEBUG, INSTALL_MULTIVERSION, FLAVOUR, EP_ADD_OPTS, + EP_FULL_VER, SYS_WX_CONFIG, WXPORT, MONOLITHIC, FINAL, HYBRID) + +try: + from build_options import * +except: + build_options_file = os.path.join(os.path.dirname(__file__), "build_options.py") + if not os.path.exists(build_options_file): + try: + myfile = open(build_options_file, "w") + myfile.write(build_options_template) + myfile.close() + except: + print "WARNING: Unable to create build_options.py." + + #---------------------------------------------------------------------- # post platform setup checks and tweaks, create the full version string #---------------------------------------------------------------------- if UNICODE: BUILD_BASE = BUILD_BASE + '.unicode' - ##VER_FLAGS += 'u' if os.path.exists('DAILY_BUILD'): - VER_FLAGS += '.' + open('DAILY_BUILD').read().strip() VERSION = "%s.%s.%s.%s%s" % (VER_MAJOR, VER_MINOR, VER_RELEASE, @@ -873,12 +900,22 @@ i_files_includes = [ '-I' + opj(WXPY_SRC, 'src'), swig_cmd = SWIG swig_force = force swig_args = ['-c++', - '-Wall', + #'-Wall', '-python', '-new_repr', '-modern', '-D'+WXPLAT, ] + i_files_includes + +if USE_SWIG: + SVER = swig_version() + if int(SVER[-2:]) >= 29: + swig_args += [ '-fastdispatch', + '-fvirtual', + '-fastinit', + '-fastunpack', + #'-outputtuple', Currently setting this with a -D define above + ] if UNICODE: swig_args.append('-DwxUSE_UNICODE') @@ -1025,7 +1062,6 @@ class BuildRenamers: # do a depth first iteration over what's left for node in topnode: doRename = False - doPtr = False addWX = False revOnly = False @@ -1034,7 +1070,6 @@ class BuildRenamers: lastClassName = name = self.GetAttr(node, "name") lastClassSymName = sym_name = self.GetAttr(node, "sym_name") doRename = True - doPtr = True if sym_name != name: name = sym_name addWX = True @@ -1092,8 +1127,6 @@ class BuildRenamers: if addWX and not old.startswith('wx'): old = 'wx'+old pyFile.write("%s = wx.%s.%s\n" % (old, modname, new)) - if doPtr: - pyFile.write("%sPtr = wx.%s.%sPtr\n" % (old, modname, new)) #---------------------------------------------------------------------------