From b53377b23bc3377e97a5561189bb1702ff799093 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kai=20Wasserb=C3=A4ch?= Date: Wed, 25 Sep 2024 16:32:26 +0200 Subject: [PATCH] fix(FTBFS): build: link OpenCL target with `dep_clang` from top-level MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The OpenCL target defined its own `dep_clang`, which was rather incomplete, when compared to the version from the main `meson.build` file. This commit removes the custom version and relies on the main version of `dep_clang` in the root level `meson.build`. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/11945 Signed-off-by: Kai Wasserbäch Reviewed-by: Karol Herbst Part-of: --- meson.build | 4 +- src/gallium/targets/opencl/meson.build | 52 +------------------------- 2 files changed, 3 insertions(+), 53 deletions(-) diff --git a/meson.build b/meson.build index 51df7dd38f5..c150bff74ff 100644 --- a/meson.build +++ b/meson.build @@ -1849,7 +1849,7 @@ if dep_spirv_tools.found() endif dep_clang = null_dep -if with_clc +if with_clc or with_gallium_clover llvm_libdir = dep_llvm.get_variable(cmake : 'LLVM_LIBRARY_DIR', configtool: 'libdir') dep_clang = cpp.find_library('clang-cpp', dirs : llvm_libdir, required : false) @@ -1864,7 +1864,7 @@ if with_clc if dep_llvm.version().version_compare('>= 15.0') clang_modules += 'clangSupport' endif - if dep_llvm.version().version_compare('>= 16.0') + if dep_llvm.version().version_compare('>= 16.0') or with_gallium_clover clang_modules += 'clangASTMatchers' endif if dep_llvm.version().version_compare('>= 18.0') diff --git a/src/gallium/targets/opencl/meson.build b/src/gallium/targets/opencl/meson.build index 55f5c19274b..ab2c83556a8 100644 --- a/src/gallium/targets/opencl/meson.build +++ b/src/gallium/targets/opencl/meson.build @@ -22,56 +22,6 @@ if dep_llvm.version().version_compare('>=10.0.0') polly_isl_dep = cpp.find_library('PollyISL', dirs : llvm_libdir, required : false) endif -dep_clang = cpp.find_library('clang-cpp', dirs : llvm_libdir, required : false) - -# meson will return clang-cpp from system dirs if it's not found in llvm_libdir -linker_rpath_arg = '-Wl,--rpath=@0@'.format(llvm_libdir) -clang_test_code = ''' - #include - int main (void) { - size_t found_pos = clang::getClangFullVersion().find(CLANG_VERSION_STRING); - return found_pos == ::std::string::npos ? 1 : 0; - } -''' -can_check_clang = (not meson.is_cross_build() or meson.can_run_host_binaries()) and cpp.has_link_argument(linker_rpath_arg) -if can_check_clang - test_run = cpp.run(clang_test_code, name : 'dep-clang-usable', - dependencies : [dep_llvm, dep_clang], args : linker_rpath_arg) - dep_clang_usable = test_run.compiled() and test_run.returncode() == 0 -else - dep_clang_usable = true -endif -if not _shared_llvm or not (dep_clang.found() and dep_clang_usable) - dep_clang = [ - cpp.find_library('clangCodeGen', dirs : llvm_libdir), - cpp.find_library('clangFrontendTool', dirs : llvm_libdir), - cpp.find_library('clangFrontend', dirs : llvm_libdir), - cpp.find_library('clangDriver', dirs : llvm_libdir), - cpp.find_library('clangSerialization', dirs : llvm_libdir), - cpp.find_library('clangParse', dirs : llvm_libdir), - cpp.find_library('clangSema', dirs : llvm_libdir), - cpp.find_library('clangAnalysis', dirs : llvm_libdir), - cpp.find_library('clangAST', dirs : llvm_libdir), - cpp.find_library('clangASTMatchers', dirs : llvm_libdir), - cpp.find_library('clangEdit', dirs : llvm_libdir), - cpp.find_library('clangLex', dirs : llvm_libdir), - cpp.find_library('clangBasic', dirs : llvm_libdir), - polly_dep, polly_isl_dep, - ] - if dep_llvm.version().version_compare('>= 15.0') - dep_clang += cpp.find_library('clangSupport', dirs : llvm_libdir) - endif - - # check clang once more - if can_check_clang - test_run = cpp.run(clang_test_code, name : 'dep-clang-usable', - dependencies : [dep_llvm, dep_clang], args : linker_rpath_arg) - if not test_run.compiled() or test_run.returncode() != 0 - error('No usable clang found!') - endif - endif -endif - ocldef_in = files(opencl_libname + '.def.in')[0] ocldef = custom_target( 'ocldef.def', @@ -90,7 +40,7 @@ libopencl = shared_library( link_with : [libpipe_loader_dynamic, libgallium], dependencies : [ idep_mesautil, - dep_clock, dep_dl, dep_unwind, dep_elf, dep_clang, dep_version + dep_clock, dep_dl, dep_unwind, dep_elf, dep_clang, polly_dep, polly_isl_dep, dep_version ], name_prefix : host_machine.system() == 'windows' ? '' : [], # otherwise mingw will create libOpenCL-1.dll or libMesaOpenCL-1.dll version : '@0@.0.0'.format(opencl_version),