]> git.pld-linux.org Git - packages/vulkan-sdk.git/blame - vulkan-sdk.spec
sample ICD build
[packages/vulkan-sdk.git] / vulkan-sdk.spec
CommitLineData
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
18Summary: LunarG Vulkan SDK
19Name: vulkan-sdk
20Version: 1.0.3.0
21Release: 3.s%{snap}.%{rel}
22License: MIT-like
23Group: Development
24Source0: https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/archive/%{loader_commit}/Vulkan-LoaderAndValidationLayers-s%{snap}.tar.gz
25# Source0-md5: 25e8092b69d15090af5cada36d4fc92d
26Source1: https://github.com/LunarG/VulkanTools/archive/%{tools_commit}/VulkanTools-s%{snap}.tar.gz
27# Source1-md5: 89ae56a0c0270a7043548bc30c99aa36
03dbfa8f
JK
28Source2: https://github.com/LunarG/LunarGLASS/archive/%{lg_commit}/LunarGLASS-%{snap}.tar.gz
29# Source2-md5: b0fb3253c782e1e539a5884dde8a31f8
30Source3: http://llvm.org/releases/%{llvm_version}/llvm-%{llvm_version}.src.tar.gz
31# Source3-md5: a20669f75967440de949ac3b1bad439c
0c2b688d 32Patch0: system_glslang.patch
03dbfa8f 33Patch1: LunarGLASS-CMakeLists.patch
0c2b688d 34URL: http://lunarg.com/vulkan-sdk/
03dbfa8f 35%{?with_icd:BuildRequires: Mesa-libGL-devel}
0c2b688d 36BuildRequires: bison
03dbfa8f 37%{?with_icd:BuildRequires: clang}
0c2b688d
JK
38BuildRequires: cmake
39BuildRequires: GLM
40BuildRequires: glslang
41BuildRequires: glslang-devel
42BuildRequires: graphviz
43BuildRequires: ImageMagick-devel
44BuildRequires: libpng
45BuildRequires: libxcb-devel
46BuildRequires: python3
47BuildRequires: python3-modules
48BuildRequires: spirv-tools-devel
49BuildRequires: udev-devel
03dbfa8f 50%{?with_icd:BuildRequires: xorg-lib-libpciaccess-devel}
0c2b688d
JK
51Requires: vulkan-debug-layers = %{version}-%{release}
52Requires: vulkan-devel = %{version}-%{release}
53Requires: vulkan-loader = %{version}-%{release}
54Requires: vulkan-tools = %{version}-%{release}
55Requires: vulkan-validation-layers = %{version}-%{release}
56BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
57
58%description
59Vulkan API Software Development Kit
60
61%package -n vulkan-loader
62Summary: Vulkan API loader
63License: MIT-like
64Group: Library
65Provides: vulkan(loader) = %{api_version}
66
67%description -n vulkan-loader
68Common loader for Vulkan API drivers.
69
70%package -n vulkan-validation-layers
71Summary: Validation layers for Vulkan
72Group: Development/Libraries
73Requires: %{name} = %{version}-%{release}
74
75%description -n vulkan-validation-layers
76Validation layers for Vulkan.
77
78%package -n vulkan-debug-layers
79Summary: Debug layers for Vulkan
80Group: Development/Libraries
81Requires: %{name} = %{version}-%{release}
82
83%description -n vulkan-debug-layers
84Debug layers for Vulkan.
85
86%package -n vulkan-devel
87Summary: Header files for the Vulkan API
88Summary(pl.UTF-8): Pliki nagłówkowe API Vulkan
89Group: Development/Libraries
90Requires: %{name} = %{version}-%{release}
91
92%description -n vulkan-devel
93Header files for the Vulkan API.
94
95%description -n vulkan-devel -l pl.UTF-8
96Pliki nagłówkowe API Vulkan.
97
98%package demos
99Summary: Vulkan demos
100Group: Development/Libraries
101Requires: vulkan(icd)
102Requires: vulkan-loader = %{version}-%{release}
103
104%description demos
105Vulkan demos.
106
107%package tools
108Summary: Vulkan tools
109Group: Development
110Suggests: vulkan(icd)
111Requires: vulkan-loader = %{version}-%{release}
112
113%description tools
114Vulkan tools.
115
03dbfa8f
JK
116%package icd-intel
117Summary: Experimental Vulkan driver for Intel GPUs
118Group: X11/Libraries
119Suggests: vulkan(loader)
120Provides: vulkan(icd) = 1.0.3
121
122%description icd-intel
123Experimental Vulkan driver for Intel GPUs.
124
125%package icd-nulldrv
126Summary: Dummy Vulkan driver
127Group: X11/Libraries
128Suggests: vulkan(loader)
129Provides: vulkan(icd) = 1.0.3
130
131%description icd-nulldrv
132Dummy Vulkan driver.
133
0c2b688d 134%prep
03dbfa8f 135%setup -q -c -a1 %{?with_icd:-a2}
0c2b688d
JK
136
137mv Vulkan-LoaderAndValidationLayers-%{loader_commit} Vulkan-LoaderAndValidationLayers
138mv VulkanTools-%{tools_commit} VulkanTools
139
140%patch0 -p1
141
03dbfa8f
JK
142%if %{with icd}
143mv LunarGLASS-%{lg_commit} LunarGLASS
144cd LunarGLASS/Core/LLVM/llvm-3.4
145tar -x --strip-components=1 --skip-old-files -f %{SOURCE3}
146cp -R ../../../../VulkanTools/LunarGLASS/* .
147cd ../../../..
148
149%patch1 -p1
150%endif
151
0c2b688d
JK
152ln -s Vulkan-LoaderAndValidationLayers LoaderAndValidationLayers
153
154%build
155install -d {Vulkan-LoaderAndValidationLayers,VulkanTools}/build
156cd 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}
166cd tests
167LC_ALL=C.utf-8 VK_LAYER_PATH=../layers LD_LIBRARY_PATH=../loader:../layers ./run_all_tests.sh
168cd ..
169%endif
03dbfa8f 170
0c2b688d
JK
171cd ../..
172
03dbfa8f
JK
173%if %{with icd}
174cd LunarGLASS/Core/LLVM/llvm-3.4
175install -d build
176cd build
177../%configure \
178 --disable-bindings \
179 --disable-curses \
180 --disable-terminfo
181
182REQUIRES_RTTI=1 %{__make}
183REQUIRES_RTTI=1 %{__make} install prefix=%{_prefix}/local DESTDIR=`pwd`/install
184
185cd ../../../..
186
187install -d build
188cd build
189%cmake \
190 -DGLSLANGINCLUDES=%{_includedir}/glslang \
191 -DGLSLANGLIBS=%{_libdir} \
192 ../
193%{__make}
194%{__make} install
195
196%{?with_tests:%{__make} test}
197
198cd ../..
199%endif
200
0c2b688d
JK
201cd VulkanTools/build
202%cmake \
03dbfa8f 203 -DBUILD_ICD=%{?with_icd:ON}%{!?with_icd:OFF} \
0c2b688d
JK
204 ../
205
206%{__make}
207cd ../..
208
209%install
210rm -rf $RPM_BUILD_ROOT
211install -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
218cd Vulkan-LoaderAndValidationLayers/build
219%{__make} install
220
221cp -p loader/libvulkan.so.1.0.3 $RPM_BUILD_ROOT%{_libdir}
222ln -s libvulkan.so.1.0.3 $RPM_BUILD_ROOT%{_libdir}/libvulkan.so
223ln -s libvulkan.so.1.0.3 $RPM_BUILD_ROOT%{_libdir}/libvulkan.so.1
224
225cp -p demos/vulkaninfo $RPM_BUILD_ROOT%{_bindir}/vulkaninfo
226cp -p demos/tri $RPM_BUILD_ROOT%{_bindir}/vulkan-tri
227cp -p demos/cube $RPM_BUILD_ROOT%{_bindir}/vulkan-cube
228
229cp -p install_staging/*.so $RPM_BUILD_ROOT%{_libdir}/vulkan/layer
230for f in layers/*.json ; do
231sed -e's@"library_path": "./@"library_path": "%{_libdir}/vulkan/layer/@' $f > $RPM_BUILD_ROOT%{_datadir}/vulkan/explicit_layer.d/$(basename $f)
232done
233
234cp -p libs/vkjson/libvkjson.a $RPM_BUILD_ROOT%{_libdir}
235cp -p libs/vkjson/vkjson_{info,unittest} $RPM_BUILD_ROOT%{_bindir}
236
237cp -p ../libs/vkjson/vkjson.h $RPM_BUILD_ROOT%{_includedir}
238cp -p ../include/vulkan/* $RPM_BUILD_ROOT%{_includedir}/vulkan
239
240cp -p ../demos/* $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
241
242cd ../..
03dbfa8f 243
0c2b688d
JK
244cd VulkanTools/build
245%{__make} install
246
247cp -p install_staging/*.so $RPM_BUILD_ROOT%{_libdir}/vulkan/layer
248for f in layers/*.json ; do
249sed -e's@"library_path": "./@"library_path": "%{_libdir}/vulkan/layer/@' $f > $RPM_BUILD_ROOT%{_datadir}/vulkan/explicit_layer.d/$(basename $f)
250done
251
a382f778 252%ifarch %x8664
0c2b688d
JK
253cp -p vktrace/libVkLayer_vktrace_layer.so $RPM_BUILD_ROOT%{_libdir}/vulkan/layer
254cp -p vktrace/vkreplay $RPM_BUILD_ROOT%{_bindir}
255cp -p vktrace/vktrace $RPM_BUILD_ROOT%{_bindir}
a382f778
JK
256%else
257cp -p vktrace/libVkLayer_vktrace_layer32.so $RPM_BUILD_ROOT%{_libdir}/vulkan/layer
258cp -p vktrace/vkreplay32 $RPM_BUILD_ROOT%{_bindir}
259cp -p vktrace/vktrace32 $RPM_BUILD_ROOT%{_bindir}
260rm $RPM_BUILD_ROOT%{_datadir}/vulkan/explicit_layer.d/VkLayer_vktrace_layer.json
261sed -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}
267cp -p icd/*/libVK_*.so $RPM_BUILD_ROOT%{_libdir}
268for f in icd/*/*.json ; do
269sed -e's@"library_path": "./@"library_path": "@' $f > $RPM_BUILD_ROOT%{_datadir}/vulkan/icd.d/$(basename $f)
270done
271%endif
0c2b688d
JK
272cd ../..
273
274cp -p VulkanTools/vktrace/README.md vktrace-README.md
275cp -p VulkanTools/vktrace/TODO.md vktrace-TODO.md
276
277%clean
278rm -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
This page took 0.079083 seconds and 4 git commands to generate.