aboutsummaryrefslogtreecommitdiffstats
path: root/make/rules.mk
diff options
context:
space:
mode:
Diffstat (limited to 'make/rules.mk')
-rw-r--r--make/rules.mk22
1 files changed, 19 insertions, 3 deletions
diff --git a/make/rules.mk b/make/rules.mk
index a55087b5..efeb9a7f 100644
--- a/make/rules.mk
+++ b/make/rules.mk
@@ -1,18 +1,34 @@
include make/$(BUILDRULES).mk
+define firstelem
+$(word 1,$(subst /, ,$(1)))
+endef
+SPC := $(subst /, ,/)
+define lastelem
+$(subst $(SPC),/,$(word $(words $(subst /, ,$(1))),$(subst /, ,$(1))))
+endef
+define objbase
+$(patsubst %.$(2),%.$(3),$(firstelem)/$(OUTPUT_DIR)/$(lastelem))
+endef
+
# Usage: $(call src_to_obj,srcs)
define src_to_obj
-$(foreach F,$(1),$(dir $(F))$(OUTPUT_DIR)/$(patsubst %.cc,%.$(OBJ),$(notdir $(F))))
+$(foreach F,$(1),$(call objbase,$(F),cc,$(OBJ)))
endef
# Usage: $(call c_src_to_obj,srcs)
define c_src_to_obj
-$(foreach F,$(1),$(dir $(F))$(OUTPUT_DIR)/$(patsubst %.c,%.$(OBJ),$(notdir $(F))))
+$(foreach F,$(1),$(call objbase,$(F),c,$(OBJ)))
endef
# Usage: $(call src_to_lobj,srcs)
define src_to_lobj
-$(foreach F,$(1),$(dir $(F))$(OUTPUT_DIR)/$(patsubst %.cc,%.$(LOBJ),$(notdir $(F))))
+$(foreach F,$(1),$(call objbase,$(F),cc,$(LOBJ)))
+endef
+
+# Usage: $(call c_src_to_lobj,srcs)
+define c_src_to_lobj
+$(foreach F,$(1),$(call objbase,$(F),c,$(LOBJ)))
endef
# Usage: $(call obj_to_dep,objs)