################################################################## # # # Makefile (generic program creation Makefile) # # # # Thomas Nemeth. # # # ################################################################## ################################################################## # # # PARTIE DES VARIABLES NON MODIFIABLES ! # # NO MODIFICATION BELOW THIS LINE ! # # # ################################################################## include Init.make #***************************************************************** # HOST DATA # MY_OSTYPE = $(shell uname -s | tr "[A-Z]" "[a-z]") TODAY = $(shell date "+%Y-%m-%d") INSTALLDIR = $(DESTDIR)$(PREFIX) BINDIR = $(INSTALLDIR)/bin MANDIR = $(INSTALLDIR)/man/man1 LIBDIR = $(INSTALLDIR)/lib INCDIR = $(INSTALLDIR)/include #***************************************************************** # FLAGS : # CFLAGS = CPPFLAGS = -O2 -Wall EXTRA_CPPFLAGS = LDFLAGS = #***************************************************************** # DEBUG MODE FLAGS : # DEBUG_CFLAGS = -g3 DEBUG_CPPFLAGS = -DDEBUG_LEVEL=${DEBUG_LEVEL} DEBUG_LDFLAGS = -g3 #***************************************************************** # TARGET - SOURCES - OBJECTS : # ifeq ($(strip $(PROGRAM)),) TARGET = noprogname else TARGET = $(PROGRAM) endif SRCS = $(shell ls *.c) OBJS = $(SRCS:%.c=%.o) ################################################################## # GLOBAL DEFINITIONS : # DEFAULT_CPPFLAGS = $(CPPFLAGS) $(EXTRA_CPPFLAGS) ALL_CFLAGS = $(CFLAGS) $(DEBUG_CFLAGS) $(USER_CFLAGS) ALL_CPPFLAGS = $(DEFAULT_CPPFLAGS) $(DEBUG_CPPFLAGS) $(USER_CPPFLAGS) ALL_LIBS = $(LDFLAGS) $(DEBUG_LDFLAGS) $(USER_LDFLAGS) #***************************************************************** # COMMON COMMANDS : # CPP = $(CROSS_COMPILE)cpp CC = $(CROSS_COMPILE)gcc STRIP = $(CROSS_COMPILE)strip CP = cp RM = rm INSTALL = install TAR = tar GZIP = gzip SED = sed ################################################################## # RULES : # .PHONY: all noprogname dep mostlyclean clean distclean install install-strip uninstall package all: config.h $(PREDEP) $(TARGET) noprogname: @echo "ERROR : No program name given. Change variable PROGRAM in Init.make." @exit 2 config.h: Init.make config.h.in @echo "Building config.h..." @$(SED) -e "s/#PACKAGE#/$(PACKAGE)/" \ -e "s/#PROGRAM#/$(PROGRAM)/" \ -e "s/#VERSION#/$(VERSION)/" \ -e "s/#BUILD#/$(TODAY)/" \ -e "s/#OSTYPE#/$(MY_OSTYPE)/" config.h.in > config.h dep: .dependencies $(PROGRAM): $(OBJS) $(CC) -o $(TARGET) $(OBJS) $(ALL_LIBS) %.o: %.c $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $< mostlyclean: -$(RM) -f *~ *.o -$(RM) -f core clean: mostlyclean realclean: clean -$(RM) -f $(TARGET) distclean: userdistclean realclean -$(RM) -f config.h mrproper: distclean -$(RM) -r .dependencies install: $(TARGET) $(INSTALL) -d --mode=2775 $(BINDIR) $(INSTALL) --mode=0775 ./$(TARGET) $(BINDIR) install-strip: install $(STRIP) $(BINDIR)/$(TARGET) uninstall: -$(RM) -f $(BINDIR)/$(TARGET) .dependencies: config.h $(PREDEP) @echo "Creating dependencies for $(PROGRAM)..." @-$(RM) -f .dependencies @touch .dependencies @for i in ${SRCS} ; do \ echo "Making dependencies for $$i" ; \ $(CPP) $(ALL_CPPFLAGS) -MM $$i >> .dependencies ; \ done include .dependencies userdistclean: