81 lines
2.0 KiB
Makefile
81 lines
2.0 KiB
Makefile
# Makefile generico per applicazione
|
|
#
|
|
# Variabili:
|
|
# APPS lista delle applicazioni
|
|
# OBJS lista degli oggetti
|
|
# QOBJS lista degli oggetti QT
|
|
# LIBS librerie
|
|
#
|
|
# Ogni applicazione viene linkata con tutti gli oggetti
|
|
|
|
export VERBOSE
|
|
|
|
ifeq ($(LINUX),1)
|
|
CPPFLAGS+=-DLINUX
|
|
endif
|
|
|
|
|
|
APPLICATIONS= $(foreach a, $(APPS),$(BINDIR)/$(a))
|
|
all: $(APPLICATIONS)
|
|
|
|
PACKAGE=$(notdir $(shell pwd))
|
|
|
|
.SECONDARY: $(OBJS) $(QOBJS)
|
|
.PHONY: all clean copy doc
|
|
|
|
$(QOBJS): %.o: %.cpp moc_%.cpp
|
|
@$(MESSAGE) "Compiling (QT) $@"
|
|
@$(PRETTY) "$(CXX) $(CPPFLAGS) $(QT_INCLUDE) $(CXXFLAGS) -c $< -o $@"
|
|
|
|
moc_%.cpp: %.h
|
|
@$(MESSAGE) "Generating MOC $@"
|
|
@$(PRETTY) "$(MOC) -i $< -o $@"
|
|
|
|
# Generazione degli oggetti
|
|
%.o: %.cpp
|
|
@$(MESSAGE) "Compiling $@"
|
|
@$(PRETTY) "$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@"
|
|
|
|
# Generazione delle applicazioni
|
|
$(BINDIR)/%: %.cpp $(OBJS) $(QOBJS)
|
|
@$(MESSAGE) "Linking application `basename $@`"
|
|
@$(PRETTY) "$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(OBJS) $(QOBJS) $< -L$(LIBDIR) $(LIBS) -o $@"
|
|
|
|
#Regole per la generazione di tabelle o altri file creati automaticamente
|
|
table_%.cpp: gen_table_%
|
|
@$(MESSAGE) "Generating $@"
|
|
@$(PRETTY) "./$< > $@"
|
|
|
|
gen_table_%: gen_table_%.cpp
|
|
@$(MESSAGE) "Generating $@"
|
|
@$(PRETTY) "$(CXX) $(CPPFLAGS) $(CXXFLAGS) $< -o $@"
|
|
|
|
#Regole per la generazione delle dipendenze
|
|
OBJDEPS=$(foreach module,$(basename $(OBJS) $(QOBJS)),$(module).d)
|
|
|
|
$(OBJDEPS): %.d: %.cpp # ci va o no? %.h
|
|
@$(MESSAGE) "Generating dependecies $@"
|
|
@$(PRETTY) "$(CXX) $(CPPFLAGS) -MM -MG -MF $@ $<"
|
|
|
|
ifneq ($(MAKECMDGOALS),clean)
|
|
ifneq ($(MAKECMDGOALS),copy)
|
|
-include $(OBJDEPS)
|
|
endif
|
|
endif
|
|
|
|
doc:
|
|
rm -rf doc/$(PACKAGE)
|
|
ifeq ($(strip $(DOCTITLE)),)
|
|
kdoc -L doc -d doc/$(PACKAGE) -n "Package $(PACKAGE) (lib$(PACKAGE).so)" $(HEADERS)
|
|
else
|
|
kdoc -L doc -d doc/$(PACKAGE) -n "$(DOCTITLE) (lib$(PACKAGE).so)" $(HEADERS)
|
|
endif
|
|
|
|
clean:
|
|
@$(MESSAGE) "Cleaning $(PACKAGE)"
|
|
@$(PRETTY) "rm -f *.d *.o moc_*.cpp *.d core *~ table_*.cpp gen_table*[^.][^c][^p][^p] $(APPLICATIONS)"
|
|
@$(PRETTY) "rm -rf doc/$(PACKAGE)"
|
|
|
|
copy: clean
|
|
tar -C .. -cvzf `date +../$(PACKAGE)-%d%b%y.tgz` $(PACKAGE)
|