-$(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))
+