-$(SYMBOL_SET_BUILD): $(OBJPATH)/%.symbolset : %.exports %.$(CURRENT_ARCH_CONFIG_LC).exports $(OBJPATH)/allsymbols
- @echo SYMBOLSET $* "($(CURRENT_ARCH_CONFIG_LC))"
- $(_v)$(KEXT_CREATE_SYMBOL_SET) \
- $(ARCH_FLAGS_$(CURRENT_ARCH_CONFIG)) \
- -import $(OBJPATH)/allsymbols \
- -export $(SOURCE)/$*.exports \
- -export $(SOURCE)/$*.$(CURRENT_ARCH_CONFIG_LC).exports \
- -output $@ $(_vstdout)
+define symbol_set_rule
+$(OBJPATH)/$(1).symbolset: MY_EXPORTS := $(filter $(1)%,$(EXPORTS_FILES))
+$(OBJPATH)/$(1).symbolset: MY_EXPORTS_ARGS := $$(foreach file,$$(MY_EXPORTS),-export $(SOURCE)/$$(file))
+$(OBJPATH)/$(1).symbolset: $$(MY_EXPORTS) $(OBJPATH)/allsymbols $(KEXT_CREATE_SYMBOL_SET)
+ $$(call makelog,$(ColorH)SYMBOLSET$(Color0) $(ColorF)$(1)$(Color0) "($(ColorLF)$(CURRENT_ARCH_CONFIG_LC)$(Color0))")
+ $(_v)$(KEXT_CREATE_SYMBOL_SET) \
+ $(ARCH_FLAGS_$(CURRENT_ARCH_CONFIG)) \
+ -import $(OBJPATH)/allsymbols \
+ $$(MY_EXPORTS_ARGS) \
+ -output $$@ $(_vstdout)
+endef
+
+$(foreach symbolset,$(SYMBOL_COMPONENT_LIST),$(eval $(call symbol_set_rule,$(symbolset))))