Christian Heimes <li...@cheimes.de> added the comment:
We can detect majority of our dependencies with pkg-config. The use of pkg-config has some benefits: * Distro's provide the .pc files in their -dev / -devel packages. The presence of a .pc file indicates that all development dependencies are available. * pkg-config does the right thing for non-standard include and libraries directories as well as multiarch builds. In case a library or header is not on the default search path, pkg-config returns necessary -I and -L flags. * At least the pkgconf implementation of pkg-config standard search /usr/local and ~/.local/ directories for .pc files. Cases like https://github.com/python/cpython/pull/29507 are handled correctly. On FreeBSD "pkgconf sqlite3 --cflags --libs" returns "-I/usr/local/include -L/usr/local/lib -lsqlite3". * pkg-config understands dependencies. For example "pkg-config --libs tk" returns linker flags for TK *and* TCL. * pkg-config can check for module version, e.g. "pkg-config sqlite3 --atleast-version=3.7.15" pkg-config modules: readline, libedit ncursesw, ncurses, panel, tinfo sqlite3 zlib bzip2 liblzma expat uuid (Linux's util-linux uuid) libffi libnsl, libtirpc libcrypt tcl, tk openssl, libssl, libcrypto modules / libraries without pkg-config modules: decimal: libmpdec gdbm: gdbm dbm: gdbm_compat, ndbm, libdb (bdb) To simplify use of flags in Modules/Setup, I propose to add two make variables for each module that needs cflags and ldflags: f"MODULE_{ext.name.upper()}_CFLAGS" f"MODULE_{ext.name.upper()}_LDFLAGS" e.g. for the _ssl module: MODULE__SSL_CFLAGS= MODULE__SSL_LDFLAGS=-lssl -lcrypto Then use the flags from Makefile in setup.py: def update_extension_flags(self, ext): name = ext.name.upper() cflags = sysconfig.get_config_var(f"MODULE_{name}_CFLAGS") if cflags: ext.extra_compile_args.extend(shlex.split(cflags)) ldflags = sysconfig.get_config_var(f"MODULE_{name}_LDFLAGS") if ldflags: ext.extra_link_args.extend(shlex.split(ldflags)) return ext Finally update Modules/makesetup to use the new variables, too. ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue45573> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com