2
# get-py-info.py: get various Python info (for building)
4
# This should be loaded/run by the appropriate Python, rather than executed
5
# directly as a program. In other words, you should:
7
# $ python2 get-py-info.py --includes
13
from distutils import sysconfig
16
print 'USAGE: %s WHAT' % sys.argv[0]
17
print ' Returns information about how to build Python extensions.'
18
print ' WHAT may be one of:'
19
print " --includes : return -I include flags"
20
print " --compile : return a compile command"
21
print " --link : return a link command"
22
print " --libs : return just the library options for linking"
25
if len(sys.argv) != 2:
28
if sys.argv[1] == '--includes':
29
inc = sysconfig.get_python_inc()
30
plat = sysconfig.get_python_inc(plat_specific=1)
34
print "-I%s -I%s" % (inc, plat)
37
if sys.argv[1] == '--compile':
38
cc, basecflags, opt, ccshared = \
39
sysconfig.get_config_vars('CC', 'BASECFLAGS', 'OPT', 'CCSHARED')
41
opt = basecflags + ' ' + opt
42
print cc, opt, ccshared
45
def ldshared_process(just_libs = None):
46
ldshared = sysconfig.get_config_var('LDSHARED')
47
ldshared_elems = string.split(ldshared, " ")
49
for i in range(len(ldshared_elems)):
50
if ldshared_elems[i] == '-framework':
51
ldshared_elems[i] = '-Wl,' + ldshared_elems[i]
52
ldshared_elems[i+1] = '-Wl,' + ldshared_elems[i+1]
53
libs_elems.append(ldshared_elems[i])
54
libs_elems.append(ldshared_elems[i+1])
55
elif ldshared_elems[i][:2] == '-L':
56
if ldshared_elems[i][:3] != '-L:':
57
libs_elems.append(ldshared_elems[i])
58
elif ldshared_elems[i][:2] == '-l':
59
libs_elems.append(ldshared_elems[i])
60
if sys.platform[:6] == 'cygwin':
61
py_Lopt = "-L" + os.path.join(sys.prefix, "lib", "python" +
62
sysconfig.get_python_version(), "config")
63
py_lopt = "-lpython" + sysconfig.get_python_version()
64
libs_elems.append(py_Lopt)
65
libs_elems.append(py_lopt)
66
ldshared_elems.append(py_Lopt)
67
ldshared_elems.append(py_lopt)
69
return string.join(libs_elems, " ")
71
return string.join(ldshared_elems, " ")
73
if sys.argv[1] == '--link':
74
print ldshared_process()
77
if sys.argv[1] == '--libs':
78
print ldshared_process(just_libs = 1)