]>
Commit | Line | Data |
---|---|---|
0c2b688d | 1 | # |
37fbe15c JK |
2 | # TODO: |
3 | # - update wayland patch so Wayland can be included together with XCB | |
4 | # again | |
5 | # | |
0c2b688d JK |
6 | # Conditional build: |
7 | %bcond_with tests # build with tests (require a working Vulkan | |
8 | # driver (ICD)) | |
9adfe309 | 9 | %bcond_with icd # build experimental Vulkan drivers |
37fbe15c | 10 | %bcond_with wayland # enable Wayland support in loader |
0c2b688d | 11 | |
5712831a JK |
12 | %ifnarch %{x8664} |
13 | %undefine with_icd | |
14 | %endif | |
15 | ||
37fbe15c | 16 | %define api_version 1.0.5 |
03dbfa8f | 17 | %define llvm_version 3.4.2 |
0c2b688d | 18 | |
37fbe15c JK |
19 | %define snap 20160312 |
20 | # sdk-1.0.5 branch | |
21 | %define tools_commit f69ba448ea3a56f5104535636e27b8b8ab543455 | |
03dbfa8f JK |
22 | # master branch |
23 | %define lg_commit 0a73713f0d664aa97a7e359f567a16d7c3fce359 | |
ace27fac | 24 | %define rel 7 |
0c2b688d JK |
25 | Summary: LunarG Vulkan SDK |
26 | Name: vulkan-sdk | |
37fbe15c JK |
27 | Version: 1.0.5.0 |
28 | Release: 0.s%{snap}.%{rel} | |
0c2b688d JK |
29 | License: MIT-like |
30 | Group: Development | |
37fbe15c JK |
31 | Source0: https://github.com/LunarG/VulkanTools/archive/%{tools_commit}/VulkanTools-s%{snap}.tar.gz |
32 | # Source0-md5: dab7bc3a32918a3e124a379b338f9ed2 | |
33 | Source1: https://github.com/LunarG/LunarGLASS/archive/%{lg_commit}/LunarGLASS-%{snap}.tar.gz | |
34 | # Source1-md5: b0fb3253c782e1e539a5884dde8a31f8 | |
35 | Source2: http://llvm.org/releases/%{llvm_version}/llvm-%{llvm_version}.src.tar.gz | |
36 | # Source2-md5: a20669f75967440de949ac3b1bad439c | |
0c2b688d | 37 | Patch0: system_glslang.patch |
03dbfa8f | 38 | Patch1: LunarGLASS-CMakeLists.patch |
b213a987 | 39 | Patch2: demos_out_of_src.patch |
97255b0b | 40 | Patch3: rpath.patch |
37fbe15c | 41 | Patch4: wayland.patch |
0c2b688d | 42 | URL: http://lunarg.com/vulkan-sdk/ |
03dbfa8f | 43 | %{?with_icd:BuildRequires: Mesa-libGL-devel} |
0c2b688d | 44 | BuildRequires: bison |
03dbfa8f | 45 | %{?with_icd:BuildRequires: clang} |
0c2b688d JK |
46 | BuildRequires: cmake |
47 | BuildRequires: GLM | |
37fbe15c JK |
48 | BuildRequires: glslang >= 3.0.s20160307 |
49 | BuildRequires: glslang-devel >= 3.0.s20160307 | |
0c2b688d JK |
50 | BuildRequires: graphviz |
51 | BuildRequires: ImageMagick-devel | |
52 | BuildRequires: libpng | |
53 | BuildRequires: libxcb-devel | |
54 | BuildRequires: python3 | |
55 | BuildRequires: python3-modules | |
37fbe15c | 56 | BuildRequires: spirv-tools-devel >= 1.0_rev3.s20160312 |
0c2b688d | 57 | BuildRequires: udev-devel |
03dbfa8f | 58 | %{?with_icd:BuildRequires: xorg-lib-libpciaccess-devel} |
37fbe15c JK |
59 | Requires: glslang >= 3.0.s20160307 |
60 | Requires: spirv-tools >= 1.0_rev3.s20160312 | |
a0190352 | 61 | Requires: %{name}-debug-layers = %{version}-%{release} |
0c2b688d JK |
62 | Requires: vulkan-devel = %{version}-%{release} |
63 | Requires: vulkan-loader = %{version}-%{release} | |
c5fea050 | 64 | Requires: vulkan-sdk-tools = %{version}-%{release} |
a0190352 | 65 | Requires: %{name}-validation-layers = %{version}-%{release} |
0c2b688d JK |
66 | BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) |
67 | ||
68 | %description | |
69 | Vulkan API Software Development Kit | |
70 | ||
71 | %package -n vulkan-loader | |
72 | Summary: Vulkan API loader | |
73 | License: MIT-like | |
74 | Group: Library | |
75 | Provides: vulkan(loader) = %{api_version} | |
76 | ||
77 | %description -n vulkan-loader | |
78 | Common loader for Vulkan API drivers. | |
79 | ||
a0190352 | 80 | %package validation-layers |
0c2b688d JK |
81 | Summary: Validation layers for Vulkan |
82 | Group: Development/Libraries | |
c5fea050 | 83 | Requires: vulkan-loader = %{version}-%{release} |
0c2b688d | 84 | |
a0190352 | 85 | %description validation-layers |
0c2b688d JK |
86 | Validation layers for Vulkan. |
87 | ||
a0190352 | 88 | %package debug-layers |
0c2b688d JK |
89 | Summary: Debug layers for Vulkan |
90 | Group: Development/Libraries | |
c5fea050 | 91 | Requires: vulkan-loader = %{version}-%{release} |
0c2b688d | 92 | |
a0190352 | 93 | %description debug-layers |
0c2b688d JK |
94 | Debug layers for Vulkan. |
95 | ||
96 | %package -n vulkan-devel | |
97 | Summary: Header files for the Vulkan API | |
98 | Summary(pl.UTF-8): Pliki nagłówkowe API Vulkan | |
99 | Group: Development/Libraries | |
c5fea050 | 100 | Requires: vulkan-loader = %{version}-%{release} |
0c2b688d JK |
101 | |
102 | %description -n vulkan-devel | |
103 | Header files for the Vulkan API. | |
104 | ||
105 | %description -n vulkan-devel -l pl.UTF-8 | |
106 | Pliki nagłówkowe API Vulkan. | |
107 | ||
108 | %package demos | |
109 | Summary: Vulkan demos | |
110 | Group: Development/Libraries | |
111 | Requires: vulkan(icd) | |
112 | Requires: vulkan-loader = %{version}-%{release} | |
113 | ||
114 | %description demos | |
115 | Vulkan demos. | |
116 | ||
117 | %package tools | |
118 | Summary: Vulkan tools | |
119 | Group: Development | |
120 | Suggests: vulkan(icd) | |
121 | Requires: vulkan-loader = %{version}-%{release} | |
122 | ||
123 | %description tools | |
124 | Vulkan tools. | |
125 | ||
03dbfa8f JK |
126 | %package icd-intel |
127 | Summary: Experimental Vulkan driver for Intel GPUs | |
128 | Group: X11/Libraries | |
129 | Suggests: vulkan(loader) | |
37fbe15c | 130 | Provides: vulkan(icd) = 1.0.5 |
03dbfa8f JK |
131 | |
132 | %description icd-intel | |
133 | Experimental Vulkan driver for Intel GPUs. | |
134 | ||
135 | %package icd-nulldrv | |
136 | Summary: Dummy Vulkan driver | |
137 | Group: X11/Libraries | |
138 | Suggests: vulkan(loader) | |
37fbe15c | 139 | Provides: vulkan(icd) = 1.0.5 |
03dbfa8f JK |
140 | |
141 | %description icd-nulldrv | |
142 | Dummy Vulkan driver. | |
143 | ||
0c2b688d | 144 | %prep |
37fbe15c | 145 | %setup -q -c %{?with_icd:-a1} |
0c2b688d | 146 | |
0c2b688d JK |
147 | mv VulkanTools-%{tools_commit} VulkanTools |
148 | ||
149 | %patch0 -p1 | |
b213a987 | 150 | %patch2 -p1 |
97255b0b | 151 | %patch3 -p1 |
37fbe15c | 152 | #%patch4 -p1 |
0c2b688d | 153 | |
03dbfa8f JK |
154 | %if %{with icd} |
155 | mv LunarGLASS-%{lg_commit} LunarGLASS | |
156 | cd LunarGLASS/Core/LLVM/llvm-3.4 | |
157 | tar -x --strip-components=1 --skip-old-files -f %{SOURCE3} | |
158 | cp -R ../../../../VulkanTools/LunarGLASS/* . | |
159 | cd ../../../.. | |
160 | ||
161 | %patch1 -p1 | |
162 | %endif | |
163 | ||
0c2b688d | 164 | %build |
0c2b688d | 165 | |
03dbfa8f JK |
166 | %if %{with icd} |
167 | cd LunarGLASS/Core/LLVM/llvm-3.4 | |
168 | install -d build | |
169 | cd build | |
170 | ../%configure \ | |
171 | --disable-bindings \ | |
172 | --disable-curses \ | |
173 | --disable-terminfo | |
174 | ||
175 | REQUIRES_RTTI=1 %{__make} | |
176 | REQUIRES_RTTI=1 %{__make} install prefix=%{_prefix}/local DESTDIR=`pwd`/install | |
177 | ||
178 | cd ../../../.. | |
179 | ||
180 | install -d build | |
181 | cd build | |
182 | %cmake \ | |
183 | -DGLSLANGINCLUDES=%{_includedir}/glslang \ | |
184 | -DGLSLANGLIBS=%{_libdir} \ | |
185 | ../ | |
186 | %{__make} | |
187 | %{__make} install | |
188 | ||
189 | %{?with_tests:%{__make} test} | |
190 | ||
191 | cd ../.. | |
192 | %endif | |
193 | ||
b213a987 | 194 | install -d VulkanTools/build |
0c2b688d | 195 | cd VulkanTools/build |
37fbe15c | 196 | |
0c2b688d | 197 | %cmake \ |
37fbe15c JK |
198 | -DCMAKE_INSTALL_DATADIR=share \ |
199 | -DCMAKE_INSTALL_SYSCONFDIR=etc \ | |
200 | -DBUILD_TESTS=%{?with_tests:ON}%{!?with_tests:OFF} \ | |
201 | -DBUILD_WSI_WAYLAND_SUPPORT=%{?with_wayland:ON}%{!?with_wayland:OFF} \ | |
03dbfa8f | 202 | -DBUILD_ICD=%{?with_icd:ON}%{!?with_icd:OFF} \ |
37fbe15c | 203 | ../ |
0c2b688d | 204 | %{__make} |
37fbe15c JK |
205 | |
206 | %if %{with tests} | |
207 | cd tests | |
208 | LC_ALL=C.utf-8 VK_LAYER_PATH=../layers LD_LIBRARY_PATH=../loader:../layers ./run_all_tests.sh | |
209 | cd .. | |
210 | %endif | |
211 | ||
0c2b688d JK |
212 | cd ../.. |
213 | ||
214 | %install | |
215 | rm -rf $RPM_BUILD_ROOT | |
216 | install -d $RPM_BUILD_ROOT{%{_datadir},%{_sysconfdir}}/vulkan/icd.d \ | |
217 | $RPM_BUILD_ROOT{%{_datadir},%{_sysconfdir}}/vulkan/{explicit,implicit}_layer.d \ | |
218 | $RPM_BUILD_ROOT{%{_bindir},%{_libdir}/vulkan/layer} \ | |
219 | $RPM_BUILD_ROOT%{_includedir}/vulkan \ | |
b213a987 | 220 | $RPM_BUILD_ROOT%{_datadir}/%{name}-demos \ |
0c2b688d JK |
221 | $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version} |
222 | ||
223 | ||
37fbe15c | 224 | cd VulkanTools/build |
0c2b688d JK |
225 | %{__make} install |
226 | ||
37fbe15c JK |
227 | cp -p loader/libvulkan.so.1.0.5 $RPM_BUILD_ROOT%{_libdir} |
228 | ln -s libvulkan.so.1.0.5 $RPM_BUILD_ROOT%{_libdir}/libvulkan.so | |
229 | ln -s libvulkan.so.1.0.5 $RPM_BUILD_ROOT%{_libdir}/libvulkan.so.1 | |
0c2b688d JK |
230 | |
231 | cp -p demos/vulkaninfo $RPM_BUILD_ROOT%{_bindir}/vulkaninfo | |
232 | cp -p demos/tri $RPM_BUILD_ROOT%{_bindir}/vulkan-tri | |
233 | cp -p demos/cube $RPM_BUILD_ROOT%{_bindir}/vulkan-cube | |
37fbe15c | 234 | cp -p demos/smoke/smoke $RPM_BUILD_ROOT%{_bindir}/vulkan-smoke |
b213a987 | 235 | cp -p demos/{lunarg.ppm,*-vert.spv,*-frag.spv} $RPM_BUILD_ROOT%{_datadir}/%{name}-demos |
0c2b688d JK |
236 | |
237 | cp -p install_staging/*.so $RPM_BUILD_ROOT%{_libdir}/vulkan/layer | |
238 | for f in layers/*.json ; do | |
239 | sed -e's@"library_path": "./@"library_path": "%{_libdir}/vulkan/layer/@' $f > $RPM_BUILD_ROOT%{_datadir}/vulkan/explicit_layer.d/$(basename $f) | |
240 | done | |
241 | ||
242 | cp -p libs/vkjson/libvkjson.a $RPM_BUILD_ROOT%{_libdir} | |
243 | cp -p libs/vkjson/vkjson_{info,unittest} $RPM_BUILD_ROOT%{_bindir} | |
244 | ||
245 | cp -p ../libs/vkjson/vkjson.h $RPM_BUILD_ROOT%{_includedir} | |
246 | cp -p ../include/vulkan/* $RPM_BUILD_ROOT%{_includedir}/vulkan | |
247 | ||
37fbe15c | 248 | cp -pr ../demos/* $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version} |
0c2b688d | 249 | |
b213a987 JK |
250 | # restore original demo sources in %{_examplesdir} |
251 | %patch2 -R -p3 -d $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version} | |
252 | rm -f $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/*.orig 2>/dev/null || : | |
253 | ||
a382f778 | 254 | %ifarch %x8664 |
0c2b688d JK |
255 | cp -p vktrace/libVkLayer_vktrace_layer.so $RPM_BUILD_ROOT%{_libdir}/vulkan/layer |
256 | cp -p vktrace/vkreplay $RPM_BUILD_ROOT%{_bindir} | |
257 | cp -p vktrace/vktrace $RPM_BUILD_ROOT%{_bindir} | |
a382f778 JK |
258 | %else |
259 | cp -p vktrace/libVkLayer_vktrace_layer32.so $RPM_BUILD_ROOT%{_libdir}/vulkan/layer | |
260 | cp -p vktrace/vkreplay32 $RPM_BUILD_ROOT%{_bindir} | |
261 | cp -p vktrace/vktrace32 $RPM_BUILD_ROOT%{_bindir} | |
262 | rm $RPM_BUILD_ROOT%{_datadir}/vulkan/explicit_layer.d/VkLayer_vktrace_layer.json | |
263 | sed -e's@"library_path": "./@"library_path": "%{_libdir}/vulkan/layer/@' \ | |
264 | -e's@libVkLayer_vktrace_layer.so@libVkLayer_vktrace_layer32.so@' \ | |
265 | layers/VkLayer_vktrace_layer.json > $RPM_BUILD_ROOT%{_datadir}/vulkan/explicit_layer.d/VkLayer_vktrace_layer32.json | |
266 | %endif | |
0c2b688d | 267 | |
03dbfa8f JK |
268 | %if %{with icd} |
269 | cp -p icd/*/libVK_*.so $RPM_BUILD_ROOT%{_libdir} | |
270 | for f in icd/*/*.json ; do | |
bbd66d6b | 271 | sed -e's@"library_path": "./@"library_path": "@' $f > $RPM_BUILD_ROOT%{_datadir}/vulkan/icd.d/%{name}-$(basename $f) |
03dbfa8f JK |
272 | done |
273 | %endif | |
0c2b688d JK |
274 | cd ../.. |
275 | ||
276 | cp -p VulkanTools/vktrace/README.md vktrace-README.md | |
277 | cp -p VulkanTools/vktrace/TODO.md vktrace-TODO.md | |
278 | ||
279 | %clean | |
280 | rm -rf $RPM_BUILD_ROOT | |
281 | ||
d8d42412 JK |
282 | %post -n vulkan-loader -p /sbin/ldconfig |
283 | %postun -n vulkan-loader -p /sbin/ldconfig | |
0c2b688d JK |
284 | |
285 | %files | |
286 | %defattr(644,root,root,755) | |
287 | ||
288 | %files -n vulkan-loader | |
289 | %defattr(644,root,root,755) | |
37fbe15c JK |
290 | %doc VulkanTools/LICENSE.txt |
291 | %doc VulkanTools/loader/{README.md,LoaderAndLayerInterface.md} | |
0c2b688d JK |
292 | %dir %{_sysconfdir}/vulkan |
293 | %dir %{_sysconfdir}/vulkan/icd.d | |
294 | %dir %{_sysconfdir}/vulkan/explicit_layer.d | |
295 | %dir %{_sysconfdir}/vulkan/implicit_layer.d | |
296 | %dir %{_datadir}/vulkan | |
297 | %dir %{_datadir}/vulkan/icd.d | |
298 | %dir %{_datadir}/vulkan/explicit_layer.d | |
299 | %dir %{_datadir}/vulkan/implicit_layer.d | |
300 | %{_libdir}/libvulkan.so.1.*.* | |
301 | %ghost %{_libdir}/libvulkan.so.1 | |
302 | %dir %{_libdir}/vulkan | |
303 | %dir %{_libdir}/vulkan/layer | |
304 | ||
305 | %files demos | |
306 | %defattr(644,root,root,755) | |
37fbe15c | 307 | %doc VulkanTools/LICENSE.txt |
0c2b688d | 308 | %attr(755,root,root) %{_bindir}/vulkan-cube |
37fbe15c JK |
309 | %attr(755,root,root) %{_bindir}/vulkan-smoke |
310 | %attr(755,root,root) %{_bindir}/vulkan-tri | |
b213a987 | 311 | %{_datadir}/%{name}-demos |
0c2b688d JK |
312 | |
313 | %files tools | |
314 | %defattr(644,root,root,755) | |
315 | %doc VulkanTools/LICENSE.txt | |
316 | %doc vktrace-README.md vktrace-TODO.md | |
317 | %attr(755,root,root) %{_bindir}/vkjson_info | |
318 | %attr(755,root,root) %{_bindir}/vkjson_unittest | |
a382f778 JK |
319 | %attr(755,root,root) %{_bindir}/vulkaninfo |
320 | %ifarch %x8664 | |
0c2b688d JK |
321 | %attr(755,root,root) %{_bindir}/vkreplay |
322 | %attr(755,root,root) %{_bindir}/vktrace | |
0c2b688d | 323 | %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_vktrace_layer.so |
a382f778 JK |
324 | %{_datadir}/vulkan/explicit_layer.d/VkLayer_vktrace_layer.json |
325 | %else | |
326 | %attr(755,root,root) %{_bindir}/vkreplay32 | |
327 | %attr(755,root,root) %{_bindir}/vktrace32 | |
328 | %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_vktrace_layer32.so | |
329 | %{_datadir}/vulkan/explicit_layer.d/VkLayer_vktrace_layer32.json | |
330 | %endif | |
0c2b688d | 331 | |
a0190352 | 332 | %files validation-layers |
0c2b688d | 333 | %defattr(644,root,root,755) |
37fbe15c JK |
334 | %doc VulkanTools/LICENSE.txt |
335 | %doc VulkanTools/layers/{README.md,vk_layer_settings.txt} | |
0c2b688d JK |
336 | %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_device_limits.so |
337 | %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_draw_state.so | |
338 | %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_image.so | |
339 | %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_mem_tracker.so | |
340 | %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_object_tracker.so | |
341 | %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_param_checker.so | |
342 | %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_swapchain.so | |
343 | %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_threading.so | |
344 | %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_unique_objects.so | |
345 | %attr(755,root,root) %{_libdir}/vulkan/layer/liblayer_utils.so | |
346 | %{_datadir}/vulkan/explicit_layer.d/VkLayer_device_limits.json | |
347 | %{_datadir}/vulkan/explicit_layer.d/VkLayer_draw_state.json | |
348 | %{_datadir}/vulkan/explicit_layer.d/VkLayer_image.json | |
349 | %{_datadir}/vulkan/explicit_layer.d/VkLayer_mem_tracker.json | |
350 | %{_datadir}/vulkan/explicit_layer.d/VkLayer_object_tracker.json | |
351 | %{_datadir}/vulkan/explicit_layer.d/VkLayer_param_checker.json | |
352 | %{_datadir}/vulkan/explicit_layer.d/VkLayer_swapchain.json | |
353 | %{_datadir}/vulkan/explicit_layer.d/VkLayer_threading.json | |
354 | %{_datadir}/vulkan/explicit_layer.d/VkLayer_unique_objects.json | |
355 | ||
a0190352 | 356 | %files debug-layers |
0c2b688d JK |
357 | %defattr(644,root,root,755) |
358 | %doc VulkanTools/LICENSE.txt | |
359 | %doc VulkanTools/layers/{README.md,vk_layer_settings.txt} | |
360 | %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_api_dump.so | |
361 | %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_basic.so | |
362 | %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_generic.so | |
363 | %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_multi.so | |
364 | %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_screenshot.so | |
365 | %{_datadir}/vulkan/explicit_layer.d/VkLayer_api_dump.json | |
366 | %{_datadir}/vulkan/explicit_layer.d/VkLayer_basic.json | |
367 | %{_datadir}/vulkan/explicit_layer.d/VkLayer_generic.json | |
368 | %{_datadir}/vulkan/explicit_layer.d/VkLayer_multi.json | |
369 | %{_datadir}/vulkan/explicit_layer.d/VkLayer_screenshot.json | |
0c2b688d JK |
370 | |
371 | %files -n vulkan-devel | |
372 | %defattr(644,root,root,755) | |
37fbe15c | 373 | %doc VulkanTools/{LICENSE.txt,README.md} |
0c2b688d JK |
374 | %{_libdir}/libvulkan.so |
375 | %{_libdir}/libvkjson.a | |
376 | %{_includedir}/vulkan | |
377 | %{_includedir}/vkjson.h | |
378 | %{_examplesdir}/%{name}-%{version} | |
03dbfa8f JK |
379 | |
380 | %if %{with icd} | |
381 | %files icd-intel | |
382 | %defattr(644,root,root,755) | |
383 | %doc VulkanTools/LICENSE.txt | |
384 | %attr(755,root,root) %{_libdir}/libVK_i965.so | |
bbd66d6b | 385 | %{_datadir}/vulkan/icd.d/%{name}-intel_icd.json |
03dbfa8f JK |
386 | |
387 | %files icd-nulldrv | |
388 | %defattr(644,root,root,755) | |
389 | %doc VulkanTools/LICENSE.txt | |
390 | %attr(755,root,root) %{_libdir}/libVK_nulldrv.so | |
bbd66d6b | 391 | %{_datadir}/vulkan/icd.d/%{name}-nulldrv_icd.json |
03dbfa8f | 392 | %endif |