Outils pour utilisateurs

Outils du site


autotools:configure.ac

Ceci est une ancienne révision du document !


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