1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
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()
)
|