-USRAPPS += axwin3 gui_ate gui_shell
-
-ALL_DYNMODS = $(addprefix all-,$(DYNMODS))
-ALL_MODULES := $(addprefix all-,$(MODULES))
-ALL_USRLIBS := $(addprefix all-,$(USRLIBS))
-ALL_USRAPPS := $(addprefix all-,$(USRAPPS))
-CLEAN_DYNMODS := $(addprefix clean-,$(DYNMODS))
-CLEAN_MODULES := $(addprefix clean-,$(MODULES))
-CLEAN_USRLIBS := $(addprefix clean-,$(USRLIBS))
-CLEAN_USRAPPS := $(addprefix clean-,$(USRAPPS))
-INSTALL_DYNMODS := $(addprefix install-,$(DYNMODS))
-INSTALL_MODULES := $(addprefix install-,$(MODULES))
-INSTALL_USRLIBS := $(addprefix install-,$(USRLIBS))
-INSTALL_USRAPPS := $(addprefix install-,$(USRAPPS))
-AI_DYNMODS := $(addprefix allinstall-,$(DYNMODS))
-AI_MODULES := $(addprefix allinstall-,$(MODULES))
-AI_USRLIBS := $(addprefix allinstall-,$(USRLIBS))
-AI_USRAPPS := $(addprefix allinstall-,$(USRAPPS))
+USRAPPS += axwin3 gui_ate gui_terminal
+USRAPPS += axwin4
+
+define targetclasses
+ AI_$1 := $$(addprefix allinstall-,$$($1))
+ ALL_$1 := $$(addprefix all-,$$($1))
+ CLEAN_$1 := $$(addprefix clean-,$$($1))
+ INSTALL_$1 := $$(addprefix install-,$$($1))
+endef
+
+$(eval $(call targetclasses,DYNMODS))
+$(eval $(call targetclasses,MODULES))
+$(eval $(call targetclasses,USRLIBS))
+$(eval $(call targetclasses,EXTLIBS))
+$(eval $(call targetclasses,USRAPPS))
+
+targetvars := $$(AI_$1) $$(ALL_$1) $$(CLEAN_$1) $$(INSTALL_$1)