47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl Macros to check the presence of generic (non-typed) symbols.
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl Copyright (c) 2006-2008 Diego Pettenò <flameeyes@gmail.com>
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl Copyright (c) 2006-2008 xine project
eb2e280f9c59b66965c9316eadc4c113a13ca744Lucas De Marchidnl Copyright (c) 2012 Lucas De Marchi <lucas.de.marchi@gmail.com>
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl This program is free software; you can redistribute it and/or modify
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl it under the terms of the GNU General Public License as published by
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl the Free Software Foundation; either version 2, or (at your option)
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl any later version.
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl This program is distributed in the hope that it will be useful,
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl but WITHOUT ANY WARRANTY; without even the implied warranty of
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl GNU General Public License for more details.
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl You should have received a copy of the GNU General Public License
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl along with this program; if not, write to the Free Software
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl 02110-1301, USA.
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl As a special exception, the copyright owners of the
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl macro gives unlimited permission to copy, distribute and modify the
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl configure scripts that are the output of Autoconf when processing the
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl Macro. You need not follow the terms of the GNU General Public
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl License when using or distributing such scripts, even though portions
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl of the text of the Macro appear in them. The GNU General Public
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl License (GPL) does govern all other use of the material that
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl constitutes the Autoconf Macro.
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl This special exception to the GPL applies to versions of the
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl Autoconf Macro released by this project. When you make and
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl distribute a modified version of the Autoconf Macro, you may extend
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl this special exception to the GPL to apply to your modified version as
eb2e280f9c59b66965c9316eadc4c113a13ca744Lucas De Marchidnl Check if FLAG in ENV-VAR is supported by compiler and append it
43bbf1acc8202de895e5449828a7b863c69fcc2fDavid Herrmanndnl to WHERE-TO-APPEND variable. Note that we invert -Wno-* checks to
a01a4517e16c532fbd5203fbfe2571255e2cd312Filipe Brandenburgerdnl -W* as gcc cannot test for negated warnings. If a C snippet is passed,
a01a4517e16c532fbd5203fbfe2571255e2cd312Filipe Brandenburgerdnl use it, otherwise use a simple main() definition that just returns 0.
a01a4517e16c532fbd5203fbfe2571255e2cd312Filipe Brandenburgerdnl CC_CHECK_FLAG_APPEND([WHERE-TO-APPEND], [ENV-VAR], [FLAG], [C-SNIPPET])
eb2e280f9c59b66965c9316eadc4c113a13ca744Lucas De MarchiAC_DEFUN([CC_CHECK_FLAG_APPEND], [
eb2e280f9c59b66965c9316eadc4c113a13ca744Lucas De Marchi AC_CACHE_CHECK([if $CC supports flag $3 in envvar $2],
eb2e280f9c59b66965c9316eadc4c113a13ca744Lucas De Marchi AS_TR_SH([cc_cv_$2_$3]),
e9c1ea9de87d4d508ac38ce87a2fa56e7529a91aJason St. John [eval "AS_TR_SH([cc_save_$2])='${$2}'"
4c79662e251bea1bfbe18d4374a69bf47aa7a1c6Michał Górny eval "AS_TR_SH([$2])='${cc_save_$2} -Werror `echo "$3" | sed 's/^-Wno-/-W/'`'"
a01a4517e16c532fbd5203fbfe2571255e2cd312Filipe Brandenburger AC_LINK_IFELSE([AC_LANG_SOURCE(ifelse([$4], [],
a01a4517e16c532fbd5203fbfe2571255e2cd312Filipe Brandenburger [int main(void) { return 0; } ],
d8c8508bad097c5cc354b684866a5b7a83fce394David Herrmann [eval "AS_TR_SH([cc_cv_$2_$3])='yes'"],
d8c8508bad097c5cc354b684866a5b7a83fce394David Herrmann [eval "AS_TR_SH([cc_cv_$2_$3])='no'"])
e9c1ea9de87d4d508ac38ce87a2fa56e7529a91aJason St. John eval "AS_TR_SH([$2])='$cc_save_$2'"])
eb2e280f9c59b66965c9316eadc4c113a13ca744Lucas De Marchi AS_IF([eval test x$]AS_TR_SH([cc_cv_$2_$3])[ = xyes],
eb2e280f9c59b66965c9316eadc4c113a13ca744Lucas De Marchi [eval "$1='${$1} $3'"])
a01a4517e16c532fbd5203fbfe2571255e2cd312Filipe Brandenburgerdnl CC_CHECK_FLAGS_APPEND([WHERE-TO-APPEND], [ENV-VAR], [FLAG1 FLAG2], [C-SNIPPET])
eb2e280f9c59b66965c9316eadc4c113a13ca744Lucas De MarchiAC_DEFUN([CC_CHECK_FLAGS_APPEND], [
6a937f0645ab335ef13a79951c3e94d6d8becea9Filipe Brandenburger for flag in [$3]; do
a01a4517e16c532fbd5203fbfe2571255e2cd312Filipe Brandenburger CC_CHECK_FLAG_APPEND([$1], [$2], $flag, [$4])
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl Check if the flag is supported by linker (cacheable)
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl CC_CHECK_LDFLAGS([FLAG], [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND])
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart PoetteringAC_DEFUN([CC_CHECK_LDFLAGS], [
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering AC_CACHE_CHECK([if $CC supports $1 flag],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering AS_TR_SH([cc_cv_ldflags_$1]),
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [ac_save_LDFLAGS="$LDFLAGS"
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering LDFLAGS="$LDFLAGS $1"
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering AC_LINK_IFELSE([int main() { return 1; }],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [eval "AS_TR_SH([cc_cv_ldflags_$1])='yes'"],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [eval "AS_TR_SH([cc_cv_ldflags_$1])="])
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering LDFLAGS="$ac_save_LDFLAGS"
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering AS_IF([eval test x$]AS_TR_SH([cc_cv_ldflags_$1])[ = xyes],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl define the LDFLAGS_NOUNDEFINED variable with the correct value for
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl the current linker to avoid undefined references in a shared object.
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart PoetteringAC_DEFUN([CC_NOUNDEFINED], [
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering dnl We check $host for which systems to enable this for.
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering AC_REQUIRE([AC_CANONICAL_HOST])
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering dnl FreeBSD (et al.) does not complete linking for shared objects when pthreads
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering dnl are requested, as different implementations are present; to avoid problems
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering dnl use -Wl,-z,defs only for those platform not behaving this way.
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering *-freebsd* | *-openbsd*) ;;
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering dnl First of all check for the --no-undefined variant of GNU ld. This allows
3f85ef0f05ffc51e19f86fb83a1c51e8e3cd6817Harald Hoyer dnl for a much more readable command line, so that people can understand what
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering dnl it does without going to look for what the heck -z defs does.
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering for possible_flags in "-Wl,--no-undefined" "-Wl,-z,defs"; do
e9c1ea9de87d4d508ac38ce87a2fa56e7529a91aJason St. John CC_CHECK_LDFLAGS([$possible_flags], [LDFLAGS_NOUNDEFINED="$possible_flags"])
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering AC_SUBST([LDFLAGS_NOUNDEFINED])
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl Check for a -Werror flag or equivalent. -Werror is the GCC
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl and ICC flag that tells the compiler to treat all the warnings
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl as fatal. We usually need this option to make sure that some
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl constructs (like attributes) are not simply ignored.
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl Other compilers don't support -Werror per se, but they support
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl an equivalent flag:
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poetteringdnl - Sun Studio compiler supports -errwarn=%all
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart PoetteringAC_DEFUN([CC_CHECK_WERROR], [
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering AC_CACHE_CHECK(
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [for $CC way to treat warnings as errors],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [cc_cv_werror],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [CC_CHECK_CFLAGS_SILENT([-Werror], [cc_cv_werror=-Werror],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [CC_CHECK_CFLAGS_SILENT([-errwarn=%all], [cc_cv_werror=-errwarn=%all])])
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart PoetteringAC_DEFUN([CC_CHECK_ATTRIBUTE], [
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering AC_REQUIRE([CC_CHECK_WERROR])
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering AC_CACHE_CHECK([if $CC supports __attribute__(( ifelse([$2], , [$1], [$2]) ))],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering AS_TR_SH([cc_cv_attribute_$1]),
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [ac_save_CFLAGS="$CFLAGS"
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering CFLAGS="$CFLAGS $cc_cv_werror"
c18514440d7edce2ca7ae14cc2c88cfbac436e67Lucas De Marchi AC_COMPILE_IFELSE([AC_LANG_SOURCE([$3])],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [eval "AS_TR_SH([cc_cv_attribute_$1])='yes'"],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [eval "AS_TR_SH([cc_cv_attribute_$1])='no'"])
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering CFLAGS="$ac_save_CFLAGS"
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering AS_IF([eval test x$]AS_TR_SH([cc_cv_attribute_$1])[ = xyes],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering AS_TR_CPP([SUPPORT_ATTRIBUTE_$1]), 1,
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [Define this if the compiler supports __attribute__(( ifelse([$2], , [$1], [$2]) ))]
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart PoetteringAC_DEFUN([CC_ATTRIBUTE_CONSTRUCTOR], [
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering CC_CHECK_ATTRIBUTE(
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [constructor],,
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [void __attribute__((constructor)) ctor() { int a; }],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart PoetteringAC_DEFUN([CC_ATTRIBUTE_FORMAT], [
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering CC_CHECK_ATTRIBUTE(
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [format], [format(printf, n, n)],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [void __attribute__((format(printf, 1, 2))) printflike(const char *fmt, ...) { fmt = (void *)0; }],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart PoetteringAC_DEFUN([CC_ATTRIBUTE_FORMAT_ARG], [
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering CC_CHECK_ATTRIBUTE(
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [format_arg], [format_arg(printf)],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [char *__attribute__((format_arg(1))) gettextlike(const char *fmt) { fmt = (void *)0; }],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart PoetteringAC_DEFUN([CC_ATTRIBUTE_VISIBILITY], [
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering CC_CHECK_ATTRIBUTE(
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [visibility_$1], [visibility("$1")],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [void __attribute__((visibility("$1"))) $1_function() { }],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart PoetteringAC_DEFUN([CC_ATTRIBUTE_NONNULL], [
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering CC_CHECK_ATTRIBUTE(
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [nonnull], [nonnull()],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [void __attribute__((nonnull())) some_function(void *foo, void *bar) { foo = (void*)0; bar = (void*)0; }],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart PoetteringAC_DEFUN([CC_ATTRIBUTE_UNUSED], [
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering CC_CHECK_ATTRIBUTE(
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [void some_function(void *foo, __attribute__((unused)) void *bar);],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart PoetteringAC_DEFUN([CC_ATTRIBUTE_SENTINEL], [
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering CC_CHECK_ATTRIBUTE(
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [void some_function(void *foo, ...) __attribute__((sentinel));],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart PoetteringAC_DEFUN([CC_ATTRIBUTE_DEPRECATED], [
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering CC_CHECK_ATTRIBUTE(
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [deprecated], ,
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [void some_function(void *foo, ...) __attribute__((deprecated));],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart PoetteringAC_DEFUN([CC_ATTRIBUTE_ALIAS], [
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering CC_CHECK_ATTRIBUTE(
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [alias], [weak, alias],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [void other_function(void *foo) { }
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering void some_function(void *foo) __attribute__((weak, alias("other_function")));],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart PoetteringAC_DEFUN([CC_ATTRIBUTE_MALLOC], [
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering CC_CHECK_ATTRIBUTE(
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [void * __attribute__((malloc)) my_alloc(int n);],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart PoetteringAC_DEFUN([CC_ATTRIBUTE_PACKED], [
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering CC_CHECK_ATTRIBUTE(
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [struct astructure { char a; int b; long c; void *d; } __attribute__((packed));],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart PoetteringAC_DEFUN([CC_ATTRIBUTE_CONST], [
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering CC_CHECK_ATTRIBUTE(
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [int __attribute__((const)) twopow(int n) { return 1 << n; } ],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart PoetteringAC_DEFUN([CC_FLAG_VISIBILITY], [
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering AC_REQUIRE([CC_CHECK_WERROR])
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering AC_CACHE_CHECK([if $CC supports -fvisibility=hidden],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [cc_cv_flag_visibility],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [cc_flag_visibility_save_CFLAGS="$CFLAGS"
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering CFLAGS="$CFLAGS $cc_cv_werror"
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering CC_CHECK_CFLAGS_SILENT([-fvisibility=hidden],
e9c1ea9de87d4d508ac38ce87a2fa56e7529a91aJason St. John cc_cv_flag_visibility='yes',
e9c1ea9de87d4d508ac38ce87a2fa56e7529a91aJason St. John cc_cv_flag_visibility='no')
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering CFLAGS="$cc_flag_visibility_save_CFLAGS"])
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering AS_IF([test "x$cc_cv_flag_visibility" = "xyes"],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [AC_DEFINE([SUPPORT_FLAG_VISIBILITY], 1,
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [Define this if the compiler supports the -fvisibility flag])
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart PoetteringAC_DEFUN([CC_FUNC_EXPECT], [
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering AC_REQUIRE([CC_CHECK_WERROR])
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering AC_CACHE_CHECK([if compiler has __builtin_expect function],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [cc_cv_func_expect],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [ac_save_CFLAGS="$CFLAGS"
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering CFLAGS="$CFLAGS $cc_cv_werror"
c18514440d7edce2ca7ae14cc2c88cfbac436e67Lucas De Marchi AC_COMPILE_IFELSE([AC_LANG_SOURCE(
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [int some_function() {
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering return (int)__builtin_expect(a, 3);
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [cc_cv_func_expect=yes],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [cc_cv_func_expect=no])
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering CFLAGS="$ac_save_CFLAGS"
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering AS_IF([test "x$cc_cv_func_expect" = "xyes"],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [AC_DEFINE([SUPPORT__BUILTIN_EXPECT], 1,
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [Define this if the compiler supports __builtin_expect() function])
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart PoetteringAC_DEFUN([CC_ATTRIBUTE_ALIGNED], [
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering AC_REQUIRE([CC_CHECK_WERROR])
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering AC_CACHE_CHECK([highest __attribute__ ((aligned ())) supported],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [cc_cv_attribute_aligned],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [ac_save_CFLAGS="$CFLAGS"
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering CFLAGS="$CFLAGS $cc_cv_werror"
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering for cc_attribute_align_try in 64 32 16 8 4 2; do
c18514440d7edce2ca7ae14cc2c88cfbac436e67Lucas De Marchi AC_COMPILE_IFELSE([AC_LANG_SOURCE([
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering static char c __attribute__ ((aligned($cc_attribute_align_try))) = 0;
c18514440d7edce2ca7ae14cc2c88cfbac436e67Lucas De Marchi }])], [cc_cv_attribute_aligned=$cc_attribute_align_try; break])
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering CFLAGS="$ac_save_CFLAGS"
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering if test "x$cc_cv_attribute_aligned" != "x"; then
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX], [$cc_cv_attribute_aligned],
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering [Define the highest alignment supported])