From 9e5eff01ea382e6efed615583af9ebbc79714150 Mon Sep 17 00:00:00 2001 From: Jan Lindemann Date: Tue, 21 Aug 2007 16:20:04 +0000 Subject: [PATCH] rules.mk: Refactor entire file - Re-sort bigtime - Most standard targets are now done by user function std_install_rules --- make/rules.mk | 527 ++++++++++++++++++++++++++++---------------------- 1 file changed, 293 insertions(+), 234 deletions(-) diff --git a/make/rules.mk b/make/rules.mk index a7883400..588088f9 100644 --- a/make/rules.mk +++ b/make/rules.mk @@ -3,242 +3,18 @@ # contact@jannet.de # $Id$ -all: all.done +# -- standard targets -.PRECIOUS: $(LOCAL_H) +all: all.done +install: all +clean: +distclean: clean + +# -- phony targets echo_all: @echo "$(ALL)" -all.done: $(PREREQ_DONE) $(LOCAL_TARGETS) $(ALL) - touch $@ - -strip.done: $(EXE_ALL) - $(STRIP) $^ - touch $@ - -%.done: - make -$(MAKEFLAGS) -C $(shell dirname $@) `basename $@` - -$(LIBDIR): - mkdir -p $@ - -#lib$(MOD)(%.o).a: %.c $(LIBDIR) -# $(CC) $(CFLAGS) -c $< -o $*.o -# $(AR) r $@ $*.o -# $(RM) $*.o - -ifeq ($(QT_MAJOR_VERSION),3) -moc_%.cpp: %.h - $(MOC) -o $@ $< -else -moc_%.cpp: %.h - $(MOC) $(filter -D% -I%,$(strip $(CPPFLAGS))) -o $@ $< -endif - -rcc_%.cpp: %.qrc - $(RCC) -o $@ $< - -ifeq ($(QT_MAJOR_VERSION),4) -ui_%.h: %.ui -else -%.h: %.ui -endif - $(UIC) $< -o $@ - -ifeq ($(QT_MAJOR_VERSION),4) -uic_%.cpp: %.h - echo -e "#include <$<>\n" > $@ -else -uic_%.cpp: %.h %.ui - $(UIC) $*.ui -i $< -o $@ -endif - -ifeq ($(LIBTYPE),shared) -lib%.so: %.o # $(LIB_SO) - $(LD) -shared $(LDFLAGS) $^ -o $@ -else -lib%.so: %.o - $(LD) $(LDFLAGS) $^ -o $@ -endif - -$(VERSION_SCRIPT): - $(MOD_SCRIPT_DIR)/make_version_script.sh $(BINARY_VERSION) > $@ - -ifneq ($(TARGET),mingw) -$(LIB_SO): $(VERSION_SCRIPT) $(LIB_A) - $(LD) -shared -Wl,--whole-archive,-soname=$(notdir $@) $(VERSION_SCRIPT) $(LIB_A) -Wl,--no-whole-archive \ - $(filter-out -l$(LIBNAME),$(LDFLAGS)) -o $@ -else -$(LIB_SO): $(VERSION_SCRIPT) $(LIB_A) - $(LD) -shared \ - -Wl,--whole-archive,--out-implib,$(shell echo $(LIB_A) | sed 's/-static//'),--output-def,$(LIB_DEF) \ - $(VERSION_SCRIPT) $(LIB_A) -Wl,--no-whole-archive $(filter-out -l$(LIBNAME),$(LDFLAGS)) -o $@ -$(MSVCPP_IMPLIB): $(LIB_SO) - $(MS_LD) /machine:i386 /def:$(LIB_DEF) -endif - -$(TOPDIR)/include: - mkdir -p $@ - -$(TOPDIR)/include/%.h: %.h - mkdir -p $(dir $@); cp $< $@ - -$(TOPDIR)/bin/%.sh: %.sh - mkdir -p $(dir $@); install -m 755 $(@F) $@ - -%.o: %.cpp - $(CPP) $(CPPFLAGS) -c $< - -%.o: %.c - $(CC) $(CFLAGS) -c $< - -%.o: %.S - $(CC) $(CFLAGS) -c $< - -timers_%.h: %.h $(GENERATE_FUNC_TIMERS) - sh $(GENERATE_FUNC_TIMERS) $< $@ - -ifneq ($(USE_QT),) -$(OBJ): $(UIC_H) $(MOC_H) $(UIC_CPP) $(MOC_CPP) $(RCC_CPP) -endif - -ifeq ($(USE_PROJECT_LIB),true) - ifeq ($(LIBTYPE),shared) - $(EXE) $(EXE_BIN): $(OBJ) $(LIB_SO) - else - $(EXE) $(EXE_BIN): $(OBJ) $(LIB_A) - endif -else - $(EXE) $(EXE_BIN): $(OBJ) -endif - $(CPP) $(sort $(OBJ)) $(LDFLAGS) -o $@ - -$(BUILD_BINDIR)/%: % - mkdir -p $(BUILD_BINDIR) - install -m 755 $< $(BUILD_BINDIR) - -ifeq ($(USE_PROJECT_LIB),true) - ifeq ($(LIBTYPE),shared) - $(PLUGIN) $(PLUGIN_LIB): $(OBJ) $(LIB_SO) - else - $(PLUGIN) $(PLUGIN_LIB): $(OBJ) $(LIB_A) - endif -else - $(PLUGIN) $(PLUGIN_LIB): $(OBJ) -endif - $(CPP) -shared $(sort $(OBJ)) $(LDFLAGS) -o $@ - mkdir -p $(LIBDIR) - install -m 755 $@ $(LIBDIR) - -$(LIBS): - make -$(MAKEFLAGS) -C $(LIBDIR) all - -$(INSTALL_LIBDIR): - $(INSTALL) -d -g $(LIBGROUP) -o $(LIBOWNER) -m 755 $@ - -$(INSTALL_HDRDIR): - $(INSTALL) -d -g $(HDRGROUP) -o $(HDROWNER) -m 755 $@ - -$(INSTALL_BINDIR): - $(INSTALL) -d -g $(EXEGROUP) -o $(EXEOWNER) -m 755 $@ - -$(INSTALL_MKDIR): - $(INSTALL) -d -g $(MAKEGROUP) -o $(MAKEOWNER) -m 755 $@ - -$(WORKING_DIR): - $(INSTALL) -d -g $(DAEMON_RUN_GROUP) -o $(DAEMON_RUN_USER) -m 700 $@ - -$(PREFIX): - $(INSTALL) -d -g $(PREFIXDIRGROUP) -o $(PREFIXDIROWNER) -m $(PREFIXDIRMODE) $@ - -#$(LOCK_DIR): -# $(INSTALL) -d -g $(DAEMON_RUN_GROUP) -o $(DAEMON_RUN_USER) -m 700 $@ - -$(INSTALLED_LIB_SO) $(INSTALLED_LIB_A): $(TOPDIR)/libdir.done - -$(TOPDIR)/libdir.done: - if [ -n "$(INSTALL_LIBDIR)" ]; then mkdir -p $(INSTALL_LIBDIR); fi - touch $@ - -hdrdir.done: - if [ -n "$(INSTALL_HDRDIR)" ]; then mkdir -p $(INSTALL_HDRDIR); fi - touch $@ - -$(LINKS_SO): - cd $(dir $@); ln -sf $(shell echo $@ | sed -e 's/\.so$$\|\.so.*$$//').$(SO_SUFFIX) $(notdir $@) - -#$(INSTALLED_LINKS_SO) $(LINKS_SO): -# $(LINK_LIB) $(shell echo $@ | sed -e 's/\.so$$\|\.so.*$$//').$(SO_SUFFIX) $@ - -#$(INSTALL_BINDIR)/%.bin: %.bin -# $(INSTALL) -o $(EXEOWNER) -g $(EXEGROUP) -m $(EXEMODE) $< $@ - -$(TOPDIR)/bindir.done: - mkdir -p $(INSTALL_BINDIR) - touch $@ - -ifneq ($(EXE),) -$(INSTALLED_EXE): $(EXE) $(TOPDIR)/bindir.done - $(INSTALL) -o $(EXEOWNER) -g $(EXEGROUP) -m $(EXEMODE) $< $@ -endif -$(INSTALL_BINDIR)/%.sh: %.sh $(TOPDIR)/bindir.done - $(INSTALL) -o $(EXEOWNER) -g $(EXEGROUP) -m $(EXEMODE) $< $@ -$(INSTALL_BINDIR)/%.bin: %.bin $(TOPDIR)/bindir.done - $(INSTALL) -o $(EXEOWNER) -g $(EXEGROUP) -m $(EXEMODE) $< $@ -$(INSTALL_BINDIR)/%: % $(TOPDIR)/bindir.done - $(INSTALL) -o $(EXEOWNER) -g $(EXEGROUP) -m $(EXEMODE) $< $@ - -$(INSTALL_LIBDIR)/%.so: %.so - $(INSTALL) -o $(LIBOWNER) -g $(LIBGROUP) -m $(LIBMODE) $< $@ -$(INSTALL_LIBDIR)/%.$(SO_SUFFIX): %.$(SO_SUFFIX) - $(INSTALL) -o $(LIBOWNER) -g $(LIBGROUP) -m $(LIBMODE) $< $@ -$(INSTALL_LIBDIR)/%.a: %.a - $(INSTALL) -o $(LIBOWNER) -g $(LIBGROUP) -m $(LIBMODE) $< $@ - -$(INSTALL_HDRDIR)/%.h: %.h - $(INSTALL) -o $(HDROWNER) -g $(HDRGROUP) -m $(HDRMODE) $< $@ - -$(INSTALL_MKDIR)/%.mk: %.mk - $(INSTALL) -o $(HDROWNER) -g $(HDRGROUP) -m $(HDRMODE) $< $@ - -$(INSTALL_DOCDIR_DIST)/% $(INSTALL_DOCDIR_DEVEL)/%: % - mkdir -p $(dir $@) - $(INSTALL) -o $(DOCOWNER) -g $(DOCGROUP) -m $(DOCMODE) $< $@ - -$(INSTALLED_PROFILE_PATH_SCRIPT): - echo "if [ -z \"\$$PATH\" ]; then PATH=$(shell echo $(INSTALL_BINDIR) | sed -e s%^$(ENV_PREFIX)/%/%)" > path_script.sh - echo "else PATH=\$$PATH:$(shell echo $(INSTALL_BINDIR) | sed -e s%^$(ENV_PREFIX)/%/%); fi" >> path_script.sh - mkdir -p $(dir $@) - $(INSTALL) -o $(PROFILEOWNER) -g $(PROFILEGROUP) -m $(PROFILEMODE) path_script.sh $@ - -$(INSTALLED_VERSION_FILE): - $(INSTALL) -o $(DOCOWNER) -g $(DOCGROUP) -m $(DOCMODE) $(TOPDIR)/VERSION $@ - echo $(DIST_VERSION) > $@ - -$(SYSCONFIG_DIR)/%: % - $(INSTALL) -o $(CFGOWNER) -g $(CFGGROUP) -m $(CFGMODE) $< $@ - -ifeq ($(DEVELOPMENT),true) -install_profile_path: -else -install_profile_path: $(INSTALLED_PROFILE_PATH_SCRIPT) -endif - -#depend.mk: $(SRC_ALL_CPP) -# > $@ && makedepend -f depend.mk -- $(CPPFLAGS) $(DEPEND_CPPFLAGS) -- $(SRC_ALL_CPP) 2>&1 | sed '/non-portable whitespace/ d' - -#depend.mk: $(filter-out %.h, $(SRC_ALL_CPP) $(PREREQ_DONE)) -# > $@ && if [ "$(wildcard *.cpp *.c)" ]; then \ -# gcc -M $(CPPFLAGS) $(DEPEND_CPPFLAGS) $(filter-out %.h,$(SRC_ALL_CPP)) -o $@; \ -# fi - -.%.o.dep.mk: %.cpp $(BUILD_H) - $(CC) -M $(CPPFLAGS) $(DEPEND_CPPFLAGS) $< -o $@ - -.%.o.dep.mk: %.c $(BUILD_H) - $(CC) -M $(CPPFLAGS) $(DEPEND_CPPFLAGS) $< -o $@ - checkroot: @if [ "$(CHECK_ROOT)" = true -o "$(CHECK_ROOT)" = TRUE ] ; then \ echo "Error: You can only do this if either" ;\ @@ -250,7 +26,7 @@ installexe: all checkroot $(INSTALLED_EXE) installso: all checkroot $(INSTALL_LIBDIR) $(INSTALLED_SHOBJS) -installsh: all checkroot $(INSTALL_BINDIR) $(INSTALLED_EXE_SH) +installsh: all checkroot $(INSTALL_EXEDIR) $(INSTALLED_EXE_SH) pckgclean: rm -rf *.zip *.tar.gz *.rpm *.deb @@ -277,7 +53,7 @@ rccclean: rm -rf $(RCC_CPP) textclean: doneclean - rm -rf $(TEXTCLEAN) \#*\# .kdbgrc.* .\#* + rm -rf *~ .*~ .*.swp *.rep \#*\# .kdbgrc.* .\#* allclean: rm -rf $(ALL) $(LOCAL_TARGETS) @@ -312,7 +88,7 @@ varclean: rm -rf $(CLEAN) $(DISTCLEAN) $(AC_FILES) install_libdir: $(INSTALL_LIBDIR) -install_bindir: $(INSTALL_BINDIR) +install_bindir: $(INSTALL_EXEDIR) install_hdrdir: $(INSTALL_HDRDIR) love: @@ -358,3 +134,286 @@ trace-marks: sed 's/^{$$/{_/' $$f > $$f.rep ;\ cp $$f.rep $$f ;\ done + +# -- special built-in targets + +.PRECIOUS: $(LOCAL_H) + +# -- rules + +all.done: $(PREREQ_DONE) $(LOCAL_TARGETS) $(ALL) + touch $@ + +strip.done: $(EXE_ALL) + $(STRIP) $^ + touch $@ + +%.done: + make -$(MAKEFLAGS) -C $(shell dirname $@) `basename $@` + +#lib$(MOD)(%.o).a: %.c $(BUILD_LIBDIR) +# $(CC) $(CFLAGS) -c $< -o $*.o +# $(AR) r $@ $*.o +# $(RM) $*.o + +ifeq ($(QT_MAJOR_VERSION),3) +moc_%.cpp: %.h + $(MOC) -o $@ $< +else +moc_%.cpp: %.h + $(MOC) $(filter -D% -I%,$(strip $(CPPFLAGS))) -o $@ $< +endif + +rcc_%.cpp: %.qrc + $(RCC) -o $@ $< + +ifeq ($(QT_MAJOR_VERSION),4) +ui_%.h: %.ui +else +%.h: %.ui +endif + $(UIC) $< -o $@ + +ifeq ($(QT_MAJOR_VERSION),4) +uic_%.cpp: %.h + echo -e "#include <$<>\n" > $@ +else +uic_%.cpp: %.h %.ui + $(UIC) $*.ui -i $< -o $@ +endif + +ifeq ($(LIBTYPE),shared) +lib%.so: %.o # $(LIB_SO) + $(LD) -shared $(LDFLAGS) $^ -o $@ +else +lib%.so: %.o + $(LD) $(LDFLAGS) $^ -o $@ +endif + +$(VERSION_SCRIPT): + $(MOD_SCRIPT_DIR)/make_version_script.sh $(BINARY_VERSION) > $@ + +ifneq ($(TARGET),mingw) +$(LIB_SO): $(VERSION_SCRIPT) $(LIB_A) $(TOPDIR)/dir_build_LIB.done + $(LD) -shared -Wl,--whole-archive,-soname=$(notdir $@) $(VERSION_SCRIPT) $(LIB_A) -Wl,--no-whole-archive \ + $(filter-out -l$(LIBNAME),$(LDFLAGS)) -o $@ +else +$(LIB_SO): $(VERSION_SCRIPT) $(LIB_A) $(TOPDIR)/dir_build_LIB.done + $(LD) -shared -Wl,--whole-archive,--out-implib,$(shell echo $(LIB_A) | \ + sed 's/-static//'),--output-def,$(LIB_DEF) $(VERSION_SCRIPT) $(LIB_A) \ + -Wl,--no-whole-archive $(filter-out -l$(LIBNAME),$(LDFLAGS)) -o $@ +$(MSVCPP_IMPLIB): $(LIB_SO) + $(MS_LD) /machine:i386 /def:$(LIB_DEF) +endif + +#$(TOPDIR)/include: +# mkdir -p $@ +# +#$(TOPDIR)/include/%.h: %.h +# mkdir -p $(dir $@); cp $< $@ +# +#$(TOPDIR)/bin/%.sh: %.sh +# mkdir -p $(dir $@); install -m 755 $(@F) $@ + +%.o: %.cpp + $(CPP) $(CPPFLAGS) -c $< + +%.o: %.c + $(CC) $(CFLAGS) -c $< + +%.o: %.S + $(CC) $(CFLAGS) -c $< + +timers_%.h: %.h $(GENERATE_FUNC_TIMERS) + sh $(GENERATE_FUNC_TIMERS) $< $@ + +ifneq ($(USE_QT),) +$(OBJ): $(UIC_H) $(MOC_H) $(UIC_CPP) $(MOC_CPP) $(RCC_CPP) +endif + +ifeq ($(USE_PROJECT_LIB),true) + ifeq ($(LIBTYPE),shared) + $(EXE) $(EXE_BIN): $(OBJ) $(LIB_SO) + else + $(EXE) $(EXE_BIN): $(OBJ) $(LIB_A) + endif +else + $(EXE) $(EXE_BIN): $(OBJ) +endif + $(CPP) $(sort $(OBJ)) $(LDFLAGS) -o $@ + +#$(BUILD_EXEDIR)/%: % +# mkdir -p $(BUILD_EXEDIR) +# install -m 755 $< $(BUILD_EXEDIR) + +ifeq ($(USE_PROJECT_LIB),true) + ifeq ($(LIBTYPE),shared) + $(PLUGIN) $(PLUGIN_LIB): $(OBJ) $(LIB_SO) + else + $(PLUGIN) $(PLUGIN_LIB): $(OBJ) $(LIB_A) + endif +else + $(PLUGIN) $(PLUGIN_LIB): $(OBJ) +endif + $(CPP) -shared $(sort $(OBJ)) $(LDFLAGS) -o $@ + mkdir -p $(BUILD_LIBDIR) + install -m 755 $@ $(BUILD_LIBDIR) + +#$(LIBS): +# make -$(MAKEFLAGS) -C $(BUILD_LIBDIR) all +# +#$(INSTALL_LIBDIR): +# $(INSTALL) -d -g $(LIBGROUP) -o $(LIBOWNER) -m 755 $@ +# +#$(INSTALL_HDRDIR): +# $(INSTALL) -d -g $(HDRGROUP) -o $(HDROWNER) -m 755 $@ +# +#$(INSTALL_EXEDIR): +# $(INSTALL) -d -g $(EXEGROUP) -o $(EXEOWNER) -m 755 $@ +# +#$(INSTALL_MKDIR): +# $(INSTALL) -d -g $(MAKEGROUP) -o $(MAKEOWNER) -m 755 $@ +# +#$(WORKING_DIR): +# $(INSTALL) -d -g $(DAEMON_RUN_GROUP) -o $(DAEMON_RUN_USER) -m 700 $@ +# +#$(PREFIX): +# $(INSTALL) -d -g $(PREFIXDIRGROUP) -o $(PREFIXDIROWNER) -m $(PREFIXDIRMODE) $@ + +#$(LOCK_DIR): +# $(INSTALL) -d -g $(DAEMON_RUN_GROUP) -o $(DAEMON_RUN_USER) -m 700 $@ + +#$(INSTALLED_LIB_SO) $(INSTALLED_LIB_A): $(TOPDIR)/libdir.done + +define check_not_empty +check_not_empty_$(1): + @if [ -z "$($(1))" ]; then \ + echo "$(1) is undefined" >&2 ;\ + exit 1 ;\ + fi +endef + +$(foreach attr,OWNER GROUP MODE,$(foreach type, $(INSTALLATION_FILE_TYPES), $(eval $(call std_install_rules,$(type)$(attr))))) + +define std_install_rules + +#build_dir_$(1): $$(TOPDIR)/dir_build_$(1).done +build_$(1): $$(TOPDIR)/dir_build_$(1).done $$(BUILD_$(1)) +#install_dir_$(1): $$(TOPDIR)/dir_install_$(1).done +install_$(1): $$(TOPDIR)/dir_install_$(1).done $$(INSTALLED_$(1)) + +$(TOPDIR)/dir_build_$(1).done: + mkdir -p $$(BUILD_$(1)DIR) + touch $$@ + +#$$(BUILD_$(1)DIR)/%: % $$(TOPDIR)/dir_build_$(1).done check_not_empty_$(1)MODE +$$(BUILD_$(1)DIR)/%: % $$(TOPDIR)/dir_build_$(1).done + @if [ ! $$< -ef $$@ ]; then \ + echo "+ installing $$< -> $$@" ;\ + install -m $($(1)MODE) $$< $$@ ;\ + fi + +$(TOPDIR)/dir_install_$(1).done: + @if [ -n "$$(INSTALL_$(1)DIR)" ]; then \ + $$(INSTALL) -d -o $$($(1)DIROWNER) -g $$($(1)DIRGROUP) -m $$($(1)DIRMODE) $$(INSTALL_$(1)DIR) ;\ + echo + creating directory $$(INSTALL_$(1)DIR) ;\ + fi + touch $$@ + +$$(INSTALL_$(1)DIR)/%: % $$(TOPDIR)/dir_install_$(1).done + $$(INSTALL) -o $$($(1)OWNER) -g $$($(1)GROUP) -m $$($(1)MODE) $$< $$@ + +endef + +$(foreach type, $(INSTALLATION_FILE_TYPES), $(eval $(call std_install_rules,$(type)))) + +#$(TOPDIR)/libdir.done: +# if [ -n "$(INSTALL_LIBDIR)" ]; then \ +# $(INSTALL) -d -o $(EXEDIROWNER) -g $(EXEDIRGROUP) -m $(EXEDIRMODE) $(INSTALL_LIBDIR) ;\ +# fi +# touch $@ + +#$(TOPDIR)/hdrdir.done: +# if [ -n "$(INSTALL_HDRDIR)" ]; then \ +# $(INSTALL) -d -o $(HDRDIROWNER) -g $(HDRDIRGROUP) -m $(HDRDIRMODE) $(INSTALL_HDRDIR) ;\ +# fi +# touch $@ +# +#$(TOPDIR)/bindir.done: +# mkdir -p $(INSTALL_EXEDIR) +# touch $@ +# +#$(TOPDIR)/profiledir.done: +# if [ -n "$(PROFILE_DIR)" ]; then \ +# $(INSTALL) -d -o $(PROFILEDIROWNER) -g $(PROFILEDIRGROUP) -m $(PROFILEDIRMODE) $(PROFILE_DIR) ;\ +# fi +# touch $@ + +$(LINKS_SO): + cd $(dir $@); ln -sf $(shell echo $@ | sed -e 's/\.so$$\|\.so.*$$//').$(SO_SUFFIX) $(notdir $@) + +#$(INSTALLED_LINKS_SO) $(LINKS_SO): +# $(LINK_LIB) $(shell echo $@ | sed -e 's/\.so$$\|\.so.*$$//').$(SO_SUFFIX) $@ + +#$(INSTALL_EXEDIR)/%.bin: %.bin +# $(INSTALL) -o $(EXEOWNER) -g $(EXEGROUP) -m $(EXEMODE) $< $@ + +#$(INSTALLED_EXE): $(EXE) $(TOPDIR)/bindir.done +# $(INSTALL) -o $(EXEOWNER) -g $(EXEGROUP) -m $(EXEMODE) $< $@ +#$(INSTALL_EXEDIR)/%.sh: %.sh $(TOPDIR)/bindir.done +# $(INSTALL) -o $(EXEOWNER) -g $(EXEGROUP) -m $(EXEMODE) $< $@ +#$(INSTALL_EXEDIR)/%.bin: %.bin $(TOPDIR)/bindir.done +# $(INSTALL) -o $(EXEOWNER) -g $(EXEGROUP) -m $(EXEMODE) $< $@ +#$(INSTALL_EXEDIR)/%: % $(TOPDIR)/bindir.done +# $(INSTALL) -o $(EXEOWNER) -g $(EXEGROUP) -m $(EXEMODE) $< $@ + +#$(INSTALL_LIBDIR)/%.so: %.so +# $(INSTALL) -o $(LIBOWNER) -g $(LIBGROUP) -m $(LIBMODE) $< $@ +#$(INSTALL_LIBDIR)/%.$(SO_SUFFIX): %.$(SO_SUFFIX) +# $(INSTALL) -o $(LIBOWNER) -g $(LIBGROUP) -m $(LIBMODE) $< $@ +#$(INSTALL_LIBDIR)/%.a: %.a +# $(INSTALL) -o $(LIBOWNER) -g $(LIBGROUP) -m $(LIBMODE) $< $@ + +#$(INSTALL_HDRDIR)/%.h: %.h +# $(INSTALL) -o $(HDROWNER) -g $(HDRGROUP) -m $(HDRMODE) $< $@ +# +#$(INSTALL_MKDIR)/%.mk: %.mk +# $(INSTALL) -o $(HDROWNER) -g $(HDRGROUP) -m $(HDRMODE) $< $@ + +# TODO: make this depend on $(TOPDIR)/docdir.done +#$(INSTALL_DOCDIR_DIST)/% $(INSTALL_DOCDIR_DEVEL)/%: % +# mkdir -p $(dir $@) +# $(INSTALL) -o $(DOCOWNER) -g $(DOCGROUP) -m $(DOCMODE) $< $@ + +$(INSTALLED_PROFILE_PATH_SCRIPT): $(TOPDIR)/profiledir.done + echo "if [ -z \"\$$PATH\" ]; then PATH=$(shell echo $(INSTALL_EXEDIR) | sed -e s%^$(ENV_PREFIX)/%/%)" > path_script.sh + echo "else PATH=\$$PATH:$(shell echo $(INSTALL_EXEDIR) | sed -e s%^$(ENV_PREFIX)/%/%); fi" >> path_script.sh + $(INSTALL) -o $(PROFILEOWNER) -g $(PROFILEGROUP) -m $(PROFILEMODE) path_script.sh $@ + +$(INSTALLED_VERSION_FILE): + $(INSTALL) -o $(DOCOWNER) -g $(DOCGROUP) -m $(DOCMODE) $(TOPDIR)/VERSION $@ + echo $(DIST_VERSION) > $@ + +$(SYSCONFIG_DIR)/%: % + $(INSTALL) -o $(CFGOWNER) -g $(CFGGROUP) -m $(CFGMODE) $< $@ + +ifeq ($(DEVELOPMENT),true) +install_profile_path: +else +install_profile_path: $(INSTALLED_PROFILE_PATH_SCRIPT) +endif + +#depend.mk: $(SRC_ALL_CPP) +# > $@ && makedepend -f depend.mk -- $(CPPFLAGS) $(DEPEND_CPPFLAGS) -- $(SRC_ALL_CPP) 2>&1 | sed '/non-portable whitespace/ d' + +#depend.mk: $(filter-out %.h, $(SRC_ALL_CPP) $(PREREQ_DONE)) +# > $@ && if [ "$(wildcard *.cpp *.c)" ]; then \ +# gcc -M $(CPPFLAGS) $(DEPEND_CPPFLAGS) $(filter-out %.h,$(SRC_ALL_CPP)) -o $@; \ +# fi + +.%.o.dep.mk: %.cpp $(BUILD_HDR) + $(CC) -M $(CPPFLAGS) $(DEPEND_CPPFLAGS) $< -o $@ + +.%.o.dep.mk: %.c $(BUILD_HDR) + $(CC) -M $(CPPFLAGS) $(DEPEND_CPPFLAGS) $< -o $@ +