summaryrefslogtreecommitdiffstats
path: root/python/sip/custom/mkcustom.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/sip/custom/mkcustom.py')
-rw-r--r--python/sip/custom/mkcustom.py87
1 files changed, 87 insertions, 0 deletions
diff --git a/python/sip/custom/mkcustom.py b/python/sip/custom/mkcustom.py
new file mode 100644
index 00000000..0e8deabb
--- /dev/null
+++ b/python/sip/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()