| # |
| # get-py-info.py: get various Python info (for building) |
| # |
| # This should be loaded/run by the appropriate Python, rather than executed |
| # directly as a program. In other words, you should: |
| # |
| # $ python2 get-py-info.py --includes |
| # |
| |
| import sys |
| import os |
| import string |
| from distutils import sysconfig |
| |
| def usage(): |
| print 'USAGE: %s WHAT' % sys.argv[0] |
| print ' Returns information about how to build Python extensions.' |
| print ' WHAT may be one of:' |
| print " --includes : return -I include flags" |
| print " --compile : return a compile command" |
| print " --link : return a link command" |
| print " --libs : return just the library options for linking" |
| sys.exit(1) |
| |
| if len(sys.argv) != 2: |
| usage() |
| |
| if sys.argv[1] == '--includes': |
| inc = sysconfig.get_python_inc() |
| plat = sysconfig.get_python_inc(plat_specific=1) |
| if inc == plat: |
| print "-I" + inc |
| else: |
| print "-I%s -I%s" % (inc, plat) |
| sys.exit(0) |
| |
| if sys.argv[1] == '--compile': |
| cc, basecflags, opt, ccshared = \ |
| sysconfig.get_config_vars('CC', 'BASECFLAGS', 'OPT', 'CCSHARED') |
| if basecflags: |
| opt = basecflags + ' ' + opt |
| print cc, opt, ccshared |
| sys.exit(0) |
| |
| def ldshared_process(just_libs = None): |
| ldshared = sysconfig.get_config_var('LDSHARED') |
| ldshared_elems = string.split(ldshared, " ") |
| libs_elems = [] |
| for i in range(len(ldshared_elems)): |
| if ldshared_elems[i] == '-framework': |
| ldshared_elems[i] = '-Wl,' + ldshared_elems[i] |
| ldshared_elems[i+1] = '-Wl,' + ldshared_elems[i+1] |
| libs_elems.append(ldshared_elems[i]) |
| libs_elems.append(ldshared_elems[i+1]) |
| elif ldshared_elems[i][:2] == '-L': |
| if ldshared_elems[i][:3] != '-L:': |
| libs_elems.append(ldshared_elems[i]) |
| elif ldshared_elems[i][:2] == '-l': |
| libs_elems.append(ldshared_elems[i]) |
| if sys.platform[:6] == 'cygwin': |
| py_Lopt = "-L" + os.path.join(sys.prefix, "lib", "python" + |
| sysconfig.get_python_version(), "config") |
| py_lopt = "-lpython" + sysconfig.get_python_version() |
| libs_elems.append(py_Lopt) |
| libs_elems.append(py_lopt) |
| ldshared_elems.append(py_Lopt) |
| ldshared_elems.append(py_lopt) |
| if just_libs: |
| return string.join(libs_elems, " ") |
| else: |
| return string.join(ldshared_elems, " ") |
| |
| if sys.argv[1] == '--link': |
| print ldshared_process() |
| sys.exit(0) |
| |
| if sys.argv[1] == '--libs': |
| print ldshared_process(just_libs = 1) |
| sys.exit(0) |
| |
| usage() |