even better
[apps/madtty.git] / am / footer.mk
index 5b935b7..d367017 100644 (file)
@@ -31,21 +31,48 @@ endef
 
 deps_create = $(foreach f,$(AUTO_DEPENDS),$(call $f,$1,$2))
 
+install-LIBRARIES/%::
+       mkdir -p $($*dir)
+       cp $($*_LIBRARIES:=.so) $($*dir)
+
+uninstall-LIBRARIES/%::
+       rm -f $(patsubst %,$($*dir)/%.so,$($*_LIBRARIES))
+       rmdir -p $($*dir) || true 2> /dev/null
+
 define CLASS_LIBRARIES_tpl
 all:: $1.so
+install-LIBRARIES/$2:: $1.so
+
+install:: install-LIBRARIES/$2
+uninstall:: uninstall-LIBRARIES/$2
 
 $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)
 
-$$(eval $$(call RULE_C_tpl,$1,-fPIC $2))
+$$(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,)))
+$(foreach v,$(filter %_LIBRARIES,$(.VARIABLES)), \
+            $(foreach x,$($v),$(eval $(call CLASS_LIBRARIES_tpl,$x,$(v:_LIBRARIES=)))))
+
+
+install-DATA/%::
+       mkdir -p $($*dir)
+       cp $($*_DATA) $($*dir)
+
+uninstall-DATA/%::
+       rm -f $(patsubst %,$($*dir)/%,$($*_DATA))
+       rmdir -p $($*dir) || true 2> /dev/null
+
+define CLASS_DATA_tpl
+install:: install-DATA/$2
+uninstall:: uninstall-DATA/$2
+endef
+$(foreach v,$(filter %_DATA,$(.VARIABLES)), \
+            $(foreach x,$($v),$(eval $(call CLASS_DATA_tpl,$x,$(v:_DATA=)))))
 
 #define CLASS_EXE_tpl
 #all:: $1
@@ -89,11 +116,16 @@ all check clobber distclean::
 
 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*
+       $(RM) -r .objs* $(DISTCLEANFILES)
+
+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