From 862291f5ba6a9a6407c22edcf69f091607bb846a Mon Sep 17 00:00:00 2001 From: Jacek Konieczny Date: Fri, 19 Feb 2016 22:39:15 +0100 Subject: [PATCH] =?utf8?q?nearly=20done=E2=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- system_glslang.patch | 119 ++++++++++++++++++++++++++++++++++++++++++ vulkan-loader.spec | 120 +++++++++++++++++++++++++++++++++++++++---- 2 files changed, 229 insertions(+), 10 deletions(-) create mode 100644 system_glslang.patch diff --git a/system_glslang.patch b/system_glslang.patch new file mode 100644 index 0000000..188d1c5 --- /dev/null +++ b/system_glslang.patch @@ -0,0 +1,119 @@ +diff -dur Vulkan-LoaderAndValidationLayers-windows-rt-1.0.3.0.orig/CMakeLists.txt Vulkan-LoaderAndValidationLayers-windows-rt-1.0.3.0/CMakeLists.txt +--- Vulkan-LoaderAndValidationLayers-windows-rt-1.0.3.0.orig/CMakeLists.txt 2016-02-14 02:19:50.000000000 +0100 ++++ Vulkan-LoaderAndValidationLayers-windows-rt-1.0.3.0/CMakeLists.txt 2016-02-19 22:36:04.792275587 +0100 +@@ -72,7 +72,7 @@ + + if (BUILD_TESTS) + # Hard code our glslang path for now +- get_filename_component(GLSLANG_PREFIX ../glslang ABSOLUTE) ++ set(GLSLANG_PREFIX /usr/include/glslang) + + if(NOT EXISTS ${GLSLANG_PREFIX}) + message(FATAL_ERROR "Necessary glslang components do not exist: " ${GLSLANG_PREFIX}) +diff -dur Vulkan-LoaderAndValidationLayers-windows-rt-1.0.3.0.orig/demos/CMakeLists.txt Vulkan-LoaderAndValidationLayers-windows-rt-1.0.3.0/demos/CMakeLists.txt +--- Vulkan-LoaderAndValidationLayers-windows-rt-1.0.3.0.orig/demos/CMakeLists.txt 2016-02-14 02:19:50.000000000 +0100 ++++ Vulkan-LoaderAndValidationLayers-windows-rt-1.0.3.0/demos/CMakeLists.txt 2016-02-19 22:36:04.792275587 +0100 +@@ -28,45 +28,45 @@ + endif() + + add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/demos/tri-vert.spv +- COMMAND ${GLSLANG_PREFIX}/${BUILDTGT_DIR}/install/bin/glslangValidator -s -V ${PROJECT_SOURCE_DIR}/demos/tri.vert ++ COMMAND glslangValidator -s -V ${PROJECT_SOURCE_DIR}/demos/tri.vert + COMMAND move vert.spv ${CMAKE_BINARY_DIR}/demos/tri-vert.spv +- DEPENDS tri.vert ${GLSLANG_PREFIX}/${BUILDTGT_DIR}/install/bin/glslangValidator ++ DEPENDS tri.vert + ) + add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/demos/tri-frag.spv +- COMMAND ${GLSLANG_PREFIX}/${BUILDTGT_DIR}/install/bin/glslangValidator -s -V ${PROJECT_SOURCE_DIR}/demos/tri.frag ++ COMMAND glslangValidator -s -V ${PROJECT_SOURCE_DIR}/demos/tri.frag + COMMAND move frag.spv ${CMAKE_BINARY_DIR}/demos/tri-frag.spv +- DEPENDS tri.frag ${GLSLANG_PREFIX}/${BUILDTGT_DIR}/install/bin/glslangValidator ++ DEPENDS tri.frag + ) + add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/demos/cube-vert.spv +- COMMAND ${GLSLANG_PREFIX}/${BUILDTGT_DIR}/install/bin/glslangValidator -s -V ${PROJECT_SOURCE_DIR}/demos/cube.vert ++ COMMAND glslangValidator -s -V ${PROJECT_SOURCE_DIR}/demos/cube.vert + COMMAND move vert.spv ${CMAKE_BINARY_DIR}/demos/cube-vert.spv +- DEPENDS cube.vert ${GLSLANG_PREFIX}/${BUILDTGT_DIR}/install/bin/glslangValidator ++ DEPENDS cube.vert + ) + add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/demos/cube-frag.spv +- COMMAND ${GLSLANG_PREFIX}/${BUILDTGT_DIR}/install/bin/glslangValidator -s -V ${PROJECT_SOURCE_DIR}/demos/cube.frag ++ COMMAND glslangValidator -s -V ${PROJECT_SOURCE_DIR}/demos/cube.frag + COMMAND move frag.spv ${CMAKE_BINARY_DIR}/demos/cube-frag.spv +- DEPENDS cube.frag ${GLSLANG_PREFIX}/${BUILDTGT_DIR}/install/bin/glslangValidator ++ DEPENDS cube.frag + ) + file(COPY cube.vcxproj.user DESTINATION ${CMAKE_BINARY_DIR}/demos) + file(COPY tri.vcxproj.user DESTINATION ${CMAKE_BINARY_DIR}/demos) + file(COPY vulkaninfo.vcxproj.user DESTINATION ${CMAKE_BINARY_DIR}/demos) + else() + add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/demos/tri-vert.spv +- COMMAND ${GLSLANG_PREFIX}/build/install/bin/glslangValidator -s -V -o tri-vert.spv ${PROJECT_SOURCE_DIR}/demos/tri.vert +- DEPENDS tri.vert ${GLSLANG_PREFIX}/build/install/bin/glslangValidator ++ COMMAND glslangValidator -s -V -o tri-vert.spv ${PROJECT_SOURCE_DIR}/demos/tri.vert ++ DEPENDS tri.vert + ) + add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/demos/tri-frag.spv +- COMMAND ${GLSLANG_PREFIX}/build/install/bin/glslangValidator -s -V -o tri-frag.spv ${PROJECT_SOURCE_DIR}/demos/tri.frag +- DEPENDS tri.frag ${GLSLANG_PREFIX}/build/install/bin/glslangValidator ++ COMMAND glslangValidator -s -V -o tri-frag.spv ${PROJECT_SOURCE_DIR}/demos/tri.frag ++ DEPENDS tri.frag + ) + add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/demos/cube-vert.spv +- COMMAND ${GLSLANG_PREFIX}/build/install/bin/glslangValidator -s -V -o cube-vert.spv ${PROJECT_SOURCE_DIR}/demos/cube.vert +- DEPENDS cube.vert ${GLSLANG_PREFIX}/build/install/bin/glslangValidator ++ COMMAND glslangValidator -s -V -o cube-vert.spv ${PROJECT_SOURCE_DIR}/demos/cube.vert ++ DEPENDS cube.vert + ) + + add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/demos/cube-frag.spv +- COMMAND ${GLSLANG_PREFIX}/build/install/bin/glslangValidator -s -V -o cube-frag.spv ${PROJECT_SOURCE_DIR}/demos/cube.frag +- DEPENDS cube.frag ${GLSLANG_PREFIX}/build/install/bin/glslangValidator ++ COMMAND glslangValidator -s -V -o cube-frag.spv ${PROJECT_SOURCE_DIR}/demos/cube.frag ++ DEPENDS cube.frag + ) + endif() + +diff -dur Vulkan-LoaderAndValidationLayers-windows-rt-1.0.3.0.orig/layers/CMakeLists.txt Vulkan-LoaderAndValidationLayers-windows-rt-1.0.3.0/layers/CMakeLists.txt +--- Vulkan-LoaderAndValidationLayers-windows-rt-1.0.3.0.orig/layers/CMakeLists.txt 2016-02-14 02:19:50.000000000 +0100 ++++ Vulkan-LoaderAndValidationLayers-windows-rt-1.0.3.0/layers/CMakeLists.txt 2016-02-19 22:37:15.242851047 +0100 +@@ -26,7 +26,7 @@ + VkLayer_device_limits + ) + +-set(VK_LAYER_RPATH /usr/lib/x86_64-linux-gnu/vulkan/layer:/usr/lib/i386-linux-gnu/vulkan/layer) ++set(VK_LAYER_RPATH "${CMAKE_INSTALL_LIBDIR}/vulkan/layer") + set(CMAKE_INSTALL_RPATH ${VK_LAYER_RPATH}) + + if (NOT WIN32) +@@ -79,7 +79,7 @@ + ${CMAKE_CURRENT_SOURCE_DIR}/../loader + ${CMAKE_CURRENT_SOURCE_DIR}/../include/vulkan + ${CMAKE_CURRENT_BINARY_DIR} +- ${PROJECT_SOURCE_DIR}/../glslang/SPIRV ++ /usr/include/glslang/SPIRV + ) + + if (WIN32) +diff -dur Vulkan-LoaderAndValidationLayers-windows-rt-1.0.3.0.orig/tests/CMakeLists.txt Vulkan-LoaderAndValidationLayers-windows-rt-1.0.3.0/tests/CMakeLists.txt +--- Vulkan-LoaderAndValidationLayers-windows-rt-1.0.3.0.orig/tests/CMakeLists.txt 2016-02-14 02:19:50.000000000 +0100 ++++ Vulkan-LoaderAndValidationLayers-windows-rt-1.0.3.0/tests/CMakeLists.txt 2016-02-19 22:36:04.792275587 +0100 +@@ -67,13 +67,13 @@ + IMPORTED_LOCATION_DEBUG "${GLSLANG_PREFIX}/${BUILDTGT_DIR}/SPIRV/Debug/SPIRV.lib") + else () + set_target_properties(glslang PROPERTIES +- IMPORTED_LOCATION "${GLSLANG_PREFIX}/build/install/lib/libglslang.a") ++ IMPORTED_LOCATION "${CMAKE_INSTALL_LIBDIR}/libglslang.a") + set_target_properties(OGLCompiler PROPERTIES +- IMPORTED_LOCATION "${GLSLANG_PREFIX}/build/install/lib/libOGLCompiler.a") ++ IMPORTED_LOCATION "${CMAKE_INSTALL_LIBDIR}/libOGLCompiler.a") + set_target_properties(OSDependent PROPERTIES +- IMPORTED_LOCATION "${GLSLANG_PREFIX}/build/install/lib/libOSDependent.a") ++ IMPORTED_LOCATION "${CMAKE_INSTALL_LIBDIR}/libOSDependent.a") + set_target_properties(SPIRV PROPERTIES +- IMPORTED_LOCATION "${GLSLANG_PREFIX}/build/install/lib/libSPIRV.a") ++ IMPORTED_LOCATION "${CMAKE_INSTALL_LIBDIR}/libSPIRV.a") + endif() + + include_directories( diff --git a/vulkan-loader.spec b/vulkan-loader.spec index 23859ff..422204b 100644 --- a/vulkan-loader.spec +++ b/vulkan-loader.spec @@ -1,13 +1,19 @@ +# +# Conditional build: +%bcond_with tests # build with tests (doesn't work) +# +%define tag windows-rt-%{version} Summary: Vulkan API loader Name: vulkan-loader -Version: 1.0.2.0 +Version: 1.0.3.0 Release: 0.1 License: MIT-like Group: Applications -Source0: https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/archive/sdk-%{version}/%{name}-%{version}.tar.gz -# Source0-md5: 84ac1a616d5ba1290d7449118de86830 +Source0: https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/archive/%{tag}/%{name}-%{version}.tar.gz +# Source0-md5: 0691d2d79cf62902df2973bbdf594028 +Patch0: system_glslang.patch URL: https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers -BuildRequires: LunarGLASS-devel +#BuildRequires: LunarGLASS-devel BuildRequires: cmake BuildRequires: glslang-devel BuildRequires: python3 @@ -18,6 +24,14 @@ BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) %description Common loader for Vulkan API drivers. +%package -n vulkan-layers +Summary: Validation layers for Vulkan +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} + +%description -n vulkan-layers +Validation layers for Vulkan. + %package -n vulkan-devel Summary: Header files for the Vulkan API Summary(pl.UTF-8): Pliki nagłówkowe API Vulkan @@ -30,21 +44,69 @@ Header files for the Vulkan API. %description -n vulkan-devel -l pl.UTF-8 Pliki nagłówkowe API Vulkan. +%package demos +Summary: Vulkan demos +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} + +%description demos +Vulkan demos. + +%package utils +Summary: Vulkan loader utilities +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} + +%description utils +Vulkan loader utilities. + %prep -%setup -qn Vulkan-LoaderAndValidationLayers-sdk-%{version} +%setup -qn Vulkan-LoaderAndValidationLayers-%{tag} +%patch0 -p1 %build install -d build cd build %cmake \ - ../ + %{?with_tests:-DBUILD_TESTS=ON} \ + %{!?with_tests:-DBUILD_TESTS=OFF} \ + ../ %{__make} %install rm -rf $RPM_BUILD_ROOT +install -d $RPM_BUILD_ROOT{%{_datadir},%{_sysconfdir}}/vulkan/icd.d \ +$RPM_BUILD_ROOT{%{_datadir},%{_sysconfdir}}/vulkan/{explicit,implicit}_layer.d \ + $RPM_BUILD_ROOT{%{_bindir},%{_libdir}/vulkan/layer} \ + $RPM_BUILD_ROOT%{_includedir}/vulkan \ + $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version} + + +cd build +%{__make} install -%{__make} install \ - DESTDIR=$RPM_BUILD_ROOT +cp -p loader/libvulkan.so.1.0.3 $RPM_BUILD_ROOT%{_libdir} +ln -s libvulkan.so.1.0.3 $RPM_BUILD_ROOT%{_libdir}/libvulkan.so +ln -s libvulkan.so.1.0.3 $RPM_BUILD_ROOT%{_libdir}/libvulkan.so.1 + +cp -p demos/vulkaninfo $RPM_BUILD_ROOT%{_bindir}/vulkaninfo +cp -p demos/tri $RPM_BUILD_ROOT%{_bindir}/vulkan-tri +cp -p demos/cube $RPM_BUILD_ROOT%{_bindir}/vulkan-cube + +cp -p install_staging/*.so $RPM_BUILD_ROOT%{_libdir}/vulkan/layer +for f in layers/*.json ; do +sed -e's@"library_path": "./@"library_path": "%{_libdir}/vulkan/layer/@' $f > $RPM_BUILD_ROOT%{_datadir}/vulkan/explicit_layer.d/$(basename $f) +done + +cp -p libs/vkjson/libvkjson.a $RPM_BUILD_ROOT%{_libdir} +cp -p libs/vkjson/vkjson_{info,unittest} $RPM_BUILD_ROOT%{_bindir} + +cd .. + +cp -p libs/vkjson/vkjson.h $RPM_BUILD_ROOT%{_includedir} +cp -p include/vulkan/* $RPM_BUILD_ROOT%{_includedir}/vulkan + +cp -p demos/* $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version} %clean rm -rf $RPM_BUILD_ROOT @@ -54,5 +116,43 @@ rm -rf $RPM_BUILD_ROOT %files %defattr(644,root,root,755) -%doc README.md LICENSE.txt -%doc loader/{LoaderAndLayerInterface.md,LinuxICDs.txt} +%doc LICENSE.txt +%doc loader/{README.md,LoaderAndLayerInterface.md,LinuxICDs.txt} +%dir %{_sysconfdir}/vulkan +%dir %{_sysconfdir}/vulkan/icd.d +%dir %{_sysconfdir}/vulkan/explicit_layer.d +%dir %{_sysconfdir}/vulkan/implicit_layer.d +%dir %{_datadir}/vulkan +%dir %{_datadir}/vulkan/icd.d +%dir %{_datadir}/vulkan/explicit_layer.d +%dir %{_datadir}/vulkan/implicit_layer.d +%{_libdir}/libvulkan.so.1.*.* +%ghost %{_libdir}/libvulkan.so.1 +%dir %{_libdir}/vulkan + +%files demos +%defattr(644,root,root,755) +%attr(755,root,root) %{_bindir}/vulkan-tri +%attr(755,root,root) %{_bindir}/vulkan-cube + +%files utils +%defattr(644,root,root,755) +%attr(755,root,root) %{_bindir}/vulkaninfo +%attr(755,root,root) %{_bindir}/vkjson_info +%attr(755,root,root) %{_bindir}/vkjson_unittest + +%files -n vulkan-layers +%defattr(644,root,root,755) +%doc LICENSE.txt layers/README.md +%dir %{_libdir}/vulkan/layer +%{_libdir}/vulkan/layer/*.so +%{_datadir}/vulkan/explicit_layer.d/*.json + +%files -n vulkan-devel +%defattr(644,root,root,755) +%doc LICENSE.txt README.md +%{_libdir}/libvulkan.so +%{_libdir}/libvkjson.a +%{_includedir}/vulkan +%{_includedir}/vkjson.h +%{_examplesdir}/%{name}-%{version} -- 2.44.0