meson: Check for SPIRV-Tools and llvm-spirv
[mesa.git] / src / gallium / state_trackers / clover / meson.build
1 # Copyright © 2017-2018 Intel Corporation
2
3 # Permission is hereby granted, free of charge, to any person obtaining a copy
4 # of this software and associated documentation files (the "Software"), to deal
5 # in the Software without restriction, including without limitation the rights
6 # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 # copies of the Software, and to permit persons to whom the Software is
8 # furnished to do so, subject to the following conditions:
9
10 # The above copyright notice and this permission notice shall be included in
11 # all copies or substantial portions of the Software.
12
13 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19 # SOFTWARE.
20
21 clover_cpp_args = []
22 clover_spirv_cpp_args = []
23 clover_incs = [inc_include, inc_src, inc_gallium, inc_gallium_aux]
24
25 if with_opencl_icd
26 clover_cpp_args += '-DHAVE_CLOVER_ICD'
27 endif
28
29 if with_opencl_spirv
30 clover_spirv_cpp_args += '-DHAVE_CLOVER_SPIRV'
31 endif
32
33 libclllvm = static_library(
34 'clllvm',
35 files(
36 'llvm/codegen/bitcode.cpp',
37 'llvm/codegen/common.cpp',
38 'llvm/codegen/native.cpp',
39 'llvm/codegen.hpp',
40 'llvm/compat.hpp',
41 'llvm/invocation.cpp',
42 'llvm/invocation.hpp',
43 'llvm/metadata.hpp',
44 'llvm/util.hpp',
45 ),
46 include_directories : clover_incs,
47 cpp_args : [
48 clover_spirv_cpp_args, cpp_vis_args,
49 '-DLIBCLC_INCLUDEDIR="@0@/"'.format(dep_clc.get_pkgconfig_variable('includedir')),
50 '-DLIBCLC_LIBEXECDIR="@0@/"'.format(dep_clc.get_pkgconfig_variable('libexecdir')),
51 '-DCLANG_RESOURCE_DIR="@0@"'.format(join_paths(
52 dep_llvm.get_configtool_variable('libdir'), 'clang',
53 dep_llvm.version(), 'include',
54 )),
55 ],
56 dependencies : [dep_llvm, dep_elf],
57 override_options : clover_cpp_std,
58 )
59
60 clover_files = files(
61 'api/context.cpp',
62 'api/device.cpp',
63 'api/dispatch.cpp',
64 'api/dispatch.hpp',
65 'api/event.cpp',
66 'api/interop.cpp',
67 'api/kernel.cpp',
68 'api/memory.cpp',
69 'api/platform.cpp',
70 'api/program.cpp',
71 'api/queue.cpp',
72 'api/sampler.cpp',
73 'api/transfer.cpp',
74 'api/util.hpp',
75 'core/context.cpp',
76 'core/context.hpp',
77 'core/device.cpp',
78 'core/device.hpp',
79 'core/error.hpp',
80 'core/event.cpp',
81 'core/event.hpp',
82 'core/format.cpp',
83 'core/format.hpp',
84 'core/kernel.cpp',
85 'core/kernel.hpp',
86 'core/memory.cpp',
87 'core/memory.hpp',
88 'core/module.cpp',
89 'core/module.hpp',
90 'core/object.hpp',
91 'core/platform.cpp',
92 'core/platform.hpp',
93 'core/program.cpp',
94 'core/program.hpp',
95 'core/property.hpp',
96 'core/queue.cpp',
97 'core/queue.hpp',
98 'core/resource.cpp',
99 'core/resource.hpp',
100 'core/sampler.cpp',
101 'core/sampler.hpp',
102 'core/timestamp.cpp',
103 'core/timestamp.hpp',
104 'util/adaptor.hpp',
105 'util/algebra.hpp',
106 'util/algorithm.hpp',
107 'util/factor.hpp',
108 'util/functional.hpp',
109 'util/lazy.hpp',
110 'util/pointer.hpp',
111 'util/range.hpp',
112 'util/tuple.hpp',
113 )
114
115 libclover = static_library(
116 'clover',
117 [clover_files, sha1_h],
118 include_directories : clover_incs,
119 cpp_args : [clover_spirv_cpp_args, clover_cpp_args, cpp_vis_args],
120 link_with : [libclllvm],
121 override_options : clover_cpp_std,
122 )