Olena/CompilationHowto

From LRDE

En attendant mieux:

From: Raphal Poss <raph@lrde.epita.fr> 
Subject: de la manire d'excuter les tests et de la pertinence qui en dcoule 
Newsgroups: epita.lrde.olena 
Date: Sat, 08 Feb 2003 14:46:25 +0100 
Organization: EPITA / LRDE http://www.lrde.epita.fr 
 
 
Ce message doit vous laisser ce souvenir : 
 
	_Redfinissez TOUJOURS la variable d'environnement `CXXFLAGS' avant 
	d'excuter `configure' et surtout `make distcheck'._ 
 
	Sur sandrock: 
		export CXXFLAGS=`-pipe -march=pentium4 -msse2' 
 
Pourquoi ? 
 
	1) par dfaut, `configure' y met `-g -O2'. 
 
	2) la  valeur  par dfaut est  utilise  tout le temps.  Les autres 
	flags configurs s'y ajoutent au lieu de les remplacer. 
 
	3)  ces flags ralentissent la	compilation, ou la  font plus lente 
	qu'elle  pourrait	l'tre  : avec  -g,	le  compilateur gnre un 
	assembleur et des objets  plus  gros. Avec  `-pipe', les phases  de 
	compilations sont paralllises. 
 
	3bis) ces flags gnrent du code lent. 
 
	4)  certains tests	ncessitent une  optimisation maximale. Pour 
	l'instant, une technique infme aboutit	 l'excution de `gcc  -g 
	-O2 -O3 ...', ce qui aboutit  une aberration. 
 
	Notoirement, le  bug avec gcc 2.95 est  d  l'utilisation de -g et 
	-O3 en conjonction. 
 
	4) les tests sont censs prouver  la robustesse et la justesse des 
	algorithmes  vis--vis  des  bons  et  surtout mauvais  traitements 
	infligs  par le  compilateur.	Or  les  traitements	les  plus  
	altrants	sont les	optimisations.  D'o l'utilit  d'optimiser 
	correctement pour tous les tests. 
 
Pourquoi 
 
	export CXXFLAGS=... ; ./configure ; make distcheck 
 
au lieu du 
 
	./configure CXXFLAGS=... ; make distcheck 
 
recommand par Akim et la doc des Autotools ? 

Parce	que les	variables  indiques  sur  la  ligne  de commande de 
`configure' ne sont pas propages au `configure' lanc rcursivement 
par `make distcheck'.