meson: Check for SPIRV-Tools and llvm-spirv
Changes since: * v12 (Karol Herbst): - rename CLOVER_ALLOW_SPIRV to HAVE_CLOVER_SPIRV * v11 (Karol Herbst): - only set new defines for clover to speed up recompilation - remove autotools * v10: - Add a new flag (`--enable-opencl-spirv` for autotools, and `-Dopencl-spirv=true` for meson) for enabling SPIR-V support in clover, and never automagically enable it without that flag. (Dylan Baker) - When enabling the SPIR-V support, the SPIRV-Tools and SPIRV-LLVM-Translator libraries are now required dependencies. * v7: - Properly align LLVMSPIRVLib comment (Dylan Baker) - Only define CLOVER_ALLOW_SPIRV when **both** dependencies are found: autotools was only requiring one or the other. * v6: Replace the llvm-spirv repository by the new official SPIRV-LLVM-Translator. * v4: Add a comment saying where to find llvm-spirv (Karol Herbst). * v3: - make SPIRV-Tools and llvm-spirv optional (Francisco Jerez); - bump requirement for llvm-spirv to version 0.2 * v2: - Bump the required version of SPIRV-Tools to the latest release; - Add a dependency on llvm-spirv. Reviewed-by: Dylan Baker <dylan@pnwbakers.com> (v10) Reviewed-by: Karol Herbst <kherbst@redhat.com> Reviewed-by: Francisco Jerez <currojerez@riseup.net>
This commit is contained in:
parent
aa7ac32976
commit
866f6f11d9
13
meson.build
13
meson.build
|
@ -712,6 +712,16 @@ if _opencl != 'disabled'
|
||||||
with_gallium_opencl = true
|
with_gallium_opencl = true
|
||||||
with_opencl_icd = _opencl == 'icd'
|
with_opencl_icd = _opencl == 'icd'
|
||||||
|
|
||||||
|
with_opencl_spirv = get_option('opencl-spirv')
|
||||||
|
if with_opencl_spirv
|
||||||
|
dep_spirv_tools = dependency('SPIRV-Tools', required : true, version : '>= 2018.0')
|
||||||
|
# LLVMSPIRVLib is available at https://github.com/KhronosGroup/SPIRV-LLVM-Translator
|
||||||
|
dep_llvmspirvlib = dependency('LLVMSPIRVLib', required : true, version : '>= 0.2.1')
|
||||||
|
else
|
||||||
|
dep_spirv_tools = null_dep
|
||||||
|
dep_llvmspirvlib = null_dep
|
||||||
|
endif
|
||||||
|
|
||||||
if host_machine.cpu_family().startswith('ppc') and cpp.compiles('''
|
if host_machine.cpu_family().startswith('ppc') and cpp.compiles('''
|
||||||
#if !defined(__VEC__) || !defined(__ALTIVEC__)
|
#if !defined(__VEC__) || !defined(__ALTIVEC__)
|
||||||
#error "AltiVec not enabled"
|
#error "AltiVec not enabled"
|
||||||
|
@ -721,8 +731,11 @@ if _opencl != 'disabled'
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
dep_clc = null_dep
|
dep_clc = null_dep
|
||||||
|
dep_spirv_tools = null_dep
|
||||||
|
dep_llvmspirvlib = null_dep
|
||||||
with_gallium_opencl = false
|
with_gallium_opencl = false
|
||||||
with_opencl_icd = false
|
with_opencl_icd = false
|
||||||
|
with_opencl_spirv = false
|
||||||
endif
|
endif
|
||||||
|
|
||||||
gl_pkgconfig_c_flags = []
|
gl_pkgconfig_c_flags = []
|
||||||
|
|
|
@ -143,6 +143,12 @@ option(
|
||||||
value : 'disabled',
|
value : 'disabled',
|
||||||
description : 'build gallium "clover" OpenCL state tracker.',
|
description : 'build gallium "clover" OpenCL state tracker.',
|
||||||
)
|
)
|
||||||
|
option(
|
||||||
|
'opencl-spirv',
|
||||||
|
type : 'boolean',
|
||||||
|
value : false,
|
||||||
|
description : 'build gallium "clover" OpenCL state tracker with SPIR-V binary support.',
|
||||||
|
)
|
||||||
option(
|
option(
|
||||||
'd3d-drivers-path',
|
'd3d-drivers-path',
|
||||||
type : 'string',
|
type : 'string',
|
||||||
|
|
|
@ -19,12 +19,17 @@
|
||||||
# SOFTWARE.
|
# SOFTWARE.
|
||||||
|
|
||||||
clover_cpp_args = []
|
clover_cpp_args = []
|
||||||
|
clover_spirv_cpp_args = []
|
||||||
clover_incs = [inc_include, inc_src, inc_gallium, inc_gallium_aux]
|
clover_incs = [inc_include, inc_src, inc_gallium, inc_gallium_aux]
|
||||||
|
|
||||||
if with_opencl_icd
|
if with_opencl_icd
|
||||||
clover_cpp_args += '-DHAVE_CLOVER_ICD'
|
clover_cpp_args += '-DHAVE_CLOVER_ICD'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if with_opencl_spirv
|
||||||
|
clover_spirv_cpp_args += '-DHAVE_CLOVER_SPIRV'
|
||||||
|
endif
|
||||||
|
|
||||||
libclllvm = static_library(
|
libclllvm = static_library(
|
||||||
'clllvm',
|
'clllvm',
|
||||||
files(
|
files(
|
||||||
|
@ -40,7 +45,7 @@ libclllvm = static_library(
|
||||||
),
|
),
|
||||||
include_directories : clover_incs,
|
include_directories : clover_incs,
|
||||||
cpp_args : [
|
cpp_args : [
|
||||||
cpp_vis_args,
|
clover_spirv_cpp_args, cpp_vis_args,
|
||||||
'-DLIBCLC_INCLUDEDIR="@0@/"'.format(dep_clc.get_pkgconfig_variable('includedir')),
|
'-DLIBCLC_INCLUDEDIR="@0@/"'.format(dep_clc.get_pkgconfig_variable('includedir')),
|
||||||
'-DLIBCLC_LIBEXECDIR="@0@/"'.format(dep_clc.get_pkgconfig_variable('libexecdir')),
|
'-DLIBCLC_LIBEXECDIR="@0@/"'.format(dep_clc.get_pkgconfig_variable('libexecdir')),
|
||||||
'-DCLANG_RESOURCE_DIR="@0@"'.format(join_paths(
|
'-DCLANG_RESOURCE_DIR="@0@"'.format(join_paths(
|
||||||
|
@ -111,7 +116,7 @@ libclover = static_library(
|
||||||
'clover',
|
'clover',
|
||||||
[clover_files, sha1_h],
|
[clover_files, sha1_h],
|
||||||
include_directories : clover_incs,
|
include_directories : clover_incs,
|
||||||
cpp_args : [clover_cpp_args, cpp_vis_args],
|
cpp_args : [clover_spirv_cpp_args, clover_cpp_args, cpp_vis_args],
|
||||||
link_with : [libclllvm],
|
link_with : [libclllvm],
|
||||||
override_options : clover_cpp_std,
|
override_options : clover_cpp_std,
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue