autotools:configure.ac
Ceci est une ancienne révision du document !
Table des matières
Détection des options de compilation compatible avec CXX
Défini le langage du compilateur : g++ donc le compilateur défini par CXX
.
Activation automatique des -Wwarnings
supportés.
AC_LANG(C++) for NEW_FLAG in \ -Wall \ -Wcast-align do AC_MSG_CHECKING([if $CXX accepts $NEW_FLAG]) OLD_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS $NEW_FLAG -Werror" #AC_COMPILE_IFELSE utilise CXXFLAGS pas AM_CXXFLAGS AC_COMPILE_IFELSE([AC_LANG_SOURCE( [void foo(void); void foo(void) { }])], [ AM_CXXFLAGS="$AM_CXXFLAGS $NEW_FLAG" AC_MSG_RESULT([yes]) ], [ AC_MSG_RESULT([no]) ]) CXXFLAGS="$OLD_CXXFLAGS" done
<note>Source, Archive : gcc ne crée pas d'avertissement dans le cas de -Wno-*
non supporté. Il est donc nécessaire de tester la version -W*
.</note>
Activation automatique des -Wno-warnings
supportés. On teste les -Warnings
mais on ajoute -Wno-warnings
AC_LANG(C++) for NEW_FLAG in \ c++98-compat \ c++98-compat-pedantic do AC_MSG_CHECKING([if $CXX accepts -Wno-$NEW_FLAG]) OLD_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -W$NEW_FLAG -Werror -Wno-unused-macros" AC_COMPILE_IFELSE([AC_LANG_SOURCE( [void foo(void); void foo(void) { }])], [ AM_CXXFLAGS="$AM_CXXFLAGS -Wno-$NEW_FLAG" AC_MSG_RESULT([yes]) ], [ AC_MSG_RESULT([no]) ]) CXXFLAGS="$OLD_CXXFLAGS" done
Le cas clang
clang préfère avoir -fno-use-cxa-atexit pour éviter des erreurs de type “hidden symbol `atexit'.
Il suffit d'ajouter la fonction suivante :
AC_TRY_LINK([ #include <stdio.h> ], [ #ifndef __clang__ This is not clang! #endif ], [AM_CXXFLAGS="$AM_CXXFLAGS -fno-use-cxa-atexit"], [])
Forcer du code dans le config.h
AH_BOTTOM([ … ])
autotools/configure.ac.1504234860.txt.gz · Dernière modification : 2017/09/01 05:01 de root