[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [obsdfr-misc] Ecrire un makefile pour OpenBSD



Pierre Riteau a écrit :
On 10/17/07, Olivier Regnier <oregnier AT oregnier POINT net> wrote:
Pierre Riteau a écrit :
On 10/16/07, Olivier Regnier <oregnier AT oregnier POINT net> wrote:

Bonjour,

Pour les besoins d'un article, j'ai écrit un Makefile tout simple afin
que mon programme puisse fonctionner sous OpenBSD.

Voici le Makefile en question:

#    $OpenBSD: Makefile,v 1.0 2007/11/16 21:44 olivier Exp $

PROG=    hello                            # Program
MAN=     hello.1                         # Manual page
SRCS=    main.c hello.c hello.h    # Sources

.include <bsd.prog.mk>

Le résultat de la commande make
# make
cc -02 -pipe    -c main.c
cc -02 -pipe    -c hello.c
cc     -o hello main.o hello.o
nroff -Tascii -mandoc hello.1 > hello.cat1

Le résultat de la commande make install
# make install
install -c -s -o root -g bin -m 555 hello /hello
install -c -o root -g bin -m 444 hello.cat1 /usr/share/man/cat1/hello.0

Le résultat de la commande make clean
# make clean
rm -f a.out [Ee]rrs mklog core *.core y.tab.h hello main.o hello.o
main.ln hello.ln

Le fichier exécutable 'hello' est bien généré et il fonctionne avec la
commande:
# /hello

Pourquoi n'est-il pas installé par exemple dans /usr/bin ? Afin de
pouvoir l'exécuter tout simplement avec la commande:
# hello


BINDIR=/usr/bin


J'ai remarqué également que nroff crée un fichier appelé hello.cat1 mais
avec un make clean, celui-ci n'est pas supprimé à moins d'ajouter
dans le makefile la ligne suivante:
CLEANFILES= hello.cat1


Ou faire un make cleandir


Or si on consulte OpenBSD cvsweb, aucun makefile ne comporte la ligne
CLEANFILES tous les programmes sont correctements installés, mais
comment font-ils ?


make cleandir ;)


Un petit coup de main s'il vous plaît ?

Merci

Cordialement,
Olivier Regnier

________________________________
French OpenBSD mailing list
misc AT openbsd-france POINT org
http://www.openbsd-france.org/ml



C'est tout de même étrange de devoir rajouté BINDIR dans le Makefile. J'ai testé et effectivement, cela fonctionne. Mais si on regarde de nouveau sur OpenBSD cvsweb, je n'ai pas vu une seule fois cette déclaration.

Parce que tu as mal cherché ;)
Regarde les Makefile.inc dans les dossiers /{usr/,}{s,}bin
Effectivement, j'ai mal cherché.
J'ai aussi testé la commande make cleandir et cela fonctionne.

Une autre question me vient à l'esprit, est-il possible de désinstaller l'application en question ? A part supprimer manuellement le(s) fichier(s) installé(s).

Je ne crois pas qu'il existe de solution à ça puisque le base system
n'est pas fait pour être installé.
Tu peux toujours faire un autre Makefile qui utilise bsd.port.mk pour
créer un package pour ton programme.
En faite, je me suis mélangé les pinceaux, avec les commandes du système et le portage d'applications sous la forme de ports.
Merci.
Merci pour toutes ces précisions.
________________________________
French OpenBSD mailing list
misc AT openbsd-france POINT org
http://www.openbsd-france.org/ml


________________________________
French OpenBSD mailing list
misc AT openbsd-france POINT org
http://www.openbsd-france.org/ml



________________________________
French OpenBSD mailing list
misc AT openbsd-france POINT org
http://www.openbsd-france.org/ml