Final revision (fix compilation errors, ...)
This commit is contained in:
parent
91dd3a3e87
commit
da7ef42d13
16 changed files with 94 additions and 53 deletions
|
@ -6,7 +6,7 @@ On va écrire une description du makefile que l'on veut obtenir.
|
|||
|
||||
\subsection{AutoMake}
|
||||
|
||||
On crée la première règle bin_PROGRAMS, puis le/les noms des programmes que
|
||||
On crée la première règle bin\_PROGRAMS, puis le/les noms des programmes que
|
||||
l'on veut générer. Il s'agit d'une variable primaire.
|
||||
hello-world sera installé dans bin/ avec make install. On peut changer le
|
||||
prefix pour envoyer le fichier ailleurs.
|
||||
|
@ -33,11 +33,11 @@ crochets autour des variables.
|
|||
|
||||
On retrouve des infos pour autoconf et automake.
|
||||
|
||||
AC_PREREQ vérifier la version requise.
|
||||
\verb+AC_PREREQ+ vérifier la version requise.
|
||||
|
||||
AC_INIT : initialisation du package (nom, version, adresse de bug report)
|
||||
\verb+AC_INIT+~: initialisation du package (nom, version, adresse de bug report)
|
||||
|
||||
AC_PROG_CXX : macro qui cherche un compilateur C++, on peut préciser le
|
||||
\verb+AC_PROG_CXX+~: macro qui cherche un compilateur C++, on peut préciser le
|
||||
compilateur obligatoire à utiliser (on lui passe en argument de
|
||||
\texttt{./configure CXX=g++}) et il vérifie que le compilateur fonctionne (il
|
||||
compile un petit code pour voir :p)
|
||||
|
@ -46,13 +46,13 @@ Si le compilateur fonctionne pas par exemple, il dira ce qui va pas, plus de
|
|||
détails sont dispo dans le fichier config.log (énormément !)
|
||||
|
||||
|
||||
AC_CONFIG_FILES : fichiers à générer, typiquement des Makefiles !
|
||||
\verb+AC_CONFIG_FILES+~: fichiers à générer, typiquement des Makefiles !
|
||||
Il prend des fichiers en .in et il génére des fichiers dont le nom est écrit
|
||||
dans la variable : Makefile.in => Makefile ; c'est donc le script configure qui
|
||||
transforme le .in en véritable fichier.
|
||||
C'est à ce moment là qu'il précise les variables genre CXX, ...
|
||||
|
||||
AC_OUTPUT déclenche la génération de tout ce qu'on a prévu jusque là.
|
||||
\verb+AC_OUTPUT+ déclenche la génération de tout ce qu'on a prévu jusque là.
|
||||
|
||||
|
||||
Pour le moment, il nous manque donc les .in ; c'est automake qui va les générer
|
||||
|
@ -60,7 +60,7 @@ Pour le moment, il nous manque donc les .in ; c'est automake qui va les génére
|
|||
Et puis, on va appeler autoconf pour générer le configure
|
||||
|
||||
Pour dire à autoconf qu'on veut utiliser automake, on va ajouter une macro :
|
||||
AM_INIT_AUTOMAKE()
|
||||
\verb+AM_INIT_AUTOMAKE()+
|
||||
On va ajouter deux arguments : foreign pour dire qu'on veut pas les contraintes
|
||||
d'un projet GNU et 1.11 pour la version minimale d'automake
|
||||
|
||||
|
@ -105,7 +105,7 @@ Le Makefile est composé de régles classiques et d'une multitude de variables.
|
|||
|
||||
Bon ba voilà, ça compile donc ça marche !
|
||||
Il y a plein de trucs sur la ligne de compilation : plein de \texttt{-D} qui
|
||||
définissent des constantes (du style~: \texttt{HAVE_STRNCMP} qui dit si strncmp
|
||||
définissent des constantes (du style~: \texttt{HAVE\_STRNCMP} qui dit si strncmp
|
||||
a un comportement correct, quand c'est mélangé avec autoconf, ça s'utilise
|
||||
comme une constante de préprocesseur).
|
||||
Le problème de l'approche c'est qu'elle est limité : on a moins d'une dizaine
|
||||
|
@ -162,13 +162,13 @@ Moment historique, faut verser une petite larme :( Le bocal avait l'air
|
|||
compétent ... Lulz le boulot perdu car sauvé dans le goinfre effacé à 3h42 :p
|
||||
|
||||
Tips pour débugger : \texttt{../configure CXXFLAGS="-O0 -g"} à faire dans un
|
||||
répertoire \texttt{build_debug}, avoir un autre répertoire \texttt{build_fast}
|
||||
répertoire \texttt{build\_debug}, avoir un autre répertoire \texttt{build\_fast}
|
||||
avec \texttt{-O3 -DNDEBUG}, \ldots un build par architecture, \ldots
|
||||
|
||||
\paragraph{C'est parti~!}
|
||||
|
||||
Il trouve pas un fichier : hop on l'ajoute dans le Makefile.am :
|
||||
\texttt{EXTRA_DIST}.
|
||||
\texttt{EXTRA\_DIST}.
|
||||
|
||||
Maintenant, il ne trouve pas un fichier qui a une adresse relative ! Vu que
|
||||
distcheck est dans un répertoire \texttt{build/}.
|
||||
|
|
18
cmp/main.tex
18
cmp/main.tex
|
@ -1,7 +1,21 @@
|
|||
\title{Construction des compilateurs}
|
||||
\author{Rolland}
|
||||
\date{ING1}
|
||||
\author{Roland}
|
||||
\date{ING1 2014\\
|
||||
\vspace{6em}
|
||||
\small{Sources disponibles sur \url{http://ing1.nemunai.re/} ou \href{mailto:ing1@nemunai.re}{ing1@nemunai.re}}}
|
||||
|
||||
\maketitle
|
||||
|
||||
\tableofcontents
|
||||
|
||||
\input{20120130}
|
||||
|
||||
\input{20120202}
|
||||
|
||||
\input{20120203}
|
||||
|
||||
\input{20120221-typage}
|
||||
|
||||
\input{20120306}
|
||||
|
||||
\input{20120426-instructionselection}
|
||||
|
|
Reference in a new issue