From 882320f43fc5512b91732928864fbf3539a4b1ce Mon Sep 17 00:00:00 2001 From: Maarten Bosmans Date: Sat, 11 Jun 2011 16:42:30 +0200 Subject: build-sys: Remove unnecessary AC_SUBST calls These HAVE_* variables are only used as AM_CONDITIONAL, so AC_SUBST is not needed. --- configure.ac | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/configure.ac b/configure.ac index 162b3831..e0457db0 100644 --- a/configure.ac +++ b/configure.ac @@ -469,7 +469,6 @@ if test "x$os_is_darwin" = "x1" ; then HAVE_BONJOUR=1 fi -AC_SUBST(HAVE_BONJOUR) AM_CONDITIONAL([HAVE_BONJOUR], [test "x$HAVE_BONJOUR" = x1]) # Windows @@ -581,7 +580,6 @@ AS_IF([test "x$enable_x11" = "xyes" && test "x$HAVE_X11" = "x0"], AC_SUBST(X11_CFLAGS) AC_SUBST(X11_LIBS) -AC_SUBST(HAVE_X11) AM_CONDITIONAL([HAVE_X11], [test "x$HAVE_X11" = x1]) AS_IF([test "x$HAVE_X11" = "x1"], AC_DEFINE([HAVE_X11], 1, [Have X11?])) @@ -655,7 +653,6 @@ AS_IF([test "x$enable_samplerate" = "xyes" && test "x$HAVE_LIBSAMPLERATE" = "x0" AC_SUBST(LIBSAMPLERATE_CFLAGS) AC_SUBST(LIBSAMPLERATE_LIBS) -AC_SUBST(HAVE_LIBSAMPLERATE) AM_CONDITIONAL([HAVE_LIBSAMPLERATE], [test "x$HAVE_LIBSAMPLERATE" = x1]) AS_IF([test "x$HAVE_LIBSAMPLERATE" = "x1"], AC_DEFINE([HAVE_LIBSAMPLERATE], 1, [Have libsamplerate?])) @@ -703,17 +700,14 @@ AS_IF([test "x$HAVE_TDB" != x1 -a "x$HAVE_GDBM" != x1 -a "x$HAVE_SIMPLEDB" != x1 AC_SUBST(TDB_CFLAGS) AC_SUBST(TDB_LIBS) -AC_SUBST(HAVE_TDB) AM_CONDITIONAL([HAVE_TDB], [test "x$HAVE_TDB" = x1]) AS_IF([test "x$HAVE_TDB" = "x1"], AC_DEFINE([HAVE_TDB], 1, [Have tdb?])) AC_SUBST(GDBM_CFLAGS) AC_SUBST(GDBM_LIBS) -AC_SUBST(HAVE_GDBM) AM_CONDITIONAL([HAVE_GDBM], [test "x$HAVE_GDBM" = x1]) AS_IF([test "x$HAVE_GDBM" = "x1"], AC_DEFINE([HAVE_GDBM], 1, [Have gdbm?])) -AC_SUBST(HAVE_SIMPLEDB) AM_CONDITIONAL([HAVE_SIMPLEDB], [test "x$HAVE_SIMPLEDB" = x1]) AS_IF([test "x$HAVE_SIMPLEDB" = "x1"], AC_DEFINE([HAVE_SIMPLEDB], 1, [Have simple?])) @@ -740,7 +734,6 @@ AS_IF([test "x$enable_oss_wrapper" != "xno"], [AS_IF([test "x$HAVE_OSS" = "x1"], HAVE_OSS_WRAPPER=1, HAVE_OSS_WRAPPER=0)], HAVE_OSS_WRAPPER=0) -AC_SUBST(HAVE_OSS) AM_CONDITIONAL([HAVE_OSS_OUTPUT], [test "x$HAVE_OSS_OUTPUT" = "x1"]) AM_CONDITIONAL([HAVE_OSS_WRAPPER], [test "x$HAVE_OSS_WRAPPER" = "x1"]) AS_IF([test "x$HAVE_OSS_OUTPUT" = "x1"], AC_DEFINE([HAVE_OSS_OUTPUT], 1, [Have OSS output?])) @@ -758,7 +751,6 @@ AS_IF([test "x$enable_coreaudio_output" != "xno"], AS_IF([test "x$enable_coreaudio_output" = "xyes" && test "x$HAVE_COREAUDIO" = "x0"], [AC_MSG_ERROR([*** CoreAudio output support not found])]) -AC_SUBST(HAVE_COREAUDIO) AM_CONDITIONAL([HAVE_COREAUDIO], [test "x$HAVE_COREAUDIO" = "x1" && test "x$enable_coreaudio_output" != "xno"]) #### ALSA support (optional) #### @@ -775,7 +767,6 @@ AS_IF([test "x$enable_alsa" = "xyes" && test "x$HAVE_ALSA" = "x0"], AC_SUBST(ASOUNDLIB_CFLAGS) AC_SUBST(ASOUNDLIB_LIBS) -AC_SUBST(HAVE_ALSA) AM_CONDITIONAL([HAVE_ALSA], [test "x$HAVE_ALSA" = x1]) AS_IF([test "x$HAVE_ALSA" = "x1"], AC_DEFINE([HAVE_ALSA], 1, [Have ALSA?])) @@ -791,7 +782,6 @@ AS_IF([test "x$enable_solaris" != "xno"], AS_IF([test "x$enable_solaris" = "xyes" && test "x$HAVE_SOLARIS" = "x0"], [AC_MSG_ERROR([*** Solaris audio support not found])]) -AC_SUBST(HAVE_SOLARIS) AM_CONDITIONAL([HAVE_SOLARIS], [test "x$HAVE_SOLARIS" = x1]) AS_IF([test "x$HAVE_SOLARIS" = "x1"], AC_DEFINE([HAVE_SOLARIS], 1, [Have Solaris audio?])) @@ -807,7 +797,6 @@ AS_IF([test "x$enable_waveout" != "xno"], AS_IF([test "x$enable_waveout" = "xyes" && test "x$HAVE_WAVEOUT" = "x0"], [AC_MSG_ERROR([*** WaveOut audio support not found])]) -AC_SUBST(HAVE_WAVEOUT) AM_CONDITIONAL([HAVE_WAVEOUT], [test "x$HAVE_WAVEOUT" = x1]) AS_IF([test "x$HAVE_WAVEOUT" = "x1"], AC_DEFINE([HAVE_WAVEOUT], 1, [Have WaveOut audio?])) @@ -825,7 +814,6 @@ AS_IF([test "x$enable_glib2" = "xyes" && test "x$HAVE_GLIB20" = "x0"], AC_SUBST(GLIB20_CFLAGS) AC_SUBST(GLIB20_LIBS) -AC_SUBST(HAVE_GLIB20) AM_CONDITIONAL([HAVE_GLIB20], [test "x$HAVE_GLIB20" = x1]) AS_IF([test "x$HAVE_GLIB20" = "x1"], AC_DEFINE([HAVE_GLIB], 1, [Have GLIB?])) @@ -843,7 +831,6 @@ AS_IF([test "x$enable_gtk2" = "xyes" && test "x$HAVE_GTK20" = "x0"], AC_SUBST(GTK20_CFLAGS) AC_SUBST(GTK20_LIBS) -AC_SUBST(HAVE_GTK20) AM_CONDITIONAL([HAVE_GTK20], [test "x$HAVE_GTK20" = x1]) AS_IF([test "x$HAVE_GTK20" = "x1"], AC_DEFINE([HAVE_GTK], 1, [Have GTK?])) @@ -861,7 +848,6 @@ AS_IF([test "x$enable_gconf" = "xyes" && test "x$HAVE_GCONF" = "x0"], AC_SUBST(GCONF_CFLAGS) AC_SUBST(GCONF_LIBS) -AC_SUBST(HAVE_GCONF) AM_CONDITIONAL([HAVE_GCONF], [test "x$HAVE_GCONF" = x1]) #### Avahi support (optional) #### @@ -878,7 +864,6 @@ AS_IF([test "x$enable_avahi" = "xyes" && test "x$HAVE_AVAHI" = "x0"], AC_SUBST(AVAHI_CFLAGS) AC_SUBST(AVAHI_LIBS) -AC_SUBST(HAVE_AVAHI) AM_CONDITIONAL([HAVE_AVAHI], [test "x$HAVE_AVAHI" = x1]) ### JACK (optional) #### @@ -895,7 +880,6 @@ AS_IF([test "x$enable_jack" = "xyes" && test "x$HAVE_JACK" = "x0"], AC_SUBST(JACK_CFLAGS) AC_SUBST(JACK_LIBS) -AC_SUBST(HAVE_JACK) AM_CONDITIONAL([HAVE_JACK], [test "x$HAVE_JACK" = x1]) #### Async DNS support (optional) #### @@ -912,7 +896,6 @@ AS_IF([test "x$enable_asyncns" = "xyes" && test "x$HAVE_LIBASYNCNS" = "x0"], AC_SUBST(LIBASYNCNS_CFLAGS) AC_SUBST(LIBASYNCNS_LIBS) -AC_SUBST(HAVE_LIBASYNCNS) AM_CONDITIONAL([HAVE_LIBASYNCNS], [test "x$HAVE_LIBASYNCNS" = x1]) AS_IF([test "x$HAVE_LIBASYNCNS" = "x1"], AC_DEFINE([HAVE_LIBASYNCNS], 1, [Have libasyncns?])) @@ -963,7 +946,6 @@ AS_IF([test "x$enable_hal" = "xyes" && test "x$HAVE_HAL" = "x0"], AC_SUBST(HAL_CFLAGS) AC_SUBST(HAL_LIBS) -AC_SUBST(HAVE_HAL) AM_CONDITIONAL([HAVE_HAL], [test "x$HAVE_HAL" = x1]) AS_IF([test "x$HAVE_HAL" = "x1"], AC_DEFINE([HAVE_HAL], 1, [Have HAL.])) @@ -981,7 +963,6 @@ AS_IF([test "x$enable_udev" = "xyes" && test "x$HAVE_UDEV" = "x0"], AC_SUBST(UDEV_CFLAGS) AC_SUBST(UDEV_LIBS) -AC_SUBST(HAVE_UDEV) AM_CONDITIONAL([HAVE_UDEV], [test "x$HAVE_UDEV" = x1]) AS_IF([test "x$HAVE_UDEV" = "x1"], AC_DEFINE([HAVE_UDEV], 1, [Have UDEV.])) @@ -999,7 +980,6 @@ AS_IF([test "x$enable_bluez" = "xyes" && test "x$HAVE_BLUEZ" = "x0"], AC_SUBST(BLUEZ_CFLAGS) AC_SUBST(BLUEZ_LIBS) -AC_SUBST(HAVE_BLUEZ) AM_CONDITIONAL([HAVE_BLUEZ], [test "x$HAVE_BLUEZ" = x1]) #### D-Bus support (optional) #### @@ -1025,7 +1005,6 @@ AS_IF([test "x$HAVE_DBUS" = "x1"], AC_SUBST(DBUS_CFLAGS) AC_SUBST(DBUS_LIBS) -AC_SUBST(HAVE_DBUS) AM_CONDITIONAL([HAVE_DBUS], [test "x$HAVE_DBUS" = x1]) AS_IF([test "x$HAVE_DBUS" = "x1"], AC_DEFINE([HAVE_DBUS], 1, [Have D-Bus.])) @@ -1054,7 +1033,6 @@ else HAVE_HAL_COMPAT=0 fi -AC_SUBST(HAVE_HAL_COMPAT) AM_CONDITIONAL([HAVE_HAL_COMPAT], [test "x$HAVE_HAL_COMPAT" = x1]) ### IPv6 connection support (optional) ### @@ -1083,7 +1061,6 @@ AS_IF([test "x$enable_openssl" = "xyes" && test "x$HAVE_OPENSSL" = "x0"], AC_SUBST(OPENSSL_CFLAGS) AC_SUBST(OPENSSL_LIBS) -AC_SUBST(HAVE_OPENSSL) AM_CONDITIONAL([HAVE_OPENSSL], [test "x$HAVE_OPENSSL" = x1]) AS_IF([test "x$HAVE_OPENSSL" = "x1"], AC_DEFINE([HAVE_OPENSSL], 1, [Have OpenSSL])) -- cgit From 6c7039c7532a6b1d546802c4012bc32f31b0beda Mon Sep 17 00:00:00 2001 From: Maarten Bosmans Date: Wed, 8 Jun 2011 13:40:49 +0200 Subject: build-sys: Consolidate host_os handling Use os_is_* shell variables instead of pulse_target_os. --- configure.ac | 144 ++++++++++++++++++++++++++++++----------------------------- 1 file changed, 73 insertions(+), 71 deletions(-) diff --git a/configure.ac b/configure.ac index e0457db0..4e03996c 100644 --- a/configure.ac +++ b/configure.ac @@ -81,21 +81,6 @@ AM_PROG_CC_C_O AC_PROG_GCC_TRADITIONAL AC_USE_SYSTEM_EXTENSIONS -#### Platform hacks #### - -case $host in - *-*-solaris* ) - AC_DEFINE(_XOPEN_SOURCE, 600, Needed to get declarations for msg_control and msg_controllen on Solaris) - AC_DEFINE(__EXTENSIONS__, 1, Needed to get declarations for msg_control and msg_controllen on Solaris) - ;; - *-*-darwin* ) - AC_DEFINE([_DARWIN_C_SOURCE], [200112L], [Needed to get NSIG on Mac OS X]) - ;; - *-*-mingw* ) - AC_DEFINE([WIN32_LEAN_AND_MEAN], 1, [Needed to avoid including unnecessary headers]) - ;; -esac - # M4 AC_CHECK_PROGS([M4], gm4 m4, no) @@ -103,6 +88,51 @@ if test "x$M4" = xno ; then AC_MSG_ERROR([m4 missing]) fi + +#### Determine host OS #### + +os_is_linux=0 +os_is_win32=0 +os_is_darwin=0 + +AC_MSG_CHECKING([host operating system]) +case "$host_os" in + linux*) + AC_MSG_RESULT([linux]) + os_is_linux=1 + ;; + darwin*) + AC_MSG_RESULT([darwin]) + os_is_darwin=1 + AC_DEFINE([OS_IS_DARWIN], 1, [Build target is Darwin.]) + ;; + mingw*) + AC_MSG_RESULT([win32]) + os_is_win32=1 + AC_DEFINE([OS_IS_WIN32], 1, [Build target is Windows.]) + ;; + *) + AC_MSG_RESULT([unknown]) + ;; +esac + +AM_CONDITIONAL(OS_IS_DARWIN, test "x$os_is_darwin" = "x1") +AM_CONDITIONAL(OS_IS_WIN32, test "x$os_is_win32" = "x1") + +# Platform specific hacks +case "$host_os" in + darwin* ) + AC_DEFINE([_DARWIN_C_SOURCE], [200112L], [Needed to get NSIG on Mac OS X]) + ;; + mingw* ) + AC_DEFINE([WIN32_LEAN_AND_MEAN], 1, [Needed to avoid including unnecessary headers on Windows]) + ;; + solaris* ) + AC_DEFINE(_XOPEN_SOURCE, 600, [Needed to get declarations for msg_control and msg_controllen on Solaris]) + AC_DEFINE(__EXTENSIONS__, 1, [Needed to get declarations for msg_control and msg_controllen on Solaris]) + ;; +esac + dnl Compiler flags # Some compilers (e.g. clang) default to a warning on an unkown command line option. @@ -160,43 +190,6 @@ if test "x$enable_atomic_arm_memory_barrier" = "xyes"; then AC_DEFINE_UNQUOTED(ATOMIC_ARM_MEMORY_BARRIER_ENABLED, 1, [Enable memory barriers]) fi -AC_ARG_ENABLE(mac-universal, - AS_HELP_STRING([--enable-mac-universal], [Build Mac universal binaries]), - enable_mac_universal=$enableval, enable_mac_universal="no") - -AC_ARG_WITH(mac-version-min, - AS_HELP_STRING([--with-mac-version-min=], [Defines the earliest version of MacOS X that the executables will run on.]), - mac_version_min=$withval, mac_version_min="10.5") - -AC_ARG_WITH(mac-sysroot, - AS_HELP_STRING([--with-mac-sysroot=], [SDK basedir to use as the logical root directory for headers and libraries.]), - mac_sysroot=$withval, mac_sysroot="/Developer/SDKs/MacOSX10.5.sdk") - -AC_MSG_CHECKING([target operating system]) -case $host in - *-*-linux*) - AC_MSG_RESULT([linux]) - pulse_target_os=linux - ;; - *-*-darwin*) - AC_MSG_RESULT([darwin]) - pulse_target_os=darwin - - LDFLAGS="$LDFLAGS -isysroot $mac_sysroot -mmacosx-version-min=$mac_version_min" - CFLAGS="$CFLAGS -isysroot $mac_sysroot -mmacosx-version-min=$mac_version_min" - - if test "x$enable_mac_universal" = "xyes" ; then - mac_arches="-arch i386 -arch x86_64" - LDFLAGS="$LDFLAGS $mac_arches" - CFLAGS="$CFLAGS $mac_arches" - fi - ;; - *) - AC_MSG_RESULT([unknown]) - pulse_target_os=unknown - ;; -esac - # If everything else fails use libatomic_ops need_libatomic_ops=yes @@ -221,7 +214,7 @@ else # The Linux kernel helper functions have been there since 2.6.16. However # compile time checking for kernel version in cross compile environment # (which is usually the case for arm cpu) is tricky (or impossible). - if test "x$pulse_target_os" = "xlinux" && test "x$enable_atomic_arm_linux_helpers" != "xno"; then + if test "x$os_is_linux" = "x1" && test "x$enable_atomic_arm_linux_helpers" != "xno"; then AC_MSG_RESULT([yes]) AC_DEFINE_UNQUOTED(ATOMIC_ARM_LINUX_HELPERS, 1, [special arm linux implementation]) need_libatomic_ops=no @@ -338,24 +331,6 @@ AS_IF([test "x$LIBLTDL" = "x"], [AC_MSG_ERROR([Unable to find libltdl version 2. Makes sure you have libtool 2.2 or later installed.])]) AC_SUBST([LIBLTDL]) -#### Determine build environment #### - -os_is_win32=0 -os_is_darwin=0 - -case "$host_os" in - mingw*) - AC_DEFINE([OS_IS_WIN32], 1, [Build target is Windows.]) - os_is_win32=1 - ;; - darwin*) - AC_DEFINE([OS_IS_DARWIN], 1, [Build target is Darwin.]) - os_is_darwin=1 - ;; - esac - -AM_CONDITIONAL(OS_IS_WIN32, test "x$os_is_win32" = "x1") -AM_CONDITIONAL(OS_IS_DARWIN, test "x$os_is_darwin" = "x1") ################################### # Basic environment checks # @@ -1130,6 +1105,33 @@ AC_SUBST(PA_SYSTEM_CONFIG_PATH) PA_SYSTEM_STATE_PATH="${localstatedir}/lib/pulse" AC_SUBST(PA_SYSTEM_STATE_PATH) + +#### Mac OSX specific stuff ##### + +AC_ARG_ENABLE(mac-universal, + AS_HELP_STRING([--enable-mac-universal], [Build Mac universal binaries]), + enable_mac_universal=$enableval, enable_mac_universal="no") + +AC_ARG_WITH(mac-version-min, + AS_HELP_STRING([--with-mac-version-min=], [Defines the earliest version of MacOS X that the executables will run on.]), + mac_version_min=$withval, mac_version_min="10.5") + +AC_ARG_WITH(mac-sysroot, + AS_HELP_STRING([--with-mac-sysroot=], [SDK basedir to use as the logical root directory for headers and libraries.]), + mac_sysroot=$withval, mac_sysroot="/Developer/SDKs/MacOSX10.5.sdk") + +if test "x$os_is_darwin" = "x1" ; then + LDFLAGS="$LDFLAGS -isysroot $mac_sysroot -mmacosx-version-min=$mac_version_min" + CFLAGS="$CFLAGS -isysroot $mac_sysroot -mmacosx-version-min=$mac_version_min" + + if test "x$enable_mac_universal" = "xyes" ; then + mac_arches="-arch i386 -arch x86_64" + LDFLAGS="$LDFLAGS $mac_arches" + CFLAGS="$CFLAGS $mac_arches" + fi +fi + + ################################### # Output # ################################### -- cgit From 6c3f05574a586887b9f2186e7730bec5a760ae4a Mon Sep 17 00:00:00 2001 From: Maarten Bosmans Date: Wed, 8 Jun 2011 17:24:16 +0200 Subject: build-sys: Reset CFLAGS after DBUS check --- configure.ac | 8 ++++---- src/Makefile.am | 5 +++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/configure.ac b/configure.ac index 4e03996c..f5e2f5a0 100644 --- a/configure.ac +++ b/configure.ac @@ -971,11 +971,11 @@ AS_IF([test "x$enable_dbus" = "xyes" && test "x$HAVE_DBUS" = "x0"], AS_IF([test "x$HAVE_DBUS" = "x1"], [ - saved_LIBS="$LIBS" - LIBS="$LIBS $DBUS_LIBS" - CFLAGS="$CFLAGS $DBUS_CFLAGS" + save_CFLAGS="$CFLAGS"; CFLAGS="$CFLAGS $DBUS_CFLAGS" + save_LIBS="$LIBS"; LIBS="$LIBS $DBUS_LIBS" AC_CHECK_FUNCS(dbus_watch_get_unix_fd) - LIBS="$saved_LIBS" + CFLAGS="$save_CFLAGS" + LIBS="$save_LIBS" ]) AC_SUBST(DBUS_CFLAGS) diff --git a/src/Makefile.am b/src/Makefile.am index 4990ac35..b76cb400 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -998,8 +998,13 @@ libprotocol_http_la_LDFLAGS = $(AM_LDFLAGS) -avoid-version libprotocol_http_la_LIBADD = $(AM_LIBADD) libpulsecore-@PA_MAJORMINOR@.la libpulsecommon-@PA_MAJORMINOR@.la libpulse.la libprotocol_native_la_SOURCES = pulsecore/protocol-native.c pulsecore/protocol-native.h pulsecore/native-common.h +libprotocol_native_la_CFLAGS = $(AM_CFLAGS) libprotocol_native_la_LDFLAGS = $(AM_LDFLAGS) -avoid-version libprotocol_native_la_LIBADD = $(AM_LIBADD) libpulsecore-@PA_MAJORMINOR@.la libpulsecommon-@PA_MAJORMINOR@.la libpulse.la +if HAVE_DBUS +libprotocol_native_la_CFLAGS += $(DBUS_CFLAGS) +libprotocol_native_la_LIBADD += $(DBUS_LIBS) +endif libprotocol_esound_la_SOURCES = pulsecore/protocol-esound.c pulsecore/protocol-esound.h pulsecore/esound.h libprotocol_esound_la_LDFLAGS = $(AM_LDFLAGS) -avoid-version -- cgit From 17082e7f3a4d71f8b076bd08dba0e1af20b38874 Mon Sep 17 00:00:00 2001 From: Maarten Bosmans Date: Wed, 8 Jun 2011 17:24:55 +0200 Subject: build-sys: Define PA_CFLAGS at right time To ensure that all the changes to CFLAGS are also stored into PA_CFLAGS. --- configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index f5e2f5a0..f667bb90 100644 --- a/configure.ac +++ b/configure.ac @@ -508,8 +508,6 @@ AS_IF([test "$pulseaudio_cv_PTHREAD_PRIO_INHERIT" = "yes"], [ AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], 1, [Have PTHREAD_PRIO_INHERIT.]) ]) -AC_DEFINE_UNQUOTED(PA_CFLAGS,"$CFLAGS", [The CFLAGS used during compilation]) - AC_CHECK_FUNCS([regexec], [HAVE_REGEX=1], [HAVE_REGEX=0]) AM_CONDITIONAL(HAVE_REGEX, [test "x$HAVE_REGEX" = "x1"]) @@ -1136,6 +1134,8 @@ fi # Output # ################################### +AC_DEFINE_UNQUOTED(PA_CFLAGS, "$CFLAGS", [The CFLAGS used during compilation]) + AC_ARG_ENABLE([legacy-runtime-dir], AS_HELP_STRING([--disable-legacy-runtime-dir], [Try to connect on legacy (< 0.9.12) socket paths.])) if test "x$enable_legacy_runtime_dir" != "xno" ; then -- cgit From ce4939d88f5c3ecb9836c8a44d970e2d39973911 Mon Sep 17 00:00:00 2001 From: Maarten Bosmans Date: Sat, 11 Jun 2011 17:22:58 +0200 Subject: build-sys: Clean up configure.ac Mostly whitespace and other trivial stuff. --- configure.ac | 153 +++++++++++++++++++++++++++++------------------------------ 1 file changed, 76 insertions(+), 77 deletions(-) diff --git a/configure.ac b/configure.ac index f667bb90..bfbfac62 100644 --- a/configure.ac +++ b/configure.ac @@ -61,12 +61,13 @@ AC_DEFINE_UNQUOTED([CANONICAL_HOST], "$host", [Canonical host string.]) AC_CHECK_PROG([STOW], [stow], [yes], [no]) AS_IF([test "x$STOW" = "xyes" && test -d /usr/local/stow], [ - AC_MSG_NOTICE([*** Found /usr/local/stow: default install prefix set to /usr/local/stow/${PACKAGE_NAME}-${PACKAGE_VERSION} ***]) - ac_default_prefix="/usr/local/stow/${PACKAGE_NAME}-${PACKAGE_VERSION}" + AC_MSG_NOTICE([*** Found /usr/local/stow: default install prefix set to /usr/local/stow/${PACKAGE_NAME}-${PACKAGE_VERSION} ***]) + ac_default_prefix="/usr/local/stow/${PACKAGE_NAME}-${PACKAGE_VERSION}" ]) AM_SILENT_RULES([yes]) + #### Checks for programs. #### # mkdir -p @@ -84,9 +85,7 @@ AC_USE_SYSTEM_EXTENSIONS # M4 AC_CHECK_PROGS([M4], gm4 m4, no) -if test "x$M4" = xno ; then - AC_MSG_ERROR([m4 missing]) -fi +AS_IF([test "x$M4" = "xno"], AC_MSG_ERROR([m4 missing])) #### Determine host OS #### @@ -133,6 +132,9 @@ case "$host_os" in ;; esac + +#### Flags #### + dnl Compiler flags # Some compilers (e.g. clang) default to a warning on an unkown command line option. @@ -179,6 +181,9 @@ AC_ARG_ENABLE([default-build-tests], AM_CONDITIONAL([BUILD_TESTS_DEFAULT], [test "x$enable_default_build_tests" != "xno"]) + +#### Atomic operations #### + # Native atomic operation support AC_ARG_ENABLE([atomic-arm-linux-helpers], AS_HELP_STRING([--disable-atomic-arm-linux-helpers],[use inline asm or libatomic_ops instead])) @@ -194,12 +199,12 @@ fi need_libatomic_ops=yes AC_CACHE_CHECK([whether $CC knows __sync_bool_compare_and_swap()], - pulseaudio_cv_sync_bool_compare_and_swap, - [AC_LINK_IFELSE( - AC_LANG_PROGRAM([], [[int a = 4; __sync_bool_compare_and_swap(&a, 4, 5);]]), - [pulseaudio_cv_sync_bool_compare_and_swap=yes], - [pulseaudio_cv_sync_bool_compare_and_swap=no]) - ]) + pulseaudio_cv_sync_bool_compare_and_swap, [ + AC_LINK_IFELSE( + AC_LANG_PROGRAM([], [[int a = 4; __sync_bool_compare_and_swap(&a, 4, 5);]]), + [pulseaudio_cv_sync_bool_compare_and_swap=yes], + [pulseaudio_cv_sync_bool_compare_and_swap=no]) + ]) if test "$pulseaudio_cv_sync_bool_compare_and_swap" = "yes" ; then AC_DEFINE([HAVE_ATOMIC_BUILTINS], 1, [Have __sync_bool_compare_and_swap() and friends.]) @@ -219,38 +224,38 @@ else AC_DEFINE_UNQUOTED(ATOMIC_ARM_LINUX_HELPERS, 1, [special arm linux implementation]) need_libatomic_ops=no else - AC_MSG_RESULT([no]) - AC_CACHE_CHECK([compiler support for arm inline asm atomic operations], - pulseaudio_cv_support_arm_atomic_ops, - [AC_COMPILE_IFELSE( - AC_LANG_PROGRAM([], - [[volatile int a=0; - int o=0, n=1, r; - asm volatile ("ldrex %0, [%1]\n" - "subs %0, %0, %2\n" - "strexeq %0, %3, [%1]\n" - : "=&r" (r) - : "r" (&a), "Ir" (o), "r" (n) - : "cc"); - return (a==1 ? 0 : -1); - ]]), - [pulseaudio_cv_support_arm_atomic_ops=yes], - [pulseaudio_cv_support_arm_atomic_ops=no]) - ]) - AS_IF([test "$pulseaudio_cv_support_arm_atomic_ops" = "yes"], [ - AC_DEFINE([ATOMIC_ARM_INLINE_ASM], 1, [Have ARM atomic instructions.]) - need_libatomic_ops=no - ]) - fi + AC_MSG_RESULT([no]) + AC_CACHE_CHECK([compiler support for arm inline asm atomic operations], + pulseaudio_cv_support_arm_atomic_ops, [ + AC_COMPILE_IFELSE( + AC_LANG_PROGRAM([], [[ + volatile int a=0; + int o=0, n=1, r; + asm volatile ("ldrex %0, [%1]\n" + "subs %0, %0, %2\n" + "strexeq %0, %3, [%1]\n" + : "=&r" (r) + : "r" (&a), "Ir" (o), "r" (n) + : "cc"); + return (a==1 ? 0 : -1); + ]]), + [pulseaudio_cv_support_arm_atomic_ops=yes], + [pulseaudio_cv_support_arm_atomic_ops=no]) + ]) + AS_IF([test "$pulseaudio_cv_support_arm_atomic_ops" = "yes"], [ + AC_DEFINE([ATOMIC_ARM_INLINE_ASM], 1, [Have ARM atomic instructions.]) + need_libatomic_ops=no + ]) + fi ;; - *-netbsdelf5*) + *-netbsdelf5*) AC_MSG_RESULT([yes]) need_libatomic_ops=no - ;; - *-freebsd*) + ;; + *-freebsd*) AC_MSG_RESULT([yes]) need_libatomic_ops=no - ;; + ;; *) AC_MSG_RESULT([unknown]) ;; @@ -302,7 +307,9 @@ AS_IF([test "$pulseaudio_cv__Bool" = "yes"], [ AC_DEFINE([HAVE_STD_BOOL], 1, [Have _Bool.]) ]) + #### libtool stuff #### + LT_PREREQ(2.2) LT_INIT([dlopen win32-dll disable-static]) @@ -382,26 +389,25 @@ AC_CHECK_HEADERS_ONCE([execinfo.h]) AC_CHECK_HEADERS_ONCE([langinfo.h]) AC_CHECK_HEADERS_ONCE([regex.h pcreposix.h]) + #### Typdefs, structures, etc. #### AC_C_CONST AC_C_BIGENDIAN AC_TYPE_PID_T AC_TYPE_SIZE_T -AC_CHECK_TYPES(ssize_t, , [AC_DEFINE([ssize_t], [signed long], - [Define ssize_t if it is not done by the standard libs.])]) +AC_CHECK_TYPES(ssize_t, , AC_DEFINE([ssize_t], [signed long], [Define ssize_t if it is not done by the standard libs.])) AC_TYPE_OFF_T AC_TYPE_UID_T AC_CHECK_DECLS(environ) -AC_CHECK_DEFINE([SIGXCPU], [signal.h], [ -HAVE_SIGXCPU=1 -AC_DEFINE([HAVE_SIGXCPU], 1, [Have SIGXCPU?]) -], [HAVE_SIGXCPU=0]) +# SIGXCPU +AC_CHECK_DEFINE([SIGXCPU], [signal.h], [HAVE_SIGXCPU=1], [HAVE_SIGXCPU=0]) +AS_IF([test "x$HAVE_SIGXCPU" = "x1"], AC_DEFINE([HAVE_SIGXCPU], 1, [Have SIGXCPU?])) AM_CONDITIONAL(HAVE_SIGXCPU, test "x$HAVE_SIGXCPU" = "x1") -# Solaris lacks this +# INADDR_NONE, Solaris lacks this AC_CHECK_DEFINE([INADDR_NONE], [netinet/in.h], [], [AC_CHECK_DEFINE([INADDR_NONE], [winsock2.h], [], [AC_DEFINE([INADDR_NONE], [0xffffffff], [Define INADDR_NONE if not found in ])])]) @@ -436,8 +442,9 @@ if test "x$os_is_darwin" = "x1" ; then AC_MSG_CHECKING([looking for Apple CoreService Framework]) # How do I check a framework "library" - AC_CHECK_LIB prob. won't work??, just assign LIBS & hope AC_CHECK_HEADER([/Developer/Headers/FlatCarbon/CoreServices.h], - [LIBS="$LIBS -framework CoreServices"], - [AC_MSG_ERROR([CoreServices.h header file not found]) ]) + [LIBS="$LIBS -framework CoreServices"], + [AC_MSG_ERROR([CoreServices.h header file not found])] + ) AC_MSG_RESULT([ok]) AC_DEFINE([HAVE_CLOCK_GETTIME], 1, [Using clock_gettime() replacement]) @@ -451,6 +458,7 @@ AC_SEARCH_LIBS([regexec], [pcreposix]) # This magic is needed so we do not needlessly add static libs to the win32 build, disabling its ability to make dlls. AC_CHECK_FUNCS([getopt_long], [], [AC_CHECK_LIB([iberty], [getopt_long])]) + #### Check for functions #### # ISO @@ -481,7 +489,6 @@ AC_CHECK_FUNCS_ONCE([strerror_r]) AC_CHECK_FUNCS_ONCE([lstat]) # Non-standard - AC_CHECK_FUNCS_ONCE([setresuid setresgid setreuid setregid seteuid setegid ppoll strsignal sig2str strtof_l pipe2 accept4]) AC_FUNC_ALLOCA @@ -511,10 +518,8 @@ AS_IF([test "$pulseaudio_cv_PTHREAD_PRIO_INHERIT" = "yes"], [ AC_CHECK_FUNCS([regexec], [HAVE_REGEX=1], [HAVE_REGEX=0]) AM_CONDITIONAL(HAVE_REGEX, [test "x$HAVE_REGEX" = "x1"]) -#### Large File-Support (LFS) #### - +# Large File-Support (LFS) AC_SYS_LARGEFILE - # Check for open64 to know if the current system does have open64() and similar functions AC_CHECK_FUNCS_ONCE([open64]) @@ -560,9 +565,8 @@ AS_IF([test "x$HAVE_X11" = "x1"], AC_DEFINE([HAVE_X11], 1, [Have X11?])) CAP_LIBS='' -AC_ARG_WITH( - [caps], - AS_HELP_STRING([--without-caps],[Omit support for POSIX capabilities.])) +AC_ARG_WITH([caps], + AS_HELP_STRING([--without-caps],[Omit support for POSIX capabilities.])) if test "x${with_caps}" != "xno"; then AC_SEARCH_LIBS([cap_init], [cap], [], [ @@ -595,21 +599,19 @@ PKG_CHECK_MODULES(LIBSPEEX, [ speexdsp >= 1.2 ]) AC_SUBST(LIBSPEEX_CFLAGS) AC_SUBST(LIBSPEEX_LIBS) -#### atomic-ops ### +#### atomic-ops #### AC_MSG_CHECKING([whether we need libatomic_ops]) if test "x$need_libatomic_ops" = "xyes"; then - AC_MSG_RESULT([yes]) - AC_CHECK_HEADERS([atomic_ops.h], [], [ - AC_MSG_ERROR([*** libatomic-ops headers not found]) - ]) - - # Win32 does not need the lib and breaks horribly if we try to include it - if test "x$os_is_win32" != "x1" ; then - LIBS="$LIBS -latomic_ops" - fi + AC_MSG_RESULT([yes]) + AC_CHECK_HEADERS([atomic_ops.h], [], [ + AC_MSG_ERROR([*** libatomic-ops headers not found]) + ]) + + # Win32 does not need the lib and breaks horribly if we try to include it + AS_IF([test "x$os_is_win32" != "x1"], [LIBS="$LIBS -latomic_ops"]) else - AC_MSG_RESULT([no]) + AC_MSG_RESULT([no]) fi #### Libsamplerate support (optional) #### @@ -839,7 +841,7 @@ AC_SUBST(AVAHI_CFLAGS) AC_SUBST(AVAHI_LIBS) AM_CONDITIONAL([HAVE_AVAHI], [test "x$HAVE_AVAHI" = x1]) -### JACK (optional) #### +#### JACK (optional) #### AC_ARG_ENABLE([jack], AS_HELP_STRING([--disable-jack],[Disable optional JACK support])) @@ -1008,7 +1010,7 @@ fi AM_CONDITIONAL([HAVE_HAL_COMPAT], [test "x$HAVE_HAL_COMPAT" = x1]) -### IPv6 connection support (optional) ### +#### IPv6 connection support (optional) #### AC_ARG_ENABLE([ipv6], AS_HELP_STRING([--disable-ipv6],[Disable optional IPv6 support])) @@ -1038,6 +1040,7 @@ AM_CONDITIONAL([HAVE_OPENSSL], [test "x$HAVE_OPENSSL" = x1]) AS_IF([test "x$HAVE_OPENSSL" = "x1"], AC_DEFINE([HAVE_OPENSSL], 1, [Have OpenSSL])) #### FFTW (optional) #### + AC_ARG_WITH([fftw], AS_HELP_STRING([--without-fftw],[Omit FFTW-using modules (equalizer)])) @@ -1047,10 +1050,12 @@ AS_IF([test "x$with_fftw" != "xno"], AM_CONDITIONAL([HAVE_FFTW], [test "x$HAVE_FFTW" = "x1"]) -### ORC (optional) ### +#### ORC (optional) #### + ORC_CHECK([0.4.11]) -### Build and Install man pages ### +#### Build and Install man pages #### + AC_ARG_ENABLE([manpages], AS_HELP_STRING([--disable-manpages],[Disable building and installation of man pages])) @@ -1096,6 +1101,7 @@ else fi #### PulseAudio system runtime dir #### + PA_SYSTEM_RUNTIME_PATH="${localstatedir}/run/pulse" AC_SUBST(PA_SYSTEM_RUNTIME_PATH) PA_SYSTEM_CONFIG_PATH="${localstatedir}/lib/pulse" @@ -1103,7 +1109,6 @@ AC_SUBST(PA_SYSTEM_CONFIG_PATH) PA_SYSTEM_STATE_PATH="${localstatedir}/lib/pulse" AC_SUBST(PA_SYSTEM_STATE_PATH) - #### Mac OSX specific stuff ##### AC_ARG_ENABLE(mac-universal, @@ -1145,13 +1150,7 @@ fi AC_ARG_ENABLE([static-bins], AS_HELP_STRING([--enable-static-bins],[Statically link executables.])) -if test "x$enable_static_bins" = "xyes"; then - STATIC_BINS=1 -else - STATIC_BINS=0 -fi - -AM_CONDITIONAL([STATIC_BINS], [test "x$STATIC_BINS" = "x1"]) +AM_CONDITIONAL([STATIC_BINS], [test "x$enable_static_bins" = "xyes"]) AC_ARG_WITH( [preopen-mods], -- cgit From 71d05f553d87db2dbb5e641b9d35f3a04e6f13c0 Mon Sep 17 00:00:00 2001 From: Maarten Bosmans Date: Sat, 11 Jun 2011 17:27:49 +0200 Subject: build-sys: Move some stuff around in configure.ac For more logical grouping of functionality. --- configure.ac | 105 +++++++++++++++++++++++++++++------------------------------ 1 file changed, 52 insertions(+), 53 deletions(-) diff --git a/configure.ac b/configure.ac index bfbfac62..bc0a4e8f 100644 --- a/configure.ac +++ b/configure.ac @@ -22,7 +22,7 @@ AC_PREREQ(2.63) -AC_INIT([pulseaudio],[m4_esyscmd(./git-version-gen .tarball-version)],[mzchyfrnhqvb (at) 0pointer (dot) net]) +AC_INIT([pulseaudio],[m4_esyscmd(./git-version-gen .tarball-version)],[mzchyfrnhqvb (at) 0pointer (dot) net],[pulseaudio],[http://pulseaudio.org/]) AC_CONFIG_SRCDIR([src/daemon/main.c]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_HEADERS([config.h]) @@ -34,7 +34,6 @@ m4_define(pa_minor, `echo $VERSION | cut -d. -f2 | cut -d- -f1`) AC_SUBST(PA_MAJOR, pa_major) AC_SUBST(PA_MINOR, pa_minor) AC_SUBST(PA_MAJORMINOR, pa_major.pa_minor) -AC_SUBST(PACKAGE_URL, [http://pulseaudio.org/]) AC_SUBST(PA_API_VERSION, 12) AC_SUBST(PA_PROTOCOL_VERSION, 21) @@ -87,6 +86,21 @@ AC_USE_SYSTEM_EXTENSIONS AC_CHECK_PROGS([M4], gm4 m4, no) AS_IF([test "x$M4" = "xno"], AC_MSG_ERROR([m4 missing])) +# pkg-config + +PKG_PROG_PKG_CONFIG + +# gettext + +IT_PROG_INTLTOOL([0.35.0]) +GETTEXT_PACKAGE=pulseaudio +AC_SUBST([GETTEXT_PACKAGE]) +AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],["$GETTEXT_PACKAGE"],[Gettext package]) +AM_GLIB_GNU_GETTEXT + +pulselocaledir='${prefix}/${DATADIRNAME}/locale' +AC_SUBST(pulselocaledir) + #### Determine host OS #### @@ -293,20 +307,6 @@ case $host in ;; esac -CC_CHECK_TLS - -AC_CACHE_CHECK([whether $CC knows _Bool], - pulseaudio_cv__Bool, - [AC_COMPILE_IFELSE( - AC_LANG_PROGRAM([], [[_Bool b;]]), - [pulseaudio_cv__Bool=yes], - [pulseaudio_cv__Bool=no]) - ]) - -AS_IF([test "$pulseaudio_cv__Bool" = "yes"], [ - AC_DEFINE([HAVE_STD_BOOL], 1, [Have _Bool.]) - ]) - #### libtool stuff #### @@ -412,12 +412,45 @@ AC_CHECK_DEFINE([INADDR_NONE], [netinet/in.h], [], [AC_CHECK_DEFINE([INADDR_NONE], [winsock2.h], [], [AC_DEFINE([INADDR_NONE], [0xffffffff], [Define INADDR_NONE if not found in ])])]) -#### POSIX threads #### + +# _Bool +AC_CACHE_CHECK([whether $CC knows _Bool], + pulseaudio_cv__Bool, + [AC_COMPILE_IFELSE( + AC_LANG_PROGRAM([], [[_Bool b;]]), + [pulseaudio_cv__Bool=yes], + [pulseaudio_cv__Bool=no]) + ]) + +AS_IF([test "$pulseaudio_cv__Bool" = "yes"], AC_DEFINE([HAVE_STD_BOOL], 1, [Have _Bool.])) + + +#### Thread support #### + +CC_CHECK_TLS # Win32 build breaks with win32 pthread installed AS_IF([test "x$os_is_win32" != "x1"], [ACX_PTHREAD]) +AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT], + pulseaudio_cv_PTHREAD_PRIO_INHERIT, [ + save_CC=$CC; CC=$PTHREAD_CC + save_CFLAGS=$CFLAGS; CFLAGS=$PTHREAD_CFLAGS + save_LIBS=$LIBS; LIBS=$PTHREAD_LIBS + AC_LINK_IFELSE( + AC_LANG_PROGRAM([[#include ]], [[int i = PTHREAD_PRIO_INHERIT;]]), + [pulseaudio_cv_PTHREAD_PRIO_INHERIT=yes], + [pulseaudio_cv_PTHREAD_PRIO_INHERIT=no]) + CC=$save_CC + CFLAGS=$save_CFLAGS + LIBS=$save_LIBS + ]) + +AS_IF([test "$pulseaudio_cv_PTHREAD_PRIO_INHERIT" = "yes"], + AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], 1, [Have PTHREAD_PRIO_INHERIT.])) + + #### Check for libs #### # ISO @@ -493,28 +526,6 @@ AC_CHECK_FUNCS_ONCE([setresuid setresgid setreuid setregid seteuid setegid ppoll AC_FUNC_ALLOCA -AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT], - pulseaudio_cv_PTHREAD_PRIO_INHERIT, - [save_CC=$CC; CC=$PTHREAD_CC - save_CFLAGS=$CFLAGS; CFLAGS=$PTHREAD_CFLAGS - save_LIBS=$LIBS; LIBS=$PTHREAD_LIBS - AC_LINK_IFELSE( - AC_LANG_PROGRAM( - [[ - #include - ]], - [[int i = PTHREAD_PRIO_INHERIT;]]), - [pulseaudio_cv_PTHREAD_PRIO_INHERIT=yes], - [pulseaudio_cv_PTHREAD_PRIO_INHERIT=no]) - CC=$save_CC - CFLAGS=$save_CFLAGS - LIBS=$save_LIBS - ]) - -AS_IF([test "$pulseaudio_cv_PTHREAD_PRIO_INHERIT" = "yes"], [ - AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], 1, [Have PTHREAD_PRIO_INHERIT.]) - ]) - AC_CHECK_FUNCS([regexec], [HAVE_REGEX=1], [HAVE_REGEX=0]) AM_CONDITIONAL(HAVE_REGEX, [test "x$HAVE_REGEX" = "x1"]) @@ -523,26 +534,14 @@ AC_SYS_LARGEFILE # Check for open64 to know if the current system does have open64() and similar functions AC_CHECK_FUNCS_ONCE([open64]) -#### [lib]iconv #### - -AM_ICONV - -IT_PROG_INTLTOOL([0.35.0]) -GETTEXT_PACKAGE=pulseaudio -AC_SUBST([GETTEXT_PACKAGE]) -AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],["$GETTEXT_PACKAGE"],[Gettext package]) -AM_GLIB_GNU_GETTEXT - -pulselocaledir='${prefix}/${DATADIRNAME}/locale' -AC_SUBST(pulselocaledir) ################################### # External libraries # ################################### -#### pkg-config #### +#### [lib]iconv #### -PKG_PROG_PKG_CONFIG +AM_ICONV #### X11 (optional) #### -- cgit From 429512dd5fdbc5137005967689a93a919ce411da Mon Sep 17 00:00:00 2001 From: Maarten Bosmans Date: Wed, 8 Jun 2011 22:25:48 +0200 Subject: build-sys: Move acx_lirc.m4 contents to configure.ac The file is so small, that it is clearer just to do it in the main file. --- configure.ac | 9 ++++++++- m4/acx_lirc.m4 | 6 ------ 2 files changed, 8 insertions(+), 7 deletions(-) delete mode 100644 m4/acx_lirc.m4 diff --git a/configure.ac b/configure.ac index bc0a4e8f..7213db15 100644 --- a/configure.ac +++ b/configure.ac @@ -895,8 +895,15 @@ AC_SUBST(LIBWRAP_LIBS) AC_ARG_ENABLE([lirc], AS_HELP_STRING([--disable-lirc],[Disable optional LIRC support])) +LIRC_CFLAGS= +LIRC_LIBS= + AS_IF([test "x$enable_lirc" != "xno"], - [ACX_LIRC], + [ + HAVE_LIRC=1 + AC_CHECK_HEADER(lirc/lirc_client.h, [], [HAVE_LIRC=0]) + AC_CHECK_LIB(lirc_client, lirc_init, [LIRC_LIBS=-llirc_client], [HAVE_LIRC=0]) + ], HAVE_LIRC=0) AS_IF([test "x$enable_lirc" = "xyes" && test "x$HAVE_LIRC" = "x0"], diff --git a/m4/acx_lirc.m4 b/m4/acx_lirc.m4 deleted file mode 100644 index d3f8ea73..00000000 --- a/m4/acx_lirc.m4 +++ /dev/null @@ -1,6 +0,0 @@ -AC_DEFUN([ACX_LIRC], [ -LIRC_CFLAGS= -LIRC_LIBS= -AC_CHECK_HEADER(lirc/lirc_client.h,[AC_CHECK_LIB(lirc_client,lirc_init,[HAVE_LIRC=1 -LIRC_LIBS=-llirc_client],HAVE_LIRC=0)],HAVE_LIRC=0) -]) -- cgit From 2ae6f88ccaa8b3018ac24c83dae04b094e0ba1e3 Mon Sep 17 00:00:00 2001 From: Maarten Bosmans Date: Wed, 8 Jun 2011 18:15:21 +0200 Subject: build-sys: Use AX_TLS macro from autoconf archive It has no new functionality over the existing macro that is relevant for us, but it is good to have use a macro with a clearly defined upstream. --- configure.ac | 4 +++- m4/ax_tls.m4 | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ m4/tls.m4 | 17 -------------- 3 files changed, 79 insertions(+), 18 deletions(-) create mode 100644 m4/ax_tls.m4 delete mode 100644 m4/tls.m4 diff --git a/configure.ac b/configure.ac index 7213db15..a140d0ba 100644 --- a/configure.ac +++ b/configure.ac @@ -427,7 +427,9 @@ AS_IF([test "$pulseaudio_cv__Bool" = "yes"], AC_DEFINE([HAVE_STD_BOOL], 1, [Have #### Thread support #### -CC_CHECK_TLS +AX_TLS +AS_IF([test "$ac_cv_tls" == "__thread"], + AC_DEFINE([SUPPORT_TLS___THREAD], 1, [Define this if the compiler supports __thread for Thread-Local Storage])) # Win32 build breaks with win32 pthread installed AS_IF([test "x$os_is_win32" != "x1"], diff --git a/m4/ax_tls.m4 b/m4/ax_tls.m4 new file mode 100644 index 00000000..033e3b13 --- /dev/null +++ b/m4/ax_tls.m4 @@ -0,0 +1,76 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_tls.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_TLS([action-if-found], [action-if-not-found]) +# +# DESCRIPTION +# +# Provides a test for the compiler support of thread local storage (TLS) +# extensions. Defines TLS if it is found. Currently knows about GCC/ICC +# and MSVC. I think SunPro uses the same as GCC, and Borland apparently +# supports either. +# +# LICENSE +# +# Copyright (c) 2008 Alan Woodland +# Copyright (c) 2010 Diego Elio Petteno` +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 10 + +AC_DEFUN([AX_TLS], [ + AC_MSG_CHECKING(for thread local storage (TLS) class) + AC_CACHE_VAL(ac_cv_tls, [ + ax_tls_keywords="__thread __declspec(thread) none" + for ax_tls_keyword in $ax_tls_keywords; do + AS_CASE([$ax_tls_keyword], + [none], [ac_cv_tls=none ; break], + [AC_TRY_COMPILE( + [#include + static void + foo(void) { + static ] $ax_tls_keyword [ int bar; + exit(1); + }], + [], + [ac_cv_tls=$ax_tls_keyword ; break], + ac_cv_tls=none + )]) + done + ]) + AC_MSG_RESULT($ac_cv_tls) + + AS_IF([test "$ac_cv_tls" != "none"], + AC_DEFINE_UNQUOTED([TLS], $ac_cv_tls, [If the compiler supports a TLS storage class define it to that here]) + m4_ifnblank([$1], [$1]), + m4_ifnblank([$2], [$2]) + ) +]) diff --git a/m4/tls.m4 b/m4/tls.m4 deleted file mode 100644 index 3808f06e..00000000 --- a/m4/tls.m4 +++ /dev/null @@ -1,17 +0,0 @@ -AC_DEFUN([CC_CHECK_TLS], [ - AC_CACHE_CHECK([whether $CC knows __thread for Thread-Local Storage], - cc_cv_tls___thread, - [AC_COMPILE_IFELSE( - AC_LANG_PROGRAM( - [[static __thread int a = 6;]], - [[a = 5;]]), - [cc_cv_tls___thread=yes], - [cc_cv_tls___thread=no]) - ]) - - AS_IF([test "x$cc_cv_tls___thread" = "xyes"], - [AC_DEFINE([SUPPORT_TLS___THREAD], 1, - [Define this if the compiler supports __thread for Thread-Local Storage]) - $1], - [$2]) -]) -- cgit From ee9da923e5b29c9ee304c416e7db6e7274ad1d0b Mon Sep 17 00:00:00 2001 From: Maarten Bosmans Date: Wed, 15 Jun 2011 18:49:22 +0200 Subject: build-sys: Use AX_CHECK_DEFINE macro from autoconf archive It has no new functionality over the existing macro that is relevant for us, but it is good to have use a macro with a clearly defined upstream. --- configure.ac | 6 ++-- m4/ax_check_define.m4 | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++ m4/check_define.m4 | 13 -------- 3 files changed, 95 insertions(+), 16 deletions(-) create mode 100644 m4/ax_check_define.m4 delete mode 100644 m4/check_define.m4 diff --git a/configure.ac b/configure.ac index a140d0ba..72f44a4b 100644 --- a/configure.ac +++ b/configure.ac @@ -403,13 +403,13 @@ AC_TYPE_UID_T AC_CHECK_DECLS(environ) # SIGXCPU -AC_CHECK_DEFINE([SIGXCPU], [signal.h], [HAVE_SIGXCPU=1], [HAVE_SIGXCPU=0]) +AX_CHECK_DEFINE([signal.h], [SIGXCPU], [HAVE_SIGXCPU=1], [HAVE_SIGXCPU=0]) AS_IF([test "x$HAVE_SIGXCPU" = "x1"], AC_DEFINE([HAVE_SIGXCPU], 1, [Have SIGXCPU?])) AM_CONDITIONAL(HAVE_SIGXCPU, test "x$HAVE_SIGXCPU" = "x1") # INADDR_NONE, Solaris lacks this -AC_CHECK_DEFINE([INADDR_NONE], [netinet/in.h], [], - [AC_CHECK_DEFINE([INADDR_NONE], [winsock2.h], [], +AX_CHECK_DEFINE([netinet/in.h], [INADDR_NONE], [], + [AX_CHECK_DEFINE([winsock2.h], [INADDR_NONE], [], [AC_DEFINE([INADDR_NONE], [0xffffffff], [Define INADDR_NONE if not found in ])])]) diff --git a/m4/ax_check_define.m4 b/m4/ax_check_define.m4 new file mode 100644 index 00000000..4bc69486 --- /dev/null +++ b/m4/ax_check_define.m4 @@ -0,0 +1,92 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_check_define.html +# =========================================================================== +# +# SYNOPSIS +# +# AC_CHECK_DEFINE([symbol], [ACTION-IF-FOUND], [ACTION-IF-NOT]) +# AX_CHECK_DEFINE([includes],[symbol], [ACTION-IF-FOUND], [ACTION-IF-NOT]) +# +# DESCRIPTION +# +# Complements AC_CHECK_FUNC but it does not check for a function but for a +# define to exist. Consider a usage like: +# +# AC_CHECK_DEFINE(__STRICT_ANSI__, CFLAGS="$CFLAGS -D_XOPEN_SOURCE=500") +# +# LICENSE +# +# Copyright (c) 2008 Guido U. Draheim +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 8 + +AU_ALIAS([AC_CHECK_DEFINED], [AC_CHECK_DEFINE]) +AC_DEFUN([AC_CHECK_DEFINE],[ +AS_VAR_PUSHDEF([ac_var],[ac_cv_defined_$1])dnl +AC_CACHE_CHECK([for $1 defined], ac_var, +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ + #ifdef $1 + int ok; + #else + choke me + #endif +]])],[AS_VAR_SET(ac_var, yes)],[AS_VAR_SET(ac_var, no)])) +AS_IF([test AS_VAR_GET(ac_var) != "no"], [$2], [$3])dnl +AS_VAR_POPDEF([ac_var])dnl +]) + +AU_ALIAS([AX_CHECK_DEFINED], [AX_CHECK_DEFINE]) +AC_DEFUN([AX_CHECK_DEFINE],[ +AS_VAR_PUSHDEF([ac_var],[ac_cv_defined_$2_$1])dnl +AC_CACHE_CHECK([for $2 defined in $1], ac_var, +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <$1>]], [[ + #ifdef $2 + int ok; + #else + choke me + #endif +]])],[AS_VAR_SET(ac_var, yes)],[AS_VAR_SET(ac_var, no)])) +AS_IF([test AS_VAR_GET(ac_var) != "no"], [$3], [$4])dnl +AS_VAR_POPDEF([ac_var])dnl +]) + +AC_DEFUN([AX_CHECK_FUNC], +[AS_VAR_PUSHDEF([ac_var], [ac_cv_func_$2])dnl +AC_CACHE_CHECK([for $2], ac_var, +dnl AC_LANG_FUNC_LINK_TRY +[AC_LINK_IFELSE([AC_LANG_PROGRAM([$1 + #undef $2 + char $2 ();],[ + char (*f) () = $2; + return f != $2; ])], + [AS_VAR_SET(ac_var, yes)], + [AS_VAR_SET(ac_var, no)])]) +AS_IF([test AS_VAR_GET(ac_var) = yes], [$3], [$4])dnl +AS_VAR_POPDEF([ac_var])dnl +])# AC_CHECK_FUNC diff --git a/m4/check_define.m4 b/m4/check_define.m4 deleted file mode 100644 index 43edc78e..00000000 --- a/m4/check_define.m4 +++ /dev/null @@ -1,13 +0,0 @@ -AC_DEFUN([AC_CHECK_DEFINE],[ -AS_VAR_PUSHDEF([ac_var],[ac_cv_defined_$1_$2])dnl -AC_CACHE_CHECK([for $1 in $2], ac_var, -AC_TRY_COMPILE([#include <$2>],[ - #ifdef $1 - int ok; - #else - choke me - #endif -],AS_VAR_SET(ac_var, yes),AS_VAR_SET(ac_var, no))) -AS_IF([test AS_VAR_GET(ac_var) != "no"], [$3], [$4])dnl -AS_VAR_POPDEF([ac_var])dnl -]) -- cgit From f36ac546e6a70cc1bb4736f0b104d0dd13b12500 Mon Sep 17 00:00:00 2001 From: Maarten Bosmans Date: Wed, 8 Jun 2011 18:23:23 +0200 Subject: build-sys: Use AX_PTHREAD macro from autoconf archive --- configure.ac | 19 +-- m4/acx_pthread.m4 | 348 ------------------------------------------------------ m4/ax_pthread.m4 | 302 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 303 insertions(+), 366 deletions(-) delete mode 100644 m4/acx_pthread.m4 create mode 100644 m4/ax_pthread.m4 diff --git a/configure.ac b/configure.ac index 72f44a4b..88ad875d 100644 --- a/configure.ac +++ b/configure.ac @@ -433,24 +433,7 @@ AS_IF([test "$ac_cv_tls" == "__thread"], # Win32 build breaks with win32 pthread installed AS_IF([test "x$os_is_win32" != "x1"], - [ACX_PTHREAD]) - -AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT], - pulseaudio_cv_PTHREAD_PRIO_INHERIT, [ - save_CC=$CC; CC=$PTHREAD_CC - save_CFLAGS=$CFLAGS; CFLAGS=$PTHREAD_CFLAGS - save_LIBS=$LIBS; LIBS=$PTHREAD_LIBS - AC_LINK_IFELSE( - AC_LANG_PROGRAM([[#include ]], [[int i = PTHREAD_PRIO_INHERIT;]]), - [pulseaudio_cv_PTHREAD_PRIO_INHERIT=yes], - [pulseaudio_cv_PTHREAD_PRIO_INHERIT=no]) - CC=$save_CC - CFLAGS=$save_CFLAGS - LIBS=$save_LIBS - ]) - -AS_IF([test "$pulseaudio_cv_PTHREAD_PRIO_INHERIT" = "yes"], - AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], 1, [Have PTHREAD_PRIO_INHERIT.])) + [AX_PTHREAD]) #### Check for libs #### diff --git a/m4/acx_pthread.m4 b/m4/acx_pthread.m4 deleted file mode 100644 index cbd6bfa0..00000000 --- a/m4/acx_pthread.m4 +++ /dev/null @@ -1,348 +0,0 @@ -dnl @synopsis ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) -dnl -dnl @summary figure out how to build C programs using POSIX threads -dnl -dnl This macro figures out how to build C programs using POSIX threads. -dnl It sets the PTHREAD_LIBS output variable to the threads library and -dnl linker flags, and the PTHREAD_CFLAGS output variable to any special -dnl C compiler flags that are needed. (The user can also force certain -dnl compiler flags/libs to be tested by setting these environment -dnl variables.) -dnl -dnl Also sets PTHREAD_CC to any special C compiler that is needed for -dnl multi-threaded programs (defaults to the value of CC otherwise). -dnl (This is necessary on AIX to use the special cc_r compiler alias.) -dnl -dnl NOTE: You are assumed to not only compile your program with these -dnl flags, but also link it with them as well. e.g. you should link -dnl with $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS -dnl $LIBS -dnl -dnl If you are only building threads programs, you may wish to use -dnl these variables in your default LIBS, CFLAGS, and CC: -dnl -dnl LIBS="$PTHREAD_LIBS $LIBS" -dnl CFLAGS="$CFLAGS $PTHREAD_CFLAGS" -dnl CC="$PTHREAD_CC" -dnl -dnl In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute -dnl constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to -dnl that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX). -dnl -dnl ACTION-IF-FOUND is a list of shell commands to run if a threads -dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands to -dnl run it if it is not found. If ACTION-IF-FOUND is not specified, the -dnl default action will define HAVE_PTHREAD. -dnl -dnl Please let the authors know if this macro fails on any platform, or -dnl if you have any other suggestions or comments. This macro was based -dnl on work by SGJ on autoconf scripts for FFTW (www.fftw.org) (with -dnl help from M. Frigo), as well as ac_pthread and hb_pthread macros -dnl posted by Alejandro Forero Cuervo to the autoconf macro repository. -dnl We are also grateful for the helpful feedback of numerous users. -dnl -dnl @category InstalledPackages -dnl @author Steven G. Johnson -dnl @version 2006-05-29 -dnl @license GPLWithACException -dnl -dnl Checks for GCC shared/pthread inconsistency based on work by -dnl Marcin Owsiany - - -AC_DEFUN([ACX_PTHREAD], [ -AC_REQUIRE([AC_CANONICAL_HOST]) -AC_LANG_SAVE -AC_LANG_C -acx_pthread_ok=no - -# We used to check for pthread.h first, but this fails if pthread.h -# requires special compiler flags (e.g. on True64 or Sequent). -# It gets checked for in the link test anyway. - -# First of all, check if the user has set any of the PTHREAD_LIBS, -# etcetera environment variables, and if threads linking works using -# them: -if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $PTHREAD_CFLAGS" - save_LIBS="$LIBS" - LIBS="$PTHREAD_LIBS $LIBS" - AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) - AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes) - AC_MSG_RESULT($acx_pthread_ok) - if test x"$acx_pthread_ok" = xno; then - PTHREAD_LIBS="" - PTHREAD_CFLAGS="" - fi - LIBS="$save_LIBS" - CFLAGS="$save_CFLAGS" -fi - -# We must check for the threads library under a number of different -# names; the ordering is very important because some systems -# (e.g. DEC) have both -lpthread and -lpthreads, where one of the -# libraries is broken (non-POSIX). - -# Create a list of thread flags to try. Items starting with a "-" are -# C compiler flags, and other items are library names, except for "none" -# which indicates that we try without any flags at all, and "pthread-config" -# which is a program returning the flags for the Pth emulation library. - -acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" - -# The ordering *is* (sometimes) important. Some notes on the -# individual items follow: - -# pthreads: AIX (must check this before -lpthread) -# none: in case threads are in libc; should be tried before -Kthread and -# other compiler flags to prevent continual compiler warnings -# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) -# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) -# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) -# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) -# -pthreads: Solaris/gcc -# -mthreads: Mingw32/gcc, Lynx/gcc -# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it -# doesn't hurt to check since this sometimes defines pthreads too; -# also defines -D_REENTRANT) -# ... -mt is also the pthreads flag for HP/aCC -# pthread: Linux, etcetera -# --thread-safe: KAI C++ -# pthread-config: use pthread-config program (for GNU Pth library) - -case "${host_cpu}-${host_os}" in - *solaris*) - - # On Solaris (at least, for some versions), libc contains stubbed - # (non-functional) versions of the pthreads routines, so link-based - # tests will erroneously succeed. (We need to link with -pthreads/-mt/ - # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather - # a function called by this macro, so we could check for that, but - # who knows whether they'll stub that too in a future libc.) So, - # we'll just look for -pthreads and -lpthread first: - - acx_pthread_flags="-pthreads pthread -mt -pthread $acx_pthread_flags" - ;; -esac - -if test x"$acx_pthread_ok" = xno; then -for flag in $acx_pthread_flags; do - - case $flag in - none) - AC_MSG_CHECKING([whether pthreads work without any flags]) - ;; - - -*) - AC_MSG_CHECKING([whether pthreads work with $flag]) - PTHREAD_CFLAGS="$flag" - ;; - - pthread-config) - AC_CHECK_PROG(acx_pthread_config, pthread-config, yes, no) - if test x"$acx_pthread_config" = xno; then continue; fi - PTHREAD_CFLAGS="`pthread-config --cflags`" - PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" - ;; - - *) - AC_MSG_CHECKING([for the pthreads library -l$flag]) - PTHREAD_LIBS="-l$flag" - ;; - esac - - save_LIBS="$LIBS" - save_CFLAGS="$CFLAGS" - LIBS="$PTHREAD_LIBS $LIBS" - CFLAGS="$CFLAGS $PTHREAD_CFLAGS" - - # Check for various functions. We must include pthread.h, - # since some functions may be macros. (On the Sequent, we - # need a special flag -Kthread to make this header compile.) - # We check for pthread_join because it is in -lpthread on IRIX - # while pthread_create is in libc. We check for pthread_attr_init - # due to DEC craziness with -lpthreads. We check for - # pthread_cleanup_push because it is one of the few pthread - # functions on Solaris that doesn't have a non-functional libc stub. - # We try pthread_create on general principles. - AC_TRY_LINK([#include ], - [pthread_t th; pthread_join(th, 0); - pthread_attr_init(0); pthread_cleanup_push(0, 0); - pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], - [acx_pthread_ok=yes]) - - LIBS="$save_LIBS" - CFLAGS="$save_CFLAGS" - - AC_MSG_RESULT($acx_pthread_ok) - if test "x$acx_pthread_ok" = xyes; then - break; - fi - - PTHREAD_LIBS="" - PTHREAD_CFLAGS="" -done -fi - -# Various other checks: -if test "x$acx_pthread_ok" = xyes; then - save_LIBS="$LIBS" - LIBS="$PTHREAD_LIBS $LIBS" - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $PTHREAD_CFLAGS" - - # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. - AC_MSG_CHECKING([for joinable pthread attribute]) - attr_name=unknown - for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do - AC_TRY_LINK([#include ], [int attr=$attr; return attr;], - [attr_name=$attr; break]) - done - AC_MSG_RESULT($attr_name) - if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then - AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name, - [Define to necessary symbol if this constant - uses a non-standard name on your system.]) - fi - - AC_MSG_CHECKING([if more special flags are required for pthreads]) - flag=no - case "${host_cpu}-${host_os}" in - *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; - *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; - esac - AC_MSG_RESULT(${flag}) - if test "x$flag" != xno; then - PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" - fi - - LIBS="$save_LIBS" - CFLAGS="$save_CFLAGS" - # More AIX lossage: must compile with xlc_r or cc_r - if test x"$GCC" != xyes; then - AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC}) - else - PTHREAD_CC=$CC - fi - - # The next part tries to detect GCC inconsistency with -shared on some - # architectures and systems. The problem is that in certain - # configurations, when -shared is specified, GCC "forgets" to - # internally use various flags which are still necessary. - - AC_MSG_CHECKING([whether to check for GCC pthread/shared inconsistencies]) - check_inconsistencies=yes - case "${host_cpu}-${host_os}" in - *-darwin*) check_inconsistencies=no ;; - esac - if test x"$GCC" != xyes -o "x$check_inconsistencies" != xyes ; then - AC_MSG_RESULT([no]) - else - AC_MSG_RESULT([yes]) - - # In order not to create several levels of indentation, we test - # the value of "$ok" until we find out the cure or run out of - # ideas. - ok="no" - - # - # Prepare the flags - # - save_CFLAGS="$CFLAGS" - save_LIBS="$LIBS" - save_CC="$CC" - # Try with the flags determined by the earlier checks. - # - # -Wl,-z,defs forces link-time symbol resolution, so that the - # linking checks with -shared actually have any value - # - # FIXME: -fPIC is required for -shared on many architectures, - # so we specify it here, but the right way would probably be to - # properly detect whether it is actually required. - CFLAGS="-shared -fPIC -Wl,-z,defs $CFLAGS $PTHREAD_CFLAGS" - LIBS="$PTHREAD_LIBS $LIBS" - CC="$PTHREAD_CC" - - AC_MSG_CHECKING([whether -pthread is sufficient with -shared]) - AC_TRY_LINK([#include ], - [pthread_t th; pthread_join(th, 0); - pthread_attr_init(0); pthread_cleanup_push(0, 0); - pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], - [ok=yes]) - - if test "x$ok" = xyes; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi - - # - # Linux gcc on some architectures such as mips/mipsel forgets - # about -lpthread - # - if test x"$ok" = xno; then - AC_MSG_CHECKING([whether -lpthread fixes that]) - LIBS="-lpthread $PTHREAD_LIBS $save_LIBS" - AC_TRY_LINK([#include ], - [pthread_t th; pthread_join(th, 0); - pthread_attr_init(0); pthread_cleanup_push(0, 0); - pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], - [ok=yes]) - - if test "x$ok" = xyes; then - AC_MSG_RESULT([yes]) - PTHREAD_LIBS="-lpthread $PTHREAD_LIBS" - else - AC_MSG_RESULT([no]) - fi - fi - # - # FreeBSD 4.10 gcc forgets to use -lc_r instead of -lc - # - if test x"$ok" = xno; then - AC_MSG_CHECKING([whether -lc_r fixes that]) - LIBS="-lc_r $PTHREAD_LIBS $save_LIBS" - AC_TRY_LINK([#include ], - [pthread_t th; pthread_join(th, 0); - pthread_attr_init(0); pthread_cleanup_push(0, 0); - pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], - [ok=yes]) - - if test "x$ok" = xyes; then - AC_MSG_RESULT([yes]) - PTHREAD_LIBS="-lc_r $PTHREAD_LIBS" - else - AC_MSG_RESULT([no]) - fi - fi - if test x"$ok" = xno; then - # OK, we have run out of ideas - AC_MSG_WARN([Impossible to determine how to use pthreads with shared libraries]) - - # so it's not safe to assume that we may use pthreads - acx_pthread_ok=no - fi - - CFLAGS="$save_CFLAGS" - LIBS="$save_LIBS" - CC="$save_CC" - fi -else - PTHREAD_CC="$CC" -fi - -AC_SUBST(PTHREAD_LIBS) -AC_SUBST(PTHREAD_CFLAGS) -AC_SUBST(PTHREAD_CC) - -# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: -if test x"$acx_pthread_ok" = xyes; then - ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1]) - : -else - acx_pthread_ok=no - $2 -fi -AC_LANG_RESTORE -])dnl ACX_PTHREAD diff --git a/m4/ax_pthread.m4 b/m4/ax_pthread.m4 new file mode 100644 index 00000000..94a3b0ee --- /dev/null +++ b/m4/ax_pthread.m4 @@ -0,0 +1,302 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_pthread.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) +# +# DESCRIPTION +# +# This macro figures out how to build C programs using POSIX threads. It +# sets the PTHREAD_LIBS output variable to the threads library and linker +# flags, and the PTHREAD_CFLAGS output variable to any special C compiler +# flags that are needed. (The user can also force certain compiler +# flags/libs to be tested by setting these environment variables.) +# +# Also sets PTHREAD_CC to any special C compiler that is needed for +# multi-threaded programs (defaults to the value of CC otherwise). (This +# is necessary on AIX to use the special cc_r compiler alias.) +# +# NOTE: You are assumed to not only compile your program with these flags, +# but also link it with them as well. e.g. you should link with +# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS +# +# If you are only building threads programs, you may wish to use these +# variables in your default LIBS, CFLAGS, and CC: +# +# LIBS="$PTHREAD_LIBS $LIBS" +# CFLAGS="$CFLAGS $PTHREAD_CFLAGS" +# CC="$PTHREAD_CC" +# +# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant +# has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name +# (e.g. PTHREAD_CREATE_UNDETACHED on AIX). +# +# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the +# PTHREAD_PRIO_INHERIT symbol is defined when compiling with +# PTHREAD_CFLAGS. +# +# ACTION-IF-FOUND is a list of shell commands to run if a threads library +# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it +# is not found. If ACTION-IF-FOUND is not specified, the default action +# will define HAVE_PTHREAD. +# +# Please let the authors know if this macro fails on any platform, or if +# you have any other suggestions or comments. This macro was based on work +# by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help +# from M. Frigo), as well as ac_pthread and hb_pthread macros posted by +# Alejandro Forero Cuervo to the autoconf macro repository. We are also +# grateful for the helpful feedback of numerous users. +# +# Updated for Autoconf 2.68 by Daniel Richard G. +# +# LICENSE +# +# Copyright (c) 2008 Steven G. Johnson +# Copyright (c) 2011 Daniel Richard G. +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 14 + +AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD]) +AC_DEFUN([AX_PTHREAD], [ +AC_REQUIRE([AC_CANONICAL_HOST]) +AC_LANG_PUSH([C]) +ax_pthread_ok=no + +# We used to check for pthread.h first, but this fails if pthread.h +# requires special compiler flags (e.g. on True64 or Sequent). +# It gets checked for in the link test anyway. + +# First of all, check if the user has set any of the PTHREAD_LIBS, +# etcetera environment variables, and if threads linking works using +# them: +if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) + AC_TRY_LINK_FUNC(pthread_join, ax_pthread_ok=yes) + AC_MSG_RESULT($ax_pthread_ok) + if test x"$ax_pthread_ok" = xno; then + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" + fi + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" +fi + +# We must check for the threads library under a number of different +# names; the ordering is very important because some systems +# (e.g. DEC) have both -lpthread and -lpthreads, where one of the +# libraries is broken (non-POSIX). + +# Create a list of thread flags to try. Items starting with a "-" are +# C compiler flags, and other items are library names, except for "none" +# which indicates that we try without any flags at all, and "pthread-config" +# which is a program returning the flags for the Pth emulation library. + +ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" + +# The ordering *is* (sometimes) important. Some notes on the +# individual items follow: + +# pthreads: AIX (must check this before -lpthread) +# none: in case threads are in libc; should be tried before -Kthread and +# other compiler flags to prevent continual compiler warnings +# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) +# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) +# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) +# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) +# -pthreads: Solaris/gcc +# -mthreads: Mingw32/gcc, Lynx/gcc +# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it +# doesn't hurt to check since this sometimes defines pthreads too; +# also defines -D_REENTRANT) +# ... -mt is also the pthreads flag for HP/aCC +# pthread: Linux, etcetera +# --thread-safe: KAI C++ +# pthread-config: use pthread-config program (for GNU Pth library) + +case "${host_cpu}-${host_os}" in + *solaris*) + + # On Solaris (at least, for some versions), libc contains stubbed + # (non-functional) versions of the pthreads routines, so link-based + # tests will erroneously succeed. (We need to link with -pthreads/-mt/ + # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather + # a function called by this macro, so we could check for that, but + # who knows whether they'll stub that too in a future libc.) So, + # we'll just look for -pthreads and -lpthread first: + + ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags" + ;; + + *-darwin*) + ax_pthread_flags="-pthread $ax_pthread_flags" + ;; +esac + +if test x"$ax_pthread_ok" = xno; then +for flag in $ax_pthread_flags; do + + case $flag in + none) + AC_MSG_CHECKING([whether pthreads work without any flags]) + ;; + + -*) + AC_MSG_CHECKING([whether pthreads work with $flag]) + PTHREAD_CFLAGS="$flag" + ;; + + pthread-config) + AC_CHECK_PROG(ax_pthread_config, pthread-config, yes, no) + if test x"$ax_pthread_config" = xno; then continue; fi + PTHREAD_CFLAGS="`pthread-config --cflags`" + PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" + ;; + + *) + AC_MSG_CHECKING([for the pthreads library -l$flag]) + PTHREAD_LIBS="-l$flag" + ;; + esac + + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Check for various functions. We must include pthread.h, + # since some functions may be macros. (On the Sequent, we + # need a special flag -Kthread to make this header compile.) + # We check for pthread_join because it is in -lpthread on IRIX + # while pthread_create is in libc. We check for pthread_attr_init + # due to DEC craziness with -lpthreads. We check for + # pthread_cleanup_push because it is one of the few pthread + # functions on Solaris that doesn't have a non-functional libc stub. + # We try pthread_create on general principles. + AC_LINK_IFELSE([AC_LANG_PROGRAM([#include + static void routine(void *a) { a = 0; } + static void *start_routine(void *a) { return a; }], + [pthread_t th; pthread_attr_t attr; + pthread_create(&th, 0, start_routine, 0); + pthread_join(th, 0); + pthread_attr_init(&attr); + pthread_cleanup_push(routine, 0); + pthread_cleanup_pop(0) /* ; */])], + [ax_pthread_ok=yes], + []) + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + + AC_MSG_RESULT($ax_pthread_ok) + if test "x$ax_pthread_ok" = xyes; then + break; + fi + + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" +done +fi + +# Various other checks: +if test "x$ax_pthread_ok" = xyes; then + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. + AC_MSG_CHECKING([for joinable pthread attribute]) + attr_name=unknown + for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do + AC_LINK_IFELSE([AC_LANG_PROGRAM([#include ], + [int attr = $attr; return attr /* ; */])], + [attr_name=$attr; break], + []) + done + AC_MSG_RESULT($attr_name) + if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then + AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name, + [Define to necessary symbol if this constant + uses a non-standard name on your system.]) + fi + + AC_MSG_CHECKING([if more special flags are required for pthreads]) + flag=no + case "${host_cpu}-${host_os}" in + *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; + *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; + esac + AC_MSG_RESULT(${flag}) + if test "x$flag" != xno; then + PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" + fi + + AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT], + ax_cv_PTHREAD_PRIO_INHERIT, [ + AC_LINK_IFELSE( + AC_LANG_PROGRAM([[#include ]], [[int i = PTHREAD_PRIO_INHERIT;]]), + [ax_cv_PTHREAD_PRIO_INHERIT=yes], + [ax_cv_PTHREAD_PRIO_INHERIT=no]) + ]) + AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"], + AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], 1, [Have PTHREAD_PRIO_INHERIT.])) + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + + # More AIX lossage: must compile with xlc_r or cc_r + if test x"$GCC" != xyes; then + AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC}) + else + PTHREAD_CC=$CC + fi +else + PTHREAD_CC="$CC" +fi + +AC_SUBST(PTHREAD_LIBS) +AC_SUBST(PTHREAD_CFLAGS) +AC_SUBST(PTHREAD_CC) + +# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: +if test x"$ax_pthread_ok" = xyes; then + ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1]) + : +else + ax_pthread_ok=no + $2 +fi +AC_LANG_POP +])dnl AX_PTHREAD -- cgit