-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 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. > +# > +# 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) > + > +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. > + > +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/ iQIcBAEBAgAGBQJOTB9NAAoJEAIvNt057x8isWUP/1vhoylDLOV6jeaQ4BK6O4qk jVO6wqhJEqQFezVlOgwntdY7zRGWd44hazh7eAAjnHQc+BHa05qQ4VHNBxSMTbvj 7C2UXmytwOc99bTbBkRLUiAapKh8dC36r5lZ2rKMKTJv/qFcx67WwPzlDRQI4776 IyK9stUPNd5kuVvBekI5bzgj8svqNpNOEXw21qXkL2cYOY++s3KbCcFMLqX/pYal xEnKZYpDHKmS894Pu8U42Mlj4RS4cpD+nt80+olvOI5Aj9RwoCQS3I+4Y0nVgXk+ 6xV06pclHU6iPMaIpPkVebWJfLZMnc2xq7cJAywVft4wNUJ3CAv10d20rnxs+BTg GncUR98SuMVOYw8sQNd+6pBtD5SpWls9Q6xphrwGDwDs7ja5ut6EdjMbM+bVt8BG tHKiP9TMULlE8KU4ShQOdY51/FaCOMczWUBxM2BV9kGxbbXJ+gyzf1sOBIU2uRc5 cd8SsczlRdU+CNSh0TxyVzU2Aj/VZtz9vTuDSLFY4WOmE6t8Gye7wb+QmHGM2DiE Et+/9aVlzdBbVlBVSzX+DIJbcQlqi6AytH3bk3qzdTvy1uVCOKNUyHpm0IU8IWKO ifhjv3rQDom8e+rp6wGmRZyLw1kcyRpwkVPND+x7Pezj8iMMYifjftU4UyNmcs0h ij+OM7z9JeV/NtpAGX/w =9x7x -----END PGP SIGNATURE----- _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev