diff --git a/src/compiler/meson.build b/src/compiler/meson.build index edac9e89323..38218e55444 100644 --- a/src/compiler/meson.build +++ b/src/compiler/meson.build @@ -54,43 +54,9 @@ libcompiler = static_library( build_by_default : false, ) -subdir('spirv') - subdir('nir') -# These are here because putting it in spirv/meson.build would create a circular -# dependency with nir/meson.build. -spirv2nir = executable( - 'spirv2nir', - files('spirv/spirv2nir.c'), - dependencies : [dep_m, idep_nir, idep_mesautil], - include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux, include_directories('spirv')], - c_args : [c_msvc_compat_args, no_override_init_args], - gnu_symbol_visibility : 'hidden', - build_by_default : with_tools.contains('nir'), - install : with_tools.contains('nir'), -) - -if with_tests - test( - 'spirv_tests', - executable( - 'spirv_tests', - files( - 'spirv/tests/helpers.h', - 'spirv/tests/avail_vis.cpp', - 'spirv/tests/volatile.cpp', - 'spirv/tests/control_flow_tests.cpp', - ), - c_args : [c_msvc_compat_args, no_override_init_args], - gnu_symbol_visibility : 'hidden', - include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux], - dependencies : [dep_thread, idep_gtest, idep_nir, idep_mesautil], - ), - suite : ['compiler', 'spirv'], - protocol : 'gtest', - ) -endif +subdir('spirv') if with_clc subdir('clc') diff --git a/src/compiler/nir/meson.build b/src/compiler/nir/meson.build index 043690e2a64..31478928f66 100644 --- a/src/compiler/nir/meson.build +++ b/src/compiler/nir/meson.build @@ -298,31 +298,14 @@ files_libnir = files( 'nir_worklist.c', 'nir_worklist.h', 'nir_xfb_info.h', - '../spirv/GLSL.ext.AMD.h', - '../spirv/GLSL.std.450.h', - '../spirv/gl_spirv.c', - '../spirv/nir_spirv.h', - '../spirv/OpenCL.std.h', - '../spirv/spirv.h', - '../spirv/spirv_info.h', - '../spirv/spirv_to_nir.c', - '../spirv/vtn_alu.c', - '../spirv/vtn_amd.c', - '../spirv/vtn_cfg.c', - '../spirv/vtn_structured_cfg.c', - '../spirv/vtn_glsl450.c', - '../spirv/vtn_opencl.c', - '../spirv/vtn_private.h', - '../spirv/vtn_subgroup.c', - '../spirv/vtn_variables.c', ) _libnir = static_library( 'nir', - [files_libnir, spirv_info_c, nir_opt_algebraic_c, nir_opcodes_c, + [files_libnir, nir_opt_algebraic_c, nir_opcodes_c, nir_opcodes_h, nir_constant_expressions_c, nir_builder_opcodes_h, - vtn_gather_types_c, nir_intrinsics_c, nir_intrinsics_h, nir_intrinsics_indices_h, vtn_generator_ids_h], - include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux, inc_compiler, include_directories('../spirv')], + nir_intrinsics_c, nir_intrinsics_h, nir_intrinsics_indices_h], + include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux, inc_compiler], c_args : [c_msvc_compat_args, no_override_init_args], gnu_symbol_visibility : 'hidden', dependencies : dep_valgrind, diff --git a/src/compiler/spirv/meson.build b/src/compiler/spirv/meson.build index e3dd847883a..05d2ad02af0 100644 --- a/src/compiler/spirv/meson.build +++ b/src/compiler/spirv/meson.build @@ -38,3 +38,75 @@ vtn_generator_ids_h = custom_target( output : 'vtn_generator_ids.h', command : [prog_python, '@INPUT0@', '@INPUT1@', '@OUTPUT@'], ) + +files_libvtn = files( + 'GLSL.ext.AMD.h', + 'GLSL.std.450.h', + 'OpenCL.std.h', + 'gl_spirv.c', + 'nir_spirv.h', + 'spirv.h', + 'spirv_info.h', + 'spirv_to_nir.c', + 'vtn_alu.c', + 'vtn_amd.c', + 'vtn_cfg.c', + 'vtn_glsl450.c', + 'vtn_opencl.c', + 'vtn_private.h', + 'vtn_structured_cfg.c', + 'vtn_subgroup.c', + 'vtn_variables.c', +) + +libvtn = static_library( + 'vtn', + [files_libvtn, + spirv_info_c, + vtn_gather_types_c, + vtn_generator_ids_h, + ], + include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_compiler], + c_args : [c_msvc_compat_args, no_override_init_args], + gnu_symbol_visibility : 'hidden', + dependencies : [idep_nir, dep_valgrind], + link_with : libcompiler, + build_by_default : false, +) + +idep_vtn = declare_dependency( + dependencies : [idep_nir, idep_mesautil], + link_with : libvtn, +) + +spirv2nir = executable( + 'spirv2nir', + files('spirv2nir.c'), + dependencies : [dep_m, idep_vtn, idep_mesautil], + include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_compiler], + c_args : [c_msvc_compat_args, no_override_init_args], + gnu_symbol_visibility : 'hidden', + build_by_default : with_tools.contains('nir'), + install : with_tools.contains('nir'), +) + +if with_tests + test( + 'spirv_tests', + executable( + 'spirv_tests', + files( + 'tests/helpers.h', + 'tests/avail_vis.cpp', + 'tests/volatile.cpp', + 'tests/control_flow_tests.cpp', + ), + c_args : [c_msvc_compat_args, no_override_init_args], + gnu_symbol_visibility : 'hidden', + include_directories : [inc_include, inc_src, inc_mapi, inc_mesa], + dependencies : [idep_vtn, dep_thread, idep_gtest, idep_nir, idep_mesautil], + ), + suite : ['compiler', 'spirv'], + protocol : 'gtest', + ) +endif diff --git a/src/gallium/drivers/freedreno/meson.build b/src/gallium/drivers/freedreno/meson.build index 1ac9dc78df5..0d66d2c1836 100644 --- a/src/gallium/drivers/freedreno/meson.build +++ b/src/gallium/drivers/freedreno/meson.build @@ -328,6 +328,7 @@ ir3_compiler = executable( include_directories : freedreno_includes, dependencies : [ idep_nir, + idep_vtn, idep_mesautil, ], link_with : [ diff --git a/src/gallium/frontends/clover/meson.build b/src/gallium/frontends/clover/meson.build index 4e0308dc7d5..211731de51a 100644 --- a/src/gallium/frontends/clover/meson.build +++ b/src/gallium/frontends/clover/meson.build @@ -88,7 +88,7 @@ libclnir = static_library( 'clnir', files('nir/invocation.cpp', 'nir/invocation.hpp'), include_directories : [clover_incs, inc_mesa], - dependencies : [idep_nir, idep_mesaclc], + dependencies : [idep_nir, idep_vtn, idep_mesaclc], cpp_args : [clover_opencl_cpp_args, clover_spirv_cpp_args], gnu_symbol_visibility : 'hidden', ) diff --git a/src/gallium/targets/rusticl/meson.build b/src/gallium/targets/rusticl/meson.build index 5bf476a91ab..26ba18af02d 100644 --- a/src/gallium/targets/rusticl/meson.build +++ b/src/gallium/targets/rusticl/meson.build @@ -49,6 +49,7 @@ librusticl = shared_library( driver_radeonsi, driver_swrast, idep_nir, + idep_vtn, ], link_args: ld_args_build_id, version : '@0@.0.0'.format(opencl_version), diff --git a/src/intel/compiler/meson.build b/src/intel/compiler/meson.build index efde0241f21..adcbeabb806 100644 --- a/src/intel/compiler/meson.build +++ b/src/intel/compiler/meson.build @@ -177,7 +177,7 @@ if with_intel_clc include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_intel], c_args : [pre_args, no_override_init_args], link_args : [ld_args_build_id], - dependencies : [idep_nir, idep_mesaclc, idep_mesautil, idep_intel_dev], + dependencies : [idep_nir, idep_vtn, idep_mesaclc, idep_mesautil, idep_intel_dev], native : true, ) endif diff --git a/src/mesa/meson.build b/src/mesa/meson.build index e115833f737..a44ca6e0774 100644 --- a/src/mesa/meson.build +++ b/src/mesa/meson.build @@ -483,7 +483,7 @@ libmesa = static_library( inc_libmesa_asm, include_directories('main'), ], link_with : [libglsl, libmesa_sse41], - dependencies : [idep_nir_headers, dep_vdpau, idep_mesautil], + dependencies : [idep_nir, idep_vtn, dep_vdpau, idep_mesautil], build_by_default : false, ) diff --git a/src/microsoft/clc/meson.build b/src/microsoft/clc/meson.build index 591c3ee3ad2..734c202a0c5 100644 --- a/src/microsoft/clc/meson.build +++ b/src/microsoft/clc/meson.build @@ -30,7 +30,7 @@ libclc_compiler = shared_library( vs_module_defs : 'clon12compiler.def', include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_compiler, inc_gallium, inc_spirv], dependencies: [idep_mesaclc, idep_nir_headers, dep_version, idep_mesautil, - idep_libdxil_compiler, idep_nir], + idep_libdxil_compiler, idep_nir, idep_vtn], name_prefix : '' # otherwise mingw will create libclon12compiler.dll ) diff --git a/src/microsoft/spirv_to_dxil/meson.build b/src/microsoft/spirv_to_dxil/meson.build index f5137f856d2..81cbe727c12 100644 --- a/src/microsoft/spirv_to_dxil/meson.build +++ b/src/microsoft/spirv_to_dxil/meson.build @@ -32,7 +32,7 @@ libspirv_to_dxil = both_libraries( sha1_h, ], vs_module_defs : 'spirv_to_dxil.def', - dependencies : [idep_nir, idep_libdxil_compiler], + dependencies : [idep_nir, idep_vtn, idep_libdxil_compiler], include_directories : [inc_include, inc_src, inc_compiler, inc_gallium], install : true, ) diff --git a/src/vulkan/runtime/meson.build b/src/vulkan/runtime/meson.build index cf7ab21c445..d2fff4c2b72 100644 --- a/src/vulkan/runtime/meson.build +++ b/src/vulkan/runtime/meson.build @@ -108,6 +108,7 @@ vulkan_runtime_deps = [ vulkan_wsi_deps, idep_mesautil, idep_nir, + idep_vtn, idep_vulkan_util, ]