>et cette commande est passee a sh et sh produit une erreur car il attend >quelque chose apres "for i in". Donc il faudrait faire qq. chose comme: > > @if test -n "$(EXHEADER)"; then \ > for i in $$EXHEADER ; \ > do \ > (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \ > chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \ > done; \ > fi
Normalement $(EXHEADER) c'est une variable Makefile alors que $$EXHEADER c'est une variable shell donc c'est bien $(EXHEADER) mais il faut aussi le mettre entre "" Le makefile EXHEADER = EXHEADER = a b c install1: if test -n "$(EXHEADER)" ; then \ for i in "$(EXHEADER)" ; \ do \ (echo $$i ; \ echo $$i ); \ done; \ fi install2: if test -n "$(EXHEADER)" ; then \ for i in $$EXHEADER ; \ do \ (echo $$i ; \ echo $$i ); \ done; \ fi # make install1 install2 if test -n "a b c" ; then \ for i in "a b c" ; \ do \ (echo $i ; \ echo $i ); \ done; \ fi a b c a b c if test -n "a b c" ; then \ for i in $EXHEADER ; \ <<< !OK on ne peut faire cela qu'avec une var do \ du shell (echo $i ; \ echo $i ); \ done; \ fi Avec la variable à vide : make install1 install2 if test -n "" ; then \ for i in "" ; \ do \ (echo $i ; \ echo $i ); \ done; \ fi if test -n "" ; then \ for i in $EXHEADER ; \ do \ (echo $i ; \ echo $i ); \ done; \ fi Conclusion le if test ne sert à rien. Mais cela ne résout pas mon PB puisque le Makefile est généré par le make install à la racine. -- Christian Pélissier Office National d'Études et de Recherches Aérospatiales BP 72 92322 Chatillon Tel: 33 1 46 73 44 19, Fax: 33 1 46 73 41 50 _______________________________________________ Solaris_fr liste de diffusion en français pour Solaris, sur toutes architectures Solaris_fr@x86.sun.com http://x86.sun.com/mailman/listinfo/solaris_fr