]> git.pld-linux.org Git - packages/vulkan-sdk.git/blob - vulkan-sdk.spec
888350acfc56ae0b79006aea2aeb8097aba32342
[packages/vulkan-sdk.git] / vulkan-sdk.spec
1 #
2 # TODO:
3 #       - investigate why vktrace does not work
4
5
6 # Conditional build:
7 %bcond_with     tests           # build with tests (require a working Vulkan
8                                 # driver (ICD))
9 %bcond_without  wayland         # enable Wayland support in loader
10 %bcond_without  xlib            # enable XLib support in loader
11
12 %define api_version 1.0.39
13
14 Summary:        LunarG Vulkan SDK
15 Name:           vulkan-sdk
16 Version:        1.0.39.1
17 Release:        1
18 License:        MIT-like
19 Group:          Development
20 Source0:        https://github.com/LunarG/VulkanTools/archive/sdk-%{version}/VulkanTools-%{version}.tar.gz
21 # Source0-md5:  62446dfd61208771d39109218cb29152
22 Patch0:         system_glslang_and_spirv-tools.patch
23 Patch1:         demos_out_of_src.patch
24 Patch2:         rpath.patch
25 Patch3:         always_xcb.patch
26 Patch4:         x32.patch
27 Patch5:         system_jsoncpp.patch
28 URL:            http://lunarg.com/vulkan-sdk/
29 BuildRequires:  bison
30 BuildRequires:  cmake
31 BuildRequires:  GLM
32 BuildRequires:  glslang >= 3.0.s20161222
33 BuildRequires:  glslang-devel >= 3.0.s20161222
34 BuildRequires:  graphviz
35 BuildRequires:  ImageMagick-devel
36 BuildRequires:  jsoncpp-devel
37 BuildRequires:  libpng
38 BuildRequires:  libxcb-devel
39 BuildRequires:  python3
40 BuildRequires:  python3-lxml
41 BuildRequires:  python3-modules
42 BuildRequires:  Qt5Core-devel
43 BuildRequires:  Qt5Svg-devel
44 BuildRequires:  Qt5Widgets-devel
45 BuildRequires:  spirv-tools-devel >= v2016.7
46 BuildRequires:  udev-devel
47 Requires:       glslang >= 3.0.s20161222
48 Requires:       spirv-tools >= v2016.7
49 Requires:       %{name}-debug-layers = %{version}-%{release}
50 Requires:       vulkan-devel = %{version}-%{release}
51 Requires:       vulkan-loader = %{version}-%{release}
52 Requires:       vulkan-sdk-tools = %{version}-%{release}
53 Requires:       %{name}-validation-layers = %{version}-%{release}
54 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
55
56 %description
57 Vulkan API Software Development Kit
58
59 %package -n vulkan-loader
60 Summary:        Vulkan API loader
61 License:        MIT-like
62 Group:          Library
63 Provides:       vulkan(loader) = %{api_version}
64
65 %description -n vulkan-loader
66 Common loader for Vulkan API drivers.
67
68 %package validation-layers
69 Summary:        Validation layers for Vulkan
70 Group:          Development/Libraries
71 Requires:       vulkan-loader = %{version}-%{release}
72
73 %description validation-layers
74 Validation layers for Vulkan.
75
76 %package debug-layers
77 Summary:        Debug layers for Vulkan
78 Group:          Development/Libraries
79 Requires:       vulkan-loader = %{version}-%{release}
80
81 %description debug-layers
82 Debug layers for Vulkan.
83
84 %package -n vulkan-devel
85 Summary:        Header files for the Vulkan API
86 Summary(pl.UTF-8):      Pliki nagłówkowe API Vulkan
87 Group:          Development/Libraries
88 Requires:       vulkan-loader = %{version}-%{release}
89
90 %description -n vulkan-devel
91 Header files for the Vulkan API.
92
93 %description -n vulkan-devel -l pl.UTF-8
94 Pliki nagłówkowe API Vulkan.
95
96 %package demos
97 Summary:        Vulkan demos
98 Group:          Development/Libraries
99 Requires:       vulkan(icd)
100 Requires:       vulkan-loader = %{version}-%{release}
101
102 %description demos
103 Vulkan demos.
104
105 %package tools
106 Summary:        Vulkan tools
107 Group:          Development
108 Suggests:       vulkan(icd)
109 Requires:       vulkan-loader = %{version}-%{release}
110
111 %description tools
112 Vulkan tools.
113
114 %package tools-vktraceviewer
115 Summary:        Vulkan trace viewer
116 Group:          Development
117 Requires:       %{name}-tools = %{version}-%{release}
118
119 %description tools-vktraceviewer
120 Vulkan trace viewer.
121
122 %prep
123 %setup -qn VulkanTools-sdk-%{version}
124
125 %patch0 -p1
126 %patch1 -p1
127 %patch2 -p1
128 %patch3 -p1
129 %patch4 -p1
130 %patch5 -p1
131
132 %build
133 install -d build
134 cd build
135
136 %cmake \
137         -DJSONCPP_INCLUDE_DIR=/usr/include/jsoncpp \
138         -DJSONCPP_SOURCE_DIR=/usr/include/jsoncpp \
139         -DCMAKE_INSTALL_DATADIR=share \
140         -DCMAKE_INSTALL_SYSCONFDIR=etc \
141         -DBUILD_TESTS=%{?with_tests:ON}%{!?with_tests:OFF} \
142         -DBUILD_WSI_WAYLAND_SUPPORT=%{?with_wayland:ON}%{!?with_wayland:OFF} \
143         -DBUILD_WSI_XLIB_SUPPORT=%{?with_xlib:ON}%{!?with_xlib:OFF} \
144         -DBUILD_WSI_MIR_SUPPORT=OFF \
145         -DBUILD_ICD=OFF \
146                 ../
147 %{__make}
148
149 %if %{with tests}
150 cd tests
151 LC_ALL=C.utf-8 VK_LAYER_PATH=../layers LD_LIBRARY_PATH=../loader:../layers ./run_all_tests.sh
152 cd ..
153 %endif
154
155 cd ..
156
157 %install
158 rm -rf $RPM_BUILD_ROOT
159 install -d $RPM_BUILD_ROOT{%{_datadir},%{_sysconfdir}}/vulkan/icd.d \
160 $RPM_BUILD_ROOT{%{_datadir},%{_sysconfdir}}/vulkan/{explicit,implicit}_layer.d \
161         $RPM_BUILD_ROOT%{_bindir} \
162         $RPM_BUILD_ROOT%{_includedir}/vulkan \
163         $RPM_BUILD_ROOT%{_datadir}/%{name}-demos \
164         $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
165
166
167 # hack for 'make install' tryin to install in relative paths when DESTDIR is set
168 install -d "$RPM_BUILD_ROOT$PWD"
169 ln -s "$PWD/build" "$RPM_BUILD_ROOT$PWD"
170
171 cd build
172 %{__make} install \
173         DESTDIR=$RPM_BUILD_ROOT
174
175 rm "$RPM_BUILD_ROOT$PWD"
176
177 cp -p demos/vulkaninfo $RPM_BUILD_ROOT%{_bindir}/vulkaninfo
178 cp -p demos/cube $RPM_BUILD_ROOT%{_bindir}/vulkan-cube
179 cp -p demos/smoketest $RPM_BUILD_ROOT%{_bindir}/vulkan-smoketest
180 cp -p demos/{lunarg.ppm,*-vert.spv,*-frag.spv} $RPM_BUILD_ROOT%{_datadir}/%{name}-demos
181
182 mv $RPM_BUILD_ROOT/usr/etc/vulkan/explicit_layer.d/* $RPM_BUILD_ROOT%{_datadir}/vulkan/explicit_layer.d
183
184 cp -p libs/vkjson/libvkjson.a $RPM_BUILD_ROOT%{_libdir}
185 cp -p libs/vkjson/vkjson_{info,unittest} $RPM_BUILD_ROOT%{_bindir}
186
187 cp -p ../libs/vkjson/vkjson.h $RPM_BUILD_ROOT%{_includedir}
188
189 cp -p install_staging/*.so $RPM_BUILD_ROOT%{_libdir}
190 for f in layersvt/*.json ; do
191 sed -e's@"library_path": "./@"library_path": "@' $f > $RPM_BUILD_ROOT%{_datadir}/vulkan/explicit_layer.d/$(basename $f)
192 done
193
194 cp -pr ../demos/* $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
195
196 # restore original demo sources in %{_examplesdir}
197 %patch1 -R -p2 -d $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
198 rm -f $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/*.orig 2>/dev/null || :
199
200 %ifarch %x8664
201 cp -p vktrace/libVkLayer_vktrace_layer.so $RPM_BUILD_ROOT%{_libdir}
202 cp -p vktrace/vkreplay $RPM_BUILD_ROOT%{_bindir}
203 cp -p vktrace/vktrace $RPM_BUILD_ROOT%{_bindir}
204 sed -e's@"library_path": "../vktrace/@"library_path": "@' \
205         layersvt/VkLayer_vktrace_layer.json > $RPM_BUILD_ROOT%{_datadir}/vulkan/explicit_layer.d/VkLayer_vktrace_layer.json
206 %else
207 cp -p vktrace/libVkLayer_vktrace_layer32.so $RPM_BUILD_ROOT%{_libdir}
208 cp -p vktrace/vkreplay32 $RPM_BUILD_ROOT%{_bindir}
209 cp -p vktrace/vktrace32 $RPM_BUILD_ROOT%{_bindir}
210 rm $RPM_BUILD_ROOT%{_datadir}/vulkan/explicit_layer.d/VkLayer_vktrace_layer.json
211 sed -e's@"library_path": "../vktrace/@"library_path": "@' \
212     -e's@libVkLayer_vktrace_layer.so@libVkLayer_vktrace_layer32.so@' \
213         layersvt/VkLayer_vktrace_layer.json > $RPM_BUILD_ROOT%{_datadir}/vulkan/explicit_layer.d/VkLayer_vktrace_layer32.json
214 %endif
215
216 install via/via $RPM_BUILD_ROOT%{_bindir}
217 %ifarch %x8664
218 install vktrace/vktraceviewer $RPM_BUILD_ROOT%{_bindir}
219 %else
220 install vktrace/vktraceviewer32 $RPM_BUILD_ROOT%{_bindir}
221 %endif
222
223 cd ..
224
225 cp -p vktrace/README.md vktrace-README.md
226 cp -p vktrace/TODO.md vktrace-TODO.md
227
228 %clean
229 rm -rf $RPM_BUILD_ROOT
230
231 %post   -n vulkan-loader -p /sbin/ldconfig
232 %postun -n vulkan-loader -p /sbin/ldconfig
233
234 %files
235 %defattr(644,root,root,755)
236
237 %files -n vulkan-loader
238 %defattr(644,root,root,755)
239 %doc COPYRIGHT.txt LICENSE.txt
240 %doc loader/{README.md,LoaderAndLayerInterface.md}
241 %dir %{_sysconfdir}/vulkan
242 %dir %{_sysconfdir}/vulkan/icd.d
243 %dir %{_sysconfdir}/vulkan/explicit_layer.d
244 %dir %{_sysconfdir}/vulkan/implicit_layer.d
245 %dir %{_datadir}/vulkan
246 %dir %{_datadir}/vulkan/icd.d
247 %dir %{_datadir}/vulkan/explicit_layer.d
248 %dir %{_datadir}/vulkan/implicit_layer.d
249 %{_libdir}/libvulkan.so.1.*.*
250 %ghost %{_libdir}/libvulkan.so.1
251
252 %files demos
253 %defattr(644,root,root,755)
254 %doc COPYRIGHT.txt LICENSE.txt
255 %attr(755,root,root) %{_bindir}/vulkan-cube
256 %attr(755,root,root) %{_bindir}/vulkan-smoketest
257 %{_datadir}/%{name}-demos
258
259 %files tools
260 %defattr(644,root,root,755)
261 %doc COPYRIGHT.txt LICENSE.txt
262 %doc vktrace-README.md vktrace-TODO.md
263 %attr(755,root,root) %{_bindir}/via
264 %attr(755,root,root) %{_bindir}/vkjson_info
265 %attr(755,root,root) %{_bindir}/vkjson_unittest
266 %attr(755,root,root) %{_bindir}/vulkaninfo
267 %ifarch %x8664
268 %attr(755,root,root) %{_bindir}/vkreplay
269 %attr(755,root,root) %{_bindir}/vktrace
270 %attr(755,root,root) %{_libdir}/libVkLayer_vktrace_layer.so
271 %{_datadir}/vulkan/explicit_layer.d/VkLayer_vktrace_layer.json
272 %else
273 %attr(755,root,root) %{_bindir}/vkreplay32
274 %attr(755,root,root) %{_bindir}/vktrace32
275 %attr(755,root,root) %{_libdir}/libVkLayer_vktrace_layer32.so
276 %{_datadir}/vulkan/explicit_layer.d/VkLayer_vktrace_layer32.json
277 %endif
278
279 %files tools-vktraceviewer
280 %defattr(644,root,root,755)
281 %ifarch %x8664
282 %attr(755,root,root) %{_bindir}/vktraceviewer
283 %else
284 %attr(755,root,root) %{_bindir}/vktraceviewer32
285 %endif
286
287 %files validation-layers
288 %defattr(644,root,root,755)
289 %doc COPYRIGHT.txt LICENSE.txt
290 %doc layers/{README.md,vk_layer_settings.txt}
291 %attr(755,root,root) %{_libdir}/libVkLayer_core_validation.so
292 %attr(755,root,root) %{_libdir}/libVkLayer_image.so
293 %attr(755,root,root) %{_libdir}/libVkLayer_object_tracker.so
294 %attr(755,root,root) %{_libdir}/libVkLayer_parameter_validation.so
295 %attr(755,root,root) %{_libdir}/libVkLayer_swapchain.so
296 %attr(755,root,root) %{_libdir}/libVkLayer_threading.so
297 %attr(755,root,root) %{_libdir}/libVkLayer_unique_objects.so
298 %attr(755,root,root) %{_libdir}/libVkLayer_utils.so
299 %{_datadir}/vulkan/explicit_layer.d/VkLayer_core_validation.json
300 %{_datadir}/vulkan/explicit_layer.d/VkLayer_image.json
301 %{_datadir}/vulkan/explicit_layer.d/VkLayer_object_tracker.json
302 %{_datadir}/vulkan/explicit_layer.d/VkLayer_parameter_validation.json
303 %{_datadir}/vulkan/explicit_layer.d/VkLayer_swapchain.json
304 %{_datadir}/vulkan/explicit_layer.d/VkLayer_threading.json
305 %{_datadir}/vulkan/explicit_layer.d/VkLayer_unique_objects.json
306
307 %files debug-layers
308 %defattr(644,root,root,755)
309 %doc COPYRIGHT.txt LICENSE.txt
310 %doc layersvt/{README.md,vk_layer_settings.txt}
311 %attr(755,root,root) %{_libdir}/libVkLayer_api_dump.so
312 %attr(755,root,root) %{_libdir}/libVkLayer_monitor.so
313 %attr(755,root,root) %{_libdir}/libVkLayer_screenshot.so
314 %attr(755,root,root) %{_libdir}/libVkLayer_utilsvt.so
315 %{_datadir}/vulkan/explicit_layer.d/VkLayer_api_dump.json
316 %{_datadir}/vulkan/explicit_layer.d/VkLayer_monitor.json
317 %{_datadir}/vulkan/explicit_layer.d/VkLayer_screenshot.json
318
319 %files -n vulkan-devel
320 %defattr(644,root,root,755)
321 %doc COPYRIGHT.txt LICENSE.txt README.md
322 %{_libdir}/libvulkan.so
323 %{_libdir}/libvkjson.a
324 %{_includedir}/vulkan
325 %{_includedir}/vkjson.h
326 %{_examplesdir}/%{name}-%{version}
This page took 0.048869 seconds and 3 git commands to generate.