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