]> git.pld-linux.org Git - packages/vulkan-sdk.git/blob - vulkan-sdk.spec
sample ICD build
[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 %define api_version 1.0.3
8 %define llvm_version    3.4.2
9
10 %define snap    20160223
11 # sdk-1.0.3 branch
12 %define loader_commit   b654da708be8f14e7f4c6f78df656229939422c8
13 # master branch
14 %define tools_commit    e5dccf86cf999ff9988be97337d0e3a3d508b085
15 # master branch
16 %define lg_commit       0a73713f0d664aa97a7e359f567a16d7c3fce359
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
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
32 Patch0:         system_glslang.patch
33 Patch1:         LunarGLASS-CMakeLists.patch
34 URL:            http://lunarg.com/vulkan-sdk/
35 %{?with_icd:BuildRequires:      Mesa-libGL-devel}
36 BuildRequires:  bison
37 %{?with_icd:BuildRequires:  clang}
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
50 %{?with_icd:BuildRequires:      xorg-lib-libpciaccess-devel}
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
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
134 %prep
135 %setup -q -c -a1 %{?with_icd:-a2}
136
137 mv Vulkan-LoaderAndValidationLayers-%{loader_commit} Vulkan-LoaderAndValidationLayers
138 mv VulkanTools-%{tools_commit} VulkanTools
139
140 %patch0 -p1
141
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
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
170
171 cd ../..
172
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
201 cd VulkanTools/build
202 %cmake \
203         -DBUILD_ICD=%{?with_icd:ON}%{!?with_icd:OFF} \
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 ../..
243
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
252 %ifarch %x8664
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}
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
265
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
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
280 %post   -n vulkan-loader -p /sbin/ldconfig
281 %postun -n vulkan-loader -p /sbin/ldconfig
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
315 %attr(755,root,root) %{_bindir}/vulkaninfo
316 %ifarch %x8664
317 %attr(755,root,root) %{_bindir}/vkreplay
318 %attr(755,root,root) %{_bindir}/vktrace
319 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_vktrace_layer.so
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
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
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}
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
This page took 0.083676 seconds and 4 git commands to generate.