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