GuinnessServer/Makefile.boucle

342 行
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