summaryrefslogtreecommitdiffstats
path: root/python/sip/configure.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/sip/configure.py')
-rw-r--r--python/sip/configure.py417
1 files changed, 0 insertions, 417 deletions
diff --git a/python/sip/configure.py b/python/sip/configure.py
deleted file mode 100644
index e5c55295..00000000
--- a/python/sip/configure.py
+++ /dev/null
@@ -1,417 +0,0 @@
-# This script handles the SIP configuration and generates the Makefiles.
-#
-# Copyright (c) 2007
-# Riverbank Computing Limited <info@riverbankcomputing.co.uk>
-#
-# This file is part of SIP.
-#
-# This copy of SIP is licensed for use under the terms of the SIP License
-# Agreement. See the file LICENSE for more details.
-#
-# SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-
-import sys
-import os
-import string
-import glob
-import getopt
-
-import siputils
-
-
-# Initialise the globals.
-sip_version = 0x040600
-sip_version_str = "4.6"
-py_version = sys.hexversion >> 8
-plat_py_site_dir = None
-plat_py_inc_dir = None
-plat_py_conf_inc_dir = None
-plat_py_lib_dir = None
-plat_sip_dir = None
-plat_bin_dir = None
-platform_specs = []
-default_platform = None
-
-# Command line options.
-opt_platform = None
-opt_sipbindir = None
-opt_sipmoddir = None
-opt_sipincdir = None
-opt_sipsipdir = None
-opt_static = 0
-opt_debug = 0
-opt_export_all = 0
-opt_universal = ''
-
-# The names of build macros extracted from the platform specific configuration
-# files.
-build_macro_names = [
- "DEFINES", "CONFIG",
- "CC",
- "CFLAGS",
- "CFLAGS_RELEASE", "CFLAGS_DEBUG",
- "CFLAGS_CONSOLE", "CFLAGS_SHLIB", "CFLAGS_THREAD",
- "CFLAGS_MT", "CFLAGS_MT_DBG", "CFLAGS_MT_DLL", "CFLAGS_MT_DLLDBG",
- "CFLAGS_EXCEPTIONS_ON", "CFLAGS_EXCEPTIONS_OFF",
- "CFLAGS_RTTI_ON", "CFLAGS_RTTI_OFF",
- "CFLAGS_STL_ON", "CFLAGS_STL_OFF",
- "CFLAGS_WARN_ON", "CFLAGS_WARN_OFF",
- "CHK_DIR_EXISTS", "COPY",
- "CXX",
- "CXXFLAGS",
- "CXXFLAGS_RELEASE", "CXXFLAGS_DEBUG",
- "CXXFLAGS_CONSOLE", "CXXFLAGS_SHLIB", "CXXFLAGS_THREAD",
- "CXXFLAGS_MT", "CXXFLAGS_MT_DBG", "CXXFLAGS_MT_DLL", "CXXFLAGS_MT_DLLDBG",
- "CXXFLAGS_EXCEPTIONS_ON", "CXXFLAGS_EXCEPTIONS_OFF",
- "CXXFLAGS_RTTI_ON", "CXXFLAGS_RTTI_OFF",
- "CXXFLAGS_STL_ON", "CXXFLAGS_STL_OFF",
- "CXXFLAGS_WARN_ON", "CXXFLAGS_WARN_OFF",
- "DEL_FILE",
- "EXTENSION_SHLIB", "EXTENSION_PLUGIN",
- "INCDIR", "INCDIR_X11", "INCDIR_OPENGL",
- "LIBS_CORE", "LIBS_GUI", "LIBS_NETWORK", "LIBS_OPENGL",
- "LINK", "LINK_SHLIB", "AIX_SHLIB", "LINK_SHLIB_CMD",
- "LFLAGS", "LFLAGS_CONSOLE", "LFLAGS_CONSOLE_DLL", "LFLAGS_DEBUG",
- "LFLAGS_DLL",
- "LFLAGS_PLUGIN", "LFLAGS_RELEASE", "LFLAGS_SHLIB", "LFLAGS_SONAME",
- "LFLAGS_THREAD", "LFLAGS_WINDOWS", "LFLAGS_WINDOWS_DLL", "LFLAGS_OPENGL",
- "LIBDIR", "LIBDIR_X11", "LIBDIR_OPENGL",
- "LIBS", "LIBS_CONSOLE", "LIBS_OPENGL", "LIBS_OPENGL", "LIBS_RT",
- "LIBS_RTMT", "LIBS_THREAD", "LIBS_WINDOWS", "LIBS_X11",
- "MAKEFILE_GENERATOR",
- "MKDIR",
- "RPATH",
- "AR", "RANLIB", "LIB", "STRIP"
-]
-
-
-def usage(rcode = 2):
- """Display a usage message and exit.
-
- rcode is the return code passed back to the calling process.
- """
- print "Usage:"
- print " python configure.py [-h] [-b dir] [-d dir] [-e dir] [-k] [-n] [-p plat] [-u] [-v dir] option=value option+=value ..."
- print "where:"
- print " -h display this help message"
- print " -b dir where the SIP code generator will be installed [default %s]" % opt_sipbindir
- print " -d dir where the SIP module will be installed [default %s]" % opt_sipmoddir
- print " -e dir where the SIP header file will be installed [default %s]" % opt_sipincdir
- print " -k build the SIP module as a static library"
- print " -n build the SIP code generator and module as universal binaries on MacOS/X"
- print " -p plat the platform/compiler configuration [default %s]" % default_platform
- print " -u build with debugging symbols"
- print " -v dir where .sip files are normally installed [default %s]" % opt_sipsipdir
-
- # Display the different platform/compilers.
- print
- print "The following platform/compiler configurations are supported:"
- print
-
- platform_specs.sort()
-
- ss = ""
- sep = ""
- for s in platform_specs:
- ss = ss + sep + s
- sep = ", "
-
- print siputils.format(ss, 2)
-
- # Display the different build macros.
- print
- print "The following options may be used to adjust the compiler configuration:"
- print
-
- build_macro_names.sort()
-
- ss = ""
- sep = ""
- for s in build_macro_names:
- ss = ss + sep + s
- sep = " "
-
- print siputils.format(ss, 2)
-
- sys.exit(rcode)
-
-
-def set_defaults():
- """Set up the defaults for values that can be set on the command line.
- """
- global default_platform
- global opt_sipbindir, opt_sipmoddir, opt_sipincdir, opt_sipsipdir
-
- # Set the platform specific default specification.
- platdefaults = {
- "aix": "aix-xlc",
- "bsd": "bsdi-g++",
- "cygwin": "cygwin-g++",
- "darwin": "macx-g++",
- "dgux": "dgux-g++",
- "freebsd": "freebsd-g++",
- "gnu": "hurd-g++",
- "hp-ux": "hpux-acc",
- "irix": "irix-cc",
- "linux": "linux-g++",
- "lynxos": "lynxos-g++",
- "netbsd": "netbsd-g++",
- "openbsd": "openbsd-g++",
- "openunix": "unixware-cc",
- "osf1": "tru64-cxx",
- "qnx": "qnx-g++",
- "reliantunix": "reliant-cds",
- "sco_sv": "sco-cc",
- "sinix": "reliant-cds",
- "sunos5": "solaris-cc",
- "ultrix": "ultrix-g++",
- "unix_sv": "unixware-g++",
- "unixware": "unixware-cc"
- }
-
- default_platform = "none"
-
- if sys.platform == "win32":
- if py_version >= 0x020400:
- default_platform = "win32-msvc.net"
- else:
- default_platform = "win32-msvc"
- else:
- for pd in platdefaults.keys():
- if sys.platform[:len(pd)] == pd:
- default_platform = platdefaults[pd]
- break
-
- opt_sipbindir = plat_bin_dir
- opt_sipmoddir = plat_py_site_dir
- opt_sipincdir = plat_py_inc_dir
- opt_sipsipdir = plat_sip_dir
-
-
-def inform_user():
- """Tell the user the option values that are going to be used.
- """
- siputils.inform("The SIP code generator will be installed in %s." % opt_sipbindir)
- siputils.inform("The SIP module will be installed in %s." % opt_sipmoddir)
- siputils.inform("The SIP header file will be installed in %s." % opt_sipincdir)
- siputils.inform("The default directory to install .sip files in is %s." % opt_sipsipdir)
- siputils.inform("The platform/compiler configuration is %s." % opt_platform)
-
- if opt_universal:
- siputils.inform("MacOS/X universal binaries will be created.")
-
-
-def set_platform_directories():
- """Initialise the global variables relating to platform specific
- directories.
- """
- global plat_py_site_dir, plat_py_inc_dir, plat_py_conf_inc_dir
- global plat_bin_dir, plat_py_lib_dir, plat_sip_dir
-
- if sys.platform == "win32":
- plat_py_site_dir = sys.prefix + "\\Lib"
- if py_version >= 0x020200:
- plat_py_site_dir = plat_py_site_dir + "\\site-packages"
-
- plat_py_inc_dir = sys.prefix + "\\include"
- plat_py_conf_inc_dir = sys.exec_prefix + "\\include"
- plat_py_lib_dir = sys.prefix + "\\libs"
- plat_bin_dir = sys.exec_prefix
- plat_sip_dir = sys.prefix + "\\sip"
- else:
- vers = "%d.%d" % ((py_version >> 16) & 0xff, (py_version >> 8) & 0xff)
-
- # Some 64 bit Linux distros (Mandriva, SuSE) seem to add sys.lib as a
- # non-standard extension presumably to allow 32 and 64 bit versions to
- # be installed side by side. Use it if it seems to be available.
- try:
- lib_dir = sys.lib
- except AttributeError:
- lib_dir = "lib"
-
- lib_dir = sys.prefix + "/" + lib_dir + "/python" + vers
-
- plat_py_site_dir = lib_dir
- if py_version >= 0x020000:
- plat_py_site_dir = plat_py_site_dir + "/site-packages"
-
- plat_py_inc_dir = sys.prefix + "/include/python" + vers
- plat_py_conf_inc_dir = sys.exec_prefix + "/include/python" + vers
- plat_py_lib_dir = lib_dir + "/config"
- plat_bin_dir = sys.exec_prefix + "/bin"
- plat_sip_dir = sys.prefix + "/share/sip"
-
-
-def create_config(module, template, macros):
- """Create the SIP configuration module so that it can be imported by build
- scripts.
-
- module is the module file name.
- template is the template file name.
- macros is the dictionary of build macros.
- """
- siputils.inform("Creating %s..." % module)
-
- content = {
- "sip_config_args": sys.argv[1:],
- "sip_version": sip_version,
- "sip_version_str": sip_version_str,
- "platform": opt_platform,
- "sip_bin": os.path.join(opt_sipbindir, "sip"),
- "sip_inc_dir": opt_sipincdir,
- "sip_mod_dir": opt_sipmoddir,
- "default_bin_dir": plat_bin_dir,
- "default_mod_dir": plat_py_site_dir,
- "default_sip_dir": opt_sipsipdir,
- "export_all": opt_export_all,
- "py_version": py_version,
- "py_inc_dir": plat_py_inc_dir,
- "py_conf_inc_dir": plat_py_conf_inc_dir,
- "py_lib_dir": plat_py_lib_dir,
- "universal": opt_universal
- }
-
- siputils.create_config_module(module, template, content, macros)
-
-
-def create_makefiles(macros):
- """Create the Makefiles.
-
- macros is the dictionary of platform specific build macros.
- """
- # Bootstrap.
- import sipconfig
-
- cfg = sipconfig.Configuration()
-
- cfg.set_build_macros(macros)
-
- sipconfig.inform("Creating top level Makefile...")
-
- sipconfig.ParentMakefile(
- configuration=cfg,
- subdirs=["sipgen", "siplib"],
- installs=(["sipconfig.py", "sipdistutils.py"], cfg.sip_mod_dir)
- ).generate()
-
- sipconfig.inform("Creating sip code generator Makefile...")
-
- sipconfig.ProgramMakefile(
- configuration=cfg,
- build_file="sipgen.sbf",
- dir="sipgen",
- install_dir=os.path.dirname(cfg.sip_bin),
- console=1,
- warnings=0,
- universal=opt_universal
- ).generate()
-
- sipconfig.inform("Creating sip module Makefile...")
-
- makefile = sipconfig.ModuleMakefile(
- configuration=cfg,
- build_file="siplib.sbf",
- dir="siplib",
- install_dir=cfg.sip_mod_dir,
- installs=(["sip.h"], cfg.sip_inc_dir),
- console=1,
- warnings=0,
- static=opt_static,
- debug=opt_debug,
- universal=opt_universal
- )
-
- makefile.generate()
-
-
-def main(argv):
- """Create the configuration module module.
-
- argv is the list of command line arguments.
- """
- siputils.inform("This is SIP %s for Python %s on %s." % (sip_version_str, string.split(sys.version)[0], sys.platform))
-
- if py_version < 0x020300:
- siputils.error("This version of SIP requires Python v2.3 or later.")
-
- # Basic initialisation.
- set_platform_directories()
-
- # Build up the list of valid specs.
- for s in os.listdir("specs"):
- platform_specs.append(s)
-
- # Handle the command line.
- set_defaults()
-
- try:
- optlist, args = getopt.getopt(argv[1:], "hab:d:e:knp:uv:")
- except getopt.GetoptError:
- usage()
-
- global opt_sipbindir, opt_sipmoddir, opt_sipincdir, opt_sipsipdir
- global opt_platform, opt_static, opt_debug, opt_export_all, opt_universal
-
- for opt, arg in optlist:
- if opt == "-h":
- usage(0)
- elif opt == "-a":
- opt_export_all = 1
- elif opt == "-b":
- opt_sipbindir = os.path.abspath(arg)
- elif opt == "-d":
- opt_sipmoddir = os.path.abspath(arg)
- elif opt == "-e":
- opt_sipincdir = os.path.abspath(arg)
- elif opt == "-k":
- opt_static = 1
- elif opt == "-n":
- # This should probably be determined dynamically or passed as an
- # argument.
- opt_universal = '/Developer/SDKs/MacOSX10.4u.sdk'
- elif opt == "-p":
- if arg not in platform_specs:
- usage()
-
- opt_platform = arg
- elif opt == "-u":
- opt_debug = 1
- elif opt == "-v":
- opt_sipsipdir = os.path.abspath(arg)
-
- if opt_platform is None:
- opt_platform = default_platform
-
- # Get the platform specific macros for building.
- macros = siputils.parse_build_macros(os.path.join("specs", opt_platform), build_macro_names, args)
-
- if macros is None:
- usage()
-
- # Tell the user what's been found.
- inform_user()
-
- # Install the configuration module.
- create_config("sipconfig.py", "siputils.py", macros)
-
- # Create the Makefiles.
- create_makefiles(macros)
-
-
-###############################################################################
-# The script starts here.
-###############################################################################
-
-if __name__ == "__main__":
- try:
- main(sys.argv)
- except SystemExit:
- raise
- except:
- print \
-"""An internal error occured. Please report all the output from the program,
-including the following traceback, to support@riverbankcomputing.co.uk.
-"""
- raise