From b959655822df6c5610372c9da54ea93f93ac87e9 Mon Sep 17 00:00:00 2001 From: Amaury Pouly Date: Fri, 12 May 2017 19:50:56 +1000 Subject: Fix unsafe substitutions in Makefile. Strange things can happen in the (unlikely) case that ROOTDIR=/rockbox Change-Id: I085f928fd859b307667e8fccf40b29a9c325f7ae --- tools/functions.make | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'tools/functions.make') 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) export info=echo "$$(1)"; endif +# path substituion can be surprisingly tricky, indeed the following almost +# always work but not quite: +# BMPOBJ = $(BMP:$(ROOTDIR)/%.bmp=$(BUILDDIR)/%.o) +# indeed if +# ROOTDIR=/rockbox +# BUILDDIR=/rockbox/build-bla +# then: +# /rockbox/apps/bitmaps/rockboxlogo-bla.bmp -> /rockbox/apps/bitmaps/rockbox/build-blalogo.o +# this function ensure that this type of problems does not occur +# +# usage: $(call full_path_subst,patterm,replacement,text) +# +# example: $(call full_path_subst,$(ROOTDIR)/%.bmp,$(BUILDDIR)/%.o,$(BMP)) +NO_MATCH=this_string_will_never_match_anything +full_path_subst=$(patsubst $(NO_MATCH)/%,%, $(patsubst $(NO_MATCH)/$(1), $(2), $(addprefix $(NO_MATCH)/, $(3)))) -- cgit v1.2.3