xref: /netbsd-src/external/gpl3/gdb.old/dist/gdb/python/python-config.py (revision 82d56013d7b633d116a93943de88e08335357a7c)
1# Program to fetch python compilation parameters.
2# Copied from python-config of the 2.7 release.
3
4import sys
5import os
6import getopt
7from distutils import sysconfig
8
9valid_opts = ['prefix', 'exec-prefix', 'includes', 'libs', 'cflags',
10              'ldflags', 'help']
11
12def exit_with_usage(code=1):
13    sys.stderr.write ("Usage: %s [%s]\n" % (sys.argv[0],
14                                          '|'.join('--'+opt for opt in valid_opts)))
15    sys.exit(code)
16
17try:
18    opts, args = getopt.getopt(sys.argv[1:], '', valid_opts)
19except getopt.error:
20    exit_with_usage()
21
22if not opts:
23    exit_with_usage()
24
25pyver = sysconfig.get_config_var('VERSION')
26getvar = sysconfig.get_config_var
27abiflags = getattr (sys, "abiflags", "")
28
29opt_flags = [flag for (flag, val) in opts]
30
31if '--help' in opt_flags:
32    exit_with_usage(code=0)
33
34def to_unix_path(path):
35    """On Windows, returns the given path with all backslashes
36    converted into forward slashes.  This is to help prevent problems
37    when using the paths returned by this script with cygwin tools.
38    In particular, cygwin bash treats backslashes as a special character.
39
40    On Unix systems, returns the path unchanged.
41    """
42    if os.name == 'nt':
43        path = path.replace('\\', '/')
44    return path
45
46for opt in opt_flags:
47    if opt == '--prefix':
48        print (to_unix_path(sysconfig.PREFIX))
49
50    elif opt == '--exec-prefix':
51        print (to_unix_path(sysconfig.EXEC_PREFIX))
52
53    elif opt in ('--includes', '--cflags'):
54        flags = ['-I' + sysconfig.get_python_inc(),
55                 '-I' + sysconfig.get_python_inc(plat_specific=True)]
56        if opt == '--cflags':
57            flags.extend(getvar('CFLAGS').split())
58        print (to_unix_path(' '.join(flags)))
59
60    elif opt in ('--libs', '--ldflags'):
61        libs = ['-lpython' + pyver + abiflags]
62        if getvar('LIBS') is not None:
63            libs.extend(getvar('LIBS').split())
64        if getvar('SYSLIBS') is not None:
65            libs.extend(getvar('SYSLIBS').split())
66        # add the prefix/lib/pythonX.Y/config dir, but only if there is no
67        # shared library in prefix/lib/.
68        if opt == '--ldflags':
69            if not getvar('Py_ENABLE_SHARED'):
70                if getvar('LIBPL') is not None:
71                    libs.insert(0, '-L' + getvar('LIBPL'))
72                elif os.name == 'nt':
73                    libs.insert(0, '-L' + sysconfig.PREFIX + '/libs')
74            if getvar('LINKFORSHARED') is not None:
75                libs.extend(getvar('LINKFORSHARED').split())
76        print (to_unix_path(' '.join(libs)))
77
78