[Mesa-dev] [PATCH 16/18] android: build glsl

Chad Versace chad at chad-versace.us
Thu Aug 18 07:15:53 PDT 2011


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Great. Then the glsl makefile is
Reviewed-by: Chad Versace <chad at chad-versace.us>

On 08/17/2011 08:26 PM, Chia-I Wu wrote:
> On Thu, Aug 18, 2011 at 4:06 AM, Chad Versace <chad at chad-versace.us> wrote:
> On 08/16/2011 11:28 PM, Chia-I Wu wrote:
>>>> This builds the static library libmesa_glsl and executable glsl_compiler
>>>> from glsl.  glsl_compiler is only installed for engineering build.
>>>> ---
>>>>  Android.mk              |    1 +
>>>>  src/glsl/Android.gen.mk |   73 +++++++++++++++++++++
>>>>  src/glsl/Android.mk     |  161 +++++++++++++++++++++++++++++++++++++++++++++++
>>>>  src/mesa/Android.mk     |   25 +++++++
>>>>  4 files changed, 260 insertions(+), 0 deletions(-)
>>>>  create mode 100644 src/glsl/Android.gen.mk
>>>>  create mode 100644 src/glsl/Android.mk
>>>>
>>>> diff --git a/Android.mk b/Android.mk
>>>> index 0dc8fe1..f05d54f 100644
>>>> --- a/Android.mk
>>>> +++ b/Android.mk
>>>> @@ -42,6 +42,7 @@ DRM_GRALLOC_TOP := hardware/drm_gralloc
>>>>  MESA_COMMON_MK := $(MESA_TOP)/Android.common.mk
>>>>
>>>>  SUBDIRS := \
>>>> +     $(LOCAL_PATH)/src/glsl/Android.mk \
>>>>       $(LOCAL_PATH)/src/mesa/Android.mk \
>>>>       $(LOCAL_PATH)/src/egl/Android.mk \
>>>>       $(LOCAL_PATH)/src/gallium/Android.mk
>>>> diff --git a/src/glsl/Android.gen.mk b/src/glsl/Android.gen.mk
>>>> new file mode 100644
>>>> index 0000000..61b2e4d
>>>> --- /dev/null
>>>> +++ b/src/glsl/Android.gen.mk
>>>> @@ -0,0 +1,73 @@
>>>> +ifeq ($(LOCAL_MODULE_CLASS),)
>>>> +LOCAL_MODULE_CLASS := STATIC_LIBRARIES
>>>> +endif
>>>> +
>>>> +intermediates := $(call local-intermediates-dir)
>>>> +
>>>> +sources := \
>>>> +     glsl_lexer.cpp \
>>>> +     glsl_parser.cpp \
>>>> +     glcpp/glcpp-lex.c \
>>>> +     glcpp/glcpp-parse.c
>>>> +
>>>> +ifneq ($(LOCAL_IS_HOST_MODULE),true)
>>>> +sources += builtin_function.cpp
>>>> +endif
>>>> +
>>>> +LOCAL_SRC_FILES := $(filter-out $(sources), $(LOCAL_SRC_FILES))
>>>> +
>>>> +LOCAL_C_INCLUDES += $(intermediates) $(intermediates)/glcpp $(MESA_TOP)/src/glsl/glcpp
>>>> +
>>>> +sources := $(addprefix $(intermediates)/, $(sources))
>>>> +LOCAL_GENERATED_SOURCES += $(sources)
>>>> +
>>>> +define local-l-or-ll-to-c-or-cpp
>>>> +     @mkdir -p $(dir $@)
>>>> +     @echo "Mesa Lex: $(PRIVATE_MODULE) <= $<"
>>>> +     $(hide) $(LEX) --nounistd -o$@ $<
>>>> +endef
>>>> +
>>>> +define local-y-to-c-and-h
>>>> +     @mkdir -p $(dir $@)
>>>> +     @echo "Mesa Yacc: $(PRIVATE_MODULE) <= $<"
>>>> +     $(hide) $(YACC) -o $@ $<
>>>> +endef
>>>> +
>>>> +define local-yy-to-cpp-and-h
>>>> +     @mkdir -p $(dir $@)
>>>> +     @echo "Mesa Yacc: $(PRIVATE_MODULE) <= $<"
>>>> +     $(hide) $(YACC) -p "_mesa_glsl_" -o $@ $<
>>>> +     touch $(@:$1=$(YACC_HEADER_SUFFIX))
>>>> +     echo '#ifndef '$(@F:$1=_h) > $(@:$1=.h)
>>>> +     echo '#define '$(@F:$1=_h) >> $(@:$1=.h)
>>>> +     cat $(@:$1=$(YACC_HEADER_SUFFIX)) >> $(@:$1=.h)
>>>> +     echo '#endif' >> $(@:$1=.h)
>>>> +     rm -f $(@:$1=$(YACC_HEADER_SUFFIX))
>>>> +endef
>>>> +
>>>> +$(intermediates)/glsl_lexer.cpp: $(LOCAL_PATH)/glsl_lexer.ll
>>>> +     $(call local-l-or-ll-to-c-or-cpp)
>>>> +
>>>> +$(intermediates)/glsl_parser.cpp: $(LOCAL_PATH)/glsl_parser.yy
>>>> +     $(call local-yy-to-cpp-and-h,.cpp)
>>>> +
>>>> +$(intermediates)/glcpp/glcpp-lex.c: $(LOCAL_PATH)/glcpp/glcpp-lex.l
>>>> +     $(call local-l-or-ll-to-c-or-cpp)
>>>> +
>>>> +$(intermediates)/glcpp/glcpp-parse.c: $(LOCAL_PATH)/glcpp/glcpp-parse.y
>>>> +     $(call local-y-to-c-and-h)
>>>> +
>>>> +BUILTIN_COMPILER := $(BUILD_OUT_EXECUTABLES)/mesa_builtin_compiler$(BUILD_EXECUTABLE_SUFFIX)
>>>> +
>>>> +builtin_function_deps := \
>>>> +     $(LOCAL_PATH)/builtins/tools/generate_builtins.py \
>>>> +     $(LOCAL_PATH)/builtins/tools/texture_builtins.py \
>>>> +     $(BUILTIN_COMPILER) \
>>>> +     $(wildcard $(LOCAL_PATH)/builtins/profiles/*) \
>>>> +             $(wildcard $(LOCAL_PATH)/builtins/ir/*)
>>>> +
>>>> +$(intermediates)/builtin_function.cpp: PRIVATE_SCRIPT := $(MESA_PYTHON2) $(LOCAL_PATH)/builtins/tools/generate_builtins.py
>>>> +$(intermediates)/builtin_function.cpp: $(builtin_function_deps)
>>>> +     @mkdir -p $(dir $@)
>>>> +     @echo "Gen GLSL: $(PRIVATE_MODULE) <= $(notdir $@)"
>>>> +     $(hide) $(PRIVATE_SCRIPT) $(BUILTIN_COMPILER) > $@ || rm -f $@
>>>> diff --git a/src/glsl/Android.mk b/src/glsl/Android.mk
>>>> new file mode 100644
>>>> index 0000000..5f0c83c
>>>> --- /dev/null
>>>> +++ b/src/glsl/Android.mk
>>>> @@ -0,0 +1,161 @@
>>>> +# Mesa 3-D graphics library
>>>> +# Version:  7.12
> 
> Again, this version tag should be removed.
>> Will do.
>>>> +#
>>>> +# Copyright (C) 2010-2011 Chia-I Wu <olvaffe at gmail.com>
>>>> +# Copyright (C) 2010-2011 LunarG Inc.
>>>> +#
>>>> +# Permission is hereby granted, free of charge, to any person obtaining a
>>>> +# copy of this software and associated documentation files (the "Software"),
>>>> +# to deal in the Software without restriction, including without limitation
>>>> +# the rights to use, copy, modify, merge, publish, distribute, sublicense,
>>>> +# and/or sell copies of the Software, and to permit persons to whom the
>>>> +# Software is furnished to do so, subject to the following conditions:
>>>> +#
>>>> +# The above copyright notice and this permission notice shall be included
>>>> +# in all copies or substantial portions of the Software.
>>>> +#
>>>> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
>>>> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
>>>> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
>>>> +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
>>>> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
>>>> +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
>>>> +# DEALINGS IN THE SOFTWARE.
>>>> +
>>>> +# Android.mk for glsl
> 
> Since this file builds multiple targets, it would be much easier to read if it were
> separated into blocks. I suggest something like this:
> 
> # ---------------------------------------
> # Build libmesa_glsl
> # ---------------------------------------
> 
> include $(CLEAR_VARS)
> LOCAL_MODULE := libmesa_glsl
> ...
> include $(BUILD_STUFF)
> 
> 
> # ---------------------------------------
> # Build glsl_compiler
> # ---------------------------------------
> 
> include $(CLEAR_VARS)
> LOCAL_MODULE := glsl_compiler
> ...
> include $(BUILD_STUFF)
>> Yes, that does look better.  Will do.
>>>> +
>>>> +LOCAL_PATH := $(call my-dir)
>>>> +
>>>> +# from Makefile
>>>> +LIBGLCPP_SOURCES = \
>>>> +     glcpp/glcpp-lex.c \
>>>> +     glcpp/glcpp-parse.c \
>>>> +     glcpp/pp.c
>>>> +
>>>> +C_SOURCES = \
>>>> +     strtod.c \
>>>> +     ralloc.c \
>>>> +     $(LIBGLCPP_SOURCES)
>>>> +
>>>> +CXX_SOURCES = \
>>>> +     ast_expr.cpp \
>>>> +     ast_function.cpp \
>>>> +     ast_to_hir.cpp \
>>>> +     ast_type.cpp \
>>>> +     glsl_lexer.cpp \
>>>> +     glsl_parser.cpp \
>>>> +     glsl_parser_extras.cpp \
>>>> +     glsl_types.cpp \
>>>> +     glsl_symbol_table.cpp \
>>>> +     hir_field_selection.cpp \
>>>> +     ir_basic_block.cpp \
>>>> +     ir_clone.cpp \
>>>> +     ir_constant_expression.cpp \
>>>> +     ir.cpp \
>>>> +     ir_expression_flattening.cpp \
>>>> +     ir_function_can_inline.cpp \
>>>> +     ir_function_detect_recursion.cpp \
>>>> +     ir_function.cpp \
>>>> +     ir_hierarchical_visitor.cpp \
>>>> +     ir_hv_accept.cpp \
>>>> +     ir_import_prototypes.cpp \
>>>> +     ir_print_visitor.cpp \
>>>> +     ir_reader.cpp \
>>>> +     ir_rvalue_visitor.cpp \
>>>> +     ir_set_program_inouts.cpp \
>>>> +     ir_validate.cpp \
>>>> +     ir_variable.cpp \
>>>> +     ir_variable_refcount.cpp \
>>>> +     linker.cpp \
>>>> +     link_functions.cpp \
>>>> +     loop_analysis.cpp \
>>>> +     loop_controls.cpp \
>>>> +     loop_unroll.cpp \
>>>> +     lower_discard.cpp \
>>>> +     lower_if_to_cond_assign.cpp \
>>>> +     lower_instructions.cpp \
>>>> +     lower_jumps.cpp \
>>>> +     lower_mat_op_to_vec.cpp \
>>>> +     lower_noise.cpp \
>>>> +     lower_texture_projection.cpp \
>>>> +     lower_variable_index_to_cond_assign.cpp \
>>>> +     lower_vec_index_to_cond_assign.cpp \
>>>> +     lower_vec_index_to_swizzle.cpp \
>>>> +     lower_vector.cpp \
>>>> +     opt_algebraic.cpp \
>>>> +     opt_constant_folding.cpp \
>>>> +     opt_constant_propagation.cpp \
>>>> +     opt_constant_variable.cpp \
>>>> +     opt_copy_propagation.cpp \
>>>> +     opt_copy_propagation_elements.cpp \
>>>> +     opt_dead_code.cpp \
>>>> +     opt_dead_code_local.cpp \
>>>> +     opt_dead_functions.cpp \
>>>> +     opt_discard_simplification.cpp \
>>>> +     opt_function_inlining.cpp \
>>>> +     opt_if_simplification.cpp \
>>>> +     opt_noop_swizzle.cpp \
>>>> +     opt_redundant_jumps.cpp \
>>>> +     opt_structure_splitting.cpp \
>>>> +     opt_swizzle_swizzle.cpp \
>>>> +     opt_tree_grafting.cpp \
>>>> +     s_expression.cpp
> 
> This list needs to be factored out into sources.mk, of course, but I can do that
> after you commit.
> 
>>>> +
>>>> +include $(CLEAR_VARS)
>>>> +
>>>> +LOCAL_SRC_FILES := \
>>>> +     $(C_SOURCES) \
>>>> +     $(CXX_SOURCES) \
>>>> +     builtin_function.cpp
>>>> +
>>>> +LOCAL_C_INCLUDES := \
>>>> +     $(MESA_TOP)/src/mapi \
>>>> +     $(MESA_TOP)/src/mesa
>>>> +
>>>> +LOCAL_MODULE := libmesa_glsl
>>>> +
>>>> +include $(LOCAL_PATH)/Android.gen.mk
>>>> +include $(MESA_COMMON_MK)
>>>> +include $(BUILD_STATIC_LIBRARY)
>>>> +
>>>> +include $(CLEAR_VARS)
>>>> +
>>>> +LOCAL_SRC_FILES := \
>>>> +     $(C_SOURCES) \
>>>> +     $(CXX_SOURCES) \
>>>> +     builtin_stubs.cpp \
>>>> +     main.cpp \
>>>> +     standalone_scaffolding.cpp
>>>> +
>>>> +LOCAL_C_INCLUDES := \
>>>> +     $(MESA_TOP)/src/mapi \
>>>> +     $(MESA_TOP)/src/mesa
>>>> +
>>>> +LOCAL_STATIC_LIBRARIES := libmesa_glsl_utils
>>>> +
>>>> +LOCAL_MODULE := mesa_builtin_compiler
>>>> +
>>>> +LOCAL_MODULE_CLASS := EXECUTABLES
>>>> +LOCAL_IS_HOST_MODULE := true
>>>> +include $(LOCAL_PATH)/Android.gen.mk
>>>> +include $(MESA_COMMON_MK)
>>>> +include $(BUILD_HOST_EXECUTABLE)
>>>> +
>>>> +include $(CLEAR_VARS)
>>>> +
>>>> +LOCAL_SRC_FILES := \
>>>> +     builtin_stubs.cpp \
>>>> +     main.cpp \
>>>> +     standalone_scaffolding.cpp
> 
> builtin_stubs.cpp should be removed from LOCAL_SRC_FILES. It is incorrect to link
> both builtin_stubs.o and builtin_functions.o (via libmesa_glsl) into the same
> executable because they redefine some of the same symbols.
> 
> I'm aware that the Makefile does this also, but I discussed it with Ken and he
> confirmed that it was incorrect and that it will be fixed.
>> Will do.
>>>> +
>>>> +LOCAL_C_INCLUDES := \
>>>> +     $(MESA_TOP)/src/mapi \
>>>> +     $(MESA_TOP)/src/mesa
>>>> +
>>>> +LOCAL_STATIC_LIBRARIES := libmesa_glsl libmesa_glsl_utils
>>>> +
>>>> +LOCAL_MODULE_TAGS := eng
>>>> +LOCAL_MODULE := glsl_compiler
>>>> +
>>>> +include $(MESA_COMMON_MK)
>>>> +include $(BUILD_EXECUTABLE)
>>>> diff --git a/src/mesa/Android.mk b/src/mesa/Android.mk
>>>> index c1be3d3..6ec4bfb 100644
>>>> --- a/src/mesa/Android.mk
>>>> +++ b/src/mesa/Android.mk
>>>> @@ -74,3 +74,28 @@ include $(LOCAL_PATH)/Android.gen.mk
>>>>  include $(MESA_COMMON_MK)
>>>>  include $(BUILD_STATIC_LIBRARY)
>>>>  endif # MESA_BUILD_GALLIUM
>>>> +
>>>> +# buld libmesa_glsl_utils to avoid circular dependency between mesa core and
>>>> +# glsl
>>>> +include $(CLEAR_VARS)
>>>> +
>>>> +LOCAL_SRC_FILES := \
>>>> +     program/hash_table.c \
>>>> +     program/symbol_table.c
>>>> +
>>>> +LOCAL_MODULE := libmesa_glsl_utils
>>>> +
>>>> +include $(MESA_COMMON_MK)
>>>> +include $(BUILD_STATIC_LIBRARY)
>>>> +
>>>> +# need the host library to generate sources
>>>> +include $(CLEAR_VARS)
>>>> +
>>>> +LOCAL_SRC_FILES := \
>>>> +     program/hash_table.c \
>>>> +     program/symbol_table.c
>>>> +
>>>> +LOCAL_MODULE := libmesa_glsl_utils
>>>> +
>>>> +include $(MESA_COMMON_MK)
>>>> +include $(BUILD_HOST_STATIC_LIBRARY)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQIcBAEBAgAGBQJOTR6ZAAoJEAIvNt057x8iluQQALQUr/ID28yvOj/wLVT3cL6B
FMf4B800d9qOpZNHemZ37yCjGbq0ijA3ls9v7x21P0pH8ULd8MEk5dcgJYRzLzmJ
SVVFLyzsYZnu8kzQRAkoZNBaR7DOeoNMP1/ATJ6xs3CcX8/tNbwbIQWw+ujQb58u
5Exn9TnjxjA2UNtvDLh3UcQN//w5ORrPk2E2jM+RW4c7/G7zddZkuGQpwfw3WpHU
4ipsFbL9G60kDqU6pVXZ4c+sJ1xc9nG8GEtesYmP1RFMapa+pEFWo/YQRhODufcx
d4vbtOG3aEmO/HXWZ/9mj2GrHTsSqUsfSQYM3ARPz5+2bbO3VdUFOH8zbgC7gIow
4TZXo+xPHjiDwGBAhRMQ1nPx1svkTapHZs3BbuA6E3sO2QUTKrcBm8Xgb5fGWaS/
0W5pypFjCbz570J+IrYGpqiJ4EsPMVSOHNoldbmWBVJRkGwRk6w5MI/4HmQVgVjv
V11eliFXK8ESU7yqkhFVA+U+2FFzsXHRQi0ltWclEw1qfjzRO+HpucrTjFHGPJkk
5z2CS6uyelqwkBGvHA8bIZNCYd5FaqWZPv7zwIB5AIAP30Ty99yH9+DNC44YALRG
yvvj6HUVAC3OkEtT4RVt4cM5qWQJpcySd+ZQiMy4XCTCRK6rBgPxnn/0fIAOHUJP
h/OVw48z/rktEeTCdOu7
=ohhu
-----END PGP SIGNATURE-----


More information about the mesa-dev mailing list