3 # - investigate why vktrace does not work
7 %bcond_with tests # run tests (require a working Vulkan driver (ICD))
8 %bcond_with mir # Mir support in loader
9 %bcond_without wayland # Wayland support in loader
10 %bcond_without x11 # XLib support in loader
12 %define api_version 1.0.68
13 # see submodules/Vulkan-LoaderAndValidationLayers in git
14 %define lvl_rev 65c23aec1365c0a727323af6f331b0773b4fc1de
16 Summary: LunarG Vulkan SDK
17 Summary(pl.UTF-8): Pakiet programistyczny (SDK) LunarG Vulkan
21 License: Apache v2.0, parts MIT-like
23 Source0: https://github.com/LunarG/VulkanTools/archive/sdk-%{version}/VulkanTools-%{version}.tar.gz
24 # Source0-md5: 34f9b94a9c698bd6f62d1a0b8c1cc1bc
25 Source1: https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/archive/%{lvl_rev}/Vulkan-LoaderAndValidationLayers-%{lvl_rev}.tar.gz
26 # Source1-md5: 6da35fb1d4ba687e1d67c39aaa474c4b
27 Patch0: system_glslang_and_spirv-tools.patch
28 Patch1: demos_out_of_src.patch
30 Patch3: %{name}-c++.patch
32 Patch5: system_jsoncpp.patch
33 URL: http://lunarg.com/vulkan-sdk/
35 BuildRequires: Qt5Core-devel >= 5
36 BuildRequires: Qt5Gui-devel >= 5
37 BuildRequires: Qt5Svg-devel >= 5
38 BuildRequires: Qt5Widgets-devel >= 5
40 BuildRequires: cmake >= 3.0
41 %if %{with tests} && %(locale -a | grep -q '^C\.UTF-8$'; echo $?)
42 BuildRequires: glibc-localedb-all
44 BuildRequires: glslang >= 3.0.s20180205
45 BuildRequires: glslang-devel >= 3.0.s20180205
46 BuildRequires: graphviz
47 BuildRequires: ImageMagick-devel
48 BuildRequires: jsoncpp-devel
50 BuildRequires: libstdc++-devel >= 6:4.7
51 BuildRequires: libxcb-devel
52 %{?with_mir:BuildRequires: mir-devel}
53 BuildRequires: pkgconfig
54 BuildRequires: python3 >= 1:3
55 BuildRequires: python3-lxml
56 BuildRequires: python3-modules >= 1:3
57 BuildRequires: qt5-build >= 5
58 BuildRequires: rpmbuild(macros) >= 1.605
59 BuildRequires: spirv-tools-devel >= v2018.1-0.s20180210
60 BuildRequires: udev-devel
61 %{?with_wayland:BuildRequires: wayland-devel}
62 %{?with_x11:BuildRequires: xorg-lib-libX11-devel}
63 Requires: glslang >= 3.0.s20180205
64 Requires: spirv-tools >= v2018.1-0.s20180210
65 Requires: %{name}-debug-layers = %{version}-%{release}
66 Requires: vulkan-devel = %{version}-%{release}
67 Requires: vulkan-loader = %{version}-%{release}
68 Requires: vulkan-sdk-tools = %{version}-%{release}
69 Requires: %{name}-validation-layers = %{version}-%{release}
70 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
79 Vulkan API Software Development Kit.
81 %description -l pl.UTF-8
82 Pakiet programistyczny (SDK) Vulkan API
84 %package -n vulkan-loader
85 Summary: Vulkan API loader
86 Summary(pl.UTF-8): Biblioteka wczytująca sterowniki Vulkan
88 Provides: vulkan(loader) = %{api_version}
90 %description -n vulkan-loader
91 Common loader for Vulkan API drivers.
93 %description -n vulkan-loader -l pl.UTF-8
94 Wspólna biblioteka wczytująca sterowniki Vulkan.
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}
102 %description -n vulkan-devel
103 Header files for the Vulkan API.
105 %description -n vulkan-devel -l pl.UTF-8
106 Pliki nagłówkowe API Vulkan.
109 Summary: Vulkan tools
110 Summary(pl.UTF-8): Narzędzia Vulkana
111 Group: Development/Tools
112 Suggests: vulkan(icd)
113 Requires: vulkan-loader = %{version}-%{release}
118 %description tools -l pl.UTF-8
121 %package tools-vktraceviewer
122 Summary: Vulkan trace viewer
123 Summary(pl.UTF-8): Przeglądarka śladów Vulkana
124 Group: Development/Tools
125 Requires: %{name}-tools = %{version}-%{release}
127 %description tools-vktraceviewer
130 %description tools-vktraceviewer -l pl.UTF-8
131 Przeglądarka śladów Vulkana.
133 %package validation-layers
134 Summary: Validation layers for Vulkan
135 Summary(pl.UTF-8): Warstwy sprawdzania poprawności dla Vulkana
136 Group: Development/Libraries
137 Requires: vulkan-loader = %{version}-%{release}
139 %description validation-layers
140 Validation layers for Vulkan.
142 %description validation-layers -l pl.UTF-8
143 Warstwy sprawdzania poprawności dla Vulkana.
145 %package debug-layers
146 Summary: Debug layers for Vulkan
147 Summary(pl.UTF-8): Warstwy diagnostyczne dla Vulkana
148 Group: Development/Libraries
149 Requires: vulkan-loader = %{version}-%{release}
151 %description debug-layers
152 Debug layers for Vulkan.
154 %description debug-layers -l pl.UTF-8
155 Warstwy diagnostyczne dla Vulkana.
158 Summary: Vulkan demos
159 Summary(pl.UTF-8): Programy demonstracyjne Vulkana
160 Group: Development/Libraries
161 Requires: vulkan(icd)
162 Requires: vulkan-loader = %{version}-%{release}
167 %description demos -l pl.UTF-8
168 Programy demonstracyjne Vulkana.
171 %setup -qn VulkanTools-sdk-%{version}
172 %{__tar} xzf %{SOURCE1} -C submodules/Vulkan-LoaderAndValidationLayers --strip-components=1
181 find . -name '*.orig' | xargs -r rm -f
183 install -d submodules/Vulkan-LoaderAndValidationLayers/external/glslang/External/spirv-tools
184 # spirv-tools commit ID
185 echo '1d7b1423f939027da9a9524765a36fa71be265cd' > submodules/Vulkan-LoaderAndValidationLayers/external/glslang/External/spirv-tools/.git_rev
191 # .pc file creation expect CMAKE_INSTALL_LIBDIR to be relative (to CMAKE_INSTALL_PREFIX)
193 -DCMAKE_ASM-ATT_COMPILER=%{__as} \
194 -DCMAKE_INSTALL_LIBDIR=%{_lib} \
195 -DJSONCPP_INCLUDE_DIR=/usr/include/jsoncpp \
196 -DBUILD_TESTS=%{?with_tests:ON}%{!?with_tests:OFF} \
197 -DBUILD_WSI_MIR_SUPPORT=%{?with_mir:ON}%{!?with_mir:OFF} \
198 -DBUILD_WSI_WAYLAND_SUPPORT=%{?with_wayland:ON}%{!?with_wayland:OFF} \
199 -DBUILD_WSI_XLIB_SUPPORT=%{?with_x11:ON}%{!?with_x11:OFF} \
206 LC_ALL=C.UTF-8 VK_LAYER_PATH=../layers LD_LIBRARY_PATH=../loader:../layers ./run_all_tests.sh
213 rm -rf $RPM_BUILD_ROOT
214 install -d $RPM_BUILD_ROOT{%{_datadir},%{_sysconfdir}}/vulkan/icd.d \
215 $RPM_BUILD_ROOT{%{_datadir},%{_sysconfdir}}/vulkan/{explicit,implicit}_layer.d \
216 $RPM_BUILD_ROOT%{_bindir} \
217 $RPM_BUILD_ROOT%{_includedir}/vulkan \
218 $RPM_BUILD_ROOT%{_datadir}/%{name}-demos \
219 $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
221 %{__make} -C build install \
222 DESTDIR=$RPM_BUILD_ROOT
224 install build/submodules/Vulkan-LoaderAndValidationLayers/demos/cube $RPM_BUILD_ROOT%{_bindir}/vulkan-cube
225 %{__mv} $RPM_BUILD_ROOT%{_bindir}/{smoketest,vulkan-smoketest}
226 cp -p build/submodules/Vulkan-LoaderAndValidationLayers/demos/lunarg.ppm $RPM_BUILD_ROOT%{_datadir}/%{name}-demos
228 %{__mv} $RPM_BUILD_ROOT%{_sysconfdir}/vulkan/explicit_layer.d/* $RPM_BUILD_ROOT%{_datadir}/vulkan/explicit_layer.d
229 %if "%{binsuf}" != ""
230 sed -i -e's@libVkLayer_vktrace_layer.so@libVkLayer_vktrace_layer%{binsuf}.so@' \
231 $RPM_BUILD_ROOT%{_datadir}/vulkan/explicit_layer.d/VkLayer_vktrace_layer.json
232 %{__mv} $RPM_BUILD_ROOT%{_datadir}/vulkan/explicit_layer.d/{VkLayer_vktrace_layer,VkLayer_vktrace_layer%{binsuf}}.json
235 install build/submodules/Vulkan-LoaderAndValidationLayers/libs/vkjson/vkjson_{info,unittest} $RPM_BUILD_ROOT%{_bindir}
236 cp -p build/submodules/Vulkan-LoaderAndValidationLayers/libs/vkjson/libvkjson.a $RPM_BUILD_ROOT%{_libdir}
237 cp -p submodules/Vulkan-LoaderAndValidationLayers/libs/vkjson/vkjson.h $RPM_BUILD_ROOT%{_includedir}
239 cp -pr submodules/Vulkan-LoaderAndValidationLayers/demos/* $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
240 %{__rm} -r $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/{android,*.user,smoke/android}
242 install build/vktrace/vktraceviewer%{binsuf} $RPM_BUILD_ROOT%{_bindir}
244 cp -p via/README.md via-README.md
245 cp -p vktrace/LICENSE vktrace-LICENSE
246 cp -p vktrace/README.md vktrace-README.md
247 cp -p vktrace/TODO.md vktrace-TODO.md
250 rm -rf $RPM_BUILD_ROOT
252 %post -n vulkan-loader -p /sbin/ldconfig
253 %postun -n vulkan-loader -p /sbin/ldconfig
256 %defattr(644,root,root,755)
258 %files -n vulkan-loader
259 %defattr(644,root,root,755)
260 %doc submodules/Vulkan-LoaderAndValidationLayers/{COPYRIGHT.txt,README.md,loader/LoaderAndLayerInterface.md}
261 %dir %{_sysconfdir}/vulkan
262 %dir %{_sysconfdir}/vulkan/icd.d
263 %dir %{_sysconfdir}/vulkan/explicit_layer.d
264 %dir %{_sysconfdir}/vulkan/implicit_layer.d
265 %dir %{_datadir}/vulkan
266 %dir %{_datadir}/vulkan/icd.d
267 %dir %{_datadir}/vulkan/explicit_layer.d
268 %dir %{_datadir}/vulkan/implicit_layer.d
269 %attr(755,root,root) %{_libdir}/libvulkan.so.1.*.*
270 %attr(755,root,root) %ghost %{_libdir}/libvulkan.so.1
272 %files -n vulkan-devel
273 %defattr(644,root,root,755)
274 %attr(755,root,root) %{_libdir}/libvulkan.so
275 %{_libdir}/libvkjson.a
276 %{_includedir}/vulkan
277 %{_includedir}/vkjson.h
278 %{_pkgconfigdir}/vulkan.pc
279 %{_examplesdir}/%{name}-%{version}
282 %defattr(644,root,root,755)
283 %doc COPYRIGHT.txt README.md via-README.md vktrace-{LICENSE,README.md,TODO.md}
284 %attr(755,root,root) %{_bindir}/via
285 %attr(755,root,root) %{_bindir}/vkjson_info
286 %attr(755,root,root) %{_bindir}/vkjson_unittest
287 %attr(755,root,root) %{_bindir}/vulkaninfo
288 %attr(755,root,root) %{_bindir}/vkreplay%{binsuf}
289 %attr(755,root,root) %{_bindir}/vktrace%{binsuf}
290 %attr(755,root,root) %{_libdir}/libVkLayer_vktrace_layer%{binsuf}.so
291 %{_datadir}/vulkan/explicit_layer.d/VkLayer_vktrace_layer%{binsuf}.json
293 %files tools-vktraceviewer
294 %defattr(644,root,root,755)
295 %attr(755,root,root) %{_bindir}/vktraceviewer%{binsuf}
297 %files validation-layers
298 %defattr(644,root,root,755)
299 %doc submodules/Vulkan-LoaderAndValidationLayers/layers/{README.md,vk_layer_settings.txt}
300 %attr(755,root,root) %{_libdir}/libVkLayer_core_validation.so
301 %attr(755,root,root) %{_libdir}/libVkLayer_object_tracker.so
302 %attr(755,root,root) %{_libdir}/libVkLayer_parameter_validation.so
303 %attr(755,root,root) %{_libdir}/libVkLayer_threading.so
304 %attr(755,root,root) %{_libdir}/libVkLayer_unique_objects.so
305 %attr(755,root,root) %{_libdir}/libVkLayer_utils.so
306 %{_datadir}/vulkan/explicit_layer.d/VkLayer_core_validation.json
307 %{_datadir}/vulkan/explicit_layer.d/VkLayer_object_tracker.json
308 %{_datadir}/vulkan/explicit_layer.d/VkLayer_parameter_validation.json
309 %{_datadir}/vulkan/explicit_layer.d/VkLayer_standard_validation.json
310 %{_datadir}/vulkan/explicit_layer.d/VkLayer_threading.json
311 %{_datadir}/vulkan/explicit_layer.d/VkLayer_unique_objects.json
314 %defattr(644,root,root,755)
315 %doc layersvt/{README.md,vk_layer_settings.txt}
316 %attr(755,root,root) %{_libdir}/libVkLayer_api_dump.so
317 %attr(755,root,root) %{_libdir}/libVkLayer_assistant_layer.so
318 %attr(755,root,root) %{_libdir}/libVkLayer_demo_layer.so
319 %attr(755,root,root) %{_libdir}/libVkLayer_device_simulation.so
320 %attr(755,root,root) %{_libdir}/libVkLayer_monitor.so
321 %attr(755,root,root) %{_libdir}/libVkLayer_screenshot.so
322 %attr(755,root,root) %{_libdir}/libVkLayer_starter_layer.so
323 %{_datadir}/vulkan/explicit_layer.d/VkLayer_api_dump.json
324 %{_datadir}/vulkan/explicit_layer.d/VkLayer_assistant_layer.json
325 %{_datadir}/vulkan/explicit_layer.d/VkLayer_demo_layer.json
326 %{_datadir}/vulkan/explicit_layer.d/VkLayer_device_simulation.json
327 %{_datadir}/vulkan/explicit_layer.d/VkLayer_monitor.json
328 %{_datadir}/vulkan/explicit_layer.d/VkLayer_screenshot.json
329 %{_datadir}/vulkan/explicit_layer.d/VkLayer_starter_layer.json
332 %defattr(644,root,root,755)
333 %doc submodules/Vulkan-LoaderAndValidationLayers/demos/smoke/README.md
334 %attr(755,root,root) %{_bindir}/vulkan-cube
335 %attr(755,root,root) %{_bindir}/vulkan-smoketest
336 %{_datadir}/%{name}-demos