meson.build revision 01e04c3f
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
2101e04c3fSmrgnir_depends = files('nir_opcodes.py', 'nir_intrinsics.py')
2201e04c3fSmrg
2301e04c3fSmrgnir_builder_opcodes_h = custom_target(
2401e04c3fSmrg  'nir_builder_opcodes.h',
2501e04c3fSmrg  input : 'nir_builder_opcodes_h.py',
2601e04c3fSmrg  output : 'nir_builder_opcodes.h',
2701e04c3fSmrg  command : [prog_python, '@INPUT@'],
2801e04c3fSmrg  capture : true,
2901e04c3fSmrg  depend_files : nir_depends,
3001e04c3fSmrg)
3101e04c3fSmrg
3201e04c3fSmrgnir_constant_expressions_c = custom_target(
3301e04c3fSmrg  'nir_constant_expressions.c',
3401e04c3fSmrg  input : 'nir_constant_expressions.py',
3501e04c3fSmrg  output : 'nir_constant_expressions.c',
3601e04c3fSmrg  command : [prog_python, '@INPUT@'],
3701e04c3fSmrg  capture : true,
3801e04c3fSmrg  depend_files : nir_depends,
3901e04c3fSmrg)
4001e04c3fSmrg
4101e04c3fSmrgnir_opcodes_h = custom_target(
4201e04c3fSmrg  'nir_opcodes.h',
4301e04c3fSmrg  input : 'nir_opcodes_h.py',
4401e04c3fSmrg  output : 'nir_opcodes.h',
4501e04c3fSmrg  command : [prog_python, '@INPUT@'],
4601e04c3fSmrg  capture : true,
4701e04c3fSmrg  depend_files : nir_depends,
4801e04c3fSmrg)
4901e04c3fSmrg
5001e04c3fSmrgnir_opcodes_c = custom_target(
5101e04c3fSmrg  'nir_opcodes.c',
5201e04c3fSmrg  input : 'nir_opcodes_c.py',
5301e04c3fSmrg  output : 'nir_opcodes.c',
5401e04c3fSmrg  command : [prog_python, '@INPUT@'],
5501e04c3fSmrg  capture : true,
5601e04c3fSmrg  depend_files : nir_depends,
5701e04c3fSmrg)
5801e04c3fSmrg
5901e04c3fSmrgnir_opt_algebraic_c = custom_target(
6001e04c3fSmrg  'nir_opt_algebraic.c',
6101e04c3fSmrg  input : 'nir_opt_algebraic.py',
6201e04c3fSmrg  output : 'nir_opt_algebraic.c',
6301e04c3fSmrg  command : [prog_python, '@INPUT@'],
6401e04c3fSmrg  capture : true,
6501e04c3fSmrg  depend_files : files('nir_algebraic.py'),
6601e04c3fSmrg)
6701e04c3fSmrg
6801e04c3fSmrgnir_intrinsics_h = custom_target(
6901e04c3fSmrg  'nir_intrinsics.h',
7001e04c3fSmrg  input : 'nir_intrinsics_h.py',
7101e04c3fSmrg  output : 'nir_intrinsics.h',
7201e04c3fSmrg  command : [prog_python, '@INPUT@', '--outdir', meson.current_build_dir()],
7301e04c3fSmrg  capture : false,
7401e04c3fSmrg  depend_files : files('nir_intrinsics.py'),
7501e04c3fSmrg)
7601e04c3fSmrg
7701e04c3fSmrgnir_intrinsics_c = custom_target(
7801e04c3fSmrg  'nir_intrinsic.c',
7901e04c3fSmrg  input : 'nir_intrinsics_c.py',
8001e04c3fSmrg  output : 'nir_intrinsics.c',
8101e04c3fSmrg  command : [prog_python, '@INPUT@', '--outdir', meson.current_build_dir()],
8201e04c3fSmrg  capture: false,
8301e04c3fSmrg  depend_files : files('nir_intrinsics.py'),
8401e04c3fSmrg)
8501e04c3fSmrg
8601e04c3fSmrgfiles_libnir = files(
8701e04c3fSmrg  'nir.c',
8801e04c3fSmrg  'nir.h',
8901e04c3fSmrg  'nir_builder.h',
9001e04c3fSmrg  'nir_builtin_builder.c',
9101e04c3fSmrg  'nir_builtin_builder.h',
9201e04c3fSmrg  'nir_clone.c',
9301e04c3fSmrg  'nir_constant_expressions.h',
9401e04c3fSmrg  'nir_control_flow.c',
9501e04c3fSmrg  'nir_control_flow.h',
9601e04c3fSmrg  'nir_control_flow_private.h',
9701e04c3fSmrg  'nir_deref.c',
9801e04c3fSmrg  'nir_deref.h',
9901e04c3fSmrg  'nir_dominance.c',
10001e04c3fSmrg  'nir_format_convert.h',
10101e04c3fSmrg  'nir_from_ssa.c',
10201e04c3fSmrg  'nir_gather_info.c',
10301e04c3fSmrg  'nir_gather_xfb_info.c',
10401e04c3fSmrg  'nir_gs_count_vertices.c',
10501e04c3fSmrg  'nir_inline_functions.c',
10601e04c3fSmrg  'nir_instr_set.c',
10701e04c3fSmrg  'nir_instr_set.h',
10801e04c3fSmrg  'nir_linking_helpers.c',
10901e04c3fSmrg  'nir_liveness.c',
11001e04c3fSmrg  'nir_loop_analyze.c',
11101e04c3fSmrg  'nir_loop_analyze.h',
11201e04c3fSmrg  'nir_lower_alu.c',
11301e04c3fSmrg  'nir_lower_alu_to_scalar.c',
11401e04c3fSmrg  'nir_lower_alpha_test.c',
11501e04c3fSmrg  'nir_lower_atomics_to_ssbo.c',
11601e04c3fSmrg  'nir_lower_bitmap.c',
11701e04c3fSmrg  'nir_lower_clamp_color_outputs.c',
11801e04c3fSmrg  'nir_lower_clip.c',
11901e04c3fSmrg  'nir_lower_clip_cull_distance_arrays.c',
12001e04c3fSmrg  'nir_lower_constant_initializers.c',
12101e04c3fSmrg  'nir_lower_double_ops.c',
12201e04c3fSmrg  'nir_lower_drawpixels.c',
12301e04c3fSmrg  'nir_lower_global_vars_to_local.c',
12401e04c3fSmrg  'nir_lower_gs_intrinsics.c',
12501e04c3fSmrg  'nir_lower_load_const_to_scalar.c',
12601e04c3fSmrg  'nir_lower_locals_to_regs.c',
12701e04c3fSmrg  'nir_lower_idiv.c',
12801e04c3fSmrg  'nir_lower_indirect_derefs.c',
12901e04c3fSmrg  'nir_lower_int64.c',
13001e04c3fSmrg  'nir_lower_io.c',
13101e04c3fSmrg  'nir_lower_io_arrays_to_elements.c',
13201e04c3fSmrg  'nir_lower_io_to_temporaries.c',
13301e04c3fSmrg  'nir_lower_io_to_scalar.c',
13401e04c3fSmrg  'nir_lower_packing.c',
13501e04c3fSmrg  'nir_lower_passthrough_edgeflags.c',
13601e04c3fSmrg  'nir_lower_patch_vertices.c',
13701e04c3fSmrg  'nir_lower_phis_to_scalar.c',
13801e04c3fSmrg  'nir_lower_regs_to_ssa.c',
13901e04c3fSmrg  'nir_lower_returns.c',
14001e04c3fSmrg  'nir_lower_subgroups.c',
14101e04c3fSmrg  'nir_lower_system_values.c',
14201e04c3fSmrg  'nir_lower_tex.c',
14301e04c3fSmrg  'nir_lower_to_source_mods.c',
14401e04c3fSmrg  'nir_lower_two_sided_color.c',
14501e04c3fSmrg  'nir_lower_vars_to_ssa.c',
14601e04c3fSmrg  'nir_lower_var_copies.c',
14701e04c3fSmrg  'nir_lower_vec_to_movs.c',
14801e04c3fSmrg  'nir_lower_wpos_center.c',
14901e04c3fSmrg  'nir_lower_wpos_ytransform.c',
15001e04c3fSmrg  'nir_lower_bit_size.c',
15101e04c3fSmrg  'nir_metadata.c',
15201e04c3fSmrg  'nir_move_load_const.c',
15301e04c3fSmrg  'nir_move_vec_src_uses_to_dest.c',
15401e04c3fSmrg  'nir_normalize_cubemap_coords.c',
15501e04c3fSmrg  'nir_opt_conditional_discard.c',
15601e04c3fSmrg  'nir_opt_constant_folding.c',
15701e04c3fSmrg  'nir_opt_copy_prop_vars.c',
15801e04c3fSmrg  'nir_opt_copy_propagate.c',
15901e04c3fSmrg  'nir_opt_cse.c',
16001e04c3fSmrg  'nir_opt_dce.c',
16101e04c3fSmrg  'nir_opt_dead_cf.c',
16201e04c3fSmrg  'nir_opt_dead_write_vars.c',
16301e04c3fSmrg  'nir_opt_find_array_copies.c',
16401e04c3fSmrg  'nir_opt_gcm.c',
16501e04c3fSmrg  'nir_opt_global_to_local.c',
16601e04c3fSmrg  'nir_opt_if.c',
16701e04c3fSmrg  'nir_opt_intrinsics.c',
16801e04c3fSmrg  'nir_opt_large_constants.c',
16901e04c3fSmrg  'nir_opt_loop_unroll.c',
17001e04c3fSmrg  'nir_opt_move_comparisons.c',
17101e04c3fSmrg  'nir_opt_move_load_ubo.c',
17201e04c3fSmrg  'nir_opt_peephole_select.c',
17301e04c3fSmrg  'nir_opt_remove_phis.c',
17401e04c3fSmrg  'nir_opt_shrink_load.c',
17501e04c3fSmrg  'nir_opt_trivial_continues.c',
17601e04c3fSmrg  'nir_opt_undef.c',
17701e04c3fSmrg  'nir_phi_builder.c',
17801e04c3fSmrg  'nir_phi_builder.h',
17901e04c3fSmrg  'nir_print.c',
18001e04c3fSmrg  'nir_propagate_invariant.c',
18101e04c3fSmrg  'nir_remove_dead_variables.c',
18201e04c3fSmrg  'nir_repair_ssa.c',
18301e04c3fSmrg  'nir_search.c',
18401e04c3fSmrg  'nir_search.h',
18501e04c3fSmrg  'nir_search_helpers.h',
18601e04c3fSmrg  'nir_serialize.c',
18701e04c3fSmrg  'nir_serialize.h',
18801e04c3fSmrg  'nir_split_per_member_structs.c',
18901e04c3fSmrg  'nir_split_var_copies.c',
19001e04c3fSmrg  'nir_split_vars.c',
19101e04c3fSmrg  'nir_sweep.c',
19201e04c3fSmrg  'nir_to_lcssa.c',
19301e04c3fSmrg  'nir_validate.c',
19401e04c3fSmrg  'nir_vla.h',
19501e04c3fSmrg  'nir_worklist.c',
19601e04c3fSmrg  'nir_worklist.h',
19701e04c3fSmrg  'nir_xfb_info.h',
19801e04c3fSmrg  '../spirv/GLSL.ext.AMD.h',
19901e04c3fSmrg  '../spirv/GLSL.std.450.h',
20001e04c3fSmrg  '../spirv/gl_spirv.c',
20101e04c3fSmrg  '../spirv/nir_spirv.h',
20201e04c3fSmrg  '../spirv/spirv.h',
20301e04c3fSmrg  '../spirv/spirv_info.h',
20401e04c3fSmrg  '../spirv/spirv_to_nir.c',
20501e04c3fSmrg  '../spirv/vtn_alu.c',
20601e04c3fSmrg  '../spirv/vtn_amd.c',
20701e04c3fSmrg  '../spirv/vtn_cfg.c',
20801e04c3fSmrg  '../spirv/vtn_glsl450.c',
20901e04c3fSmrg  '../spirv/vtn_private.h',
21001e04c3fSmrg  '../spirv/vtn_subgroup.c',
21101e04c3fSmrg  '../spirv/vtn_variables.c',
21201e04c3fSmrg)
21301e04c3fSmrg
21401e04c3fSmrglibnir = static_library(
21501e04c3fSmrg  'nir',
21601e04c3fSmrg  [files_libnir, spirv_info_c, nir_opt_algebraic_c, nir_opcodes_c,
21701e04c3fSmrg   nir_opcodes_h, nir_constant_expressions_c, nir_builder_opcodes_h,
21801e04c3fSmrg   vtn_gather_types_c, nir_intrinsics_c, nir_intrinsics_h],
21901e04c3fSmrg  include_directories : [inc_common, inc_compiler, include_directories('../spirv')],
22001e04c3fSmrg  c_args : [c_vis_args, c_msvc_compat_args, no_override_init_args],
22101e04c3fSmrg  link_with : libcompiler,
22201e04c3fSmrg  build_by_default : false,
22301e04c3fSmrg)
22401e04c3fSmrg
22501e04c3fSmrg# Headers-only dependency
22601e04c3fSmrgidep_nir_headers = declare_dependency(
22701e04c3fSmrg  sources : [nir_opcodes_h, nir_builder_opcodes_h, nir_intrinsics_h],
22801e04c3fSmrg  include_directories : include_directories('.'),
22901e04c3fSmrg)
23001e04c3fSmrg
23101e04c3fSmrg# Also link with nir
23201e04c3fSmrgidep_nir = declare_dependency(
23301e04c3fSmrg  dependencies : idep_nir_headers,
23401e04c3fSmrg  link_with : libnir,
23501e04c3fSmrg)
23601e04c3fSmrg
23701e04c3fSmrgnir_algebraic_py = files('nir_algebraic.py')
23801e04c3fSmrg
23901e04c3fSmrgif with_tests
24001e04c3fSmrg  test(
24101e04c3fSmrg    'nir_control_flow',
24201e04c3fSmrg    executable(
24301e04c3fSmrg      'nir_control_flow_test',
24401e04c3fSmrg      files('tests/control_flow_tests.cpp'),
24501e04c3fSmrg      cpp_args : [cpp_vis_args, cpp_msvc_compat_args],
24601e04c3fSmrg      include_directories : [inc_common],
24701e04c3fSmrg      dependencies : [dep_thread, idep_gtest, idep_nir],
24801e04c3fSmrg      link_with : libmesa_util,
24901e04c3fSmrg    )
25001e04c3fSmrg  )
25101e04c3fSmrg  test(
25201e04c3fSmrg    'nir_vars',
25301e04c3fSmrg    executable(
25401e04c3fSmrg      'nir_vars_test',
25501e04c3fSmrg      files('tests/vars_tests.cpp'),
25601e04c3fSmrg      cpp_args : [cpp_vis_args, cpp_msvc_compat_args],
25701e04c3fSmrg      include_directories : [inc_common],
25801e04c3fSmrg      dependencies : [dep_thread, idep_gtest, idep_nir],
25901e04c3fSmrg      link_with : libmesa_util,
26001e04c3fSmrg    )
26101e04c3fSmrg  )
26201e04c3fSmrgendif
263