diff options
Diffstat (limited to 'custom/mkcustom.py')
-rw-r--r-- | custom/mkcustom.py | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/custom/mkcustom.py b/custom/mkcustom.py new file mode 100644 index 0000000..0e8deab --- /dev/null +++ b/custom/mkcustom.py @@ -0,0 +1,87 @@ +"""This Python script uses the SIP build system to create a Makefile for +building a custom Python interpreter. The script doesn't take any command line +flags - just edit it to suit your needs. You will also need to edit custom.c +or customw.c. +""" + + +import sys +import sipconfig + + +# Get the SIP configuration. +cfg = sipconfig.Configuration() + + +# This is the name of the interpreter executable (excluding any platform +# specific extension. +InterpreterName = "custom" + +# Set this to True to create a non-console interpreter on Windows (ie. a custom +# version of pythonw). Make sure you make changes to customw.c rather than +# custom.c. It is ignored on other platforms. +WindowsInterpreter = False + +# Set this to the list of the name of modules to be builtin to the custom +# interpreter. The modules must also be added to custom.c and/or customw.c. +Modules = ["sip"] +#Modules = ["sip", "qt", "qtaxcontainer", "qtcanvas", "qtext", "qtgl", +# "qtnetwork", "qtsql", "qttable", "qtui", "qtxml"] + +# Set this to the name of the directory containing the static modules. +ModuleDirectory = cfg.default_mod_dir + +# Set this to the list of additional libraries to link with the custom +# interpreter. +ExtraLibraries = [] +#ExtraLibraries = ["qassistantclient"] + +# Set this to the list of additional directory names to search for any +# additional libraries. +ExtraLibraryDirectories = [] + +# Set this to the name of the directory containing the Python library. +PythonLibraryDirectory = cfg.py_lib_dir + + +# Make platform specific modifications. +if sys.platform == "linux2": + ExtraLibraries.append("util") + + +# Create a dictionary describing the target and source files to be passed to +# the SIP build system. +build = {} + +if sys.platform == "win32" and WindowsInterpreter: + build["target"] = InterpreterName + "w" + build["sources"] = "customw.c" + console = False +else: + build["target"] = InterpreterName + build["sources"] = "custom.c" + console = True + +# Assume Qt support is required if Qt support was enabled in the sip module. +qt = (cfg.qt_version > 0) + +# Create the Makefile instance. +mf = sipconfig.ProgramMakefile(cfg, build, python=True, console=console, qt=qt) + +# Modify the Makefile according to the values set above. +mf.extra_lib_dirs.extend(ExtraLibraryDirectories) +mf.extra_lib_dirs.append(ModuleDirectory) +mf.extra_lib_dirs.append(PythonLibraryDirectory) + +mf.extra_libs.extend(Modules) + +if sys.platform == "win32": + pylib = "python%u%u" +else: + pylib = "python%u.%u" + +mf.extra_libs.append(pylib % ((cfg.py_version >> 16), ((cfg.py_version >> 8) & 0xff))) +mf.extra_libs.extend(ExtraLibraries) + +# Generate the Makefile itself. +mf.generate() |