|
1 | 1 | from distutils.core import setup, Extension |
| 2 | +import subprocess |
| 3 | + |
| 4 | +def pkgconfig(package, **kw): |
| 5 | + flag_map = {'-I': 'include_dirs', '-L': 'library_dirs', '-l': 'libraries'} |
| 6 | + output = subprocess.check_output(['pkg-config', '--libs', '--cflags', package], |
| 7 | + universal_newlines=True) |
| 8 | + for token in output.split(): |
| 9 | + kw.setdefault(flag_map.get(token[:2]), []).append(token[2:]) |
| 10 | + return kw |
| 11 | + |
| 12 | +def lib(name, fallback): |
| 13 | + try: |
| 14 | + return pkgconfig(name) |
| 15 | + except subprocess.CalledProcessError: |
| 16 | + return pkgconfig(fallback) |
2 | 17 |
|
3 | 18 | version = '230' |
4 | 19 | defines = [('PACKAGE_VERSION', '"{}"'.format(version))] |
5 | 20 |
|
6 | 21 | _journal = Extension('systemd/_journal', |
7 | 22 | define_macros = defines, |
8 | | - libraries = ['systemd'], |
9 | 23 | sources = ['systemd/_journal.c', |
10 | | - 'systemd/pyutil.c']) |
| 24 | + 'systemd/pyutil.c'], |
| 25 | + **lib('libsystemd', 'libsystemd-journal')) |
11 | 26 | _reader = Extension('systemd/_reader', |
12 | 27 | define_macros = defines, |
13 | | - libraries = ['systemd'], |
14 | 28 | sources = ['systemd/_reader.c', |
15 | 29 | 'systemd/pyutil.c', |
16 | | - 'systemd/strv.c']) |
| 30 | + 'systemd/strv.c'], |
| 31 | + **lib('libsystemd', 'libsystemd-journal')) |
17 | 32 | _daemon = Extension('systemd/_daemon', |
18 | 33 | define_macros = defines, |
19 | | - libraries = ['systemd'], |
20 | 34 | sources = ['systemd/_daemon.c', |
21 | | - 'systemd/pyutil.c']) |
| 35 | + 'systemd/pyutil.c'], |
| 36 | + **lib('libsystemd', 'libsystemd-daemon')) |
22 | 37 | id128 = Extension('systemd/id128', |
23 | 38 | define_macros = defines, |
24 | | - libraries = ['systemd'], |
25 | 39 | sources = ['systemd/id128.c', |
26 | | - 'systemd/pyutil.c']) |
| 40 | + 'systemd/pyutil.c'], |
| 41 | + **lib('libsystemd', 'libsystemd-id128')) |
27 | 42 | login = Extension('systemd/login', |
28 | 43 | define_macros = defines, |
29 | | - libraries = ['systemd'], |
30 | 44 | sources = ['systemd/login.c', |
31 | 45 | 'systemd/pyutil.c', |
32 | | - 'systemd/strv.c']) |
| 46 | + 'systemd/strv.c'], |
| 47 | + **lib('libsystemd', 'libsystemd-login')) |
33 | 48 | setup (name = 'python-systemd', |
34 | 49 | version = version, |
35 | 50 | description = 'Native interface to the facilities of systemd', |
|
0 commit comments