Files
mesa/src/gallium/frontends/clover/meson.build
Nikita Popov e4eb5e80c3 clover: Don't include libclc headers
Per https://github.com/llvm/llvm-project/issues/119967 these
headers are internal implementation details of libclc and were
never supposed to be installed. They are not available anymore
since LLVM 20. Instead opencl-c.h should be used.

There already ise a code path for including opencl-c.h, so always
use it.

This didn't work for me out of the box, because the build system
currently hardcodes the clang resource directory, which is incorrect
for Fedora at least. Fix this by using GetResourcePath +
CLANG_RESOURCE_DIR provided by clang instead. This is basically
the same as what is done in clc_helper.c

I've still retained the old behavior as a fallback just in case
(e.g. if clang is linked statically?)

Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33805>
2025-03-04 11:32:22 +00:00

126 lines
3.0 KiB
Meson

# Copyright © 2017-2018 Intel Corporation
# SPDX-License-Identifier: MIT
clover_cpp_args = []
clover_opencl_cpp_args = [
'-DCL_TARGET_OPENCL_VERSION=300',
'-DCL_USE_DEPRECATED_OPENCL_1_0_APIS',
'-DCL_USE_DEPRECATED_OPENCL_1_1_APIS',
'-DCL_USE_DEPRECATED_OPENCL_1_2_APIS',
'-DCL_USE_DEPRECATED_OPENCL_2_0_APIS',
'-DCL_USE_DEPRECATED_OPENCL_2_1_APIS',
'-DCL_USE_DEPRECATED_OPENCL_2_2_APIS',
'-DLIBCLC_LIBEXECDIR="@0@/"'.format(dep_clc.get_variable(pkgconfig : 'libexecdir'))
]
clover_incs = [inc_include, inc_src, inc_gallium, inc_gallium_aux]
# the CL header files declare attributes on the CL types. Compilers warn if
# we use them as template arguments. Disable the warning as there isn't
# anything we can do about it
if cpp.has_argument('-Wno-ignored-attributes')
clover_cpp_args += '-Wno-ignored-attributes'
endif
if with_opencl_icd
clover_cpp_args += '-DHAVE_CLOVER_ICD'
endif
libclllvm = static_library(
'clllvm',
files(
'llvm/codegen/bitcode.cpp',
'llvm/codegen/common.cpp',
'llvm/codegen/native.cpp',
'llvm/codegen.hpp',
'llvm/compat.hpp',
'llvm/invocation.cpp',
'llvm/invocation.hpp',
'llvm/metadata.hpp',
'llvm/util.hpp',
),
include_directories : clover_incs,
cpp_args : [
clover_cpp_args,
clover_opencl_cpp_args,
'-DFALLBACK_CLANG_RESOURCE_DIR="@0@"'.format(join_paths(
dep_llvm.get_variable(cmake : 'LLVM_LIBRARY_DIR', configtool: 'libdir'), 'clang',
dep_llvm.version()
)),
],
gnu_symbol_visibility : 'hidden',
dependencies : [dep_llvm, dep_elf, dep_llvmspirvlib, idep_mesautil],
)
clover_files = files(
'api/context.cpp',
'api/device.cpp',
'api/dispatch.cpp',
'api/dispatch.hpp',
'api/event.cpp',
'api/interop.cpp',
'api/invalid.cpp',
'api/kernel.cpp',
'api/memory.cpp',
'api/platform.cpp',
'api/program.cpp',
'api/queue.cpp',
'api/sampler.cpp',
'api/transfer.cpp',
'api/util.hpp',
'core/binary.cpp',
'core/binary.hpp',
'core/compiler.hpp',
'core/context.cpp',
'core/context.hpp',
'core/device.cpp',
'core/device.hpp',
'core/error.hpp',
'core/event.cpp',
'core/event.hpp',
'core/format.cpp',
'core/format.hpp',
'core/kernel.cpp',
'core/kernel.hpp',
'core/memory.cpp',
'core/memory.hpp',
'core/object.hpp',
'core/platform.cpp',
'core/platform.hpp',
'core/printf.cpp',
'core/printf.hpp',
'core/program.cpp',
'core/program.hpp',
'core/property.hpp',
'core/queue.cpp',
'core/queue.hpp',
'core/resource.cpp',
'core/resource.hpp',
'core/sampler.cpp',
'core/sampler.hpp',
'core/timestamp.cpp',
'core/timestamp.hpp',
'util/adaptor.hpp',
'util/algebra.hpp',
'util/algorithm.hpp',
'util/compat.hpp',
'util/factor.hpp',
'util/functional.hpp',
'util/lazy.hpp',
'util/pointer.hpp',
'util/range.hpp',
'util/tuple.hpp',
)
libclover = static_library(
'clover',
[clover_files, sha1_h],
include_directories : clover_incs,
cpp_args : [
clover_opencl_cpp_args,
clover_cpp_args,
],
gnu_symbol_visibility : 'hidden',
link_with : [libclllvm],
dependencies : [idep_mesautil, idep_nir],
)