Outils pour utilisateurs

Outils du site


autotools:configure.ac

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
autotools:configure.ac [2015/08/09 12:10] – Déplacement des images et ressources rootautotools:configure.ac [2020/04/27 07:56] (Version actuelle) – Conversion de <note> vers <WRAP> root
Ligne 1: Ligne 1:
-=====Les scripts=====+[[https://www.gnu.org/software/autoconf/manual/autoconf.pdf|Manuel 2.69]], {{ :autotools:configure.ac:autoconf_2_69.pdf |Archive}} 
 ====Détection des options de compilation compatible avec CXX==== ====Détection des options de compilation compatible avec CXX====
 Défini le langage du compilateur : g++ donc le compilateur défini par ''CXX''. Défini le langage du compilateur : g++ donc le compilateur défini par ''CXX''.
 +
 +Activation automatique des ''-Wwarnings'' supportés.
 <code autoconf> <code autoconf>
 AC_LANG(C++) AC_LANG(C++)
Ligne 24: Ligne 27:
 </code> </code>
  
-<note>[[https://github.com/gcc-mirror/gcc/blob/master/config/warnings.m4|Source]], {{:autotools:configure.ac:warnings.m4|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>+<WRAP center round info 60%> 
 +[[https://github.com/gcc-mirror/gcc/blob/master/config/warnings.m4|warnings.m4]], {{:autotools:configure.ac:warnings.m4|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*''. 
 +</WRAP> 
 + 
 +Activation automatique des ''-Wno-warnings'' supportés. On teste les ''-Warnings'' mais on ajoute ''-Wno-warnings'' 
 + 
 +<code autoconf> 
 +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 
 +</code> 
 + 
 +====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 : 
 +<code autoconf> 
 +AC_TRY_LINK([ 
 +              #include <stdio.h> 
 +            ], 
 +            [ 
 +              #ifndef __clang__ 
 +                This is not clang! 
 +              #endif 
 +            ], 
 +            [AM_CXXFLAGS="$AM_CXXFLAGS -fno-use-cxa-atexit"], 
 +            []) 
 +</code> 
 + 
 +====Forcer du code dans le config.h==== 
 +<code autoconf> 
 +AH_BOTTOM([ 
 +#ifdef _MSC_VER 
 +#define CHK _Check_return_ 
 + 
 +#ifndef ssize_t 
 +#include <BaseTsd.h> 
 +typedef SSIZE_T ssize_t; 
 +#endif // !ssize_t 
 + 
 +#else // !_MSC_VER 
 +#define CHK __attribute__ ((__warn_unused_result__)) 
 +#endif 
 + 
 +#if defined(_MSC_VER) 
 +#define SSCANF sscanf_s 
 +#define DllExport __declspec(dllexport) 
 +#else 
 +#define SSCANF sscanf 
 +#define DllExport 
 +#endif 
 +]) 
 +</code> 
 + 
 +====Ajout d'une option --with-…==== 
 +<code autoconf> 
 +# Vérification de la possibilité de compiler la documentation via doxygen 
 +AC_ARG_WITH(doc, 
 +            AS_HELP_STRING([--with-doc], 
 +                           [build with doc support])) 
 +if test "$with_doc" != "yes"; then 
 +  withdoc=false 
 +else 
 +  withdoc=true 
 +fi 
 +AC_MSG_RESULT([with-doc $withdoc]) 
 +AC_CHECK_PROGS([DOXYGEN], [doxygen]) 
 +if test -z "$DOXYGEN"; 
 +  then AC_MSG_WARN([Doxygen introuvable - documentation non compilable]) 
 +fi 
 +AM_CONDITIONAL(HAVE_DOXYGEN, test x$withdoc = xtrue && test -n "$DOXYGEN"
 +if test x$withdoc = xtrue; then 
 +AC_DEFINE(ENABLE_DOC, 1, [Défini si la doc doit être générée]) 
 +fi 
 +</code>
autotools/configure.ac.1439115011.txt.gz · Dernière modification : 2015/08/09 12:10 de root