X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=am%2Ffooter.mk;h=315e3f99a47ba165ab1624061bbbc5b56af44db0;hb=098c96356d6cd6460fb7f5ab74db53d91add9333;hp=7a7d3b5005623b9cddbfa8ee2898de3b93f969db;hpb=81526d9d4efbf7a3119cc323028801614ba27065;p=apps%2Fmadtty.git diff --git a/am/footer.mk b/am/footer.mk index 7a7d3b5..315e3f9 100644 --- a/am/footer.mk +++ b/am/footer.mk @@ -3,10 +3,6 @@ AUTO_DEPENDS += filter_c filter_c = $(addprefix $2/,$(patsubst %.c,%.o,$(filter %.c,$1))) -# this is some ad-hoc last resort dependency method -%.a: FORCE - @$(MAKE) -q -rC $(dir $(@D)) $(_cobjs)/$(@F) || $(MAKE) -rC $(dir $(@D)) $(_cobjs)/$(@F) - # this implicit rule is used to force directory existence, without depending # on the directory itself, since its mtime changes too often. %/.exists: Makefile $(CONFDIR)/$(wildcard *.mk) @@ -31,34 +27,91 @@ endef deps_create = $(foreach f,$(AUTO_DEPENDS),$(call $f,$1,$2)) +## +## rules for *_PROGRAMS +## + +install-PROGRAMS/%:: + $(if $($*dir),$(INSTALL_DIR) $(DESTDIR)$($*dir)) + $(if $($*dir),$(INSTALL_PROGRAMS) $($*_PROGRAMS:=.so*) $(DESTDIR)$($*dir)) + +define CLASS_PROGRAMS_tpl + all:: $1 + install-PROGRAMS/$2:: $1 + install:: install-PROGRAMS/$2 + + $1: $$(call deps_create,$$($1_SOURCES),$(_cobjs)/$1) + $(CC) $$(CFLAGS) $$($1_CPPFLAGS) -o $$@ $$(filter %.o,$$^) \ + $$(LDFLAGS) $$($1_LDFLAGS) $$($1_LIBADD) + + $$(eval $$(call RULE_C_tpl,$1,)) + + clean:: + $(RM) $1 +endef +$(foreach v,$(filter %_PROGRAMS,$(.VARIABLES)), \ + $(foreach x,$($v),$(eval $(call CLASS_PROGRAMS_tpl,$x,$(v:_PROGRAMS=))))) + +## +## rules for *_LIBRARIES +## + +install-LIBRARIES/%:: + $(if $($*dir),$(INSTALL_DIR) $(DESTDIR)$($*dir)) + $(if $($*dir),$(INSTALL_DATA) $($*_LIBRARIES:=.so*) $(DESTDIR)$($*dir)) + define CLASS_LIBRARIES_tpl -all:: $1.so + all:: $1.so$3 + install-LIBRARIES/$2:: $1.so$3 -$1.so: $(_cobjs)/$1/.exists $$(call deps_create,$$($1_SOURCES),$(_cobjs)/$1) - $(CC) $$(CFLAGS) $$($1_CPPFLAGS) -fPIC -shared -o $$@ \ - $$(filter %.o,$$^) $$(LDFLAGS) $$($1_LDFLAGS) $$($1_LIBADD) + install:: install-LIBRARIES/$2 -$$(eval $$(call RULE_C_tpl,$1,-fPIC $2)) + $1.so$3: $$(call deps_create,$$($1_SOURCES),$(_cobjs)/$1) + $(CC) $$(CFLAGS) $$($1_CPPFLAGS) -fPIC -shared -o $$@ $$(filter %.o,$$^) \ + $$(LDFLAGS) $$($1_LDFLAGS) $$($1_LIBADD) + $$(if $$(word 2,$$(subst ., ,$3)),ln -sf $$@ $1.so.$$(word 1,$$(subst ., ,$3))) + $$(if $$($1_VERSION), ln -sf $$@ $1.so) -clean:: - $(RM) $1.so + $$(eval $$(call RULE_C_tpl,$1,-fPIC)) + + clean:: + $(RM) $1.so* endef -$(foreach l, \ - $(foreach l,$(filter %_LIBRARIES,$(.VARIABLES)),$($l)), \ - $(eval $(call CLASS_LIBRARIES_tpl,$l,))) - -#define CLASS_EXE_tpl -#all:: $1 -#$1: $(_cobjs)/$1/.exists $$(call deps_create,$$($1_SOURCES),$(_cobjs)/$1) -# $(CC) -o $$@ $$(CFLAGS) $$($1_CPPFLAGS) $$(filter %.o,$$^) \ -# $$(LDFLAGS) $$($1_LDFLAGS) $$(filter %.a,$$^) -# -#$$(eval $$(call RULE_C_tpl,$1,$2)) -# -#clean:: -# $(RM) $1 -#endef -#$(foreach x,$(__EXE__),$(eval $(call CLASS_EXE_tpl,$x,))) +$(foreach v,$(filter %_LIBRARIES,$(.VARIABLES)), \ + $(foreach x,$($v),$(eval $(call CLASS_LIBRARIES_tpl,$x,$(v:_LIBRARIES=),$(...\ + ...)$(if $($x_VERSION),.$($x_VERSION)))))) + + +## +## rules for *_DATA +## + +install-DATA/%:: + $(if $($*dir), $(INSTALL_DIR) $(DESTDIR)$($*dir)) + $(if $($*dir), $(INSTALL_DATA) $($*_DATA) $(DESTDIR)$($*dir)) + +install:: $(foreach v,$(filter %_DATA,$(.VARIABLES)),$(patsubst %_DATA,install-DATA/%,$v)) + +## +## rules for *_SCRIPTS +## + +install-SCRIPTS/%:: + $(if $($*dir), $(INSTALL_DIR) $(DESTDIR)$($*dir)) + $(if $($*dir), $(INSTALL_PROGRAMS) $($*_SCRIPTS) $(DESTDIR)$($*dir)) + +install:: $(foreach v,$(filter %_SCRIPTS,$(.VARIABLES)),$(patsubst %_SCRIPTS,install-SCRIPTS/%,$v)) + +## +## rules for *_HEADERS +## + +install-HEADERS/%:: + $(if $($*dir), $(INSTALL_DIR) $(DESTDIR)$($*dir)) + $(if $($*dir), $(INSTALL_DATA) $($*_HEADERS) $(DESTDIR)$($*dir)) + +install:: $(foreach v,$(filter %_HEADERS,$(.VARIABLES)),$(patsubst %_HEADERS,install-HEADERS/%,$v)) + ########################################################################}}}# #[ Candy ]##############################################################{{{# @@ -84,21 +137,22 @@ endif ########################################################################}}}# -all check clobber distclean:: - @set -e $(patsubst %,; $(MAKE) -rC % $@,$(SUBDIRS)) +all check clobber distclean install:: + @$(if $(SUBDIRS),set -e $(patsubst %,; $(MAKE) -rC % $@,$(SUBDIRS))) CLEAN_RECURSE=1 clean:: - $(RM) -r $(_cobjs) + $(RM) -r $(_cobjs) $(CLEANFILES) @$(if $(CLEAN_RECURSE),$(patsubst %,$(MAKE) -rC % $@;,$(SUBDIRS))) clobber distclean:: CLEAN_RECURSE= clobber distclean:: clean - $(RM) -r .objs* $(patsubst %.in,%,$(wildcard *.in)) + $(RM) -r .objs* $(DISTCLEANFILES) + @[ -f Makefile.in ] && $(RM) Makefile ifeq (".","$(DEPTH)") clobber distclean:: $(RM) $(patsubst %.in,%,$(wildcard $(CONFDIR)/*.in)) endif -.PHONY: all check clean clobber distclean FORCE +.PHONY: all check clean clobber distclean install FORCE