autotools

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édentes Révision précédente
Prochaine révision
Révision précédente
autotools [2021/05/24 17:31] – [Enable option] fix url formatting phswautotools [2023/04/11 11:06] (Version actuelle) – Add --with-foo phsw
Ligne 34: Ligne 34:
  
 AC_PROG_CC # cherche un compilateur C AC_PROG_CC # cherche un compilateur C
 +AM_PROG_CC_C_O # enable per-target flags, required for automake < 1.14
  
 AC_CONFIG_FILES([Makefile src/Makefile]) # liste des fichiers Makefile à traiter AC_CONFIG_FILES([Makefile src/Makefile]) # liste des fichiers Makefile à traiter
Ligne 113: Ligne 114:
  
 <code autoconf> <code autoconf>
 +have_mpi=no
 AC_PATH_PROG(mpicc_path, mpicc, [no]) AC_PATH_PROG(mpicc_path, mpicc, [no])
 +AM_CONDITIONAL([HAVE_MPI], [test x$mpicc_path != xno])
 +if test x$mpicc_path != xno; then
 +    CC=$mpicc_path
 +    have_mpi=yes
 +fi
 </code> </code>
 Paramètres: Paramètres:
   - Variable qui contiendra le chemin du programme   - Variable qui contiendra le chemin du programme
   - Programme à chercher   - Programme à chercher
-  - Optionnel: valeur par défaut si le programme n'est pas trouvé+  - Optionnel: valeur par défaut si le programme n'est pas trouvé. Par défaut, renvoie une chaîne de caractères vide si le programme n'est pas trouvé.
   - Il est aussi possible de préciser le ''PATH''   - Il est aussi possible de préciser le ''PATH''
  
Ligne 165: Ligne 172:
 endif endif
 </code> </code>
 +
 +Il est possible de définir les flags pour toutes les cibles, en mettant en haut d'un ''Makefile.am'' :
 +<code make>
 +LDADD = $(HWLOC_LIBS)
 +AM_CFLAGS = $(HWLOC_CFLAGS)
 +</code>
 +
 +Il est possible de chercher une bibliothèque et utiliser les flags requis, depuis le fichier ''configure.ac'' ([[https://autotools.info/autoconf/finding.html|source]]) :
 +<code autoconf>
 +AC_SEARCH_LIBS([hwloc_free],[hwloc],,AC_MSG_ERROR([hwloc library unavailable]))
 +</code>
 +
 +
 +
 +==== Chercher une fonction dans une bibliothèque ====
 +
 +Il est nécessaire de mettre à jour les flags pour que le compilateur puisse linker la bibliothèque où la fonction est supposée être:
 +<code autoconf>
 +PKG_CHECK_MODULES([STARPU], [starpumpi-1.3], [have_starpu=yes], [have_starpu=no])
 +AM_CONDITIONAL(HAVE_STARPU, test x$have_starpu = xyes)
 +if test x$have_starpu = xyes; then
 +    save_LIBS="$LIBS"
 +    save_CFLAGS="$CFLAGS"
 +    CFLAGS="$CFLAGS $STARPU_CFLAGS"
 +    LIBS="$LIBS $STARPU_LIBS"
 +    AC_CHECK_FUNCS([starpu_free_noflag])
 +    CFLAGS="$save_CFLAGS"
 +    LIBS="$save_LIBS"
 +fi
 +</code>
 +Cela va définir une constante de préprocesseur ''HAVE_STARPU_FREE_NOFLAG'' si la fonction est trouvée.
 +
 +Il est possible de chercher des fonctions en précisant dans quel fichier d'en-tête chercher:
 +<code autoconf>
 +AC_CHECK_DECLS([_mm_stream_si32], [], [], [[#include <x86intrin.h>]])
 +</code>
 +Cela va définir une constante de préprocesseur ''HAVE_DECL__MM_STREAM_SI32''.
  
  
Ligne 244: Ligne 288:
 <code bash> <code bash>
 ../configure --enable-debug ../configure --enable-debug
 +</code>
 +
 +
 +
 +==== Composants externes ====
 +
 +<code autoconf>
 +mpicc_name=mpicc
 +AC_ARG_WITH(mpicc, [AS_HELP_STRING([--with-mpicc=<mpicc name>], [Name of the MPI compiler])],[mpicc_name=$withval])
 </code> </code>
  
  • autotools.1621870269.txt.gz
  • Dernière modification : 2021/05/24 17:31
  • de phsw