101e04c3fSmrg# Copyright © 2017 Intel Corporation 201e04c3fSmrg 301e04c3fSmrg# Permission is hereby granted, free of charge, to any person obtaining a copy 401e04c3fSmrg# of this software and associated documentation files (the "Software"), to deal 501e04c3fSmrg# in the Software without restriction, including without limitation the rights 601e04c3fSmrg# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 701e04c3fSmrg# copies of the Software, and to permit persons to whom the Software is 801e04c3fSmrg# furnished to do so, subject to the following conditions: 901e04c3fSmrg 1001e04c3fSmrg# The above copyright notice and this permission notice shall be included in 1101e04c3fSmrg# all copies or substantial portions of the Software. 1201e04c3fSmrg 1301e04c3fSmrg# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1401e04c3fSmrg# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1501e04c3fSmrg# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1601e04c3fSmrg# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1701e04c3fSmrg# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 1801e04c3fSmrg# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 1901e04c3fSmrg# SOFTWARE. 2001e04c3fSmrg 2101e04c3fSmrgsubdir('glcpp') 2201e04c3fSmrg 237ec681f3Smrgbison_command = [] 247ec681f3Smrgif yacc_is_bison 257ec681f3Smrg bison_command = [ 267ec681f3Smrg prog_bison, '-o', '@OUTPUT0@', '-p', '_mesa_glsl_', '--defines=@OUTPUT1@', 277ec681f3Smrg '@INPUT@', 287ec681f3Smrg ] 297ec681f3Smrgelse 307ec681f3Smrg bison_command = [ 317ec681f3Smrg prog_bison, '-o', '@OUTPUT0@', '-p', '_mesa_glsl_', '-H', '@OUTPUT1@', 327ec681f3Smrg '@INPUT@', 337ec681f3Smrg ] 347ec681f3Smrgendif 357ec681f3Smrg 3601e04c3fSmrgglsl_parser = custom_target( 3701e04c3fSmrg 'glsl_parser', 3801e04c3fSmrg input : 'glsl_parser.yy', 3901e04c3fSmrg output : ['glsl_parser.cpp', 'glsl_parser.h'], 407ec681f3Smrg command : bison_command 4101e04c3fSmrg) 4201e04c3fSmrg 4301e04c3fSmrgglsl_lexer_cpp = custom_target( 4401e04c3fSmrg 'glsl_lexer_cpp', 4501e04c3fSmrg input : 'glsl_lexer.ll', 4601e04c3fSmrg output : 'glsl_lexer.cpp', 477ec681f3Smrg command : [prog_flex_cpp, '-o', '@OUTPUT@', '@INPUT@'], 4801e04c3fSmrg) 4901e04c3fSmrg 5001e04c3fSmrgir_expression_operation_constant_h = custom_target( 5101e04c3fSmrg 'ir_expression_operation_constant.h', 5201e04c3fSmrg input : 'ir_expression_operation.py', 5301e04c3fSmrg output : 'ir_expression_operation_constant.h', 5401e04c3fSmrg command : [prog_python, '@INPUT@', 'constant'], 5501e04c3fSmrg capture : true, 5601e04c3fSmrg) 5701e04c3fSmrg 5801e04c3fSmrgir_expression_operation_strings_h = custom_target( 5901e04c3fSmrg 'ir_expression_operation_strings.h', 6001e04c3fSmrg input : 'ir_expression_operation.py', 6101e04c3fSmrg output : 'ir_expression_operation_strings.h', 6201e04c3fSmrg command : [prog_python, '@INPUT@', 'strings'], 6301e04c3fSmrg capture : true, 6401e04c3fSmrg) 6501e04c3fSmrg 667e102996Smayafloat64_glsl_h = custom_target( 677e102996Smaya 'float64_glsl.h', 687ec681f3Smrg input : [files_xxd, 'float64.glsl'], 697e102996Smaya output : 'float64_glsl.h', 707e102996Smaya command : [prog_python, '@INPUT@', '@OUTPUT@', '-n', 'float64_source'], 717e102996Smaya) 727e102996Smaya 7301e04c3fSmrgfiles_libglsl = files( 7401e04c3fSmrg 'ast.h', 7501e04c3fSmrg 'ast_array_index.cpp', 7601e04c3fSmrg 'ast_expr.cpp', 7701e04c3fSmrg 'ast_function.cpp', 7801e04c3fSmrg 'ast_to_hir.cpp', 7901e04c3fSmrg 'ast_type.cpp', 8001e04c3fSmrg 'builtin_functions.cpp', 8101e04c3fSmrg 'builtin_functions.h', 8201e04c3fSmrg 'builtin_int64.h', 8301e04c3fSmrg 'builtin_types.cpp', 8401e04c3fSmrg 'builtin_variables.cpp', 8501e04c3fSmrg 'generate_ir.cpp', 8601e04c3fSmrg 'gl_nir_lower_atomics.c', 877ec681f3Smrg 'gl_nir_lower_images.c', 887e102996Smaya 'gl_nir_lower_buffers.c', 8901e04c3fSmrg 'gl_nir_lower_samplers.c', 9001e04c3fSmrg 'gl_nir_lower_samplers_as_deref.c', 9101e04c3fSmrg 'gl_nir_link_atomics.c', 927ec681f3Smrg 'gl_nir_link_uniform_blocks.c', 9301e04c3fSmrg 'gl_nir_link_uniform_initializers.c', 9401e04c3fSmrg 'gl_nir_link_uniforms.c', 9501e04c3fSmrg 'gl_nir_link_xfb.c', 9601e04c3fSmrg 'gl_nir_linker.c', 9701e04c3fSmrg 'gl_nir_linker.h', 9801e04c3fSmrg 'gl_nir.h', 9901e04c3fSmrg 'glsl_parser_extras.cpp', 10001e04c3fSmrg 'glsl_parser_extras.h', 10101e04c3fSmrg 'glsl_symbol_table.cpp', 10201e04c3fSmrg 'glsl_symbol_table.h', 10301e04c3fSmrg 'glsl_to_nir.cpp', 10401e04c3fSmrg 'glsl_to_nir.h', 10501e04c3fSmrg 'hir_field_selection.cpp', 10601e04c3fSmrg 'ir_array_refcount.cpp', 10701e04c3fSmrg 'ir_array_refcount.h', 10801e04c3fSmrg 'ir_basic_block.cpp', 10901e04c3fSmrg 'ir_basic_block.h', 11001e04c3fSmrg 'ir_builder.cpp', 11101e04c3fSmrg 'ir_builder.h', 11201e04c3fSmrg 'ir_clone.cpp', 11301e04c3fSmrg 'ir_constant_expression.cpp', 11401e04c3fSmrg 'ir.cpp', 11501e04c3fSmrg 'ir.h', 11601e04c3fSmrg 'ir_equals.cpp', 11701e04c3fSmrg 'ir_expression_flattening.cpp', 11801e04c3fSmrg 'ir_expression_flattening.h', 11901e04c3fSmrg 'ir_function_can_inline.cpp', 12001e04c3fSmrg 'ir_function_detect_recursion.cpp', 12101e04c3fSmrg 'ir_function_inlining.h', 12201e04c3fSmrg 'ir_function.cpp', 12301e04c3fSmrg 'ir_hierarchical_visitor.cpp', 12401e04c3fSmrg 'ir_hierarchical_visitor.h', 12501e04c3fSmrg 'ir_hv_accept.cpp', 12601e04c3fSmrg 'ir_optimization.h', 12701e04c3fSmrg 'ir_print_visitor.cpp', 12801e04c3fSmrg 'ir_print_visitor.h', 12901e04c3fSmrg 'ir_reader.cpp', 13001e04c3fSmrg 'ir_reader.h', 13101e04c3fSmrg 'ir_rvalue_visitor.cpp', 13201e04c3fSmrg 'ir_rvalue_visitor.h', 13301e04c3fSmrg 'ir_set_program_inouts.cpp', 13401e04c3fSmrg 'ir_uniform.h', 13501e04c3fSmrg 'ir_validate.cpp', 13601e04c3fSmrg 'ir_variable_refcount.cpp', 13701e04c3fSmrg 'ir_variable_refcount.h', 13801e04c3fSmrg 'ir_visitor.h', 13901e04c3fSmrg 'linker.cpp', 14001e04c3fSmrg 'linker.h', 14101e04c3fSmrg 'linker_util.h', 14201e04c3fSmrg 'linker_util.cpp', 14301e04c3fSmrg 'link_atomics.cpp', 14401e04c3fSmrg 'link_functions.cpp', 14501e04c3fSmrg 'link_interface_blocks.cpp', 14601e04c3fSmrg 'link_uniforms.cpp', 14701e04c3fSmrg 'link_uniform_initializers.cpp', 14801e04c3fSmrg 'link_uniform_block_active_visitor.cpp', 14901e04c3fSmrg 'link_uniform_block_active_visitor.h', 15001e04c3fSmrg 'link_uniform_blocks.cpp', 15101e04c3fSmrg 'link_varyings.cpp', 15201e04c3fSmrg 'link_varyings.h', 15301e04c3fSmrg 'list.h', 15401e04c3fSmrg 'loop_analysis.cpp', 15501e04c3fSmrg 'loop_analysis.h', 15601e04c3fSmrg 'loop_unroll.cpp', 15701e04c3fSmrg 'lower_blend_equation_advanced.cpp', 15801e04c3fSmrg 'lower_buffer_access.cpp', 15901e04c3fSmrg 'lower_buffer_access.h', 1607ec681f3Smrg 'lower_builtins.cpp', 16101e04c3fSmrg 'lower_const_arrays_to_uniforms.cpp', 16201e04c3fSmrg 'lower_cs_derived.cpp', 16301e04c3fSmrg 'lower_discard.cpp', 16401e04c3fSmrg 'lower_discard_flow.cpp', 16501e04c3fSmrg 'lower_distance.cpp', 16601e04c3fSmrg 'lower_if_to_cond_assign.cpp', 16701e04c3fSmrg 'lower_instructions.cpp', 16801e04c3fSmrg 'lower_int64.cpp', 16901e04c3fSmrg 'lower_jumps.cpp', 17001e04c3fSmrg 'lower_mat_op_to_vec.cpp', 17101e04c3fSmrg 'lower_offset_array.cpp', 17201e04c3fSmrg 'lower_packed_varyings.cpp', 17301e04c3fSmrg 'lower_named_interface_blocks.cpp', 17401e04c3fSmrg 'lower_packing_builtins.cpp', 1757ec681f3Smrg 'lower_precision.cpp', 17601e04c3fSmrg 'lower_subroutine.cpp', 17701e04c3fSmrg 'lower_tess_level.cpp', 17801e04c3fSmrg 'lower_variable_index_to_cond_assign.cpp', 17901e04c3fSmrg 'lower_vec_index_to_cond_assign.cpp', 18001e04c3fSmrg 'lower_vec_index_to_swizzle.cpp', 18101e04c3fSmrg 'lower_vector.cpp', 18201e04c3fSmrg 'lower_vector_derefs.cpp', 18301e04c3fSmrg 'lower_vector_insert.cpp', 18401e04c3fSmrg 'lower_vertex_id.cpp', 18501e04c3fSmrg 'lower_output_reads.cpp', 18601e04c3fSmrg 'lower_shared_reference.cpp', 18701e04c3fSmrg 'lower_ubo_reference.cpp', 1887ec681f3Smrg 'lower_xfb_varying.cpp', 18901e04c3fSmrg 'opt_algebraic.cpp', 19001e04c3fSmrg 'opt_array_splitting.cpp', 19101e04c3fSmrg 'opt_conditional_discard.cpp', 19201e04c3fSmrg 'opt_constant_folding.cpp', 19301e04c3fSmrg 'opt_constant_propagation.cpp', 19401e04c3fSmrg 'opt_constant_variable.cpp', 19501e04c3fSmrg 'opt_copy_propagation_elements.cpp', 19601e04c3fSmrg 'opt_dead_builtin_variables.cpp', 19701e04c3fSmrg 'opt_dead_builtin_varyings.cpp', 19801e04c3fSmrg 'opt_dead_code.cpp', 19901e04c3fSmrg 'opt_dead_code_local.cpp', 20001e04c3fSmrg 'opt_dead_functions.cpp', 20101e04c3fSmrg 'opt_flatten_nested_if_blocks.cpp', 20201e04c3fSmrg 'opt_flip_matrices.cpp', 20301e04c3fSmrg 'opt_function_inlining.cpp', 20401e04c3fSmrg 'opt_if_simplification.cpp', 20501e04c3fSmrg 'opt_minmax.cpp', 20601e04c3fSmrg 'opt_rebalance_tree.cpp', 20701e04c3fSmrg 'opt_redundant_jumps.cpp', 20801e04c3fSmrg 'opt_structure_splitting.cpp', 20901e04c3fSmrg 'opt_swizzle.cpp', 21001e04c3fSmrg 'opt_tree_grafting.cpp', 21101e04c3fSmrg 'opt_vectorize.cpp', 21201e04c3fSmrg 'program.h', 21301e04c3fSmrg 'propagate_invariance.cpp', 21401e04c3fSmrg 's_expression.cpp', 21501e04c3fSmrg 's_expression.h', 21601e04c3fSmrg 'string_to_uint_map.cpp', 21701e04c3fSmrg 'string_to_uint_map.h', 21801e04c3fSmrg 'serialize.cpp', 21901e04c3fSmrg 'serialize.h', 22001e04c3fSmrg 'shader_cache.cpp', 22101e04c3fSmrg 'shader_cache.h', 22201e04c3fSmrg) 22301e04c3fSmrg 22401e04c3fSmrgfiles_libglsl_standalone = files( 22501e04c3fSmrg 'ir_builder_print_visitor.cpp', 22601e04c3fSmrg 'ir_builder_print_visitor.h', 22701e04c3fSmrg 'opt_add_neg_to_sub.h', 22801e04c3fSmrg 'standalone_scaffolding.cpp', 22901e04c3fSmrg 'standalone_scaffolding.h', 23001e04c3fSmrg 'standalone.cpp', 23101e04c3fSmrg 'standalone.h', 23201e04c3fSmrg) 23301e04c3fSmrg 23401e04c3fSmrglibglsl = static_library( 23501e04c3fSmrg 'glsl', 23601e04c3fSmrg [files_libglsl, glsl_parser, glsl_lexer_cpp, ir_expression_operation_h, 2377e102996Smaya ir_expression_operation_strings_h, ir_expression_operation_constant_h, 2387e102996Smaya float64_glsl_h], 2397ec681f3Smrg c_args : [c_msvc_compat_args, no_override_init_args], 2407ec681f3Smrg cpp_args : [cpp_msvc_compat_args], 2417ec681f3Smrg gnu_symbol_visibility : 'hidden', 24201e04c3fSmrg link_with : libglcpp, 2437ec681f3Smrg include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux, inc_compiler], 24401e04c3fSmrg dependencies : idep_nir, 24501e04c3fSmrg build_by_default : false, 24601e04c3fSmrg) 24701e04c3fSmrg 24801e04c3fSmrglibglsl_standalone = static_library( 24901e04c3fSmrg 'glsl_standalone', 25001e04c3fSmrg [files_libglsl_standalone, ir_expression_operation_h], 2517ec681f3Smrg c_args : [c_msvc_compat_args, no_override_init_args], 2527ec681f3Smrg cpp_args : [cpp_msvc_compat_args], 2537ec681f3Smrg gnu_symbol_visibility : 'hidden', 2547ec681f3Smrg include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux], 2557ec681f3Smrg link_with : [libglsl, libglsl_util, libglcpp_standalone], 2567ec681f3Smrg dependencies : [idep_mesautil, idep_getopt], 25701e04c3fSmrg build_by_default : false, 25801e04c3fSmrg) 25901e04c3fSmrg 26001e04c3fSmrgglsl_compiler = executable( 26101e04c3fSmrg 'glsl_compiler', 26201e04c3fSmrg 'main.cpp', 2637ec681f3Smrg c_args : [c_msvc_compat_args, no_override_init_args], 2647ec681f3Smrg cpp_args : [cpp_msvc_compat_args], 2657ec681f3Smrg gnu_symbol_visibility : 'hidden', 2667ec681f3Smrg dependencies : [dep_clock, dep_thread, idep_getopt, idep_mesautil], 2677ec681f3Smrg include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux], 26801e04c3fSmrg link_with : [libglsl_standalone], 26901e04c3fSmrg build_by_default : with_tools.contains('glsl'), 27001e04c3fSmrg install : with_tools.contains('glsl'), 27101e04c3fSmrg) 27201e04c3fSmrg 27301e04c3fSmrgglsl_test = executable( 27401e04c3fSmrg 'glsl_test', 27501e04c3fSmrg ['test.cpp', 'test_optpass.cpp', 'test_optpass.h', 27601e04c3fSmrg ir_expression_operation_h], 2777ec681f3Smrg c_args : [c_msvc_compat_args, no_override_init_args], 2787ec681f3Smrg cpp_args : [cpp_msvc_compat_args], 2797ec681f3Smrg gnu_symbol_visibility : 'hidden', 2807ec681f3Smrg include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux], 2817ec681f3Smrg dependencies : [dep_clock, dep_thread, idep_getopt, idep_mesautil], 28201e04c3fSmrg link_with : [libglsl, libglsl_standalone, libglsl_util], 28301e04c3fSmrg build_by_default : with_tools.contains('glsl'), 28401e04c3fSmrg install : with_tools.contains('glsl'), 28501e04c3fSmrg) 28601e04c3fSmrg 28701e04c3fSmrgif with_any_opengl and with_tests 28801e04c3fSmrg subdir('tests') 28901e04c3fSmrgendif 290