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