mesa-clc: add an option to force inclusion of OpenCL headers

Currently mesa-clc bundles OpenCL headers from Clang only if the static
LLVM is used (which means Clang / LLVM are not present on the target
system). In some cases (e.g. when building in OpenEmbedded environemnt)
it is desirable to have shared LLVM library, but skip installing the
whole Clang runtime just to compile shaders. Add an option that forces
OpenCL headers to be bundled with the mesa-clc binary.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34551>
(cherry picked from commit 419a9e9d42)
This commit is contained in:
Dmitry Baryshkov 2025-04-16 14:35:37 +03:00 committed by Eric Engestrom
parent 631022841f
commit 3619611b31
3 changed files with 13 additions and 2 deletions

View file

@ -464,7 +464,7 @@
"description": "mesa-clc: add an option to force inclusion of OpenCL headers",
"nominated": false,
"nomination_type": 0,
"resolution": 4,
"resolution": 1,
"main_sha": null,
"because_sha": null,
"notes": null

View file

@ -795,6 +795,16 @@ option(
description : 'Install the mesa-clc compiler (if needed for cross builds).'
)
option(
'mesa-clc-bundle-headers',
type : 'combo',
value : 'auto',
choices : [
'enabled', 'auto'
],
description : 'Bundle the OpenCL headers into the mesa-clc binary (default to bundle if static LLVM is used). Note, it might require rebuilding mesa-clc if opencl-c.h or opencl-c-base.h are changed (e.g. on Clang upgrades).'
)
option(
'precomp-compiler',
type : 'combo',

View file

@ -11,7 +11,8 @@ _libmesaclc_c_args = []
_libmesaclc_cpp_args = ['-DLLVM_LIB_DIR="@0@"'.format(llvm_libdir)]
_libmesaclc_sources = []
if not _shared_llvm
if not _shared_llvm or \
get_option('mesa-clc-bundle-headers') == 'enabled'
# LLVM 16 moved clang header path from using full version to only major version
if dep_llvm.version().version_compare('< 16')
# Prior to LLVM 16, this path used a full version