342 righe
9.9 KiB
Makefile
342 righe
9.9 KiB
Makefile
##################################################################
|
|
# #
|
|
# Makefile pour "clients/serveur guinness" #
|
|
# #
|
|
# Thomas Nemeth. #
|
|
# #
|
|
##################################################################
|
|
|
|
|
|
##################################################################
|
|
# #
|
|
# PARTIE DES VARIABLES MODIFIABLES #
|
|
# VARIABLES MODIFICATIONS ALLOWED PART #
|
|
# #
|
|
##################################################################
|
|
|
|
#*****************************************************************
|
|
# Répertoire d'installation
|
|
#
|
|
|
|
# Edited for Debian GNU/Linux.
|
|
DESTDIR = /tmp
|
|
PREFIX = usr/local
|
|
|
|
INSTALLDIR = $(DESTDIR)/$(PREFIX)
|
|
BINDIR = $(INSTALLDIR)/bin
|
|
# MANDIR = $(INSTALLDIR)/share/man/man1
|
|
MANDIR = $(INSTALLDIR)/man/man1
|
|
DATADIR = $(INSTALLDIR)/share/guinness-server
|
|
|
|
|
|
##################################################################
|
|
# #
|
|
# PARTIE DES VARIABLES NON MODIFIABLES ! #
|
|
# NO MODIFICATION BELOW THIS LINE ! #
|
|
# #
|
|
##################################################################
|
|
|
|
|
|
#*****************************************************************
|
|
# RÉCUPÉRATION DU NOM DU RÉPERTOIRE DE DONNÉES :
|
|
#
|
|
|
|
###
|
|
# GNU Make : non portable
|
|
# OLDDATADIR = $(shell cat DATADIR)
|
|
# OLDDATADIR = `cat DATADIR`
|
|
REALDATADIR = $(PREFIX)/share/guinness-server
|
|
DOCDIR = $(DATADIR)/docs
|
|
|
|
|
|
#*****************************************************************
|
|
# TYPE D'OS :
|
|
#
|
|
|
|
###
|
|
# GNU Make : non portable
|
|
# MY_OSTYPE = $(shell uname -s)
|
|
# MY_OSTYPE = `uname -s`
|
|
|
|
|
|
#*****************************************************************
|
|
# FLAGS :
|
|
#
|
|
|
|
CFLAGS =
|
|
CPPFLAGS = -O2 -Wall
|
|
EXTRA_CPPFLAGS = -D${MY_OSTYPE}
|
|
LDFLAGS =
|
|
|
|
|
|
#*****************************************************************
|
|
# DEBUG MODE FLAGS :
|
|
#
|
|
|
|
DEBUG_CFLAGS = -g3
|
|
# DEBUG_CPPFLAGS = -DDEBUG
|
|
DEBUG_LDFLAGS = -g3
|
|
|
|
|
|
#*****************************************************************
|
|
# BIBLIOTHÈQUES NÉCESSAIRES ET DIFFÉRENCIATION DES OS :
|
|
#
|
|
# Pour OpenBSD : CPPFLAGS += -I/local/OpenBSD/src/gnu/usr.bin/binutils/include
|
|
|
|
|
|
SYSLIBS = -lcrypt
|
|
SERVERLIBS = -lpthread
|
|
|
|
###
|
|
# GNU Make : non portable
|
|
|
|
# ifeq "$(MY_OSTYPE)" "SunOS"
|
|
# SYSLIBS += -lsocket -lnsl -lresolv
|
|
# CPPFLAGS += -D__BUILTIN_VA_ARG_INCR
|
|
# endif
|
|
|
|
# ifeq "$(MY_OSTYPE)" "FreeBSD"
|
|
# SERVERLIBS = -lc_r
|
|
# else
|
|
# SERVERLIBS = -lpthread
|
|
# endif
|
|
|
|
# OpenBSD : pour trouver getopt.h
|
|
# CPPFLAGS += -I/local/OpenBSD/src/gnu/usr.bin/binutils/include
|
|
|
|
CLIENTLIBS =
|
|
|
|
|
|
#*****************************************************************
|
|
# PROGRAMS - INFOS - SOURCES - OBJECTS :
|
|
#
|
|
|
|
PROG = guinness-server
|
|
PROG1 = guinnessd
|
|
PROG2 = guinness
|
|
###
|
|
# GNU Make : non portable
|
|
# VERSION = $(shell cat VERSION)
|
|
# VERSION = `cat VERSION`
|
|
CC = gcc
|
|
CP = cp
|
|
RM = rm
|
|
INSTALL = install
|
|
GZIP = gzip
|
|
SED = sed
|
|
SRCS1 = tools.c\
|
|
xmem.c\
|
|
printlog.c\
|
|
lists.c\
|
|
broadcast.c\
|
|
drinks.c\
|
|
clients.c\
|
|
commands.c\
|
|
guinnessd.c
|
|
SRCS2 = tools.c\
|
|
xmem.c\
|
|
guinness.c
|
|
OBJS1 = $(SRCS1:%.c=%.o)
|
|
OBJS2 = $(SRCS2:%.c=%.o)
|
|
DOCS = guinness-server.html\
|
|
guinness.1\
|
|
guinness-7bits.1\
|
|
guinnessd.1\
|
|
guinnessd-7bits.1\
|
|
guinness-man.txt\
|
|
guinness-man.man\
|
|
guinnessd-man.txt\
|
|
guinnessd-man.man
|
|
###
|
|
# GNU Make : non portable
|
|
# TODAY = $(shell date '+%d %B %Y')
|
|
# TODAY = `date '+%d %B %Y'`
|
|
|
|
|
|
##################################################################
|
|
# FICHIERS POUR LE PAQUETAGE CLIENT
|
|
#
|
|
|
|
CLIENT = guinness-client
|
|
CLIENT_FILES = VERSION COPYING makedep CHANGES README BUGS TODO DATADIR guinness.* tools.* xmem.* guinness-server* config.h* defines.h
|
|
|
|
##################################################################
|
|
# DÉFINITIONS GLOBALES
|
|
#
|
|
|
|
DEFAULT_CPPFLAGS = $(CPPFLAGS) $(EXTRA_CPPFLAGS)
|
|
TOOLKIT_CPPFLAGS =
|
|
|
|
ALL_CFLAGS = $(CFLAGS) $(GTK_CFLAGS) $(DEBUG_CFLAGS)
|
|
ALL_CPPFLAGS = $(DEFAULT_CPPFLAGS) $(TOOLKIT_CPPFLAGS) $(DEBUG_CPPFLAGS)
|
|
ALL_LIBS = $(SYSLIBS) $(XLIBS) $(DEBUG_LDFLAGS)
|
|
|
|
|
|
##################################################################
|
|
# RÈGLES
|
|
#
|
|
# Rajouts ? Idées :
|
|
# Pour une version texte:
|
|
# groff -man -Tlatin1 -P-u -P-b guinness-server.1
|
|
#
|
|
# Pour une version html
|
|
# groff -man -Thtml guinness-server.1
|
|
#
|
|
|
|
.PHONY: all dep datadir documentation mostlyclean clean distclean package clientpack binaries packages htmlonline online softinstall install uninstall
|
|
|
|
all: datadir config.h documentation $(PROG1) $(PROG2)
|
|
|
|
dep: .dependencies
|
|
|
|
datadir:
|
|
@if [ "$(OLDDATADIR)" != "$(REALDATADIR)" ]; then \
|
|
echo "$(REALDATADIR)" > DATADIR ; \
|
|
else \
|
|
echo "Répertoire de configuration : $(DATADIR)" ; \
|
|
fi
|
|
|
|
config.h: config.h.in VERSION DATADIR
|
|
$(SED) -e "s/§VERSION§/$(VERSION)/g" \
|
|
-e "s,§DATADIR§,$(REALDATADIR),g" \
|
|
-e "s/§OSTYPE§/$(MY_OSTYPE)/g" \
|
|
-e "s/§TODAY§/${TODAY}/g" $< > $@
|
|
|
|
documentation: $(DOCS)
|
|
|
|
guinness-server.html: guinness-server.html.in guinnessd.1 guinness.1 VERSION
|
|
$(SED) -e "s/§VERSION§/$(VERSION)/g" -e "s/§TODAY§/${TODAY}/g" $< > $@
|
|
|
|
%.1: %.1.in VERSION
|
|
$(SED) -e "s/§VERSION§/$(VERSION)/g" \
|
|
-e "s/§TODAY§/${TODAY}/g" \
|
|
-e "s,§DATADIR§,$(REALDATADIR),g" $< > $@
|
|
|
|
%-7bits.1: %.1
|
|
cat $< | tr "[éèêëàâäçùûüîïôöÀÉ«»]" "[eeeeaaacuuuiiooAE\"\"]" \
|
|
| $(SED) -e 's/°/ degres /g' > $@
|
|
|
|
%-man.txt: %.1
|
|
groff -man -Tlatin1 -P-u -P-b $< > $@
|
|
|
|
%-man.man: %.1
|
|
groff -man -Tlatin1 $< > $@
|
|
# man -l $< > $@
|
|
|
|
$(PROG1): config.h $(OBJS1)
|
|
$(CC) -o $(PROG1) $(OBJS1) $(LDFLAGS) $(ALL_LIBS) $(SERVERLIBS)
|
|
|
|
$(PROG2): config.h $(OBJS2)
|
|
$(CC) -o $(PROG2) $(OBJS2) $(LDFLAGS) $(ALL_LIBS) $(CLIENTLIBS)
|
|
|
|
%.o: %.c %.h
|
|
$(CC) -c $(ALL_CFLAGS) -I/usr/include $(ALL_CPPFLAGS) $<
|
|
|
|
mostlyclean:
|
|
-$(RM) -f *~ *.o
|
|
-$(RM) -f core
|
|
-$(RM) -f boissons/*~
|
|
|
|
clean: mostlyclean
|
|
-$(RM) -f $(PROG1)
|
|
-$(RM) -f $(PROG2)
|
|
|
|
distclean: clean
|
|
-$(RM) -f config.h
|
|
-$(RM) -f guinness-server.html
|
|
-$(RM) -f *.1 guinness*-man.txt guinness*-man.man
|
|
|
|
mrproper: distclean
|
|
-$(RM) -f .dep*
|
|
-$(RM) -f .variables
|
|
|
|
package: distclean
|
|
cd .. ; \
|
|
$(CP) -R $(PROG) $(PROG)-$(VERSION) ; \
|
|
tar -cf $(PROG)-$(VERSION).tar $(PROG)-$(VERSION)/ ; \
|
|
$(GZIP) --best $(PROG)-$(VERSION).tar ; \
|
|
$(RM) -rf $(PROG)-$(VERSION)/
|
|
|
|
devpack: mrproper
|
|
cd .. ; \
|
|
tar -cf $(PROG)-dev.tar $(PROG)/ ; \
|
|
$(GZIP) --best $(PROG)-dev.tar ;
|
|
|
|
clientpack: clean
|
|
mkdir $(CLIENT)-$(VERSION)
|
|
$(CP) $(CLIENT_FILES) $(CLIENT)-$(VERSION)/
|
|
sed -e 's/all:.*/all: $(PROG2)/' Makefile > $(CLIENT)-$(VERSION)/Makefile
|
|
tar -cf ../$(CLIENT)-$(VERSION).tar $(CLIENT)-$(VERSION)/
|
|
$(GZIP) --best ../$(CLIENT)-$(VERSION).tar
|
|
-$(RM) -rf $(CLIENT)-$(VERSION)
|
|
|
|
binaries: $(PROG1) $(PROG2) $(PROG1).1 $(PROG2).1
|
|
$(MAKE) install DESTDIR=rootdir PREFIX=$(PREFIX)
|
|
cd rootdir ; \
|
|
tar -cf ../../$(PROG)-bin-$(VERSION).tar * ; \
|
|
$(GZIP) --best ../../$(PROG)-bin-$(VERSION).tar
|
|
-$(RM) -rf rootdir
|
|
|
|
packages: binaries clientpack package
|
|
|
|
htmlonline: $(PROG).html $(PROG1)-man.txt $(PROG1)-man.man $(PROG2)-man.txt $(PROG2)-man.man
|
|
-$(RM) -f $(HOME)/public_html/projets/$(PROG).html
|
|
-$(RM) -f $(HOME)/public_html/projets/$(PROG1)-man*
|
|
-$(RM) -f $(HOME)/public_html/projets/$(PROG2)-man*
|
|
$(CP) $(PROG).html $(HOME)/public_html/projets/
|
|
$(CP) $(PROG1)-man* $(HOME)/public_html/projets/
|
|
$(CP) $(PROG2)-man* $(HOME)/public_html/projets/
|
|
|
|
online: htmlonline packages
|
|
-$(RM) -f $(HOME)/public_html/projets/programmes/guinness*
|
|
mv ../guinness*.tar.gz $(HOME)/public_html/projets/programmes/
|
|
$(CP) README $(HOME)/public_html/projets/programmes/$(PROG).README
|
|
$(CP) CHANGES $(HOME)/public_html/projets/programmes/$(PROG).CHANGES
|
|
$(CP) TODO $(HOME)/public_html/projets/programmes/$(PROG).TODO
|
|
$(CP) BUGS $(HOME)/public_html/projets/programmes/$(PROG).BUGS
|
|
|
|
softinstall:
|
|
$(INSTALL) -d --mode=0755 $(BINDIR)
|
|
$(INSTALL) -s --mode=0755 ./$(PROG1) $(BINDIR)
|
|
$(INSTALL) -s --mode=0755 ./$(PROG2) $(BINDIR)
|
|
|
|
install: softinstall
|
|
$(INSTALL) -d --mode=0755 $(MANDIR)
|
|
$(INSTALL) -d --mode=0755 $(DOCDIR)
|
|
$(INSTALL) -d --mode=0755 $(DATADIR)/boissons
|
|
$(INSTALL) --mode=0644 boissons/* $(DATADIR)/boissons
|
|
$(INSTALL) --mode=0644 ./$(PROG1).1 $(MANDIR)
|
|
$(INSTALL) --mode=0644 ./$(PROG2).1 $(MANDIR)
|
|
$(GZIP) --best $(MANDIR)/$(PROG1).1
|
|
$(GZIP) --best $(MANDIR)/$(PROG2).1
|
|
$(INSTALL) --mode=0644 README $(DOCDIR)
|
|
$(INSTALL) --mode=0644 VERSION $(DOCDIR)
|
|
$(INSTALL) --mode=0644 COPYING $(DOCDIR)
|
|
$(INSTALL) --mode=0644 BUGS $(DOCDIR)
|
|
|
|
uninstall:
|
|
-$(RM) $(BINDIR)/$(PROG1)
|
|
-$(RM) $(BINDIR)/$(PROG2)
|
|
-$(RM) $(MANDIR)/$(PROG1).1.gz
|
|
-$(RM) $(MANDIR)/$(PROG2).1.gz
|
|
rmdir $(DOCDIR)
|
|
rmdir $(DATADIR)/boissons
|
|
rmdir $(DATADIR)
|
|
|
|
.variables: fichier_qui_n_existe_pas
|
|
@:> .variables
|
|
@echo "OLDDATADIR = `cat DATADIR`" >> .variables
|
|
@echo "MY_OSTYPE = `uname -s`" >> .variables
|
|
@echo "VERSION = `cat VERSION`" >> .variables
|
|
@echo "TODAY = `date '+%d %B %Y'`" >> .variables
|
|
|
|
fichier_qui_n_existe_pas:
|
|
|
|
include .variables
|
|
|
|
.dependencies:
|
|
@echo "Making dependencies..."
|
|
@./makedep -s -m > .dependencies
|
|
|
|
include .dependencies
|