diff options
| author | Lennart Poettering <lennart@poettering.net> | 2012-05-15 15:24:31 +0200 | 
|---|---|---|
| committer | Lennart Poettering <lennart@poettering.net> | 2012-05-15 15:25:40 +0200 | 
| commit | 2e8be3fa0df7b6ccf953572ab341ddd9c45db878 (patch) | |
| tree | a7508b82b35479d293bafdd980550a9d24877541 | |
| parent | e13acf74dd4418bc7c913ad111eb75dd4cbaf82d (diff) | |
build-sys: modernize build system
| -rw-r--r-- | Makefile.am | 6 | ||||
| -rwxr-xr-x | autogen.sh | 49 | ||||
| -rwxr-xr-x | bootstrap.sh | 61 | ||||
| -rw-r--r-- | configure.ac | 99 | ||||
| -rw-r--r-- | m4/attributes.m4 | 288 | 
5 files changed, 406 insertions, 97 deletions
diff --git a/Makefile.am b/Makefile.am index 7f5e8f2..53beb69 100644 --- a/Makefile.am +++ b/Makefile.am @@ -15,6 +15,9 @@  # You should have received a copy of the GNU General Public License  # along with RealtimeKit. If not, see <http://www.gnu.org/licenses/>. +AM_CFLAGS = $(WARNINGFLAGS) $(PTHREAD_CFLAGS) +AM_LDFLAGS = $(GCLDFLAGS) +  ACLOCAL_AMFLAGS = -I m4  policykitdir = $(datadir)/polkit-1/actions/ @@ -58,6 +61,7 @@ rtkit_daemon_SOURCES = \  rtkit_daemon_LDADD = \  	$(DBUS_LIBS)  rtkit_daemon_CFLAGS = \ +	$(AM_CFLAGS) \  	$(DBUS_CFLAGS)  rtkitctl_SOURCES = \ @@ -65,6 +69,7 @@ rtkitctl_SOURCES = \  rtkitctl_LDADD = \  	$(DBUS_LIBS)  rtkitctl_CFLAGS = \ +	$(AM_CFLAGS) \  	$(DBUS_CFLAGS)  rtkit_test_SOURCES = \ @@ -72,6 +77,7 @@ rtkit_test_SOURCES = \  rtkit_test_LDADD = \  	$(DBUS_LIBS)  rtkit_test_CFLAGS = \ +	$(AM_CFLAGS) \  	$(DBUS_CFLAGS)  org.freedesktop.RealtimeKit1.service: org.freedesktop.RealtimeKit1.service.in diff --git a/autogen.sh b/autogen.sh new file mode 100755 index 0000000..97bc9b2 --- /dev/null +++ b/autogen.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +# This file is part of RealtimeKit. +# +# Copyright 2009 Lennart Poettering +# +# RealtimeKit 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. +# +# RealtimeKit 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 RealtimeKit. If not, see <http://www.gnu.org/licenses/>. + +if [ -f .git/hooks/pre-commit.sample -a ! -f .git/hooks/pre-commit ] ; then +        cp -p .git/hooks/pre-commit.sample .git/hooks/pre-commit && \ +        chmod +x .git/hooks/pre-commit && \ +        echo "Activated pre-commit hook." +fi + +autoreconf --force --install --symlink + +libdir() { +        echo $(cd $1/$(gcc -print-multi-os-directory); pwd) +} + +args="\ +--sysconfdir=/etc \ +--localstatedir=/var \ +--libdir=$(libdir /usr/lib) \ +--libexecdir=/usr/lib" + +if [ "x$1" == "xc" ]; then +        ./configure CFLAGS='-g -O0 -Wp,-U_FORTIFY_SOURCE' $args +        make clean +else +        echo +        echo "----------------------------------------------------------------" +        echo "Initialized build system. For a common configuration please run:" +        echo "----------------------------------------------------------------" +        echo +        echo "./configure CFLAGS='-g -O0 -Wp,-U_FORTIFY_SOURCE' $args" +        echo +fi diff --git a/bootstrap.sh b/bootstrap.sh deleted file mode 100755 index eb0f80f..0000000 --- a/bootstrap.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/bash - -# This file is part of RealtimeKit. -# -# Copyright 2009 Lennart Poettering -# -# RealtimeKit 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. -# -# RealtimeKit 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 RealtimeKit. If not, see <http://www.gnu.org/licenses/>. - -VERSION=1.9 - -run_versioned() { -    local P -    local V - -    V=$(echo "$2" | sed -e 's,\.,,g') - -    if [ -e "`which $1$V 2> /dev/null`" ] ; then -        P="$1$V" -    else -	if [ -e "`which $1-$2 2> /dev/null`" ] ; then -            P="$1-$2" -	else -	    P="$1" -	fi -    fi - -    shift 2 -    "$P" "$@" -} - -set -ex - -if [ "x$1" = "xam" ] ; then -    run_versioned automake "$VERSION" -a -c --foreign -    ./config.status -else -    rm -rf autom4te.cache -    rm -f config.cache - -    mkdir -p m4 -    run_versioned aclocal "$VERSION" -I m4 -    run_versioned autoconf 2.59 -Wall -    run_versioned autoheader 2.59 -    run_versioned automake "$VERSION" --copy --foreign --add-missing - -    if test "x$NOCONFIGURE" = "x"; then -        CFLAGS="-g -O0" ./configure --sysconfdir=/etc --localstatedir=/var "$@" -        make clean -    fi -fi diff --git a/configure.ac b/configure.ac index 7024cbc..5a77363 100644 --- a/configure.ac +++ b/configure.ac @@ -18,23 +18,27 @@  # You should have received a copy of the GNU General Public License  # along with RealtimeKit. If not, see <http://www.gnu.org/licenses/>. -AC_PREREQ(2.63) +AC_PREREQ(2.68) + +AC_INIT([rtkit], +        [0.11], +        [mzegxvg (at) 0pointer (dot) net], +        [rtkit], +        [http://git.0pointer.de/?p=rtkit.git]) -AC_INIT([rtkit], 0.10, [mzegxvg (at) 0pointer (dot) net])  AC_CONFIG_SRCDIR([rtkit-daemon.c])  AC_CONFIG_HEADERS([config.h])  AC_CONFIG_MACRO_DIR(m4) +AC_CONFIG_AUX_DIR([build-aux]) -AM_INIT_AUTOMAKE([foreign 1.11 -Wno-portability silent-rules -Wall]) -m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) - -AC_SUBST(PACKAGE_URL, [http://git.0pointer.de/?p=rtkit.git]) +AM_INIT_AUTOMAKE([foreign 1.11 -Wno-portability silent-rules -Wall tar-pax no-dist-gzip dist-xz]) +AM_SILENT_RULES([yes])  AC_CANONICAL_HOST  if type -p stow > /dev/null && test -d /usr/local/stow ; then -   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}"  fi  #### Checks for programs. #### @@ -46,43 +50,66 @@ AC_PROG_CC_C99  AM_PROG_CC_C_O  AC_PROG_GCC_TRADITIONAL  AC_USE_SYSTEM_EXTENSIONS +AC_SYS_LARGEFILE  # GCC flags -test_gcc_flag() { -    AC_LANG_CONFTEST([int main(int argc, char*argv[]) {}]) -    $CC -c conftest.c $CFLAGS "$1" -o conftest.o > /dev/null 2> /dev/null -    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" -           CXXFLAGS="$CXXFLAGS $flag" -           AC_MSG_RESULT([yes]) -        else -           AC_MSG_RESULT([no]) -        fi -    done -fi +CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\ +        -pipe \ +        -Wall \ +        -W \ +        -Wextra \ +        -Winline \ +        -Wvla \ +        -Wundef \ +        -Wformat=2 \ +        -Wlogical-op \ +        -Wsign-compare \ +        -Wformat-security \ +        -Wmissing-include-dirs \ +        -Wformat-nonliteral \ +        -Wold-style-definition \ +        -Wpointer-arith \ +        -Winit-self \ +        -Wdeclaration-after-statement \ +        -Wfloat-equal \ +        -Wmissing-prototypes \ +        -Wstrict-prototypes \ +        -Wredundant-decls \ +        -Wmissing-declarations \ +        -Wmissing-noreturn \ +        -Wshadow \ +        -Wendif-labels \ +        -Wcast-align \ +        -Wstrict-aliasing=2 \ +        -Wwrite-strings \ +        -Wno-long-long \ +        -Wno-overlength-strings \ +        -Wno-unused-parameter \ +        -Wno-missing-field-initializers \ +        -Wno-unused-result \ +        -Wunsafe-loop-optimizations \ +        -Wpacked \ +        -Werror=overflow \ +        -Wp,-D_FORTIFY_SOURCE=2 \ +        -ffast-math \ +        -fno-common \ +        -fdiagnostics-show-option \ +        -fno-strict-aliasing \ +        -ffunction-sections \ +        -fdata-sections]) +AC_SUBST([WARNINGFLAGS], $with_cflags) + +CC_CHECK_FLAGS_APPEND([with_ldflags], [LDFLAGS], [\ +        -Wl,--as-needed \ +        -Wl,--gc-sections]) +AC_SUBST([GCLDFLAGS], $with_ldflags)  ACX_PTHREAD  LIBS="$PTHREAD_LIBS $LIBS"  CFLAGS="$CFLAGS $PTHREAD_CFLAGS"  CC="$PTHREAD_CC" -AC_SYS_LARGEFILE -  AC_SEARCH_LIBS([sched_setscheduler], [rt])  AC_SEARCH_LIBS([clock_gettime], [rt])  AC_SEARCH_LIBS([cap_init], [cap]) diff --git a/m4/attributes.m4 b/m4/attributes.m4 new file mode 100644 index 0000000..e354375 --- /dev/null +++ b/m4/attributes.m4 @@ -0,0 +1,288 @@ +dnl Macros to check the presence of generic (non-typed) symbols. +dnl Copyright (c) 2006-2008 Diego Pettenò <flameeyes@gmail.com> +dnl Copyright (c) 2006-2008 xine project +dnl Copyright (c) 2012 Lucas De Marchi <lucas.de.marchi@gmail.com> +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. + +dnl Check if FLAG in ENV-VAR is supported by compiler and append it +dnl to WHERE-TO-APPEND variable +dnl CC_CHECK_FLAG_APPEND([WHERE-TO-APPEND], [ENV-VAR], [FLAG]) + +AC_DEFUN([CC_CHECK_FLAG_APPEND], [ +  AC_CACHE_CHECK([if $CC supports flag $3 in envvar $2], +                 AS_TR_SH([cc_cv_$2_$3]), +		 [eval "AS_TR_SH([cc_save_$2])='${$2}'" +		  eval "AS_TR_SH([$2])='$3'" +		  AC_COMPILE_IFELSE([AC_LANG_SOURCE([int a = 0; int main(void) { return a; } ])], +                                    [eval "AS_TR_SH([cc_cv_$2_$3])='yes'"], +                                    [eval "AS_TR_SH([cc_cv_$2_$3])='no'"]) +		  eval "AS_TR_SH([$2])='$cc_save_$2'"]) + +  AS_IF([eval test x$]AS_TR_SH([cc_cv_$2_$3])[ = xyes], +        [eval "$1='${$1} $3'"]) +]) + +dnl CC_CHECK_FLAGS_APPEND([WHERE-TO-APPEND], [ENV-VAR], [FLAG1 FLAG2]) +AC_DEFUN([CC_CHECK_FLAGS_APPEND], [ +  for flag in $3; do +    CC_CHECK_FLAG_APPEND($1, $2, $flag) +  done +]) + +dnl Check if the flag is supported by linker (cacheable) +dnl CC_CHECK_LDFLAGS([FLAG], [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND]) + +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 define the LDFLAGS_NOUNDEFINED variable with the correct value for +dnl the current linker to avoid undefined references in a shared object. +AC_DEFUN([CC_NOUNDEFINED], [ +  dnl We check $host for which systems to enable this for. +  AC_REQUIRE([AC_CANONICAL_HOST]) + +  case $host in +     dnl FreeBSD (et al.) does not complete linking for shared objects when pthreads +     dnl are requested, as different implementations are present; to avoid problems +     dnl use -Wl,-z,defs only for those platform not behaving this way. +     *-freebsd* | *-openbsd*) ;; +     *) +        dnl First of all check for the --no-undefined variant of GNU ld. This allows +        dnl for a much more readable commandline, so that people can understand what +        dnl it does without going to look for what the heck -z defs does. +        for possible_flags in "-Wl,--no-undefined" "-Wl,-z,defs"; do +          CC_CHECK_LDFLAGS([$possible_flags], [LDFLAGS_NOUNDEFINED="$possible_flags"]) +	  break +        done +	;; +  esac + +  AC_SUBST([LDFLAGS_NOUNDEFINED]) +]) + +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([AC_LANG_SOURCE([$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([AC_LANG_SOURCE( +       [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([AC_LANG_SOURCE([ +          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 +])  | 
