##################################################################
# #
# 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:
syntax highlighted by Code2HTML, v. 0.9.1