summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Beckett <robert.beckett@intel.com>2014-01-14 18:01:38 +0000
committerDamien Lespiau <damien.lespiau@intel.com>2014-01-14 18:53:00 +0000
commita896ef9c1f67cf707fd2aea900e9276b4ff535d6 (patch)
tree8f91c20e378f63bff6458c8ef4f8a1a1fba80a42
parent44c0b2aeff41e258c74bb1b1221359c4661accd8 (diff)
igt: tests/Android.mk: fix LOCAL_PATH usage
Fix usage of shared variable LOCAL_PATH in deferred variable expansion area. In Makefile language, rule and dependency definitions use immediate expansions of variables, so they get expanded as soon as the rule is created (1st pass). Rule implementation (a.k.a recipe) use deferred expansion (2nd pass). Android effectively makes all Android.mk files a single makefile by including them all in a big tree from the toplevel makefile. The rules are all evaluated in the first pass and targets are generated. Then the 2nd pass happens and the required target's recipes are run. At this point, LOCAL_PATH has been assigned the value from the last evaluated Android.mk in the 1st phase that defined LOCAL_PATH (most Android.mk use this variable). In my particular case, it was the bootloader's Android.mk that was evaluated last and had defined LOCAL_PATH to it's path. The errors are rather misleading due to it looking like a bug in another module's Android.mk rather than this one :) Basically, if you want to use a variable that any other Android.mk defines, then you can only use it in an immediate expansion context, not a deferred expansion context as it will likely be re-defined by the time the 2nd pass happens. This patch stores it in a unique variable that should not be being used by other Android.mk files. An alternative fix would be to use $@ and $< as the files in question are target and dependency, but I never like using those as they can easily break if dependencies are added etc. I prefer variable to be explicitly named to make them obvious. See gnu make manual for explanation of deferred vs immediate expansion of variables : http://www.gnu.org/software/make/manual/make.html#Reading-Makefiles Reviewed-by: Damien Lespiau <damien.lespiau@intel.com> Signed-off-by: Robert Beckett <robert.beckett@intel.com>
-rw-r--r--tests/Android.mk7
1 files changed, 4 insertions, 3 deletions
diff --git a/tests/Android.mk b/tests/Android.mk
index c65f94c0..abccb7fc 100644
--- a/tests/Android.mk
+++ b/tests/Android.mk
@@ -22,6 +22,7 @@ skip_lib_list := \
lib_list := $(filter-out $(skip_lib_list),$(libintel_tools_la_SOURCES))
LIB_SOURCES := $(addprefix lib/,$(lib_list))
+GPU_TOOLS_PATH := $(LOCAL_PATH)
.PHONY: version.h.tmp
@@ -38,10 +39,10 @@ $(LOCAL_PATH)/version.h.tmp:
$(LOCAL_PATH)/version.h: $(LOCAL_PATH)/version.h.tmp
@echo "updating version.h"
- @if ! cmp -s $(LOCAL_PATH)/version.h.tmp $(LOCAL_PATH)/version.h; then \
- mv $(LOCAL_PATH)/version.h.tmp $(LOCAL_PATH)/version.h ; \
+ @if ! cmp -s $(GPU_TOOLS_PATH)/version.h.tmp $(GPU_TOOLS_PATH)/version.h; then \
+ mv $(GPU_TOOLS_PATH)/version.h.tmp $(GPU_TOOLS_PATH)/version.h ; \
else \
- rm $(LOCAL_PATH)/version.h.tmp ; \
+ rm $(GPU_TOOLS_PATH)/version.h.tmp ; \
fi
# FIXME: autogenerate this info #