[Mesa-dev] [PATCH] Android: glsl: add rules to generate ir_expression*.h header files

Rob Herring robh at kernel.org
Thu Sep 1 19:06:23 UTC 2016


Recent changes to generate ir_expression*.h header files broke Android
builds. This adds the generation rules. This change is complicated due to
creating a circular dependency between libmesa_glsl, libmesa_nir, and
libmesa_compiler. Normally, we add static libraries so that include paths
are added even if there's no linking dependency. That is the case here.
Instead, we explicitly add the include path using $(MESA_GEN_GLSL_H) to
libmesa_compiler. This in turn requires shuffling the order of make
includes. It also uncovered missing dependency tracking of glsl_parser.h.

Signed-off-by: Rob Herring <robh at kernel.org>
---
 src/compiler/Android.glsl.gen.mk    | 25 +++++++++++++++++++++++++
 src/compiler/Android.glsl.mk        |  1 -
 src/compiler/Android.mk             | 12 ++++++++----
 src/mesa/Android.libmesa_dricore.mk |  6 +++++-
 src/mesa/Android.libmesa_st_mesa.mk |  4 +++-
 src/mesa/program/Android.mk         |  6 ++++--
 6 files changed, 45 insertions(+), 9 deletions(-)

diff --git a/src/compiler/Android.glsl.gen.mk b/src/compiler/Android.glsl.gen.mk
index 157aa27..d7623e5 100644
--- a/src/compiler/Android.glsl.gen.mk
+++ b/src/compiler/Android.glsl.gen.mk
@@ -41,6 +41,15 @@ LOCAL_GENERATED_SOURCES += $(addprefix $(intermediates)/, \
 	$(LIBGLCPP_GENERATED_FILES) \
 	$(LIBGLSL_GENERATED_FILES))
 
+LOCAL_EXPORT_C_INCLUDE_DIRS += \
+	$(intermediates)/glsl \
+
+# Modules using libmesa_nir must set LOCAL_GENERATED_SOURCES to this
+MESA_GEN_GLSL_H := $(addprefix $(call local-generated-sources-dir)/, \
+	glsl/ir_expression_operation.h \
+	glsl/ir_expression_operation_constant.h \
+	glsl/ir_expression_operation_strings.h)
+
 define local-l-or-ll-to-c-or-cpp
 	@mkdir -p $(dir $@)
 	@echo "Mesa Lex: $(PRIVATE_MODULE) <= $<"
@@ -73,8 +82,24 @@ $(intermediates)/glsl/glsl_lexer.cpp: $(LOCAL_PATH)/glsl/glsl_lexer.ll
 $(intermediates)/glsl/glsl_parser.cpp: $(LOCAL_PATH)/glsl/glsl_parser.yy
 	$(call local-yy-to-cpp-and-h,.cpp)
 
+$(intermediates)/glsl/glsl_parser.h: $(intermediates)/glsl/glsl_parser.cpp
+
 $(intermediates)/glsl/glcpp/glcpp-lex.c: $(LOCAL_PATH)/glsl/glcpp/glcpp-lex.l
 	$(call local-l-or-ll-to-c-or-cpp)
 
 $(intermediates)/glsl/glcpp/glcpp-parse.c: $(LOCAL_PATH)/glsl/glcpp/glcpp-parse.y
 	$(call glsl_local-y-to-c-and-h)
+
+$(LOCAL_PATH)/glsl/ir.h: $(intermediates)/glsl/ir_expression_operation.h
+
+$(intermediates)/glsl/ir_expression_operation.h: $(LOCAL_PATH)/glsl/ir_expression_operation.py
+	@mkdir -p $(dir $@)
+	$(hide) $(MESA_PYTHON2) $< enum > $@
+
+$(intermediates)/glsl/ir_expression_operation_constant.h: $(LOCAL_PATH)/glsl/ir_expression_operation.py
+	@mkdir -p $(dir $@)
+	$(hide) $(MESA_PYTHON2) $< constant > $@
+
+$(intermediates)/glsl/ir_expression_operation_strings.h: $(LOCAL_PATH)/glsl/ir_expression_operation.py
+	@mkdir -p $(dir $@)
+	$(hide) $(MESA_PYTHON2) $< strings > $@
diff --git a/src/compiler/Android.glsl.mk b/src/compiler/Android.glsl.mk
index 21c1065..dcc356f 100644
--- a/src/compiler/Android.glsl.mk
+++ b/src/compiler/Android.glsl.mk
@@ -44,7 +44,6 @@ LOCAL_C_INCLUDES := \
 	$(MESA_TOP)/src/gallium/auxiliary
 
 LOCAL_STATIC_LIBRARIES := \
-	libmesa_compiler \
 	libmesa_nir
 
 LOCAL_MODULE := libmesa_glsl
diff --git a/src/compiler/Android.mk b/src/compiler/Android.mk
index ac0ced5..1e81ca5 100644
--- a/src/compiler/Android.mk
+++ b/src/compiler/Android.mk
@@ -22,7 +22,8 @@
 
 LOCAL_PATH := $(call my-dir)
 
-include $(LOCAL_PATH)/Makefile.sources
+include $(LOCAL_PATH)/Android.glsl.mk
+include $(LOCAL_PATH)/Android.nir.mk
 
 # ---------------------------------------
 # Build libmesa_compiler
@@ -30,19 +31,22 @@ include $(LOCAL_PATH)/Makefile.sources
 
 include $(CLEAR_VARS)
 
+include $(LOCAL_PATH)/Makefile.sources
 LOCAL_SRC_FILES := $(LIBCOMPILER_FILES)
 
 LOCAL_C_INCLUDES := \
 	$(MESA_TOP)/src/mapi \
 	$(MESA_TOP)/src/mesa \
 	$(MESA_TOP)/src/gallium/include \
-	$(MESA_TOP)/src/gallium/auxiliary
+	$(MESA_TOP)/src/gallium/auxiliary \
+	$(dir $(MESA_GEN_GLSL_H))
+
+LOCAL_GENERATED_SOURCES += \
+	$(MESA_GEN_GLSL_H)
 
 LOCAL_MODULE := libmesa_compiler
 
 include $(MESA_COMMON_MK)
 include $(BUILD_STATIC_LIBRARY)
 
-include $(LOCAL_PATH)/Android.glsl.mk
 
-include $(LOCAL_PATH)/Android.nir.mk
diff --git a/src/mesa/Android.libmesa_dricore.mk b/src/mesa/Android.libmesa_dricore.mk
index d7647a7..86196ce 100644
--- a/src/mesa/Android.libmesa_dricore.mk
+++ b/src/mesa/Android.libmesa_dricore.mk
@@ -60,7 +60,11 @@ LOCAL_C_INCLUDES := \
 	$(MESA_TOP)/src/mesa/main \
 	$(MESA_TOP)/src/compiler/nir \
 	$(MESA_TOP)/src/gallium/include \
-	$(MESA_TOP)/src/gallium/auxiliary
+	$(MESA_TOP)/src/gallium/auxiliary \
+	$(dir $(MESA_GEN_GLSL_H))
+
+LOCAL_GENERATED_SOURCES += \
+	$(MESA_GEN_GLSL_H)
 
 LOCAL_WHOLE_STATIC_LIBRARIES += \
 	libmesa_program
diff --git a/src/mesa/Android.libmesa_st_mesa.mk b/src/mesa/Android.libmesa_st_mesa.mk
index 785b6de..3905ddc 100644
--- a/src/mesa/Android.libmesa_st_mesa.mk
+++ b/src/mesa/Android.libmesa_st_mesa.mk
@@ -40,6 +40,8 @@ LOCAL_MODULE := libmesa_st_mesa
 LOCAL_SRC_FILES := \
 	$(MESA_GALLIUM_FILES)
 
+LOCAL_GENERATED_SOURCES := $(MESA_GEN_GLSL_H)
+
 ifeq ($(strip $(MESA_ENABLE_ASM)),true)
 ifeq ($(TARGET_ARCH),x86)
 	LOCAL_SRC_FILES += $(X86_FILES)
@@ -63,7 +65,7 @@ LOCAL_C_INCLUDES := \
 LOCAL_WHOLE_STATIC_LIBRARIES += \
 	libmesa_program
 
-LOCAL_STATIC_LIBRARIES += libmesa_nir
+LOCAL_STATIC_LIBRARIES += libmesa_nir libmesa_glsl
 
 include $(LOCAL_PATH)/Android.gen.mk
 include $(MESA_COMMON_MK)
diff --git a/src/mesa/program/Android.mk b/src/mesa/program/Android.mk
index 6f48543..c6470e6 100644
--- a/src/mesa/program/Android.mk
+++ b/src/mesa/program/Android.mk
@@ -44,7 +44,8 @@ include $(CLEAR_VARS)
 
 LOCAL_MODULE := libmesa_program
 LOCAL_MODULE_CLASS := STATIC_LIBRARIES
-LOCAL_STATIC_LIBRARIES := libmesa_nir
+LOCAL_STATIC_LIBRARIES := libmesa_nir \
+	libmesa_glsl
 
 intermediates := $(call local-generated-sources-dir)
 
@@ -80,7 +81,8 @@ LOCAL_C_INCLUDES := \
 
 LOCAL_EXPORT_C_INCLUDE_DIRS := $(intermediates)
 
-LOCAL_GENERATED_SOURCES += $(MESA_GEN_NIR_H)
+LOCAL_GENERATED_SOURCES += $(MESA_GEN_NIR_H) \
+	$(MESA_GEN_GLSL_H)
 
 include $(MESA_COMMON_MK)
 include $(BUILD_STATIC_LIBRARY)
-- 
2.9.3



More information about the mesa-dev mailing list