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._AE", [SRCDIR + "/Mac/Modules/ae/_AEmodule.c"], include_dirs=[SRCDIR+"/Mac/Include"], extra_link_args=['-framework', 'Carbon']), 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() )