]> git.pld-linux.org Git - packages/vulkan-sdk.git/blob - vulkan-sdk.spec
858f1a7620c30c9ed399a9bc654bff25accfbd59
[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_with     icd             # build experimental Vulkan drivers
6 %bcond_without  wayland         # enable Wayland support in loader
7 %bcond_without  xlib            # enable XLib support in loader
8
9 %ifnarch %{x8664}
10 %undefine       with_icd
11 %endif
12
13 %define api_version 1.0.8
14 %define llvm_version    3.4.2
15
16 %define snap    2016012
17 # sdk-1.0.8 branch
18 %define tools_commit    0ee123463a4ea5878aea9f6884830baecfd56d24
19 # master branch
20 %define lg_commit       0a73713f0d664aa97a7e359f567a16d7c3fce359
21 %define rel     1
22 Summary:        LunarG Vulkan SDK
23 Name:           vulkan-sdk
24 Version:        1.0.8.0
25 Release:        0.s%{snap}.%{rel}
26 License:        MIT-like
27 Group:          Development
28 Source0:        https://github.com/LunarG/VulkanTools/archive/%{tools_commit}/VulkanTools-s%{snap}.tar.gz
29 # Source0-md5:  ff6af5dbcc3bb2354a8e336dd03c18bb
30 Source1:        https://github.com/LunarG/LunarGLASS/archive/%{lg_commit}/LunarGLASS-%{snap}.tar.gz
31 # Source1-md5:  b0fb3253c782e1e539a5884dde8a31f8
32 Source2:        http://llvm.org/releases/%{llvm_version}/llvm-%{llvm_version}.src.tar.gz
33 # Source2-md5:  a20669f75967440de949ac3b1bad439c
34 Patch0:         system_glslang_and_spirv-tools.patch
35 Patch1:         demos_out_of_src.patch
36 Patch2:         rpath.patch
37 Patch3:         always_xcb.patch
38 Patch4:         vktrace_wayland.patch
39 # LunarGLASS patches
40 Patch100:       LunarGLASS-CMakeLists.patch
41 URL:            http://lunarg.com/vulkan-sdk/
42 %{?with_icd:BuildRequires:      Mesa-libGL-devel}
43 BuildRequires:  bison
44 %{?with_icd:BuildRequires:  clang}
45 BuildRequires:  cmake
46 BuildRequires:  GLM
47 BuildRequires:  glslang >= 3.0.s20160325
48 BuildRequires:  glslang-devel >= 3.0.s20160325
49 BuildRequires:  graphviz
50 BuildRequires:  ImageMagick-devel
51 BuildRequires:  libpng
52 BuildRequires:  libxcb-devel
53 BuildRequires:  python3
54 BuildRequires:  python3-lxml
55 BuildRequires:  python3-modules
56 BuildRequires:  spirv-tools-devel >= 1.0_rev3.s20160329
57 BuildRequires:  udev-devel
58 %{?with_icd:BuildRequires:      xorg-lib-libpciaccess-devel}
59 Requires:       glslang >= 3.0.s20160325
60 Requires:       spirv-tools >= 1.0_rev3.s20160329
61 Requires:       %{name}-debug-layers = %{version}-%{release}
62 Requires:       vulkan-devel = %{version}-%{release}
63 Requires:       vulkan-loader = %{version}-%{release}
64 Requires:       vulkan-sdk-tools = %{version}-%{release}
65 Requires:       %{name}-validation-layers = %{version}-%{release}
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
80 %package validation-layers
81 Summary:        Validation layers for Vulkan
82 Group:          Development/Libraries
83 Requires:       vulkan-loader = %{version}-%{release}
84
85 %description validation-layers
86 Validation layers for Vulkan.
87
88 %package debug-layers
89 Summary:        Debug layers for Vulkan
90 Group:          Development/Libraries
91 Requires:       vulkan-loader = %{version}-%{release}
92
93 %description debug-layers
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
100 Requires:       vulkan-loader = %{version}-%{release}
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
126 %package icd-intel
127 Summary:        Experimental Vulkan driver for Intel GPUs
128 Group:          X11/Libraries
129 Suggests:       vulkan(loader)
130 Provides:       vulkan(icd) = 1.0.8
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)
139 Provides:       vulkan(icd) = 1.0.8
140
141 %description icd-nulldrv
142 Dummy Vulkan driver.
143
144 %prep
145 %setup -q -c %{?with_icd:-a1}
146
147 mv VulkanTools-%{tools_commit} VulkanTools
148
149 %patch0 -p1
150 %patch1 -p1
151 %patch2 -p1
152 %patch3 -p1
153 %patch4 -p1
154
155 %if %{with icd}
156 mv LunarGLASS-%{lg_commit} LunarGLASS
157 cd LunarGLASS/Core/LLVM/llvm-3.4
158 tar -x --strip-components=1 --skip-old-files -f %{SOURCE3}
159 cp -R ../../../../VulkanTools/LunarGLASS/* .
160 cd ../../../..
161
162 %patch100 -p1
163 %endif
164
165 %build
166
167 %if %{with icd}
168 cd LunarGLASS/Core/LLVM/llvm-3.4
169 install -d build
170 cd build
171 ../%configure \
172         --disable-bindings \
173         --disable-curses \
174         --disable-terminfo
175
176 REQUIRES_RTTI=1 %{__make}
177 REQUIRES_RTTI=1 %{__make} install prefix=%{_prefix}/local DESTDIR=`pwd`/install
178
179 cd ../../../..
180
181 install -d build
182 cd build
183 %cmake \
184         -DGLSLANGINCLUDES=%{_includedir}/glslang \
185         -DGLSLANGLIBS=%{_libdir} \
186         ../
187 %{__make}
188 %{__make} install
189
190 %{?with_tests:%{__make} test}
191
192 cd ../..
193 %endif
194
195 install -d VulkanTools/build
196 cd VulkanTools/build
197
198 %cmake \
199         -DCMAKE_INSTALL_DATADIR=share \
200         -DCMAKE_INSTALL_SYSCONFDIR=etc \
201         -DBUILD_TESTS=%{?with_tests:ON}%{!?with_tests:OFF} \
202         -DBUILD_WSI_WAYLAND_SUPPORT=%{?with_wayland:ON}%{!?with_wayland:OFF} \
203         -DBUILD_WSI_XLIB_SUPPORT=%{?with_xlib:ON}%{!?with_xlib:OFF} \
204         -DBUILD_ICD=%{?with_icd:ON}%{!?with_icd:OFF} \
205                 ../
206 %{__make}
207
208 %if %{with tests}
209 cd tests
210 LC_ALL=C.utf-8 VK_LAYER_PATH=../layers LD_LIBRARY_PATH=../loader:../layers ./run_all_tests.sh
211 cd ..
212 %endif
213
214 cd ../..
215
216 %install
217 rm -rf $RPM_BUILD_ROOT
218 install -d $RPM_BUILD_ROOT{%{_datadir},%{_sysconfdir}}/vulkan/icd.d \
219 $RPM_BUILD_ROOT{%{_datadir},%{_sysconfdir}}/vulkan/{explicit,implicit}_layer.d \
220         $RPM_BUILD_ROOT{%{_bindir},%{_libdir}/vulkan/layer} \
221         $RPM_BUILD_ROOT%{_includedir}/vulkan \
222         $RPM_BUILD_ROOT%{_datadir}/%{name}-demos \
223         $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
224
225
226 cd VulkanTools/build
227 %{__make} install
228
229 cp -p loader/libvulkan.so.1.0.8 $RPM_BUILD_ROOT%{_libdir}
230 ln -s libvulkan.so.1.0.8 $RPM_BUILD_ROOT%{_libdir}/libvulkan.so
231 ln -s libvulkan.so.1.0.8 $RPM_BUILD_ROOT%{_libdir}/libvulkan.so.1
232
233 cp -p demos/vulkaninfo $RPM_BUILD_ROOT%{_bindir}/vulkaninfo
234 cp -p demos/tri $RPM_BUILD_ROOT%{_bindir}/vulkan-tri
235 cp -p demos/cube $RPM_BUILD_ROOT%{_bindir}/vulkan-cube
236 cp -p demos/smoketest $RPM_BUILD_ROOT%{_bindir}/vulkan-smoketest
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 layersvt/*.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 -pr ../demos/* $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
251
252 # restore original demo sources in %{_examplesdir}
253 %patch1 -R -p3 -d $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
254 rm -f $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/*.orig 2>/dev/null || :
255
256 %ifarch %x8664
257 cp -p vktrace/libVkLayer_vktrace_layer.so $RPM_BUILD_ROOT%{_libdir}/vulkan/layer
258 cp -p vktrace/vkreplay $RPM_BUILD_ROOT%{_bindir}
259 cp -p vktrace/vktrace $RPM_BUILD_ROOT%{_bindir}
260 sed -e's@"library_path": "../vktrace/@"library_path": "%{_libdir}/vulkan/layer/@' \
261         layersvt/VkLayer_vktrace_layer.json > $RPM_BUILD_ROOT%{_datadir}/vulkan/explicit_layer.d/VkLayer_vktrace_layer.json
262 %else
263 cp -p vktrace/libVkLayer_vktrace_layer32.so $RPM_BUILD_ROOT%{_libdir}/vulkan/layer
264 cp -p vktrace/vkreplay32 $RPM_BUILD_ROOT%{_bindir}
265 cp -p vktrace/vktrace32 $RPM_BUILD_ROOT%{_bindir}
266 rm $RPM_BUILD_ROOT%{_datadir}/vulkan/explicit_layer.d/VkLayer_vktrace_layer.json
267 sed -e's@"library_path": "../vktrace/@"library_path": "%{_libdir}/vulkan/layer/@' \
268     -e's@libVkLayer_vktrace_layer.so@libVkLayer_vktrace_layer32.so@' \
269         layersvt/VkLayer_vktrace_layer.json > $RPM_BUILD_ROOT%{_datadir}/vulkan/explicit_layer.d/VkLayer_vktrace_layer32.json
270 %endif
271
272 %if %{with icd}
273 cp -p icd/*/libVK_*.so $RPM_BUILD_ROOT%{_libdir}
274 for f in icd/*/*.json ; do
275 sed -e's@"library_path": "./@"library_path": "@' $f > $RPM_BUILD_ROOT%{_datadir}/vulkan/icd.d/%{name}-$(basename $f)
276 done
277 %endif
278 cd ../..
279
280 cp -p VulkanTools/vktrace/README.md vktrace-README.md
281 cp -p VulkanTools/vktrace/TODO.md vktrace-TODO.md
282
283 %clean
284 rm -rf $RPM_BUILD_ROOT
285
286 %post   -n vulkan-loader -p /sbin/ldconfig
287 %postun -n vulkan-loader -p /sbin/ldconfig
288
289 %files
290 %defattr(644,root,root,755)
291
292 %files -n vulkan-loader
293 %defattr(644,root,root,755)
294 %doc VulkanTools/LICENSE.txt
295 %doc VulkanTools/loader/{README.md,LoaderAndLayerInterface.md}
296 %dir %{_sysconfdir}/vulkan
297 %dir %{_sysconfdir}/vulkan/icd.d
298 %dir %{_sysconfdir}/vulkan/explicit_layer.d
299 %dir %{_sysconfdir}/vulkan/implicit_layer.d
300 %dir %{_datadir}/vulkan
301 %dir %{_datadir}/vulkan/icd.d
302 %dir %{_datadir}/vulkan/explicit_layer.d
303 %dir %{_datadir}/vulkan/implicit_layer.d
304 %{_libdir}/libvulkan.so.1.*.*
305 %ghost %{_libdir}/libvulkan.so.1
306 %dir %{_libdir}/vulkan
307 %dir %{_libdir}/vulkan/layer
308
309 %files demos
310 %defattr(644,root,root,755)
311 %doc VulkanTools/LICENSE.txt
312 %attr(755,root,root) %{_bindir}/vulkan-cube
313 %attr(755,root,root) %{_bindir}/vulkan-smoketest
314 %attr(755,root,root) %{_bindir}/vulkan-tri
315 %{_datadir}/%{name}-demos
316
317 %files tools
318 %defattr(644,root,root,755)
319 %doc VulkanTools/LICENSE.txt
320 %doc vktrace-README.md vktrace-TODO.md
321 %attr(755,root,root) %{_bindir}/vkjson_info
322 %attr(755,root,root) %{_bindir}/vkjson_unittest
323 %attr(755,root,root) %{_bindir}/vulkaninfo
324 %ifarch %x8664
325 %attr(755,root,root) %{_bindir}/vkreplay
326 %attr(755,root,root) %{_bindir}/vktrace
327 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_vktrace_layer.so
328 %{_datadir}/vulkan/explicit_layer.d/VkLayer_vktrace_layer.json
329 %else
330 %attr(755,root,root) %{_bindir}/vkreplay32
331 %attr(755,root,root) %{_bindir}/vktrace32
332 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_vktrace_layer32.so
333 %{_datadir}/vulkan/explicit_layer.d/VkLayer_vktrace_layer32.json
334 %endif
335
336 %files validation-layers
337 %defattr(644,root,root,755)
338 %doc VulkanTools/LICENSE.txt
339 %doc VulkanTools/layers/{README.md,vk_layer_settings.txt}
340 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_core_validation.so
341 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_device_limits.so
342 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_image.so
343 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_object_tracker.so
344 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_parameter_validation.so
345 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_swapchain.so
346 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_threading.so
347 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_unique_objects.so
348 %attr(755,root,root) %{_libdir}/vulkan/layer/liblayer_utils.so
349 %{_datadir}/vulkan/explicit_layer.d/VkLayer_core_validation.json
350 %{_datadir}/vulkan/explicit_layer.d/VkLayer_device_limits.json
351 %{_datadir}/vulkan/explicit_layer.d/VkLayer_image.json
352 %{_datadir}/vulkan/explicit_layer.d/VkLayer_object_tracker.json
353 %{_datadir}/vulkan/explicit_layer.d/VkLayer_parameter_validation.json
354 %{_datadir}/vulkan/explicit_layer.d/VkLayer_swapchain.json
355 %{_datadir}/vulkan/explicit_layer.d/VkLayer_threading.json
356 %{_datadir}/vulkan/explicit_layer.d/VkLayer_unique_objects.json
357
358 %files debug-layers
359 %defattr(644,root,root,755)
360 %doc VulkanTools/LICENSE.txt
361 %doc VulkanTools/layersvt/{README.md,vk_layer_settings.txt}
362 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_api_dump.so
363 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_basic.so
364 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_generic.so
365 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_multi.so
366 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_screenshot.so
367 %attr(755,root,root) %{_libdir}/vulkan/layer/liblayer_utilsvt.so
368 %{_datadir}/vulkan/explicit_layer.d/VkLayer_api_dump.json
369 %{_datadir}/vulkan/explicit_layer.d/VkLayer_basic.json
370 %{_datadir}/vulkan/explicit_layer.d/VkLayer_generic.json
371 %{_datadir}/vulkan/explicit_layer.d/VkLayer_multi.json
372 %{_datadir}/vulkan/explicit_layer.d/VkLayer_screenshot.json
373
374 %files -n vulkan-devel
375 %defattr(644,root,root,755)
376 %doc VulkanTools/{LICENSE.txt,README.md}
377 %{_libdir}/libvulkan.so
378 %{_libdir}/libvkjson.a
379 %{_includedir}/vulkan
380 %{_includedir}/vkjson.h
381 %{_examplesdir}/%{name}-%{version}
382
383 %if %{with icd}
384 %files icd-intel
385 %defattr(644,root,root,755)
386 %doc VulkanTools/LICENSE.txt
387 %attr(755,root,root) %{_libdir}/libVK_i965.so
388 %{_datadir}/vulkan/icd.d/%{name}-intel_icd.json
389
390 %files icd-nulldrv
391 %defattr(644,root,root,755)
392 %doc VulkanTools/LICENSE.txt
393 %attr(755,root,root) %{_libdir}/libVK_nulldrv.so
394 %{_datadir}/vulkan/icd.d/%{name}-nulldrv_icd.json
395 %endif
This page took 0.078472 seconds and 2 git commands to generate.