Android: glsl: add rules to generate ir_expression*.h header files

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@kernel.org>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
This commit is contained in:
Rob Herring 2016-09-01 14:06:23 -05:00 committed by Emil Velikov
parent 2593354643
commit 244f0aba16
6 changed files with 45 additions and 9 deletions

View File

@ -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 > $@

View File

@ -44,7 +44,6 @@ LOCAL_C_INCLUDES := \
$(MESA_TOP)/src/gallium/auxiliary
LOCAL_STATIC_LIBRARIES := \
libmesa_compiler \
libmesa_nir
LOCAL_MODULE := libmesa_glsl

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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)