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
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