-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Great. Then the glsl makefile is Reviewed-by: Chad Versace <c...@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 <c...@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 <olva...@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----- _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev