Re: Makefile

Pàgina inicial

Reply to this message
Autor: Patrick Begou
Data:  
A: Patrick Dupre
CC: Guilde
Assumpte: Re: Makefile
Un petit exemple pour démarrer. Il me permettait de repérer une architecture
RS6000, Itanium ou IA32. A adapter donc.


all:
        @if [ `uname -a|grep AIX|wc -l` -eq 1 ]; \
        then echo "FC=xlf   PVM_ARCH=RS6K   PVMLOC=/usr/local/pvm3"; \
        else if [ `uname -a|grep Linux|wc -l` -eq 1 ];\
             then if [ `uname -m ` = 'ia64' ]; \
                then echo "FC=ifort arch=IA64 ";\
                else echo "FC=ifort arch=IA32 ";\
             fi\
          else echo "Host unknown";\
          fi \
        fi


Après au lieu d'afficher des variables (comme ici pour l'exemple) il suffit de
faire rappeler le Makefile avec les variables bien positionnées. Exemple d'un
autre Makefile pour compiler sur différentes architectures de manière transparente:

all:
         @if [ `uname -a|grep AIX|wc -l` -eq 1 ]; \
         then make -f Makefile FC=xlf  FFLAGS="$(XLF-FFLAGS)" $(EXENAME); \
         else if [ `uname -a|grep rhodes|wc -l` -eq 1 ];\
              then make -f Makefile FC=sxf90  FFLAGS="$(SX-FFLAGS)" $(EXENAME); \
              else if [ `uname -a|grep Linux|wc -l` -eq 1 ];\
                   then if [ `uname -m ` = 'ia64' ]; \
                        then make -f Makefile FC=ifort  FFLAGS="$(IFORT-FFLAGS)"
$(EXENAME);\
                        else make -f Makefile FC=ifort  FFLAGS="$(IFORT-FFLAGS)"
$(EXENAME);\
                        fi\
                   else echo "Host unknown";\
                   fi \
              fi \
         fi


les macros XLF-FFLAGS, IFORT-FFLAGS ... contiennent les options appropriées pour
les différentes architectures (pas de différence ici entre ia64 et ia32).

La suite du Makefile est du style:
$(EXENAME):     $(OBJS)
        $(FC) $(FFLAGS)  $(OBJS) -o $(EXENAME)


Mais je n'ai pas une grosse experience là dessus.

Patrick
--
===============================================================
|  Equipe M.O.S.T.         | http://most.hmg.inpg.fr          |
|  Patrick BEGOU           |       ------------               |
|  LEGI                    | mailto:Patrick.Begou@hmg.inpg.fr |
|  BP 53 X                 | Tel 04 76 82 51 35               |
|  38041 GRENOBLE CEDEX    | Fax 04 76 82 52 71               |

===============================================================