From ec835595f0ddea07cf3769bac47e83b29911d8f3 Mon Sep 17 00:00:00 2001 From: Caio Oliveira Date: Wed, 20 Sep 2023 11:22:22 -0700 Subject: [PATCH] compiler: Use a meson dependency for libcompiler That will make sure the include directories are passed on and also make sure the generated headers are properly built before whoever code depends on it. NIR dependency propagates that dependency too. Since the right include directory is always propagated, we can remove the extra "compiler/" prefix from the `#include`s in glsl_types.h. Note: NIR has a special "header only" dependency, so include the generated headers for compiler there too. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9843 Reviewed-by: Eric Engestrom Part-of: --- src/compiler/glsl/meson.build | 4 ++-- src/compiler/glsl/tests/meson.build | 2 +- src/compiler/glsl_types.h | 6 +++--- src/compiler/meson.build | 6 ++++++ src/compiler/nir/meson.build | 10 +++++----- src/compiler/spirv/meson.build | 3 +-- src/microsoft/clc/meson.build | 4 ++-- src/vulkan/runtime/meson.build | 2 -- 8 files changed, 20 insertions(+), 17 deletions(-) diff --git a/src/compiler/glsl/meson.build b/src/compiler/glsl/meson.build index bc9154e6fc8..6bedb674d20 100644 --- a/src/compiler/glsl/meson.build +++ b/src/compiler/glsl/meson.build @@ -269,7 +269,7 @@ libglsl_standalone = static_library( gnu_symbol_visibility : 'hidden', include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux], link_with : [libglsl, libglsl_util, libglcpp_standalone], - dependencies : [idep_mesautil, idep_getopt], + dependencies : [idep_mesautil, idep_getopt, idep_compiler], build_by_default : false, ) @@ -294,7 +294,7 @@ glsl_test = executable( cpp_args : [cpp_msvc_compat_args], gnu_symbol_visibility : 'hidden', include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux], - dependencies : [dep_clock, dep_thread, idep_getopt, idep_mesautil], + dependencies : [dep_clock, dep_thread, idep_getopt, idep_mesautil, idep_compiler], link_with : [libglsl, libglsl_standalone, libglsl_util], build_by_default : with_tools.contains('glsl'), install : with_tools.contains('glsl'), diff --git a/src/compiler/glsl/tests/meson.build b/src/compiler/glsl/tests/meson.build index 2ec28533654..76fe81f00f6 100644 --- a/src/compiler/glsl/tests/meson.build +++ b/src/compiler/glsl/tests/meson.build @@ -55,7 +55,7 @@ test( gnu_symbol_visibility : 'hidden', include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux, inc_glsl], link_with : [libglsl, libglsl_util], - dependencies : [dep_thread, idep_gtest, idep_mesautil], + dependencies : [dep_thread, idep_gtest, idep_mesautil, idep_compiler], ), suite : ['compiler', 'glsl'], protocol : 'gtest', diff --git a/src/compiler/glsl_types.h b/src/compiler/glsl_types.h index 938dc78f96a..06e109695fb 100644 --- a/src/compiler/glsl_types.h +++ b/src/compiler/glsl_types.h @@ -361,7 +361,7 @@ struct glsl_type { */ /*@{*/ #define BUILTIN_TYPES_CPP_DECLARATIONS -#include "compiler/builtin_types_cpp.h" +#include "builtin_types_cpp.h" #undef BUILTIN_TYPES_CPP_DECLARATIONS /*@}*/ @@ -1234,7 +1234,7 @@ private: #endif /* __cplusplus */ }; -#include "compiler/builtin_types.h" +#include "builtin_types.h" struct glsl_struct_field { const struct glsl_type *type; @@ -1374,7 +1374,7 @@ struct glsl_struct_field { #ifdef __cplusplus #define BUILTIN_TYPES_CPP_DEFINITIONS -#include "compiler/builtin_types_cpp.h" +#include "builtin_types_cpp.h" #undef BUILTIN_TYPES_CPP_DEFINITIONS #endif diff --git a/src/compiler/meson.build b/src/compiler/meson.build index e5fcd5418eb..ad5820589a2 100644 --- a/src/compiler/meson.build +++ b/src/compiler/meson.build @@ -77,6 +77,12 @@ libcompiler = static_library( build_by_default : false, ) +idep_compiler = declare_dependency( + sources : [ir_expression_operation_h, builtin_types_h, builtin_types_cpp_h], + include_directories : inc_compiler, + link_with : libcompiler, +) + subdir('nir') subdir('spirv') diff --git a/src/compiler/nir/meson.build b/src/compiler/nir/meson.build index b4085789f93..0f181e1794f 100644 --- a/src/compiler/nir/meson.build +++ b/src/compiler/nir/meson.build @@ -314,8 +314,7 @@ _libnir = static_library( 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, - link_with : libcompiler, + dependencies : [idep_compiler, dep_valgrind], build_by_default : false, ) @@ -323,13 +322,14 @@ inc_nir = include_directories('.') # Headers-only dependency idep_nir_headers = declare_dependency( - sources : [nir_opcodes_h, nir_builder_opcodes_h, nir_intrinsics_h, nir_intrinsics_indices_h], - include_directories : inc_nir, + sources : [nir_opcodes_h, nir_builder_opcodes_h, nir_intrinsics_h, nir_intrinsics_indices_h, + ir_expression_operation_h, builtin_types_h, builtin_types_cpp_h], + include_directories : [inc_nir, inc_compiler], ) # Also link with nir idep_nir = declare_dependency( - dependencies : [idep_nir_headers, idep_mesautil], + dependencies : [idep_nir_headers, idep_mesautil, idep_compiler], link_with : _libnir, ) diff --git a/src/compiler/spirv/meson.build b/src/compiler/spirv/meson.build index 05d2ad02af0..781691b17ac 100644 --- a/src/compiler/spirv/meson.build +++ b/src/compiler/spirv/meson.build @@ -66,11 +66,10 @@ libvtn = static_library( vtn_gather_types_c, vtn_generator_ids_h, ], - include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_compiler], + include_directories : [inc_include, inc_src, inc_mapi, inc_mesa], 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, ) diff --git a/src/microsoft/clc/meson.build b/src/microsoft/clc/meson.build index 849ee9b94ec..b2224f757a2 100644 --- a/src/microsoft/clc/meson.build +++ b/src/microsoft/clc/meson.build @@ -39,8 +39,8 @@ if dep_dxheaders.found() and host_machine.system() == 'windows' and with_tests ['clc_compiler_test.cpp', 'compute_test.cpp'], link_with : [libclc_compiler], dependencies : [idep_gtest, idep_mesautil, idep_libdxil_compiler, dep_dxheaders, - dep_spirv_tools], - include_directories : [inc_include, inc_src, inc_compiler, inc_spirv], + dep_spirv_tools, idep_compiler], + include_directories : [inc_include, inc_src, inc_spirv], ) if build_machine.system() == 'windows' diff --git a/src/vulkan/runtime/meson.build b/src/vulkan/runtime/meson.build index 16d57908a0e..331b21c5d7d 100644 --- a/src/vulkan/runtime/meson.build +++ b/src/vulkan/runtime/meson.build @@ -224,8 +224,6 @@ libvulkan_runtime = static_library( vk_physical_device_properties, vk_format_info], include_directories : [inc_include, inc_src, inc_gallium], dependencies : vulkan_runtime_deps, - # For glsl_type_singleton - link_with : libcompiler, c_args : c_msvc_compat_args, gnu_symbol_visibility : 'hidden', build_by_default : false,