From c65d3a9fb04d2c598b5c7fec3a060ec97eb778b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20E=2E=20=27Flameeyes=27=20Petten=C3=B2?= Date: Thu, 22 Jan 2009 16:37:40 +0100 Subject: [PATCH 1/5] Remove support for internal distributing and bundling of libltdl. Standing to what the libtool documentation says, the LTDL_INIT macro and the related configure options are only useful when intending to distribute libltdl, and is superfluous if the system copy were always to be used. Which makes it very easy to just drop the internal copy and use the system library, just do it like any other library lacking pkg-config files to identify its presence. If this tries to build against an older libtool version it might fail at link time, so for now this is not an user-proof solution. But it at least should provide a working environment for packagers. --- Makefile.am | 2 +- configure.ac | 24 +++++++++++++++++++++--- src/Makefile.am | 1 - 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/Makefile.am b/Makefile.am index f4dd99890..8735d312b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -18,7 +18,7 @@ ACLOCAL_AMFLAGS = -I m4 EXTRA_DIST = bootstrap.sh LICENSE GPL LGPL doxygen/Makefile.am doxygen/Makefile.in doxygen/doxygen.conf.in README todo -SUBDIRS = libltdl src doxygen man po +SUBDIRS = src doxygen man po MAINTAINERCLEANFILES = noinst_DATA = diff --git a/configure.ac b/configure.ac index 9912843fd..f659d49e0 100644 --- a/configure.ac +++ b/configure.ac @@ -237,9 +237,28 @@ AS_IF([test "$pulseaudio_cv__Bool" = "yes"], [ #### libtool stuff #### LT_PREREQ(2.2) -LT_CONFIG_LTDL_DIR([libltdl]) LT_INIT([dlopen win32-dll disable-static]) -LTDL_INIT([convenience recursive]) + +dnl Unfortunately, even up to libtool 2.2.6a there is no way to know +dnl exactly which version of libltdl is present in the system, so we +dnl just assume that it's a working version as long as we have the +dnl library and the header files. +dnl +dnl Check the header files first since the system may have a +dnl libltdl.so for runtime, but no headers, and we want to bail out as +dnl soon as possible. +dnl +dnl We don't need any special variable for this though, since the user +dnl can give the proper place to find libltdl through the standard +dnl variables like LDFLAGS and CPPFLAGS. + +AC_CHECK_HEADER([ltdl.h], + [AC_CHECK_LIB([ltdl], [lt_dlopen], [LIBLTDL=-lltdl], [LIBLTDL=])], + [LIBLTDL=]) + +AS_IF([test "x$LIBLTDL" = "x"], + [AC_MSG_ERROR([Unable to find libltdl.])]) +AC_SUBST([LIBLTDL]) #### Determine build environment #### @@ -1174,7 +1193,6 @@ AM_CONDITIONAL([FORCE_PREOPEN], [test "x$FORCE_PREOPEN" = "xyes"]) AC_CONFIG_FILES([ Makefile -libltdl/Makefile src/Makefile man/Makefile libpulse.pc diff --git a/src/Makefile.am b/src/Makefile.am index 8d1271c31..d77f4dc10 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -60,7 +60,6 @@ AM_CFLAGS = \ -I$(top_builddir)/src/modules/alsa \ -I$(top_srcdir)/src/modules/raop \ $(PTHREAD_CFLAGS) -D_POSIX_PTHREAD_SEMANTICS \ - $(LTDLINCL) \ $(LIBSAMPLERATE_CFLAGS) \ $(LIBSNDFILE_CFLAGS) \ $(LIBSPEEX_CFLAGS) \ From 1b20d287b9ff496a643c9256870c5cff0e3389f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20E=2E=20=27Flameeyes=27=20Petten=C3=B2?= Date: Thu, 22 Jan 2009 16:41:45 +0100 Subject: [PATCH 2/5] Fix logic thinko. --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index f659d49e0..2b378c1b9 100644 --- a/configure.ac +++ b/configure.ac @@ -105,7 +105,7 @@ dnl Check whether to build tests by default (as compile-test) or not AC_ARG_ENABLE([default-build-tests], AS_HELP_STRING([--disable-default-build-tests], [Build test programs only during make check])) -AM_CONDITIONAL([BUILD_TESTS_DEFAULT], [test "x$enable_default_build_tests" = "xno"]) +AM_CONDITIONAL([BUILD_TESTS_DEFAULT], [test "x$enable_default_build_tests" != "xno"]) # Native atomic operation support AC_ARG_ENABLE([atomic-arm-linux-helpers], From 3293251198effe635f4afa291b2f99219162db9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20E=2E=20=27Flameeyes=27=20Petten=C3=B2?= Date: Thu, 22 Jan 2009 16:52:41 +0100 Subject: [PATCH 3/5] Move the safety check about pkg-config in bootstrap.sh. Don't check twice for pkg-config during configure, since the undefined macro would be possibly caused on a different system. --- bootstrap.sh | 9 +++++++++ configure.ac | 8 -------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/bootstrap.sh b/bootstrap.sh index 6698f68b6..4ca2b339e 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -40,6 +40,15 @@ run_versioned() { set -ex +# We check for this here, because if pkg-config is not found in the +# system, it's likely that the pkg.m4 macro file is also not present, +# which will make PKG_PROG_PKG_CONFIG be undefined and the generated +# configure file faulty. +if ! pkg-config --version &>/dev/null; then + echo "pkg-config is required to bootstrap this program" &>/dev/null + exit 1 +fi + if [ "x$1" = "xam" ] ; then run_versioned automake "$VERSION" -a -c --foreign ./config.status diff --git a/configure.ac b/configure.ac index 2b378c1b9..11f98764c 100644 --- a/configure.ac +++ b/configure.ac @@ -462,14 +462,6 @@ AC_SUBST(pulselocaledir) #### pkg-config #### -# Check for pkg-config manually first, as if its not installed the -# PKG_PROG_PKG_CONFIG macro won't be defined. -AC_CHECK_PROG(have_pkg_config, pkg-config, yes, no) - -if test x"$have_pkg_config" = "xno"; then - AC_MSG_ERROR(pkg-config is required to install this program) -fi - PKG_PROG_PKG_CONFIG #### X11 (optional) #### From a257448ceb6c763e05bfbcdbd3c45dd61df95155 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20E=2E=20=27Flameeyes=27=20Petten=C3=B2?= Date: Thu, 22 Jan 2009 20:02:42 +0100 Subject: [PATCH 4/5] Improve the ltdl discovery code by checking for libtool 2.x functions. The lt_dladvise_* interfaces are implemented only in the 2.x series and are not implemented in 1.4, so we can rely on their presence to know that the version is good enough. --- configure.ac | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 11f98764c..bc6c1ce66 100644 --- a/configure.ac +++ b/configure.ac @@ -244,6 +244,10 @@ dnl exactly which version of libltdl is present in the system, so we dnl just assume that it's a working version as long as we have the dnl library and the header files. dnl +dnl As an extra safety device, check for lt_dladvise_init() which is +dnl only implemented in libtool 2.x, and refine as we go if we have +dnl refined requirements. +dnl dnl Check the header files first since the system may have a dnl libltdl.so for runtime, but no headers, and we want to bail out as dnl soon as possible. @@ -253,7 +257,7 @@ dnl can give the proper place to find libltdl through the standard dnl variables like LDFLAGS and CPPFLAGS. AC_CHECK_HEADER([ltdl.h], - [AC_CHECK_LIB([ltdl], [lt_dlopen], [LIBLTDL=-lltdl], [LIBLTDL=])], + [AC_CHECK_LIB([ltdl], [lt_dladvise_init], [LIBLTDL=-lltdl], [LIBLTDL=])], [LIBLTDL=]) AS_IF([test "x$LIBLTDL" = "x"], From 3e5d9fd37ab2ebe7160c7ebc4393b15ba68f28e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20E=2E=20=27Flameeyes=27=20Petten=C3=B2?= Date: Thu, 22 Jan 2009 23:38:07 +0100 Subject: [PATCH 5/5] Use #ifdef to avoid warning about undefined macro. --- src/modules/module-detect.c | 2 +- src/pulsecore/resampler.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/module-detect.c b/src/modules/module-detect.c index 1616d47c8..9ed262db4 100644 --- a/src/modules/module-detect.c +++ b/src/modules/module-detect.c @@ -239,7 +239,7 @@ int pa__init(pa_module*m) { #ifdef HAVE_ALSA if ((n = detect_alsa(m->core, just_one)) <= 0) #endif -#if HAVE_OSS +#ifdef HAVE_OSS if ((n = detect_oss(m->core, just_one)) <= 0) #endif #ifdef HAVE_SOLARIS diff --git a/src/pulsecore/resampler.c b/src/pulsecore/resampler.c index 6b3836e11..ff87284a4 100644 --- a/src/pulsecore/resampler.c +++ b/src/pulsecore/resampler.c @@ -25,7 +25,7 @@ #include -#if HAVE_LIBSAMPLERATE +#ifdef HAVE_LIBSAMPLERATE #include #endif