Merge commit 'flameeyes/autoconf-2.62'

This commit is contained in:
Lennart Poettering 2008-08-18 23:52:44 +02:00
commit 3d2d6ca958
13 changed files with 407 additions and 242 deletions

View file

@ -15,7 +15,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
# USA. # USA.
ACLOCAL_AMFLAGS = -I common ACLOCAL_AMFLAGS = -I m4
EXTRA_DIST = bootstrap.sh LICENSE GPL LGPL doxygen/Makefile.am doxygen/Makefile.in doxygen/doxygen.conf.in README todo EXTRA_DIST = bootstrap.sh LICENSE GPL LGPL doxygen/Makefile.am doxygen/Makefile.in doxygen/doxygen.conf.in README todo
SUBDIRS=src doxygen man po SUBDIRS=src doxygen man po

View file

@ -58,7 +58,7 @@ else
intltoolize --copy --force --automake intltoolize --copy --force --automake
"$LIBTOOLIZE" -c --force --ltdl "$LIBTOOLIZE" -c --force --ltdl
run_versioned aclocal "$VERSION" -I common run_versioned aclocal "$VERSION" -I m4
run_versioned autoconf 2.59 -Wall run_versioned autoconf 2.59 -Wall
run_versioned autoheader 2.59 run_versioned autoheader 2.59
run_versioned automake "$VERSION" --copy --foreign --add-missing run_versioned automake "$VERSION" --copy --foreign --add-missing

View file

@ -20,7 +20,7 @@
# along with PulseAudio; if not, write to the Free Software Foundation, # along with PulseAudio; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
AC_PREREQ(2.60) AC_PREREQ(2.62)
m4_define(PA_MAJOR, [0]) m4_define(PA_MAJOR, [0])
m4_define(PA_MINOR, [9]) m4_define(PA_MINOR, [9])
@ -28,6 +28,7 @@ m4_define(PA_MICRO, [12])
AC_INIT([pulseaudio], PA_MAJOR.PA_MINOR.PA_MICRO,[mzchyfrnhqvb (at) 0pointer (dot) net]) AC_INIT([pulseaudio], PA_MAJOR.PA_MINOR.PA_MICRO,[mzchyfrnhqvb (at) 0pointer (dot) net])
AC_CONFIG_SRCDIR([src/daemon/main.c]) AC_CONFIG_SRCDIR([src/daemon/main.c])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_HEADERS([config.h]) AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE([foreign 1.10 -Wall]) AM_INIT_AUTOMAKE([foreign 1.10 -Wall])
@ -85,6 +86,7 @@ AC_PROG_MKDIR_P
# CC # CC
AC_PROG_CC AC_PROG_CC
AC_PROG_CC_C99
AM_PROG_CC_C_O AM_PROG_CC_C_O
AC_PROG_GCC_TRADITIONAL AC_PROG_GCC_TRADITIONAL
AC_GNU_SOURCE AC_GNU_SOURCE
@ -96,33 +98,12 @@ if test "x$M4" = xno ; then
AC_MSG_ERROR([m4 missing]) AC_MSG_ERROR([m4 missing])
fi fi
# GCC flags dnl Compiler flags
DESIRED_FLAGS="-Wall -W -Wextra -pedantic -pipe -Wformat -Wold-style-definition -Wdeclaration-after-statement -Wfloat-equal -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls -Wmissing-noreturn -Wshadow -Wendif-labels -Wpointer-arith -Wcast-align -Wwrite-strings -Winline -Wno-unused-parameter -ffast-math"
test_gcc_flag() { for flag in $DESIRED_FLAGS ; do
AC_LANG_CONFTEST([int main(int argc, char*argv[]) {}]) CC_CHECK_CFLAGS([$flag], [CFLAGS="$CFLAGS $flag"])
$CC -c conftest.c $CFLAGS -o conftest.o > /dev/null 2> /dev/null done
ret=$?
rm -f conftest.o
return $ret
}
# If using GCC specify some additional parameters
if test "x$GCC" = "xyes" ; then
# We use gnu99 instead of c99 because many have interpreted the standard
# in a way that int64_t isn't defined on non-64 bit platforms.
DESIRED_FLAGS="-std=gnu99 -Wall -W -Wextra -pedantic -pipe -Wformat -Wold-style-definition -Wdeclaration-after-statement -Wfloat-equal -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls -Wmissing-noreturn -Wshadow -Wendif-labels -Wpointer-arith -Wcast-align -Wwrite-strings -Winline -Wno-unused-parameter -ffast-math"
for flag in $DESIRED_FLAGS ; do
AC_MSG_CHECKING([whether $CC accepts $flag])
if test_gcc_flag $flag ; then
CFLAGS="$CFLAGS $flag"
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
done
fi
# Native atomic operation support # Native atomic operation support
AC_ARG_ENABLE([atomic-arm-linux-helpers], AC_ARG_ENABLE([atomic-arm-linux-helpers],
@ -161,17 +142,18 @@ esac
# If everything else fails use libatomic_ops # If everything else fails use libatomic_ops
need_libatomic_ops=yes need_libatomic_ops=yes
AC_MSG_CHECKING([whether $CC knows __sync_bool_compare_and_swap()]) AC_CACHE_CHECK([whether $CC knows __sync_bool_compare_and_swap()],
AC_LANG_CONFTEST([int main() { int a = 4; __sync_bool_compare_and_swap(&a, 4, 5); }]) pulseaudio_cv_sync_bool_compare_and_swap,
$CC conftest.c $CFLAGS -o conftest > /dev/null 2> /dev/null [AC_LINK_IFELSE(
ret=$? AC_LANG_PROGRAM([], [[int a = 4; __sync_bool_compare_and_swap(&a, 4, 5);]]),
rm -f conftest.o conftest [pulseaudio_cv_sync_bool_compare_and_swap=yes],
if test $ret -eq 0 ; then [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.]) AC_DEFINE([HAVE_ATOMIC_BUILTINS], 1, [Have __sync_bool_compare_and_swap() and friends.])
AC_MSG_RESULT([yes])
need_libatomic_ops=no need_libatomic_ops=no
else else
AC_MSG_RESULT([no])
# HW specific atomic ops stuff # HW specific atomic ops stuff
AC_MSG_CHECKING([architecture for native atomic operations]) AC_MSG_CHECKING([architecture for native atomic operations])
case $host_cpu in case $host_cpu in
@ -187,29 +169,27 @@ else
need_libatomic_ops=no need_libatomic_ops=no
else else
AC_MSG_RESULT([no]) AC_MSG_RESULT([no])
AC_MSG_CHECKING([compiler support for arm inline asm atomic operations]) AC_CACHE_CHECK([compiler support for arm inline asm atomic operations],
AC_LANG_CONFTEST([[int main() pulseaudio_cv_support_arm_atomic_ops,
{ [AC_COMPILE_IFELSE(
volatile int a=0; AC_LANG_PROGRAM([],
int o=0, n=1, r; [[volatile int a=0;
asm volatile ("ldrex %0, [%1]\n" int o=0, n=1, r;
"subs %0, %0, %2\n" asm volatile ("ldrex %0, [%1]\n"
"strexeq %0, %3, [%1]\n" "subs %0, %0, %2\n"
: "=&r" (r) "strexeq %0, %3, [%1]\n"
: "r" (&a), "Ir" (o), "r" (n) : "=&r" (r)
: "cc"); : "r" (&a), "Ir" (o), "r" (n)
return (a==1 ? 0 : -1); : "cc");
}]]) return (a==1 ? 0 : -1);
$CC conftest.c $CFLAGS -o conftest > /dev/null 2>&1 ]]),
ret=$? [pulseaudio_cv_support_arm_atomic_ops=yes],
rm -f conftest.o conftest [pulseaudio_cv_support_arm_atomic_ops=no])
if test $ret -eq 0 ; then ])
AS_IF([test "$pulseaudio_cv_support_arm_atomic_ops" = "yes"], [
AC_DEFINE([ATOMIC_ARM_INLINE_ASM], 1, [Have ARMv6 instructions.]) AC_DEFINE([ATOMIC_ARM_INLINE_ASM], 1, [Have ARMv6 instructions.])
AC_MSG_RESULT([yes])
need_libatomic_ops=no need_libatomic_ops=no
else ])
AC_MSG_RESULT([no])
fi
fi fi
;; ;;
*) *)
@ -218,29 +198,19 @@ else
esac esac
fi fi
AC_MSG_CHECKING([whether $CC knows __thread]) CC_CHECK_TLS
AC_LANG_CONFTEST([static __thread int a = 6; int main() { a = 5; }])
$CC conftest.c $CFLAGS -o conftest > /dev/null 2> /dev/null
ret=$?
rm -f conftest.o conftest
if test $ret -eq 0 ; then
AC_DEFINE([HAVE_TLS_BUILTIN], 1, [Have __thread().])
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
AC_MSG_CHECKING([whether $CC knows _Bool]) AC_CACHE_CHECK([whether $CC knows _Bool],
AC_LANG_CONFTEST([int main() { _Bool b; }]) pulseaudio_cv__Bool,
$CC conftest.c $CFLAGS -o conftest > /dev/null 2> /dev/null [AC_COMPILE_IFELSE(
ret=$? AC_LANG_PROGRAM([], [[_Bool b;]]),
rm -f conftest.o conftest [pulseaudio_cv__Bool=yes],
if test $ret -eq 0 ; then [pulseaudio_cv__Bool=no])
])
AS_IF([test "$pulseaudio_cv__Bool" = "yes"], [
AC_DEFINE([HAVE_STD_BOOL], 1, [Have _Bool.]) AC_DEFINE([HAVE_STD_BOOL], 1, [Have _Bool.])
AC_MSG_RESULT([yes]) ])
else
AC_MSG_RESULT([no])
fi
#### libtool stuff #### #### libtool stuff ####
@ -414,20 +384,27 @@ AC_CHECK_FUNCS([setresuid setresgid setreuid setregid seteuid setegid ppoll strs
AC_FUNC_ALLOCA AC_FUNC_ALLOCA
AC_MSG_CHECKING([for PTHREAD_PRIO_INHERIT]) AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
AC_LANG_CONFTEST([AC_LANG_SOURCE([[ pulseaudio_cv_PTHREAD_PRIO_INHERIT,
#include <pthread.h> [save_CC=$CC; CC=$PTHREAD_CC
int main() { int i = PTHREAD_PRIO_INHERIT; }]])]) save_CFLAGS=$CFLAGS; CFLAGS=$PTHREAD_CFLAGS
$PTHREAD_CC conftest.c $PTHREAD_CFLAGS $CFLAGS $PTHREAD_LIBS -o conftest > /dev/null 2> /dev/null save_LIBS=$LIBS; LIBS=$PTHREAD_LIBS
ret=$? AC_LINK_IFELSE(
rm -f conftest.o conftest AC_LANG_PROGRAM(
[[
#include <pthread.h>
]],
[[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
])
if test $ret -eq 0 ; then AS_IF([test "$pulseaudio_cv_PTHREAD_PRIO_INHERIT" = "yes"], [
AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], 1, [Have PTHREAD_PRIO_INHERIT.]) AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], 1, [Have PTHREAD_PRIO_INHERIT.])
AC_MSG_RESULT([yes]) ])
else
AC_MSG_RESULT([no])
fi
#### Large File-Support (LFS) #### #### Large File-Support (LFS) ####
@ -440,8 +417,6 @@ AC_CHECK_FUNCS([open64])
AM_ICONV AM_ICONV
AM_GNU_GETTEXT([external])
IT_PROG_INTLTOOL([0.35.0]) IT_PROG_INTLTOOL([0.35.0])
GETTEXT_PACKAGE=pulseaudio GETTEXT_PACKAGE=pulseaudio
AC_SUBST([GETTEXT_PACKAGE]) AC_SUBST([GETTEXT_PACKAGE])

8
m4/.gitignore vendored Normal file
View file

@ -0,0 +1,8 @@
argz.m4
intltool.m4
libtool.m4
ltdl.m4
ltoptions.m4
ltsugar.m4
ltversion.m4
lt~obsolete.m4

19
m4/acx_libwrap.m4 Normal file
View file

@ -0,0 +1,19 @@
AC_DEFUN([ACX_LIBWRAP], [
LIBWRAP_LIBS=
saved_LIBS="$LIBS"
LIBS="$LIBS -lwrap"
AC_MSG_CHECKING([for tcpwrap library and headers])
AC_LINK_IFELSE(
AC_LANG_PROGRAM(
[#include <tcpd.h>
#include <syslog.h>
int allow_severity = LOG_INFO;
int deny_severity = LOG_WARNING;],
[struct request_info *req;
return hosts_access (req);]),
[AC_DEFINE(HAVE_LIBWRAP, [], [Have tcpwrap?])
LIBWRAP_LIBS="-lwrap"
AC_MSG_RESULT(yes)],
[AC_MSG_RESULT(no)])
LIBS="$saved_LIBS"
])

6
m4/acx_lirc.m4 Normal file
View file

@ -0,0 +1,6 @@
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)
])

View file

@ -346,43 +346,3 @@ else
fi fi
AC_LANG_RESTORE AC_LANG_RESTORE
])dnl ACX_PTHREAD ])dnl ACX_PTHREAD
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
])
AC_DEFUN([ACX_LIBWRAP], [
LIBWRAP_LIBS=
saved_LIBS="$LIBS"
LIBS="$LIBS -lwrap"
AC_MSG_CHECKING([for tcpwrap library and headers])
AC_LINK_IFELSE(
AC_LANG_PROGRAM(
[#include <tcpd.h>
#include <syslog.h>
int allow_severity = LOG_INFO;
int deny_severity = LOG_WARNING;],
[struct request_info *req;
return hosts_access (req);]),
[AC_DEFINE(HAVE_LIBWRAP, [], [Have tcpwrap?])
LIBWRAP_LIBS="-lwrap"
AC_MSG_RESULT(yes)],
[AC_MSG_RESULT(no)])
LIBS="$saved_LIBS"
])
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)
])

258
m4/attributes.m4 Normal file
View file

@ -0,0 +1,258 @@
dnl Macros to check the presence of generic (non-typed) symbols.
dnl Copyright (c) 2006-2007 Diego Pettenò <flameeyes@gmail.com>
dnl Copyright (c) 2006-2007 xine project
dnl
dnl This program is free software; you can redistribute it and/or modify
dnl it under the terms of the GNU General Public License as published by
dnl the Free Software Foundation; either version 2, or (at your option)
dnl any later version.
dnl
dnl This program is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
dnl GNU General Public License for more details.
dnl
dnl You should have received a copy of the GNU General Public License
dnl along with this program; if not, write to the Free Software
dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
dnl 02110-1301, USA.
dnl
dnl As a special exception, the copyright owners of the
dnl macro gives unlimited permission to copy, distribute and modify the
dnl configure scripts that are the output of Autoconf when processing the
dnl Macro. You need not follow the terms of the GNU General Public
dnl License when using or distributing such scripts, even though portions
dnl of the text of the Macro appear in them. The GNU General Public
dnl License (GPL) does govern all other use of the material that
dnl constitutes the Autoconf Macro.
dnl
dnl This special exception to the GPL applies to versions of the
dnl Autoconf Macro released by this project. When you make and
dnl distribute a modified version of the Autoconf Macro, you may extend
dnl this special exception to the GPL to apply to your modified version as
dnl well.
AC_DEFUN([CC_CHECK_CFLAGS_SILENT], [
AC_CACHE_VAL(AS_TR_SH([cc_cv_cflags_$1]),
[ac_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $1"
AC_COMPILE_IFELSE([int a;],
[eval "AS_TR_SH([cc_cv_cflags_$1])='yes'"],
[eval "AS_TR_SH([cc_cv_cflags_$1])='no'"])
CFLAGS="$ac_save_CFLAGS"
])
AS_IF([eval test x$]AS_TR_SH([cc_cv_cflags_$1])[ = xyes],
[$2], [$3])
])
AC_DEFUN([CC_CHECK_CFLAGS], [
AC_CACHE_CHECK([if $CC supports $1 flag],
AS_TR_SH([cc_cv_cflags_$1]),
CC_CHECK_CFLAGS_SILENT([$1]) dnl Don't execute actions here!
)
AS_IF([eval test x$]AS_TR_SH([cc_cv_cflags_$1])[ = xyes],
[$2], [$3])
])
AC_DEFUN([CC_CHECK_LDFLAGS], [
AC_CACHE_CHECK([if $CC supports $1 flag],
AS_TR_SH([cc_cv_ldflags_$1]),
[ac_save_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS $1"
AC_LINK_IFELSE([int main() { return 1; }],
[eval "AS_TR_SH([cc_cv_ldflags_$1])='yes'"],
[eval "AS_TR_SH([cc_cv_ldflags_$1])="])
LDFLAGS="$ac_save_LDFLAGS"
])
AS_IF([eval test x$]AS_TR_SH([cc_cv_ldflags_$1])[ = xyes],
[$2], [$3])
])
dnl Check for a -Werror flag or equivalent. -Werror is the GCC
dnl and ICC flag that tells the compiler to treat all the warnings
dnl as fatal. We usually need this option to make sure that some
dnl constructs (like attributes) are not simply ignored.
dnl
dnl Other compilers don't support -Werror per se, but they support
dnl an equivalent flag:
dnl - Sun Studio compiler supports -errwarn=%all
AC_DEFUN([CC_CHECK_WERROR], [
AC_CACHE_CHECK(
[for $CC way to treat warnings as errors],
[cc_cv_werror],
[CC_CHECK_CFLAGS_SILENT([-Werror], [cc_cv_werror=-Werror],
[CC_CHECK_CFLAGS_SILENT([-errwarn=%all], [cc_cv_werror=-errwarn=%all])])
])
])
AC_DEFUN([CC_CHECK_ATTRIBUTE], [
AC_REQUIRE([CC_CHECK_WERROR])
AC_CACHE_CHECK([if $CC supports __attribute__(( ifelse([$2], , [$1], [$2]) ))],
AS_TR_SH([cc_cv_attribute_$1]),
[ac_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $cc_cv_werror"
AC_COMPILE_IFELSE([$3],
[eval "AS_TR_SH([cc_cv_attribute_$1])='yes'"],
[eval "AS_TR_SH([cc_cv_attribute_$1])='no'"])
CFLAGS="$ac_save_CFLAGS"
])
AS_IF([eval test x$]AS_TR_SH([cc_cv_attribute_$1])[ = xyes],
[AC_DEFINE(
AS_TR_CPP([SUPPORT_ATTRIBUTE_$1]), 1,
[Define this if the compiler supports __attribute__(( ifelse([$2], , [$1], [$2]) ))]
)
$4],
[$5])
])
AC_DEFUN([CC_ATTRIBUTE_CONSTRUCTOR], [
CC_CHECK_ATTRIBUTE(
[constructor],,
[void __attribute__((constructor)) ctor() { int a; }],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_FORMAT], [
CC_CHECK_ATTRIBUTE(
[format], [format(printf, n, n)],
[void __attribute__((format(printf, 1, 2))) printflike(const char *fmt, ...) { fmt = (void *)0; }],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_FORMAT_ARG], [
CC_CHECK_ATTRIBUTE(
[format_arg], [format_arg(printf)],
[char *__attribute__((format_arg(1))) gettextlike(const char *fmt) { fmt = (void *)0; }],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_VISIBILITY], [
CC_CHECK_ATTRIBUTE(
[visibility_$1], [visibility("$1")],
[void __attribute__((visibility("$1"))) $1_function() { }],
[$2], [$3])
])
AC_DEFUN([CC_ATTRIBUTE_NONNULL], [
CC_CHECK_ATTRIBUTE(
[nonnull], [nonnull()],
[void __attribute__((nonnull())) some_function(void *foo, void *bar) { foo = (void*)0; bar = (void*)0; }],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_UNUSED], [
CC_CHECK_ATTRIBUTE(
[unused], ,
[void some_function(void *foo, __attribute__((unused)) void *bar);],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_SENTINEL], [
CC_CHECK_ATTRIBUTE(
[sentinel], ,
[void some_function(void *foo, ...) __attribute__((sentinel));],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_DEPRECATED], [
CC_CHECK_ATTRIBUTE(
[deprecated], ,
[void some_function(void *foo, ...) __attribute__((deprecated));],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_ALIAS], [
CC_CHECK_ATTRIBUTE(
[alias], [weak, alias],
[void other_function(void *foo) { }
void some_function(void *foo) __attribute__((weak, alias("other_function")));],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_MALLOC], [
CC_CHECK_ATTRIBUTE(
[malloc], ,
[void * __attribute__((malloc)) my_alloc(int n);],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_PACKED], [
CC_CHECK_ATTRIBUTE(
[packed], ,
[struct astructure { char a; int b; long c; void *d; } __attribute__((packed));],
[$1], [$2])
])
AC_DEFUN([CC_ATTRIBUTE_CONST], [
CC_CHECK_ATTRIBUTE(
[const], ,
[int __attribute__((const)) twopow(int n) { return 1 << n; } ],
[$1], [$2])
])
AC_DEFUN([CC_FLAG_VISIBILITY], [
AC_REQUIRE([CC_CHECK_WERROR])
AC_CACHE_CHECK([if $CC supports -fvisibility=hidden],
[cc_cv_flag_visibility],
[cc_flag_visibility_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $cc_cv_werror"
CC_CHECK_CFLAGS_SILENT([-fvisibility=hidden],
cc_cv_flag_visibility='yes',
cc_cv_flag_visibility='no')
CFLAGS="$cc_flag_visibility_save_CFLAGS"])
AS_IF([test "x$cc_cv_flag_visibility" = "xyes"],
[AC_DEFINE([SUPPORT_FLAG_VISIBILITY], 1,
[Define this if the compiler supports the -fvisibility flag])
$1],
[$2])
])
AC_DEFUN([CC_FUNC_EXPECT], [
AC_REQUIRE([CC_CHECK_WERROR])
AC_CACHE_CHECK([if compiler has __builtin_expect function],
[cc_cv_func_expect],
[ac_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $cc_cv_werror"
AC_COMPILE_IFELSE(
[int some_function() {
int a = 3;
return (int)__builtin_expect(a, 3);
}],
[cc_cv_func_expect=yes],
[cc_cv_func_expect=no])
CFLAGS="$ac_save_CFLAGS"
])
AS_IF([test "x$cc_cv_func_expect" = "xyes"],
[AC_DEFINE([SUPPORT__BUILTIN_EXPECT], 1,
[Define this if the compiler supports __builtin_expect() function])
$1],
[$2])
])
AC_DEFUN([CC_ATTRIBUTE_ALIGNED], [
AC_REQUIRE([CC_CHECK_WERROR])
AC_CACHE_CHECK([highest __attribute__ ((aligned ())) supported],
[cc_cv_attribute_aligned],
[ac_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $cc_cv_werror"
for cc_attribute_align_try in 64 32 16 8 4 2; do
AC_COMPILE_IFELSE([
int main() {
static char c __attribute__ ((aligned($cc_attribute_align_try))) = 0;
return c;
}], [cc_cv_attribute_aligned=$cc_attribute_align_try; break])
done
CFLAGS="$ac_save_CFLAGS"
])
if test "x$cc_cv_attribute_aligned" != "x"; then
AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX], [$cc_cv_attribute_aligned],
[Define the highest alignment supported])
fi
])

13
m4/check_define.m4 Normal file
View file

@ -0,0 +1,13 @@
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
])

17
m4/tls.m4 Normal file
View file

@ -0,0 +1,17 @@
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])
])

View file

@ -17,9 +17,10 @@
pulseconfdir=$(sysconfdir)/pulse pulseconfdir=$(sysconfdir)/pulse
if BUILD_MANPAGES CLEANFILES = \
$(noinst_DATA)
man_MANS = \ dist_man_MANS = \
pulseaudio.1 \ pulseaudio.1 \
esdcompat.1 \ esdcompat.1 \
pax11publish.1 \ pax11publish.1 \
@ -49,115 +50,18 @@ noinst_DATA = \
pulse-client.conf.5.xml \ pulse-client.conf.5.xml \
default.pa.5.xml default.pa.5.xml
CLEANFILES = \ if BUILD_MANPAGES
$(noinst_DATA)
pulseaudio.1.xml: pulseaudio.1.xml.in Makefile
sed -e 's,@pulseconfdir\@,$(pulseconfdir),g' \
-e 's,@PACKAGE_BUGREPORT\@,$(PACKAGE_BUGREPORT),g' \
-e 's,@PACKAGE_URL\@,$(PACKAGE_URL),g' $< > $@
esdcompat.1.xml: esdcompat.1.xml.in Makefile
sed -e 's,@pulseconfdir\@,$(pulseconfdir),g' \
-e 's,@PACKAGE_BUGREPORT\@,$(PACKAGE_BUGREPORT),g' \
-e 's,@PACKAGE_URL\@,$(PACKAGE_URL),g' $< > $@
pax11publish.1.xml: pax11publish.1.xml.in Makefile
sed -e 's,@pulseconfdir\@,$(pulseconfdir),g' \
-e 's,@PACKAGE_BUGREPORT\@,$(PACKAGE_BUGREPORT),g' \
-e 's,@PACKAGE_URL\@,$(PACKAGE_URL),g' $< > $@
paplay.1.xml: paplay.1.xml.in Makefile
sed -e 's,@pulseconfdir\@,$(pulseconfdir),g' \
-e 's,@PACKAGE_BUGREPORT\@,$(PACKAGE_BUGREPORT),g' \
-e 's,@PACKAGE_URL\@,$(PACKAGE_URL),g' $< > $@
pacat.1.xml: pacat.1.xml.in Makefile
sed -e 's,@pulseconfdir\@,$(pulseconfdir),g' \
-e 's,@PACKAGE_BUGREPORT\@,$(PACKAGE_BUGREPORT),g' \
-e 's,@PACKAGE_URL\@,$(PACKAGE_URL),g' $< > $@
pacmd.1.xml: pacmd.1.xml.in Makefile
sed -e 's,@pulseconfdir\@,$(pulseconfdir),g' \
-e 's,@PACKAGE_BUGREPORT\@,$(PACKAGE_BUGREPORT),g' \
-e 's,@PACKAGE_URL\@,$(PACKAGE_URL),g' $< > $@
pactl.1.xml: pactl.1.xml.in Makefile
sed -e 's,@pulseconfdir\@,$(pulseconfdir),g' \
-e 's,@PACKAGE_BUGREPORT\@,$(PACKAGE_BUGREPORT),g' \
-e 's,@PACKAGE_URL\@,$(PACKAGE_URL),g' $< > $@
pasuspender.1.xml: pasuspender.1.xml.in Makefile
sed -e 's,@pulseconfdir\@,$(pulseconfdir),g' \
-e 's,@PACKAGE_BUGREPORT\@,$(PACKAGE_BUGREPORT),g' \
-e 's,@PACKAGE_URL\@,$(PACKAGE_URL),g' $< > $@
padsp.1.xml: padsp.1.xml.in Makefile
sed -e 's,@pulseconfdir\@,$(pulseconfdir),g' \
-e 's,@PACKAGE_BUGREPORT\@,$(PACKAGE_BUGREPORT),g' \
-e 's,@PACKAGE_URL\@,$(PACKAGE_URL),g' $< > $@
pabrowse.1.xml: pabrowse.1.xml.in Makefile
sed -e 's,@pulseconfdir\@,$(pulseconfdir),g' \
-e 's,@PACKAGE_BUGREPORT\@,$(PACKAGE_BUGREPORT),g' \
-e 's,@PACKAGE_URL\@,$(PACKAGE_URL),g' $< > $@
pulse-daemon.conf.5.xml: pulse-daemon.conf.5.xml.in Makefile
sed -e 's,@pulseconfdir\@,$(pulseconfdir),g' \
-e 's,@PACKAGE_BUGREPORT\@,$(PACKAGE_BUGREPORT),g' \
-e 's,@PACKAGE_URL\@,$(PACKAGE_URL),g' $< > $@
pulse-client.conf.5.xml: pulse-client.conf.5.xml.in Makefile
sed -e 's,@pulseconfdir\@,$(pulseconfdir),g' \
-e 's,@PACKAGE_BUGREPORT\@,$(PACKAGE_BUGREPORT),g' \
-e 's,@PACKAGE_URL\@,$(PACKAGE_URL),g' $< > $@
default.pa.5.xml: default.pa.5.xml.in Makefile
sed -e 's,@pulseconfdir\@,$(pulseconfdir),g' \
-e 's,@PACKAGE_BUGREPORT\@,$(PACKAGE_BUGREPORT),g' \
-e 's,@PACKAGE_URL\@,$(PACKAGE_URL),g' $< > $@
CLEANFILES += \ CLEANFILES += \
$(man_MANS) $(dist_man_MANS)
pulseaudio.1: pulseaudio.1.xml Makefile %.xml: %.xml.in Makefile
perl xmltoman $< > $@ || rm -f $@ sed -e 's,@pulseconfdir\@,$(pulseconfdir),g' \
-e 's,@PACKAGE_BUGREPORT\@,$(PACKAGE_BUGREPORT),g' \
-e 's,@PACKAGE_URL\@,$(PACKAGE_URL),g' $< > $@
esdcompat.1: esdcompat.1.xml Makefile %: %.xml Makefile
perl xmltoman $< > $@ || rm -f $@ perl $(srcdir)/xmltoman $< > $@ || rm -f $@
pax11publish.1: pax11publish.1.xml Makefile
perl xmltoman $< > $@ || rm -f $@
paplay.1: paplay.1.xml Makefile
perl xmltoman $< > $@ || rm -f $@
pacat.1: pacat.1.xml Makefile
perl xmltoman $< > $@ || rm -f $@
pacmd.1: pacmd.1.xml Makefile
perl xmltoman $< > $@ || rm -f $@
pactl.1: pactl.1.xml Makefile
perl xmltoman $< > $@ || rm -f $@
pasuspender.1: pasuspender.1.xml Makefile
perl xmltoman $< > $@ || rm -f $@
padsp.1: padsp.1.xml Makefile
perl xmltoman $< > $@ || rm -f $@
pabrowse.1: pabrowse.1.xml Makefile
perl xmltoman $< > $@ || rm -f $@
pulse-daemon.conf.5: pulse-daemon.conf.5.xml Makefile
perl xmltoman $< > $@ || rm -f $@
pulse-client.conf.5: pulse-client.conf.5.xml Makefile
perl xmltoman $< > $@ || rm -f $@
default.pa.5: default.pa.5.xml Makefile
perl xmltoman $< > $@ || rm -f $@
xmllint: $(noinst_DATA) xmllint: $(noinst_DATA)
for f in $(noinst_DATA) ; do \ for f in $(noinst_DATA) ; do \
@ -167,7 +71,6 @@ xmllint: $(noinst_DATA)
endif endif
EXTRA_DIST = \ EXTRA_DIST = \
$(man_MANS) \
pulseaudio.1.xml.in \ pulseaudio.1.xml.in \
esdcompat.1.xml.in \ esdcompat.1.xml.in \
pax11publish.1.xml.in \ pax11publish.1.xml.in \

View file

@ -102,7 +102,9 @@ static lt_module bind_now_open(lt_user_data d, const char *fname, lt_dladvise ad
pa_assert(fname); pa_assert(fname);
if (!(m = dlopen(fname, PA_BIND_NOW))) { if (!(m = dlopen(fname, PA_BIND_NOW))) {
#ifdef HAVE_LT_DLMUTEX_REGISTER
libtool_set_error(dlerror()); libtool_set_error(dlerror());
#endif
return NULL; return NULL;
} }
@ -114,7 +116,9 @@ static int bind_now_close(lt_user_data d, lt_module m) {
pa_assert(m); pa_assert(m);
if (dlclose(m) != 0){ if (dlclose(m) != 0){
#ifdef HAVE_LT_DLMUTEX_REGISTER
libtool_set_error(dlerror()); libtool_set_error(dlerror());
#endif
return 1; return 1;
} }
@ -128,7 +132,9 @@ static lt_ptr bind_now_find_sym(lt_user_data d, lt_module m, const char *symbol)
pa_assert(symbol); pa_assert(symbol);
if (!(ptr = dlsym(m, symbol))) { if (!(ptr = dlsym(m, symbol))) {
#ifdef HAVE_LT_DLMUTEX_REGISTER
libtool_set_error(dlerror()); libtool_set_error(dlerror());
#endif
return NULL; return NULL;
} }

View file

@ -86,7 +86,7 @@ void *pa_tls_set(pa_tls *t, void *userdata);
} \ } \
struct __stupid_useless_struct_to_allow_trailing_semicolon struct __stupid_useless_struct_to_allow_trailing_semicolon
#ifdef HAVE_TLS_BUILTIN #ifdef SUPPORT_TLS___THREAD
/* An optimized version of the above that requires no dynamic /* An optimized version of the above that requires no dynamic
* allocation if the compiler supports __thread */ * allocation if the compiler supports __thread */
#define PA_STATIC_TLS_DECLARE_NO_FREE(name) \ #define PA_STATIC_TLS_DECLARE_NO_FREE(name) \