diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/functions.make | 15 | ||||
-rw-r--r-- | tools/root.make | 2 |
2 files changed, 16 insertions, 1 deletions
diff --git a/tools/functions.make b/tools/functions.make index 2a26e48bf2..806e1a2f3e 100644 --- a/tools/functions.make +++ b/tools/functions.make | |||
@@ -73,3 +73,18 @@ ifeq ($(call info),old) | |||
73 | export info=echo "$$(1)"; | 73 | export info=echo "$$(1)"; |
74 | endif | 74 | endif |
75 | 75 | ||
76 | # path substituion can be surprisingly tricky, indeed the following almost | ||
77 | # always work but not quite: | ||
78 | # BMPOBJ = $(BMP:$(ROOTDIR)/%.bmp=$(BUILDDIR)/%.o) | ||
79 | # indeed if | ||
80 | # ROOTDIR=/rockbox | ||
81 | # BUILDDIR=/rockbox/build-bla | ||
82 | # then: | ||
83 | # /rockbox/apps/bitmaps/rockboxlogo-bla.bmp -> /rockbox/apps/bitmaps/rockbox/build-blalogo.o | ||
84 | # this function ensure that this type of problems does not occur | ||
85 | # | ||
86 | # usage: $(call full_path_subst,patterm,replacement,text) | ||
87 | # | ||
88 | # example: $(call full_path_subst,$(ROOTDIR)/%.bmp,$(BUILDDIR)/%.o,$(BMP)) | ||
89 | NO_MATCH=this_string_will_never_match_anything | ||
90 | full_path_subst=$(patsubst $(NO_MATCH)/%,%, $(patsubst $(NO_MATCH)/$(1), $(2), $(addprefix $(NO_MATCH)/, $(3)))) | ||
diff --git a/tools/root.make b/tools/root.make index 2deae8cc82..c9f4a2eb65 100644 --- a/tools/root.make +++ b/tools/root.make | |||
@@ -157,7 +157,7 @@ endif # CORE_GCSECTIONS | |||
157 | OBJ := $(SRC:.c=.o) | 157 | OBJ := $(SRC:.c=.o) |
158 | OBJ := $(OBJ:.S=.o) | 158 | OBJ := $(OBJ:.S=.o) |
159 | OBJ += $(BMP:.bmp=.o) | 159 | OBJ += $(BMP:.bmp=.o) |
160 | OBJ := $(subst $(ROOTDIR),$(BUILDDIR),$(OBJ)) | 160 | OBJ := $(call full_path_subst,$(ROOTDIR)/%,$(BUILDDIR)/%,$(OBJ)) |
161 | 161 | ||
162 | build: $(TOOLS) $(BUILDDIR)/$(BINARY) $(CODECS) $(ROCKS) $(ARCHOSROM) $(RBINFO) | 162 | build: $(TOOLS) $(BUILDDIR)/$(BINARY) $(CODECS) $(ROCKS) $(ARCHOSROM) $(RBINFO) |
163 | 163 | ||