Path: blob/21.2-virgl/src/compiler/nir/meson.build
4546 views
# Copyright © 2017 Intel Corporation12# Permission is hereby granted, free of charge, to any person obtaining a copy3# of this software and associated documentation files (the "Software"), to deal4# in the Software without restriction, including without limitation the rights5# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell6# copies of the Software, and to permit persons to whom the Software is7# furnished to do so, subject to the following conditions:89# The above copyright notice and this permission notice shall be included in10# all copies or substantial portions of the Software.1112# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR13# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,14# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE15# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER16# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,17# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE18# SOFTWARE.1920nir_depends = files('nir_opcodes.py', 'nir_intrinsics.py')2122nir_builder_opcodes_h = custom_target(23'nir_builder_opcodes.h',24input : 'nir_builder_opcodes_h.py',25output : 'nir_builder_opcodes.h',26command : [prog_python, '@INPUT@'],27capture : true,28depend_files : nir_depends,29)3031nir_constant_expressions_c = custom_target(32'nir_constant_expressions.c',33input : 'nir_constant_expressions.py',34output : 'nir_constant_expressions.c',35command : [prog_python, '@INPUT@'],36capture : true,37depend_files : nir_depends,38)3940nir_opcodes_h = custom_target(41'nir_opcodes.h',42input : 'nir_opcodes_h.py',43output : 'nir_opcodes.h',44command : [prog_python, '@INPUT@'],45capture : true,46depend_files : nir_depends,47)4849nir_opcodes_c = custom_target(50'nir_opcodes.c',51input : 'nir_opcodes_c.py',52output : 'nir_opcodes.c',53command : [prog_python, '@INPUT@'],54capture : true,55depend_files : nir_depends,56)5758nir_opt_algebraic_c = custom_target(59'nir_opt_algebraic.c',60input : 'nir_opt_algebraic.py',61output : 'nir_opt_algebraic.c',62command : [prog_python, '@INPUT@'],63capture : true,64depend_files : files('nir_algebraic.py'),65)6667nir_intrinsics_h = custom_target(68'nir_intrinsics.h',69input : 'nir_intrinsics_h.py',70output : 'nir_intrinsics.h',71command : [prog_python, '@INPUT@', '--outdir', meson.current_build_dir()],72capture : false,73depend_files : files('nir_intrinsics.py'),74)7576nir_intrinsics_indices_h = custom_target(77'nir_intrinsics_indices.h',78input : 'nir_intrinsics_indices_h.py',79output : 'nir_intrinsics_indices.h',80command : [prog_python, '@INPUT@', '--outdir', meson.current_build_dir()],81capture : false,82depend_files : files('nir_intrinsics.py'),83)8485nir_intrinsics_c = custom_target(86'nir_intrinsic.c',87input : 'nir_intrinsics_c.py',88output : 'nir_intrinsics.c',89command : [prog_python, '@INPUT@', '--outdir', meson.current_build_dir()],90capture: false,91depend_files : files('nir_intrinsics.py'),92)9394files_libnir = files(95'nir.c',96'nir.h',97'nir_builder.h',98'nir_builtin_builder.c',99'nir_builtin_builder.h',100'nir_conversion_builder.h',101'nir_clone.c',102'nir_constant_expressions.h',103'nir_control_flow.c',104'nir_control_flow.h',105'nir_control_flow_private.h',106'nir_convert_ycbcr.c',107'nir_deref.c',108'nir_deref.h',109'nir_divergence_analysis.c',110'nir_dominance.c',111'nir_format_convert.h',112'nir_from_ssa.c',113'nir_gather_info.c',114'nir_gather_ssa_types.c',115'nir_gather_xfb_info.c',116'nir_gs_count_vertices.c',117'nir_inline_functions.c',118'nir_inline_uniforms.c',119'nir_instr_set.c',120'nir_instr_set.h',121'nir_linking_helpers.c',122'nir_liveness.c',123'nir_loop_analyze.c',124'nir_loop_analyze.h',125'nir_lower_alu.c',126'nir_lower_alu_to_scalar.c',127'nir_lower_alpha_test.c',128'nir_lower_amul.c',129'nir_lower_array_deref_of_vec.c',130'nir_lower_atomics_to_ssbo.c',131'nir_lower_bitmap.c',132'nir_lower_blend.c',133'nir_lower_bool_to_bitsize.c',134'nir_lower_bool_to_float.c',135'nir_lower_bool_to_int32.c',136'nir_lower_clamp_color_outputs.c',137'nir_lower_clip.c',138'nir_lower_clip_cull_distance_arrays.c',139'nir_lower_clip_disable.c',140'nir_lower_clip_halfz.c',141'nir_lower_convert_alu_types.c',142'nir_lower_variable_initializers.c',143'nir_lower_discard_or_demote.c',144'nir_lower_double_ops.c',145'nir_lower_drawpixels.c',146'nir_lower_fb_read.c',147'nir_lower_flatshade.c',148'nir_lower_flrp.c',149'nir_lower_fp16_conv.c',150'nir_lower_fragcoord_wtrans.c',151'nir_lower_fragcolor.c',152'nir_lower_frexp.c',153'nir_lower_global_vars_to_local.c',154'nir_lower_goto_ifs.c',155'nir_lower_gs_intrinsics.c',156'nir_lower_load_const_to_scalar.c',157'nir_lower_locals_to_regs.c',158'nir_lower_idiv.c',159'nir_lower_indirect_derefs.c',160'nir_lower_input_attachments.c',161'nir_lower_int64.c',162'nir_lower_interpolation.c',163'nir_lower_int_to_float.c',164'nir_lower_io.c',165'nir_lower_io_arrays_to_elements.c',166'nir_lower_io_to_temporaries.c',167'nir_lower_io_to_scalar.c',168'nir_lower_io_to_vector.c',169'nir_lower_is_helper_invocation.c',170'nir_lower_multiview.c',171'nir_lower_mediump.c',172'nir_lower_memcpy.c',173'nir_lower_memory_model.c',174'nir_lower_non_uniform_access.c',175'nir_lower_packing.c',176'nir_lower_passthrough_edgeflags.c',177'nir_lower_patch_vertices.c',178'nir_lower_phis_to_scalar.c',179'nir_lower_pntc_ytransform.c',180'nir_lower_point_size.c',181'nir_lower_point_size_mov.c',182'nir_lower_printf.c',183'nir_lower_regs_to_ssa.c',184'nir_lower_readonly_images_to_tex.c',185'nir_lower_returns.c',186'nir_lower_samplers.c',187'nir_lower_scratch.c',188'nir_lower_shader_calls.c',189'nir_lower_ssbo.c',190'nir_lower_subgroups.c',191'nir_lower_system_values.c',192'nir_lower_tex.c',193'nir_lower_texcoord_replace.c',194'nir_lower_to_source_mods.c',195'nir_lower_two_sided_color.c',196'nir_lower_undef_to_zero.c',197'nir_lower_vars_to_ssa.c',198'nir_lower_var_copies.c',199'nir_lower_vec_to_movs.c',200'nir_lower_vec3_to_vec4.c',201'nir_lower_viewport_transform.c',202'nir_lower_wpos_center.c',203'nir_lower_wpos_ytransform.c',204'nir_lower_wrmasks.c',205'nir_lower_bit_size.c',206'nir_lower_ubo_vec4.c',207'nir_lower_uniforms_to_ubo.c',208'nir_metadata.c',209'nir_move_vec_src_uses_to_dest.c',210'nir_normalize_cubemap_coords.c',211'nir_opt_access.c',212'nir_opt_barriers.c',213'nir_opt_combine_stores.c',214'nir_opt_comparison_pre.c',215'nir_opt_conditional_discard.c',216'nir_opt_constant_folding.c',217'nir_opt_copy_prop_vars.c',218'nir_opt_copy_propagate.c',219'nir_opt_cse.c',220'nir_opt_dce.c',221'nir_opt_dead_cf.c',222'nir_opt_dead_write_vars.c',223'nir_opt_find_array_copies.c',224'nir_opt_gcm.c',225'nir_opt_idiv_const.c',226'nir_opt_if.c',227'nir_opt_intrinsics.c',228'nir_opt_large_constants.c',229'nir_opt_load_store_vectorize.c',230'nir_opt_loop_unroll.c',231'nir_opt_memcpy.c',232'nir_opt_move.c',233'nir_opt_move_discards_to_top.c',234'nir_opt_offsets.c',235'nir_opt_peephole_select.c',236'nir_opt_phi_precision.c',237'nir_opt_rematerialize_compares.c',238'nir_opt_remove_phis.c',239'nir_opt_shrink_vectors.c',240'nir_opt_sink.c',241'nir_opt_trivial_continues.c',242'nir_opt_undef.c',243'nir_opt_uniform_atomics.c',244'nir_opt_vectorize.c',245'nir_phi_builder.c',246'nir_phi_builder.h',247'nir_print.c',248'nir_propagate_invariant.c',249'nir_range_analysis.c',250'nir_range_analysis.h',251'nir_remove_dead_variables.c',252'nir_repair_ssa.c',253'nir_schedule.c',254'nir_schedule.h',255'nir_search.c',256'nir_search.h',257'nir_search_helpers.h',258'nir_serialize.c',259'nir_serialize.h',260'nir_split_per_member_structs.c',261'nir_split_var_copies.c',262'nir_split_vars.c',263'nir_sweep.c',264'nir_to_lcssa.c',265'nir_validate.c',266'nir_vla.h',267'nir_vulkan.h',268'nir_worklist.c',269'nir_worklist.h',270'nir_xfb_info.h',271'../spirv/GLSL.ext.AMD.h',272'../spirv/GLSL.std.450.h',273'../spirv/gl_spirv.c',274'../spirv/nir_load_libclc.c',275'../spirv/nir_lower_libclc.c',276'../spirv/nir_spirv.h',277'../spirv/OpenCL.std.h',278'../spirv/spirv.h',279'../spirv/spirv_info.h',280'../spirv/spirv_to_nir.c',281'../spirv/vtn_alu.c',282'../spirv/vtn_amd.c',283'../spirv/vtn_cfg.c',284'../spirv/vtn_glsl450.c',285'../spirv/vtn_opencl.c',286'../spirv/vtn_private.h',287'../spirv/vtn_subgroup.c',288'../spirv/vtn_variables.c',289)290291_libnir_args = []292if dep_clc.found()293_basedir = dep_clc.get_variable(pkgconfig : 'libexecdir')294295_static_libclc = get_option('static-libclc')296if _static_libclc.length() > 0297if _static_libclc.contains('all')298_static_libclc = ['spirv', 'spirv64']299endif300301prog_zstd = find_program('zstd', required : false)302_zstd_static_libclc = dep_zstd.found() and prog_zstd.found()303if _zstd_static_libclc304_libnir_args += '-DHAVE_STATIC_LIBCLC_ZSTD'305endif306307foreach s : _static_libclc308_libnir_args += '-DHAVE_STATIC_LIBCLC_@0@'.format(s.to_upper())309f = '@[email protected]'.format(s)310_libclc_file = _basedir / f311312if _zstd_static_libclc313_libclc_file = custom_target(314'@[email protected]'.format(f),315command : [prog_zstd, '-f', '@INPUT@', '-o', '@OUTPUT@'],316input : [_libclc_file],317output : '@[email protected]'.format(f),318)319endif320321files_libnir += custom_target(322'@[email protected]'.format(f),323command : [324prog_python, files_xxd, '-b', '@INPUT@', '@OUTPUT@',325'-n', 'libclc_@0@_mesa3d_spv'.format(s),326],327input : [_libclc_file],328output : '@[email protected]'.format(f),329depend_files : files_xxd,330)331endforeach332else333_libnir_args += ['-DDYNAMIC_LIBCLC_PATH="@0@/"'.format(_basedir)]334if not cc.has_function('mmap')335error('mmap required for dynamic libCLC loading')336endif337endif338endif339340_libnir = static_library(341'nir',342[files_libnir, spirv_info_c, nir_opt_algebraic_c, nir_opcodes_c,343nir_opcodes_h, nir_constant_expressions_c, nir_builder_opcodes_h,344vtn_gather_types_c, nir_intrinsics_c, nir_intrinsics_h, nir_intrinsics_indices_h, vtn_generator_ids_h],345include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux, inc_compiler, include_directories('../spirv')],346c_args : [c_msvc_compat_args, no_override_init_args, _libnir_args],347gnu_symbol_visibility : 'hidden',348dependencies : dep_valgrind,349link_with : libcompiler,350build_by_default : false,351)352353# Headers-only dependency354idep_nir_headers = declare_dependency(355sources : [nir_opcodes_h, nir_builder_opcodes_h, nir_intrinsics_h, nir_intrinsics_indices_h],356include_directories : include_directories('.'),357)358359# Also link with nir360idep_nir = declare_dependency(361dependencies : [idep_nir_headers, idep_mesautil],362link_with : _libnir,363)364365nir_algebraic_py = files('nir_algebraic.py')366367if with_tests368test(369'nir_builder',370executable(371'nir_builder_test',372files('tests/builder_tests.cpp'),373cpp_args : [cpp_msvc_compat_args],374gnu_symbol_visibility : 'hidden',375include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],376dependencies : [dep_thread, idep_gtest, idep_nir, idep_mesautil],377),378suite : ['compiler', 'nir'],379)380381test(382'nir_control_flow',383executable(384'nir_control_flow_test',385files('tests/control_flow_tests.cpp'),386cpp_args : [cpp_msvc_compat_args],387gnu_symbol_visibility : 'hidden',388include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],389dependencies : [dep_thread, idep_gtest, idep_nir, idep_mesautil],390),391suite : ['compiler', 'nir'],392)393394test(395'nir_core',396executable(397'nir_core_test',398files('tests/core_tests.cpp'),399cpp_args : [cpp_msvc_compat_args],400gnu_symbol_visibility : 'hidden',401include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],402dependencies : [dep_thread, idep_gtest, idep_nir, idep_mesautil],403),404suite : ['compiler', 'nir'],405)406407test(408'nir_vars',409executable(410'nir_vars_test',411files('tests/vars_tests.cpp'),412cpp_args : [cpp_msvc_compat_args],413gnu_symbol_visibility : 'hidden',414include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],415dependencies : [dep_thread, idep_gtest, idep_nir, idep_mesautil],416),417suite : ['compiler', 'nir'],418)419420test(421'nir_algebraic_parser',422prog_python,423args : [424join_paths(meson.current_source_dir(), 'tests/algebraic_parser_test.py')425],426suite : ['compiler', 'nir'],427)428429test(430'negative_equal',431executable(432'negative_equal',433files('tests/negative_equal_tests.cpp'),434c_args : [c_msvc_compat_args, no_override_init_args],435gnu_symbol_visibility : 'hidden',436include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],437dependencies : [dep_thread, idep_gtest, idep_nir, idep_mesautil],438),439suite : ['compiler', 'nir'],440)441442test(443'comparison_pre',444executable(445'comparison_pre',446files('tests/comparison_pre_tests.cpp'),447c_args : [c_msvc_compat_args, no_override_init_args],448gnu_symbol_visibility : 'hidden',449include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],450dependencies : [dep_thread, idep_gtest, idep_nir, idep_mesautil],451),452suite : ['compiler', 'nir'],453)454455test(456'load_store_vectorizer',457executable(458'load_store_vectorizer',459files('tests/load_store_vectorizer_tests.cpp'),460cpp_args : [cpp_msvc_compat_args],461gnu_symbol_visibility : 'hidden',462include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],463dependencies : [dep_thread, idep_gtest, idep_nir, idep_mesautil],464),465suite : ['compiler', 'nir'],466should_fail : meson.get_cross_property('xfail', '').contains('load_store_vectorizer'),467)468469test(470'nir_serialize_test',471executable(472'nir_serialize_test',473files('tests/serialize_tests.cpp'),474cpp_args : [cpp_msvc_compat_args],475gnu_symbol_visibility : 'hidden',476include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],477dependencies : [dep_thread, idep_gtest, idep_nir, idep_mesautil],478),479suite : ['compiler', 'nir'],480)481482test(483'nir_opt_if',484executable(485'nir_opt_if_tests',486files('tests/opt_if_tests.cpp'),487cpp_args : [cpp_msvc_compat_args],488gnu_symbol_visibility : 'hidden',489include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],490dependencies : [dep_thread, idep_gtest, idep_nir, idep_mesautil],491),492suite : ['compiler', 'nir'],493)494495test(496'nir_lower_returns',497executable(498'nir_lower_returns_tests',499files('tests/lower_returns_tests.cpp'),500cpp_args : [cpp_msvc_compat_args],501gnu_symbol_visibility : 'hidden',502include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],503dependencies : [dep_thread, idep_gtest, idep_nir, idep_mesautil],504),505suite : ['compiler', 'nir'],506)507508test(509'ssa_def_bits_used',510executable(511'ssa_def_bits_used',512files('tests/ssa_def_bits_used_tests.cpp'),513c_args : [c_msvc_compat_args, no_override_init_args],514gnu_symbol_visibility : 'hidden',515include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],516dependencies : [dep_thread, idep_gtest, idep_nir, idep_mesautil],517),518suite : ['compiler', 'nir'],519)520endif521522523