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