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