IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Systèmes de compilation Discussion :

MAKEFILE : Comment récupérer l'OS dans le makefile


Sujet :

Systèmes de compilation

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 124
    Points : 48
    Points
    48
    Par défaut MAKEFILE : Comment récupérer l'OS dans le makefile
    Bonjour,

    J'écris actuellement un makefile qui doit pouvoir fonctionner sur plusieurs OS entre autre : HP_UX, SUN, AIX...
    Mon probleme est donc de récupérer le nom de l'OS dans le makefile pour pouvoir le comparer et exécuter la partie du code correspondante à l'OS.
    En gros je veux faire :
    @if [ ${OS} = "HP-UX" ] ; then \
    Et je voudrais que la variable OS renvoie par exemple HP-UX

    Savez-vous comment je dois faire?

    merci par avance


  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 290
    Points : 325
    Points
    325
    Par défaut
    appelle uname

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2003
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 19
    Points : 18
    Points
    18
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Systeme=$(OS:Windows_NT=NT)$(OSTYPE:Linux=NuNux)
    Tu peux essayer un truc comme ca....

  4. #4
    Membre à l'essai
    Inscrit en
    Octobre 2003
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 19
    Points : 18
    Points
    18
    Par défaut
    Ou alors je pense que ca marche sur les BSD ou autres linux... (sous win32 je sais pas...)

  5. #5
    Membre averti

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 289
    Points : 342
    Points
    342
    Par défaut
    Tu peux faire du sur automake, pour voir... Ils ont leur propre méthode, depuis le temps elle doit être fiable 8)

  6. #6
    Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 124
    Points : 48
    Points
    48
    Par défaut
    Merci pour toutes vos réponses cependant ca ne marche pas. J'ai bien essayé d'appeler uname, mais quand je fais
    OS!= uname -s : il ne prend pas la valeur de uname, il essai donc par exemple de comparer : if uname = HP-UX de meme si je fais
    OS = $(shell uname)

    Pour le reste jen 'ai pas bien compris, les autres propositions?


  7. #7
    Membre à l'essai
    Inscrit en
    Octobre 2003
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 19
    Points : 18
    Points
    18
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    OS=`uname`;\
    	if [ "$${OS}" = "SunOS" ]; then\
    		eject -q 2> /tmp/dev$$;\
    		DEVICE=`cat /tmp/dev$$ | cut -f1 -d' '`;\
    		rm -f /tmp/dev$$;\
    	fi;\
    Je te donnes cet exemple...normalement ca fonctionne ...

  8. #8
    Membre à l'essai
    Inscrit en
    Octobre 2003
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 19
    Points : 18
    Points
    18
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import os, 
     
        if ( os.uname()[0] == "SunOS" ) :
    blablabla
    as tu essayé comme ca ?

  9. #9
    Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 124
    Points : 48
    Points
    48
    Par défaut
    Merci, mais ca ne marche pas. c'est peut etre sous HP-UX que ca déconne ou mon compilateur je ne sais pas en tout cas quand j'exécute
    make -f xxx.mak -n voici la résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     OS=`uname`;\
            if [ "${OS}"  = "HP-UX" ] ; then \
                    cc -O .....
    Dans ce cas on voit bien que la valeur de uname n'es pas pris en compte.

  10. #10
    Membre à l'essai
    Inscrit en
    Octobre 2003
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 19
    Points : 18
    Points
    18
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OS=$(shell uname)
    Je ne comprend pas pourquoi ca ne fonctionne pas... t'as essayé sur un autre OS ?

  11. #11
    Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 124
    Points : 48
    Points
    48
    Par défaut
    Oui j'ai essayé aussi sur SUN ca ne fonctionne pas non plus.
    Bon je vais essayer d'une autre facon, peut etre un peu moins sympa mais bon.
    Quelqu'un connait comment je peux recuperer par exemple les 5 premiers caractères d'une chaine.
    exemple :
    ma variable : ${UX_SERVER} me renvoie HP_UX1100 et je ne veux prendre que les 5 premiers caractères de facons a n'avoir que HP-UX??

    encore merci

  12. #12
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 290
    Points : 325
    Points
    325
    Par défaut
    Tu utilises quoi comme make ?

    Tu mets ca où dans ton makefile ?

    exemple avec make GNU :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SYSTEM := $(shell uname)
     
     
    ifeq ($(SYSTEM),HP-UX)
       CXX=aCC
    endif
    ceci ne s'utilise pas dans les regles mais dans les definitions de variables.

  13. #13
    Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 124
    Points : 48
    Points
    48
    Par défaut
    Je suis désolée mais je suis novice. Je ne sais pas ce que j'utilise comme make. Je me connecte juste a une machine AIX, HP-UX11001 ou SunS251 et je tape la commande make -f nom.mak.

    J'ai trouver quelque chose qui pourrait marcher mais j'ai toujours un probleme dans ma syntaxe je suppose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    all : UNI_uxpat
     
    # -----------------------------------------------------------------
    # CONSTRUCTION DES EXECUTABLES
    # -----------------------------------------------------------------
    UNI_uxpat : ${BIN_DIR}/UNI_uxpat
    ${BIN_DIR}/UNI_uxpat : ${OBJ_DIR}/uxsecuspv_pat.o \
    		 ${OBJ_DIR}/uxunipat.o
    	@echo
    	@echo "------------------------------------------------------------"
    	@echo "Building " $@
    	@echo "------------------------------------------------------------"
    	@if [ "${UX_SERVER}" = "aix" ] ; then \
    	    	${CC} ${CFLAGS} ${OBJ_DIR}/uxsecuspv_pat.o ${OBJ_DIR}/uxunipat.o ${LDFLAGS}  -L${UXLIBSTA} ${AIX_SYSLIB} ${UXLIBLIST} -o $@; \
    	fi
    	if [ "${UX_SERVER}"  = "SunOS" ] ; then \
    		${CC} ${CFLAGS} ${OBJ_DIR}/uxsecuspv_pat.o ${OBJ_DIR}/uxunipat.o ${LDFLAGS} -L${UXLIBSTA} $(SUN_LIB) ${UXLIBLIST} -o $@; \
    	fi
    	if [ "${UX_SERVER}"  = "hpux" ] ; then \ 
    		${CC} ${CFLAGS} ${OBJ_DIR}/uxsecuspv_pat.o ${OBJ_DIR}/uxunipat.o ${LDFLAGS} -L${UXLIBSTA} ${UXLIBLIST} -o $@; \
    	fi
    Voila et la quand je veux exe mon makefile j'ai :


    ------------------------------------------------------------
    Building /etud_objp/p_v502_dev/HP-UX1100/exe/UNI_uxpat
    ------------------------------------------------------------
    if [ "hpux" = "aix" ]
    sh: Syntax error at line 1 : `if' is not matched.
    *** Error exit code 2


    Je ne comprends pas.... J'ai essayé avec if else et je n'arrive pas non plus

    [/code]

Discussions similaires

  1. Comment selectionner le compilateur dans un makefile ?
    Par patouche dans le forum Débuter
    Réponses: 1
    Dernier message: 07/06/2009, 18h47
  2. Réponses: 3
    Dernier message: 17/11/2005, 15h41
  3. [Sécurité] comment récupérer le subject dans une page jsp?
    Par lalakers dans le forum Servlets/JSP
    Réponses: 13
    Dernier message: 13/07/2005, 11h42
  4. Comment récupérer l'indice dans un TdxTreeList ?
    Par claude dans le forum Composants VCL
    Réponses: 5
    Dernier message: 20/12/2004, 15h17
  5. Réponses: 6
    Dernier message: 30/04/2004, 15h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo