Mesa (main): Android.mk: Intermediate output paths may already be absolute

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Sun Jun 26 22:07:16 UTC 2022


Module: Mesa
Branch: main
Commit: a7d6365f20078cda63052eecc0e3aad9a3779d28
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a7d6365f20078cda63052eecc0e3aad9a3779d28

Author: Alessandro Astone <ales.astone at gmail.com>
Date:   Sat Jun 18 18:28:26 2022 +0200

Android.mk: Intermediate output paths may already be absolute

That is the case when OUT_DIR_COMMON_BASE is set.
Only prefix paths with AOSP_ABSOLUTE_PATH if they're relative.

Reviewed-by: Roman Stratiienko <r.stratiienko at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16674>

---

 android/mesa3d_cross.mk | 51 ++++++++++++++++++++++++++++++++-----------------
 1 file changed, 33 insertions(+), 18 deletions(-)

diff --git a/android/mesa3d_cross.mk b/android/mesa3d_cross.mk
index 3a71f83c53b..5b115d9a19b 100644
--- a/android/mesa3d_cross.mk
+++ b/android/mesa3d_cross.mk
@@ -21,16 +21,12 @@
 # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 # DEALINGS IN THE SOFTWARE.
 
-# Turn "dir1/dir2/dir3/dir4" into "../../../../"
-define relative_top_path
-$(eval __s:=) \
-$(foreach tmp,$(subst /,$(space),$1),$(eval __s:=$(__s)../)) \
-$(__s)
-endef
-
 MY_PATH := $(call my-dir)
 
 AOSP_ABSOLUTE_PATH := $(realpath .)
+define relative-to-absolute
+$(if $(patsubst /%,,$1),$(AOSP_ABSOLUTE_PATH)/$1,$1)
+endef
 
 LOCAL_MODULE_CLASS := SHARED_LIBRARIES
 LOCAL_MODULE := meson.dummy.$(LOCAL_MULTILIB)
@@ -84,7 +80,7 @@ MESA3D_GLES_BINS := \
 
 MESON_GEN_NINJA := \
 	cd $(MESON_OUT_DIR) && PATH=/usr/bin:/usr/local/bin:$$PATH meson ./build     \
-	--cross-file $(AOSP_ABSOLUTE_PATH)/$(MESON_GEN_DIR)/aosp_cross               \
+	--cross-file $(call relative-to-absolute,$(MESON_GEN_DIR))/aosp_cross        \
 	--buildtype=release                                                          \
 	-Ddri-search-path=/vendor/$(MESA3D_LIB_DIR)/dri                              \
 	-Dplatforms=android                                                          \
@@ -173,7 +169,7 @@ endef
 
 define m-lld-flags-cleaned
   $(subst prebuilts/,$(AOSP_ABSOLUTE_PATH)/prebuilts/, \
-  $(subst out/,$(AOSP_ABSOLUTE_PATH)/out/,             \
+  $(subst $(OUT_DIR)/,$(call relative-to-absolute,$(OUT_DIR))/, \
   $(subst -Wl$(comma)--fatal-warnings,,                \
   $(subst -Wl$(comma)--no-undefined-version,,          \
   $(subst -Wl$(comma)--gc-sections,,                   \
@@ -208,11 +204,28 @@ define filter-c-flags
     $(patsubst  -W%,, $1))
 endef
 
-define m-c-abs-includes
-  $(subst  -isystem , -isystem $(AOSP_ABSOLUTE_PATH)/, \
-  $(subst  -I, -I$(AOSP_ABSOLUTE_PATH)/, \
-  $(subst  -I , -I, \
-    $(c-includes))))
+define nospace-includes
+  $(subst $(space)-isystem$(space),$(space)-isystem, \
+  $(subst $(space)-I$(space),$(space)-I, \
+  $(strip $(c-includes))))
+endef
+
+# Ensure include paths are always absolute
+# When OUT_DIR_COMMON_BASE env variable is set the AOSP/KATI will use absolute paths
+# for headers in intermediate output directories, but relative for all others.
+define abs-include
+$(strip \
+  $(if $(patsubst -I%,,$1),\
+    $(if $(patsubst -isystem/%,,$1),\
+      $(subst -isystem,-isystem$(AOSP_ABSOLUTE_PATH)/,$1),\
+      $1\
+    ),\
+    $(if $(patsubst -I/%,,$1),\
+      $(subst -I,-I$(AOSP_ABSOLUTE_PATH)/,$1),\
+      $1\
+    )\
+  )
+)
 endef
 
 $(MESON_GEN_FILES_TARGET): PREPROCESS_MESON_CONFIGS:=$(PREPROCESS_MESON_CONFIGS)
@@ -220,8 +233,10 @@ $(MESON_GEN_FILES_TARGET): MESON_GEN_DIR:=$(MESON_GEN_DIR)
 $(MESON_GEN_FILES_TARGET): $(sort $(shell find -L $(MESA3D_TOP) -not -path '*/\.*'))
 	mkdir -p $(dir $@)
 	echo -e "[properties]\n"                                                                                                  \
-		"c_args = [$(foreach flag, $(call filter-c-flags,$(m-c-flags) $(m-c-abs-includes)),'$(flag)', )'']\n"             \
-		"cpp_args = [$(foreach flag, $(call filter-c-flags,$(m-cpp-flags) $(m-c-abs-includes)),'$(flag)', )'']\n"         \
+		"c_args = [$(foreach flag,$(call filter-c-flags,$(m-c-flags)),'$(flag)', ) \
+                           $(foreach inc,$(nospace-includes),'$(call abs-include,$(inc))', )'']\n" \
+		"cpp_args = [$(foreach flag,$(call filter-c-flags,$(m-cpp-flags)),'$(flag)', ) \
+                             $(foreach inc,$(nospace-includes),'$(call abs-include,$(inc))', )'']\n" \
 		"c_link_args = [$(foreach flag, $(m-lld-flags-cleaned),'$(flag)',)'']\n"                                          \
 		"cpp_link_args = [$(foreach flag, $(m-lld-flags-cleaned),'$(flag)',)'']\n"                                        \
 		"needs_exe_wrapper = true\n"                                                                                      \
@@ -231,7 +246,7 @@ $(MESON_GEN_FILES_TARGET): $(sort $(shell find -L $(MESA3D_TOP) -not -path '*/\.
 		"cpp = [$(foreach arg,$(PRIVATE_CXX),'$(subst prebuilts/,$(AOSP_ABSOLUTE_PATH)/prebuilts/,$(arg))',)'']\n"        \
 		"c_ld = 'lld'\n"                                                                                                  \
 		"cpp_ld = 'lld'\n\n"                                                                                              \
-		"pkgconfig = ['env', 'PKG_CONFIG_LIBDIR=' + '$(AOSP_ABSOLUTE_PATH)/$(MESON_GEN_DIR)', '/usr/bin/pkg-config']\n\n" \
+		"pkgconfig = ['env', 'PKG_CONFIG_LIBDIR=' + '$(call relative-to-absolute,$(MESON_GEN_DIR))', '/usr/bin/pkg-config']\n\n" \
 		"llvm-config = '/dev/null'\n"                                                                                     \
 		"[host_machine]\n"                                                                                                \
 		"system = 'linux'\n"                                                                                              \
@@ -270,7 +285,7 @@ $(MESON_OUT_DIR)/install/.install.timestamp: MESON_BUILD:=$(MESON_BUILD)
 $(MESON_OUT_DIR)/install/.install.timestamp: $(MESON_OUT_DIR)/.build.timestamp
 	rm -rf $(dir $@)
 	mkdir -p $(dir $@)
-	DESTDIR=$(AOSP_ABSOLUTE_PATH)/$(dir $@) $(MESON_BUILD) install
+	DESTDIR=$(call relative-to-absolute,$(dir $@)) $(MESON_BUILD) install
 	$(MESON_COPY_LIBGALLIUM)
 	touch $@
 



More information about the mesa-commit mailing list