X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d9847fb2eda3c58586d60837308ffb39f2d0cd0d..1d88e73a3f25f16ad845b114153edd603d4970be:/wxPython/config.py diff --git a/wxPython/config.py b/wxPython/config.py index a9f0954aaf..35032e2fcd 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 = 6 -VER_RELEASE = 1 +VER_MINOR = 7 +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 = "pre" # release flags, such as prerelease or RC num, etc. DESCRIPTION = "Cross platform GUI toolkit for Python" AUTHOR = "Robin Dunn" @@ -55,8 +55,8 @@ LONG_DESCRIPTION = """\ wxPython is a GUI toolkit for Python that is a wrapper around the wxWidgets C++ GUI library. wxPython provides a large variety of window types and controls, all implemented with a native look and -feel (by using the native widgets) on the platforms it is supported -on. +feel (by using the native widgets) on the platforms upon which it is +supported. """ CLASSIFIERS = """\ @@ -87,7 +87,6 @@ BUILD_DLLWIDGET = 0# Build a module that enables unknown wx widgets # to be loaded from a DLL and to be used from Python. # Internet Explorer wrapper (experimental) -BUILD_IEWIN = 0 #(os.name == 'nt') BUILD_ACTIVEX = (os.name == 'nt') # new version of IEWIN and more @@ -130,7 +129,7 @@ INSTALL_MULTIVERSION = 1 # Install the packages such that multiple versions # created that adds that dir to the sys.path. In # addition, a wxselect.py module will be installed # to site-pacakges that will allow applications to - # choose a specific version if more than one are + # choose a specific version if more than one is # installed. FLAVOUR = "" # Optional flavour string to be appended to VERSION @@ -139,8 +138,14 @@ FLAVOUR = "" # Optional flavour string to be appended to VERSION EP_ADD_OPTS = 1 # When doing MULTIVERSION installs the wx port and # ansi/unicode settings can optionally be added to the # subdir path used in site-packages - - + +EP_FULL_VER = 0 # When doing MULTIVERSION installs the default is to + # put only 2 or 3 (depending on stable/unstable) of + # the version compnonents into the "extra path" + # subdir of site-packages. Setting this option to + # 1 will cause the full 4 components of the version + # number to be used instead. + WX_CONFIG = None # Usually you shouldn't need to touch this, but you can set # it to pass an alternate version of wx-config or alternate # flags, eg. as required by the .deb in-tree build. By @@ -148,6 +153,15 @@ WX_CONFIG = None # Usually you shouldn't need to touch this, but you can set # version, port, etc. and it will be looked for on the # default $PATH. +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. + WXPORT = 'gtk2' # On Linux/Unix there are several ports of wxWidgets available. # Setting this value lets you select which will be used for # the wxPython build. Possibilites are 'gtk', 'gtk2' and @@ -242,11 +256,11 @@ WXPYTHON_TYPE_TABLE = '_wxPython_table' # Boolean (int) flags for flag in [ 'BUILD_ACTIVEX', 'BUILD_ANIMATE', 'BUILD_DLLWIDGET', - 'BUILD_GIZMOS', 'BUILD_GLCANVAS', 'BUILD_IEWIN', + 'BUILD_GIZMOS', 'BUILD_GLCANVAS', 'BUILD_OGL', 'BUILD_STC', 'CORE_ONLY', 'PREP_ONLY', 'USE_SWIG', 'UNICODE', 'UNDEF_NDEBUG', 'NO_SCRIPTS', 'NO_HEADERS', 'BUILD_RENAMERS', - 'FULL_DOCS', 'INSTALL_MULTIVERSION', 'EP_ADD_OPTS', + 'FULL_DOCS', 'INSTALL_MULTIVERSION', 'EP_ADD_OPTS', 'EP_FULL_VER', 'MONOLITHIC', 'FINAL', 'HYBRID', ]: for x in range(len(sys.argv)): if sys.argv[x].find(flag) == 0: @@ -256,8 +270,8 @@ for flag in [ 'BUILD_ACTIVEX', 'BUILD_ANIMATE', 'BUILD_DLLWIDGET', sys.argv[x] = '' # String options -for option in ['WX_CONFIG', 'WXDLLVER', 'BUILD_BASE', 'WXPORT', 'SWIG', - 'CONTRIBS_INC', 'WXPY_SRC', 'FLAVOUR', +for option in ['WX_CONFIG', 'SYS_WX_CONFIG', 'WXDLLVER', 'BUILD_BASE', + 'WXPORT', 'SWIG', 'CONTRIBS_INC', 'WXPY_SRC', 'FLAVOUR', ]: for x in range(len(sys.argv)): if sys.argv[x].find(option) == 0: @@ -273,19 +287,23 @@ 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, - WX_CONFIG, WXPORT, MONOLITHIC, FINAL, HYBRID) + EP_FULL_VER, SYS_WX_CONFIG, WXPORT, MONOLITHIC, FINAL, HYBRID) try: from build_options import * @@ -306,7 +324,7 @@ except: def Verify_WX_CONFIG(): """ Called below for the builds that need wx-config, if WX_CONFIG - is not set then determins the flags needed based on build + is not set then determines the flags needed based on build options and searches for wx-config on the PATH. """ # if WX_CONFIG hasn't been set to an explicit value then construct one. @@ -335,7 +353,7 @@ def Verify_WX_CONFIG(): msg("ERROR: WX_CONFIG not specified and wx-config not found on the $PATH") # should we exit? - # TODO: exeucte WX_CONFIG --list and verify a matching config is found + # TODO: execute WX_CONFIG --list and verify a matching config is found def run_swig(files, dir, gendir, package, USE_SWIG, force, swig_args, @@ -345,11 +363,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 = '_' @@ -360,7 +373,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+'_'] @@ -381,7 +393,7 @@ def run_swig(files, dir, gendir, package, USE_SWIG, force, swig_args, pass if force or newer(i_file, py_file) or newer(i_file, cpp_file): - ## we need forward slashes here even on win32 + ## we need forward slashes here, even on win32 #cpp_file = opj(cpp_file) #'/'.join(cpp_file.split('\\')) #i_file = opj(i_file) #'/'.join(i_file.split('\\')) @@ -404,7 +416,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) @@ -416,6 +428,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): @@ -633,7 +657,6 @@ if CORE_ONLY: BUILD_STC = 0 BUILD_GIZMOS = 0 BUILD_DLLWIDGET = 0 - BUILD_IEWIN = 0 BUILD_ACTIVEX = 0 BUILD_ANIMATE = 0 @@ -683,6 +706,7 @@ if os.name == 'nt': ('WXUSINGDLL', '1'), ('SWIG_TYPE_TABLE', WXPYTHON_TYPE_TABLE), + ('SWIG_PYTHON_OUTPUT_TUPLE', None), ('WXP_USE_THREAD', '1'), ] @@ -695,6 +719,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('') @@ -737,7 +764,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: @@ -752,6 +779,7 @@ elif os.name == 'posix': # uncomment this block to add the right flags to the link step and build # again. ## if os.uname()[0] == 'SunOS': + ## import commands ## libs.append('gcc') ## libdirs.append(commands.getoutput("gcc -print-search-dirs | grep '^install' | awk '{print $2}'")[:-1]) @@ -855,15 +883,22 @@ i_files_includes = [ '-I' + opj(WXPY_SRC, 'src'), swig_cmd = SWIG swig_force = force swig_args = ['-c++', - '-Wall', - '-nodefault', - + #'-Wall', '-python', - '-keyword', '-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') @@ -1010,7 +1045,6 @@ class BuildRenamers: # do a depth first iteration over what's left for node in topnode: doRename = False - doPtr = False addWX = False revOnly = False @@ -1019,7 +1053,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 @@ -1077,8 +1110,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)) #---------------------------------------------------------------------------