From: Zbigniew Jędrzejewski-Szmek Date: Fri, 26 Jul 2013 14:08:15 +0000 (-0400) Subject: build-sys: use pkg-config for python compilation flags X-Git-Tag: v207~234 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=a6c0b31d509f76023d8efbcd5e912863c8fb254c build-sys: use pkg-config for python compilation flags Python 2.7, and 3.2 and higher support querying compilation flags through pkg-config. This makes python support follow rules similar to various other optional compilation-time libraries. New flags are called PYTHON_DEVEL_CFLAGS and PYTHON_DEVEL_LIBS, because PYTHON (without _DEVEL), is already used for the python binary name, and things would be confusing if the same prefix was used for two things. configure has --disable-python-devel to disable python modules. One advantage is that CFLAGS for modules gets smaller: - -I/usr/include/python3.3m -I/usr/include/python3.3m -Wno-unused-result -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv + -I/usr/include/python3.3m as does LIBS: - -lpthread -ldl -lutil -lm -lpython3.3m + -lpython3.3m Support for Python 2.6 is removed, but can be easily restored by using PYTHON_DEVEL_CFLAGS="$(python2.6-config --cflags)", etc., as ./configure parameters. https://bugs.freedesktop.org/show_bug.cgi?id=57800 --- diff --git a/Makefile.am b/Makefile.am index 8ac1d8d0f..7b4753d30 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3905,7 +3905,7 @@ _journal_la_SOURCES = \ _journal_la_CFLAGS = \ $(AM_CFLAGS) \ -fvisibility=default \ - $(PYTHON_CFLAGS) + $(PYTHON_DEVEL_CFLAGS) _journal_la_LDFLAGS = \ $(AM_LDFLAGS) \ @@ -3914,7 +3914,7 @@ _journal_la_LDFLAGS = \ -avoid-version _journal_la_LIBADD = \ - $(PYTHON_LIBS) \ + $(PYTHON_DEVEL_LIBS) \ libsystemd-journal.la id128_la_SOURCES = \ @@ -3926,7 +3926,7 @@ id128_la_SOURCES = \ id128_la_CFLAGS = \ $(AM_CFLAGS) \ -fvisibility=default \ - $(PYTHON_CFLAGS) \ + $(PYTHON_DEVEL_CFLAGS) \ -I$(top_builddir)/src/python-systemd id128_la_LDFLAGS = \ @@ -3936,7 +3936,7 @@ id128_la_LDFLAGS = \ -avoid-version id128_la_LIBADD = \ - $(PYTHON_LIBS) \ + $(PYTHON_DEVEL_LIBS) \ libsystemd-id128.la _daemon_la_SOURCES = \ @@ -3947,7 +3947,7 @@ _daemon_la_SOURCES = \ _daemon_la_CFLAGS = \ $(AM_CFLAGS) \ -fvisibility=default \ - $(PYTHON_CFLAGS) \ + $(PYTHON_DEVEL_CFLAGS) \ -I$(top_builddir)/src/python-systemd _daemon_la_LDFLAGS = \ @@ -3957,7 +3957,7 @@ _daemon_la_LDFLAGS = \ -avoid-version _daemon_la_LIBADD = \ - $(PYTHON_LIBS) \ + $(PYTHON_DEVEL_LIBS) \ libsystemd-daemon.la _reader_la_SOURCES = \ @@ -3968,7 +3968,7 @@ _reader_la_SOURCES = \ _reader_la_CFLAGS = \ $(AM_CFLAGS) \ -fvisibility=default \ - $(PYTHON_CFLAGS) + $(PYTHON_DEVEL_CFLAGS) _reader_la_LDFLAGS = \ $(AM_LDFLAGS) \ @@ -3977,7 +3977,7 @@ _reader_la_LDFLAGS = \ -avoid-version _reader_la_LIBADD = \ - $(PYTHON_LIBS) \ + $(PYTHON_DEVEL_LIBS) \ libsystemd-journal.la \ libsystemd-id128.la \ libsystemd-shared.la \ @@ -3991,7 +3991,7 @@ login_la_SOURCES = \ login_la_CFLAGS = \ $(AM_CFLAGS) \ -fvisibility=default \ - $(PYTHON_CFLAGS) + $(PYTHON_DEVEL_CFLAGS) login_la_LDFLAGS = \ $(AM_LDFLAGS) \ @@ -4000,7 +4000,7 @@ login_la_LDFLAGS = \ -avoid-version login_la_LIBADD = \ - $(PYTHON_LIBS) \ + $(PYTHON_DEVEL_LIBS) \ libsystemd-journal.la \ libsystemd-login.la \ libsystemd-shared.la \ diff --git a/configure.ac b/configure.ac index 759073a2c..4e8c573ab 100644 --- a/configure.ac +++ b/configure.ac @@ -144,11 +144,10 @@ CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\ --param=ssp-buffer-size=4]) AC_SUBST([OUR_CFLAGS], $with_cflags) -AS_CASE([$CFLAGS], [*-O[[12345g\ ]]*], [ - CC_CHECK_FLAGS_APPEND([with_cppflags], [CPPFLAGS], [\ - -Wp,-D_FORTIFY_SOURCE=2])], [ - python_extra_cflags=-Wp,-U_FORTIFY_SOURCE - AC_MSG_RESULT([skipping -D_FORTIFY_SOURCE, optimization not enabled])]) +AS_CASE([$CFLAGS], [*-O[[12345g\ ]]*], + [CC_CHECK_FLAGS_APPEND([with_cppflags], [CPPFLAGS], [\ + -Wp,-D_FORTIFY_SOURCE=2])], + [AC_MSG_RESULT([skipping -D_FORTIFY_SOURCE, optimization not enabled])]) AC_SUBST([OUR_CPPFLAGS], $with_cppflags) CC_CHECK_FLAGS_APPEND([with_ldflags], [LDFLAGS], [\ @@ -162,8 +161,6 @@ AC_SUBST([OUR_LDFLAGS], $with_ldflags) # ------------------------------------------------------------------------------ # we use python to build the man page index, and for systemd-python have_python=no -have_python_devel=no - AC_ARG_WITH([python], [AS_HELP_STRING([--without-python], [Disable building the man page index and systemd-python (default: test)])]) @@ -178,16 +175,16 @@ AS_IF([test "x$PYTHON_BINARY" = "x"], [PYTHON_BINARY=/usr/bin/python])]) AC_ARG_VAR(PYTHON_BINARY, [Python binary used to launch installed scripts]) -AS_IF([test "x$with_python" != "xno"], [ - AC_PATH_PROG(PYTHON_CONFIG, python${PYTHON_VERSION}-config) - AS_IF([test -n "$PYTHON_CONFIG"], [ - have_python_devel=yes - PYTHON_CFLAGS="$($PYTHON_CONFIG --cflags) $python_extra_cflags" - PYTHON_LIBS="$($PYTHON_CONFIG --ldflags)" - AC_SUBST(PYTHON_CFLAGS) - AC_SUBST(PYTHON_LIBS) - AC_PATH_PROGS(SPHINX_BUILD, sphinx-build-${PYTHON_VERSION} sphinx-build) - ]) +have_python_devel=no +AC_ARG_ENABLE(python_devel, AS_HELP_STRING([--disable-python-devel], [Do not build python modules])) +AS_IF([test "x$enable_python_devel" != "xno"], [ + PKG_CHECK_MODULES([PYTHON_DEVEL], [python-${PYTHON_VERSION}], + [have_python_devel=yes], + [PKG_CHECK_MODULES([PYTHON_DEVEL], [python], + [have_python_devel=yes], + [have_python_devel=no])]) + AS_IF([test "x$have_python_devel" = xno -a "x$enable_python_devel" = xyes], + [AC_MSG_ERROR([*** python-devel support requested but libraries not found])]) ]) AM_CONDITIONAL([HAVE_PYTHON_DEVEL], [test "$have_python_devel" = "yes"]) @@ -1039,6 +1036,6 @@ AC_MSG_RESULT([ CFLAGS: ${OUR_CFLAGS} ${CFLAGS} CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS} LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS} - PYTHON_CFLAGS: ${PYTHON_CFLAGS} - PYTHON_LIBS: ${PYTHON_LIBS} + PYTHON_CFLAGS: ${PYTHON_DEVEL_CFLAGS} + PYTHON_LIBS: ${PYTHON_DEVEL_LIBS} ])