summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Mac/OSX/setup.jaguar.py84
1 files changed, 78 insertions, 6 deletions
diff --git a/Mac/OSX/setup.jaguar.py b/Mac/OSX/setup.jaguar.py
index ba19793..bbb47fb 100644
--- a/Mac/OSX/setup.jaguar.py
+++ b/Mac/OSX/setup.jaguar.py
@@ -1,9 +1,81 @@
from distutils.core import Extension, setup
+from distutils import sysconfig
+import os
+
+SRCDIR="../.."
+
+def find_file(filename, std_dirs, paths):
+ """Searches for the directory where a given file is located,
+ and returns a possibly-empty list of additional directories, or None
+ if the file couldn't be found at all.
+
+ 'filename' is the name of a file, such as readline.h or libcrypto.a.
+ 'std_dirs' is the list of standard system directories; if the
+ file is found in one of them, no additional directives are needed.
+ 'paths' is a list of additional locations to check; if the file is
+ found in one of them, the resulting list will contain the directory.
+ """
+
+ # Check the standard locations
+ for dir in std_dirs:
+ f = os.path.join(dir, filename)
+ if os.path.exists(f): return []
+
+ # Check the additional directories
+ for dir in paths:
+ f = os.path.join(dir, filename)
+ if os.path.exists(f):
+ return [dir]
+
+ # Not found anywhere
+ return None
+
+def find_library_file(compiler, libname, std_dirs, paths):
+ filename = compiler.library_filename(libname, lib_type='shared')
+ result = find_file(filename, std_dirs, paths)
+ if result is not None: return result
+
+ filename = compiler.library_filename(libname, lib_type='static')
+ result = find_file(filename, std_dirs, paths)
+ return result
+
+def waste_Extension():
+ waste_incs = find_file("WASTE.h", [],
+ ['../'*n + 'waste/C_C++ Headers' for n in (0,1,2,3,4)])
+ if waste_incs != None:
+ waste_libs = [os.path.join(os.path.split(waste_incs[0])[0], "Static Libraries")]
+ srcdir = SRCDIR
+ return [ Extension('waste',
+ [os.path.join(srcdir, d) for d in
+ 'Mac/Modules/waste/wastemodule.c',
+ 'Mac/Wastemods/WEObjectHandlers.c',
+ 'Mac/Wastemods/WETabHooks.c',
+ 'Mac/Wastemods/WETabs.c'
+ ],
+ include_dirs = waste_incs + [
+ os.path.join(srcdir, 'Mac/Include'),
+ os.path.join(srcdir, 'Mac/Wastemods')
+ ],
+ library_dirs = waste_libs,
+ libraries = ['WASTE'],
+ extra_link_args = ['-framework', 'Carbon'],
+ ) ]
+ return []
setup(name="MacPython for Jaguar extensions", version="2.2",
- ext_modules=[
- Extension("OverrideFrom23._Res",
- ["../Modules/res/_Resmodule.c"],
- include_dirs=["../Include"],
- extra_link_args=['-framework', 'Carbon']),
- ]) \ No newline at end of file
+ ext_modules=[
+ Extension("OverrideFrom23._Res",
+ [SRCDIR + "/Mac/Modules/res/_Resmodule.c"],
+ include_dirs=[SRCDIR+"/Mac/Include"],
+ extra_link_args=['-framework', 'Carbon']),
+ Extension('_Help',
+ [SRCDIR + '/Mac/Modules/help/_Helpmodule.c'],
+ include_dirs=[SRCDIR+"/Mac/Include"],
+ extra_link_args=['-framework', 'Carbon']),
+ Extension('_Scrap',
+ [SRCDIR + '/Mac/Modules/scrap/_Scrapmodule.c'],
+ include_dirs=[SRCDIR+"/Mac/Include"],
+ extra_link_args=['-framework', 'Carbon']),
+ ] +
+ waste_Extension()
+ ) \ No newline at end of file