| # Program to fetch python compilation parameters. | |
| # Copied from python-config of the 2.7 release. | |
| import sys | |
| import os | |
| import getopt | |
| from distutils import sysconfig | |
| valid_opts = ['prefix', 'exec-prefix', 'includes', 'libs', 'cflags', | |
| 'ldflags', 'help'] | |
| def exit_with_usage(code=1): | |
| sys.stderr.write ("Usage: %s [%s]\n" % (sys.argv[0], | |
| '|'.join('--'+opt for opt in valid_opts))) | |
| sys.exit(code) | |
| try: | |
| opts, args = getopt.getopt(sys.argv[1:], '', valid_opts) | |
| except getopt.error: | |
| exit_with_usage() | |
| if not opts: | |
| exit_with_usage() | |
| pyver = sysconfig.get_config_var('VERSION') | |
| getvar = sysconfig.get_config_var | |
| abiflags = getattr (sys, "abiflags", "") | |
| opt_flags = [flag for (flag, val) in opts] | |
| if '--help' in opt_flags: | |
| exit_with_usage(code=0) | |
| def to_unix_path(path): | |
| """On Windows, returns the given path with all backslashes | |
| converted into forward slashes. This is to help prevent problems | |
| when using the paths returned by this script with cygwin tools. | |
| In particular, cygwin bash treats backslashes as a special character. | |
| On Unix systems, returns the path unchanged. | |
| """ | |
| if os.name == 'nt': | |
| path = path.replace('\\', '/') | |
| return path | |
| for opt in opt_flags: | |
| if opt == '--prefix': | |
| print (to_unix_path(sysconfig.PREFIX)) | |
| elif opt == '--exec-prefix': | |
| print (to_unix_path(sysconfig.EXEC_PREFIX)) | |
| elif opt in ('--includes', '--cflags'): | |
| flags = ['-I' + sysconfig.get_python_inc(), | |
| '-I' + sysconfig.get_python_inc(plat_specific=True)] | |
| if opt == '--cflags': | |
| flags.extend(getvar('CFLAGS').split()) | |
| print (to_unix_path(' '.join(flags))) | |
| elif opt in ('--libs', '--ldflags'): | |
| libs = [] | |
| if getvar('LIBS') is not None: | |
| libs.extend(getvar('LIBS').split()) | |
| if getvar('SYSLIBS') is not None: | |
| libs.extend(getvar('SYSLIBS').split()) | |
| libs.append('-lpython'+pyver + abiflags) | |
| # add the prefix/lib/pythonX.Y/config dir, but only if there is no | |
| # shared library in prefix/lib/. | |
| if opt == '--ldflags': | |
| if not getvar('Py_ENABLE_SHARED'): | |
| if getvar('LIBPL') is not None: | |
| libs.insert(0, '-L' + getvar('LIBPL')) | |
| elif os.name == 'nt': | |
| libs.insert(0, '-L' + sysconfig.PREFIX + '/libs') | |
| if getvar('LINKFORSHARED') is not None: | |
| libs.extend(getvar('LINKFORSHARED').split()) | |
| print (to_unix_path(' '.join(libs))) | |