fix(FTBFS): build: link OpenCL target with dep_clang from top-level

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 <kai@dev.carbon-project.org>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31364>
This commit is contained in:
Kai Wasserbäch 2024-09-25 16:32:26 +02:00 committed by Marge Bot
parent 4497ea2a31
commit b53377b23b
2 changed files with 3 additions and 53 deletions

View File

@ -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')

View File

@ -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 <clang/Basic/Version.h>
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),