X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c278542bdf19b69545cbf4434dce4bac5a03d0df..b6294124ecb7b6b72e4ef0b72e2934d74f56e65b:/wxPython/config.py diff --git a/wxPython/config.py b/wxPython/config.py index 4e59bd278f..069da05942 100644 --- a/wxPython/config.py +++ b/wxPython/config.py @@ -27,6 +27,7 @@ from distutils.dir_util import mkpath from distutils.dep_util import newer from distutils.spawn import spawn +import distutils.command.install import distutils.command.install_data import distutils.command.install_headers import distutils.command.clean @@ -37,8 +38,8 @@ import distutils.command.clean VER_MAJOR = 2 # The first three must match wxWidgets VER_MINOR = 5 -VER_RELEASE = 2 -VER_SUBREL = 2 # wxPython release num for x.y.z release of wxWidgets +VER_RELEASE = 3 +VER_SUBREL = 0 # wxPython release num for x.y.z release of wxWidgets VER_FLAGS = "p" # release flags, such as prerelease num, unicode, etc. DESCRIPTION = "Cross platform GUI toolkit for Python" @@ -80,7 +81,6 @@ Topic :: Software Development :: User Interfaces BUILD_GLCANVAS = 1 # If true, build the contrib/glcanvas extension module BUILD_OGL = 1 # If true, build the contrib/ogl extension module BUILD_STC = 1 # If true, build the contrib/stc extension module -BUILD_XRC = 1 # XML based resource system BUILD_GIZMOS = 1 # Build a module for the gizmos 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. @@ -122,6 +122,21 @@ UNDEF_NDEBUG = 1 # Python 2.2 on Unix/Linux by default defines NDEBUG, NO_SCRIPTS = 0 # Don't install the tool scripts NO_HEADERS = 0 # Don't install the wxPython *.h and *.i files +INSTALL_MULTIVERSION = 1 # Install the packages such that multiple versions + # can co-exist. When turned on the wx and wxPython + # pacakges will be installed in a versioned subdir + # of site-packages, and a *.pth file will be + # 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 + # installed. + +FLAVOUR = "" # Optional flavour string to be appended to VERSION + # in MULTIVERSION installs + +INSTALL_WXRC = 0 # Should the Python version of wxrc be installed? + 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 @@ -129,7 +144,7 @@ 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. -WXPORT = 'gtk' # On Linux/Unix there are several ports of wxWidgets available. +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 # 'x11'. Curently only gtk and gtk2 works. @@ -215,11 +230,11 @@ if os.name == 'nt': #---------------------------------------------------------------------- # Boolean (int) flags -for flag in ['BUILD_GLCANVAS', 'BUILD_OGL', 'BUILD_STC', 'BUILD_XRC', +for flag in ['BUILD_GLCANVAS', 'BUILD_OGL', 'BUILD_STC', 'BUILD_GIZMOS', 'BUILD_DLLWIDGET', 'BUILD_IEWIN', 'BUILD_ACTIVEX', 'CORE_ONLY', 'PREP_ONLY', 'USE_SWIG', 'UNICODE', 'UNDEF_NDEBUG', 'NO_SCRIPTS', 'NO_HEADERS', 'BUILD_RENAMERS', - 'FULL_DOCS', + 'FULL_DOCS', 'INSTALL_MULTIVERSION', 'INSTALL_WXRC', 'FINAL', 'HYBRID', ]: for x in range(len(sys.argv)): if sys.argv[x].find(flag) == 0: @@ -230,7 +245,8 @@ for flag in ['BUILD_GLCANVAS', 'BUILD_OGL', 'BUILD_STC', 'BUILD_XRC', # String options for option in ['WX_CONFIG', 'WXDLLVER', 'BUILD_BASE', 'WXPORT', 'SWIG', - 'CONTRIBS_INC', 'WXPY_SRC']: + 'CONTRIBS_INC', 'WXPY_SRC', 'FLAVOUR', + ]: for x in range(len(sys.argv)): if sys.argv[x].find(option) == 0: pos = sys.argv[x].find('=') + 1 @@ -246,42 +262,36 @@ sys.argv = filter(None, sys.argv) #---------------------------------------------------------------------- def Verify_WX_CONFIG(): - """ Called below for the builds that need wx-config, - if WX_CONFIG is not set then tries to select the specific - wx*-config script based on build options. If not found - then it defaults to '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 + options and searches for wx-config on the PATH. """ # if WX_CONFIG hasn't been set to an explicit value then construct one. global WX_CONFIG if WX_CONFIG is None: - if debug: # TODO: Fix this. wxPython's --debug shouldn't be tied to wxWidgets... - df = 'd' - else: - df = '' - if UNICODE: - uf = 'u' - else: - uf = '' - ver2 = "%s.%s" % (VER_MAJOR, VER_MINOR) + WX_CONFIG='wx-config' port = WXPORT if port == "x11": port = "x11univ" - WX_CONFIG = 'wx%s%s%s-%s-config' % (port, uf, df, ver2) + flags = ' --toolkit=%s' % port + flags += ' --unicode=%s' % (UNICODE and 'yes' or 'no') + flags += ' --version=%s.%s' % (VER_MAJOR, VER_MINOR) searchpath = os.environ["PATH"] for p in searchpath.split(':'): - fp = os.path.join(p, WX_CONFIG) + fp = os.path.join(p, 'wx-config') if os.path.exists(fp) and os.access(fp, os.X_OK): # success msg("Found wx-config: " + fp) - WX_CONFIG = fp + msg(" Using flags: " + flags) + WX_CONFIG = fp + flags break else: - msg("WX_CONFIG not specified and %s not found on $PATH " - "defaulting to \"wx-config\"" % WX_CONFIG) - WX_CONFIG = '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 + def run_swig(files, dir, gendir, package, USE_SWIG, force, swig_args, swig_deps=[], add_under=False): @@ -404,16 +414,25 @@ class wx_extra_clean(distutils.command.clean.clean): +class wx_install(distutils.command.install.install): + """ + Turns off install_path_file + """ + def initialize_options(self): + distutils.command.install.install.initialize_options(self) + self.install_path_file = 0 + + class wx_install_headers(distutils.command.install_headers.install_headers): """ Install the header files to the WXPREFIX, with an extra dir per filename too """ - def initialize_options (self): + def initialize_options(self): self.root = None distutils.command.install_headers.install_headers.initialize_options(self) - def finalize_options (self): + def finalize_options(self): self.set_undefined_options('install', ('root', 'root')) distutils.command.install_headers.install_headers.finalize_options(self) @@ -428,7 +447,10 @@ class wx_install_headers(distutils.command.install_headers.install_headers): if root is None or WXPREFIX.startswith(root): root = '' for header, location in headers: - install_dir = os.path.normpath(root + WXPREFIX + location) + install_dir = os.path.normpath(root + + WXPREFIX + + '/include/wx-%d.%d/wx' % (VER_MAJOR, VER_MINOR) + + location) self.mkpath(install_dir) (out, _) = self.copy_file(header, install_dir) self.outfiles.append(out) @@ -491,7 +513,7 @@ def makeLibName(name): def adjustCFLAGS(cflags, defines, includes): - '''Extrace the raw -I, -D, and -U flags and put them into + '''Extract the raw -I, -D, and -U flags and put them into defines and includes as needed.''' newCFLAGS = [] for flag in cflags: @@ -512,7 +534,7 @@ def adjustCFLAGS(cflags, defines, includes): def adjustLFLAGS(lfags, libdirs, libs): - '''Extrace the -L and -l flags and put them in libdirs and libs as needed''' + '''Extract the -L and -l flags and put them in libdirs and libs as needed''' newLFLAGS = [] for flag in lflags: if flag[:2] == '-L': @@ -524,6 +546,31 @@ def adjustLFLAGS(lfags, libdirs, libs): return newLFLAGS + + +def getExtraPath(shortVer=True, addOpts=False): + """Get the dirname that wxPython will be installed under.""" + + 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 + else: + # long version, full version + ep = "wx-%d.%d.%d.%d" % (VER_MAJOR, VER_MINOR, VER_RELEASE, VER_SUBREL) + + if addOpts: + ep += "-%s-%s" % (WXPORT, (UNICODE and 'unicode' or 'ansi')) + + if FLAVOUR: + ep += "-" + FLAVOUR + + return ep + + + #---------------------------------------------------------------------- # sanity checks @@ -531,7 +578,6 @@ if CORE_ONLY: BUILD_GLCANVAS = 0 BUILD_OGL = 0 BUILD_STC = 0 - BUILD_XRC = 0 BUILD_GIZMOS = 0 BUILD_DLLWIDGET = 0 BUILD_IEWIN = 0 @@ -602,6 +648,7 @@ if os.name == 'nt': makeLibName('core')[0], makeLibName('adv')[0], makeLibName('html')[0], + makeLibName('xrc')[0], ] libs = libs + ['kernel32', 'user32', 'gdi32', 'comdlg32', @@ -757,8 +804,10 @@ if FULL_DOCS: swig_deps = [ opj(WXPY_SRC, 'src/my_typemaps.i'), + opj(WXPY_SRC, 'src/my_fragments.i'), opj(WXPY_SRC, 'src/common.swg'), opj(WXPY_SRC, 'src/pyrun.swg'), + opj(WXPY_SRC, 'src/python.swg'), ] depends = [ #'include/wx/wxPython/wxPython.h',