110 lines
2.8 KiB
Makefile
110 lines
2.8 KiB
Makefile
# Makefile generico per shared object
|
|
export VERBOSE
|
|
export CXX
|
|
|
|
# Nome del package
|
|
PACKAGE=$(notdir $(shell pwd))
|
|
|
|
# Libreria da generare:
|
|
# Se non si setta la variabile LIBNAME la libreria si chiama
|
|
# come la directory
|
|
ifndef LIBNAME
|
|
LIBNAME=$(PACKAGE)
|
|
endif
|
|
|
|
ifeq ($(MACOSX),1)
|
|
SONAME=$(LIBDIR)/lib$(LIBNAME).dylib
|
|
endif
|
|
|
|
ifeq ($(LINUX),1)
|
|
SONAME=$(LIBDIR)/lib$(LIBNAME).so
|
|
endif
|
|
|
|
APPLICATIONS= $(foreach a, $(APPS),$(BINDIR)/$(a))
|
|
INSTALL_SCRIPTS=$(foreach a, $(SCRIPTS),$(BINDIR)/$(a))
|
|
|
|
all: $(SONAME) $(APPLICATIONS) $(INSTALL_SCRIPTS)
|
|
|
|
.SECONDARY: $(OBJS) $(COBJS)
|
|
.PHONY: all clean copy doc
|
|
|
|
# Generazione della libreria
|
|
$(SONAME): $(OBJS) $(COBJS)
|
|
@$(MESSAGE) "Creating library lib$(LIBNAME).so"
|
|
ifeq ($(MACOSX),1)
|
|
@$(PRETTY) "$(CXX) $(LDFLAGS) -dynamiclib $(OBJS) $(COBJS) -L$(LIBDIR) $(LIBS) -install_name $@ -o $@"
|
|
endif
|
|
ifeq ($(LINUX),1)
|
|
@$(PRETTY) "$(CXX) -fPIC -shared $(OBJS) $(COBJS) -L $(LIBDIR) $(LIBS) $(LDFLAGS) -o $@"
|
|
@if ! $(PRETTY) "$(TESTLIB) $(SONAME)"; then $(MESSAGE) "Testing of $(SONAME) failed."; rm $(SONAME); exit 1; fi;
|
|
endif
|
|
|
|
# Generazione delle applicazioni
|
|
$(BINDIR)/%: %.o $(SONAME)
|
|
@$(MESSAGE) "Linking application `basename "$@"`"
|
|
@$(PRETTY) "$(CXX) $< -l$(LIBNAME) $(LDFLAGS) -L$(LIBDIR) $(LIBS) -o $@"
|
|
|
|
#Generazione dei moc files
|
|
moc_%.cpp: %.h
|
|
@$(MESSAGE) "Compiling MOC $@"
|
|
@$(PRETTY) "$(MOC) -i $< -o $@"
|
|
|
|
# Generazione degli oggetti
|
|
%.o: %.cpp
|
|
@$(MESSAGE) "Compiling $<"
|
|
@$(PRETTY) "$(CXX) -fPIC $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@"
|
|
|
|
%.o: %.c
|
|
@$(MESSAGE) "Compiling $<"
|
|
@$(PRETTY) "$(CC) -fPIC $(CPPFLAGS) $(CFLAGS) -c $< -o $@"
|
|
|
|
#Regole per la generazione delle dipendenze
|
|
OBJDEPS= $(foreach module,$(basename $(OBJS)),$(module).d) $(foreach a, $(APPS),$(a).d)
|
|
COBJDEPS=$(foreach module,$(basename $(COBJS)),$(module).d)
|
|
|
|
$(OBJDEPS): %.d: %.cpp
|
|
@$(MESSAGE) "Generating dependencies for $<"
|
|
@$(PRETTY) "$(CXX) $(CPPFLAGS) -MM -MG $< -MF $@"
|
|
|
|
$(COBJDEPS): %.d: %.c
|
|
@$(MESSAGE) "Generating dependencies for $<"
|
|
@$(PRETTY) "$(CC) $(CPPFLAGS) -MM -MG $< -MF $@"
|
|
|
|
#HEADERS=`ls *.h`
|
|
#PRECOMPILED_HEADERS=$(foreach file,$(basename $(HEADERS)), $(file).pch)
|
|
|
|
ifneq ($(MAKECMDGOALS),clean)
|
|
ifneq ($(MAKECMDGOALS),copy)
|
|
ifneq ($(MAKECMDGOALS),dep)
|
|
-include $(OBJDEPS) $(COBJDEPS)
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
dep: $(OBJDEPS) $(COBJDEPS)
|
|
|
|
|
|
# GLi script vengono semplicemente copiati
|
|
$(BINDIR)/%.sh: %.sh
|
|
@$(MESSAGE) "Installing script `basename "$@"`"
|
|
@$(PRETTY) "cp $< $@"
|
|
@$(PRETTY) "chmod +x $@"
|
|
|
|
|
|
#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 $(SONAME) $(APPLICATIONS)"
|
|
@$(PRETTY) "rm -f *.o *.d core *~ moc_*.cpp"
|
|
|
|
copy: clean
|
|
tar -C .. -cvzf `date +../$(PACKAGE)-%d%b%y.tgz` $(PACKAGE)
|