diff --git a/README.md b/README.md index cc54762..cd30adc 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,4 @@ # openvr +Open VR hardware access library. + diff --git a/openvr-2.5.1-pr-use-system-jsoncpp.patch b/openvr-2.5.1-pr-use-system-jsoncpp.patch new file mode 100644 index 0000000..ecea434 --- /dev/null +++ b/openvr-2.5.1-pr-use-system-jsoncpp.patch @@ -0,0 +1,110 @@ +From 54a58e479f4d63e62e9118637cd92a2013a4fb95 Mon Sep 17 00:00:00 2001 +From: Lubosz Sarnecki +Date: Thu, 15 Aug 2019 16:07:01 +0200 +Subject: [PATCH 1/2] cmake: Add option to build with system jsoncpp. + +This patch adds the CMake build option `USE_SYSTEM_JSONCPP`, +which instead of using the internal `jsoncpp.cpp` links against +the system installed jsoncpp library. + +This results in a `libopenvr_api.so` that is only 115K instead of 301K +on my system. + +Distributions like Debian will prefer this behaviour, since it will give +them the possibility to maintain version and security issues for jsoncpp +in one place. + +This behaviour can be enabled by + +``` +cmake -DUSE_SYSTEM_JSONCPP=True . +``` + +When the flag is not set, the build will behave like it did before. + +I tested this patch using the system wide jsoncpp successfully +with xrdesktop. +--- + CMakeLists.txt | 1 + + src/CMakeLists.txt | 12 +++++++++++- + 2 files changed, 12 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 8956cdad..1150c53d 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -28,6 +28,7 @@ option(BUILD_UNIVERSAL "Builds the shared or framework as a universal (fat, 32- + option(BUILD_OSX_I386 "Builds the shared or framework as a 32-bit binary, even on a 64-bit platform" OFF) + option(USE_LIBCXX "Uses libc++ instead of libstdc++" ON) + option(USE_CUSTOM_LIBCXX "Uses a custom libc++" OFF) ++option(USE_SYSTEM_JSONCPP "Uses the system installed jsoncpp." OFF) + + add_definitions( -DVR_API_PUBLIC ) + +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index b83710af..a7b64db9 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -34,8 +34,14 @@ endif() + # Set the source group and files. + set(CORE_FILES + openvr_api_public.cpp +- jsoncpp.cpp + ) ++ ++if(NOT USE_SYSTEM_JSONCPP) ++ set(JSON_CPP_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../thirdparty/jsoncpp) ++ include_directories(${JSON_CPP_DIR}) ++ list(APPEND CORE_FILES ${JSON_CPP_DIR}/jsoncpp.cpp) ++endif() ++ + set(VRCORE_FILES + vrcore/dirtools_public.cpp + vrcore/envvartools_public.cpp +@@ -100,6 +106,10 @@ if(USE_CUSTOM_LIBCXX) + set(EXTRA_LIBS ${EXTRA_LIBS} c++ c++abi) + endif() + ++if(USE_SYSTEM_JSONCPP) ++ list(APPEND EXTRA_LIBS jsoncpp) ++endif() ++ + target_link_libraries(${LIBNAME} ${EXTRA_LIBS} ${CMAKE_DL_LIBS}) + target_include_directories(${LIBNAME} PUBLIC ${OPENVR_HEADER_DIR}) + + +From a7a6995d1d6f9ee1a17a3741661156f9706c40ce Mon Sep 17 00:00:00 2001 +From: Lubosz Sarnecki +Date: Thu, 15 Aug 2019 15:05:34 +0200 +Subject: [PATCH 2/2] thirdparty: Move jsoncpp to thridparty directory. + +Even though the previous patch in this patch set enabled the build with +a system wide jsoncpp and worked for me, it still left the internal +jsoncpp includes in the include path, since the includes were placed +in `CMAKE_CURRENT_SOURCE_DIR`. This could cause problems on other systems +when trying to build with a system wide jsoncpp. + +In order to remove the internal json.h from the include path, +I moved all jsoncpp files into a thridparty directory amd include +it in the case of `USE_SYSTEM_JSONCPP` not being set. +--- + {src => thirdparty/jsoncpp}/json/json-forwards.h | 0 + {src => thirdparty/jsoncpp}/json/json.h | 0 + {src => thirdparty/jsoncpp}/jsoncpp.cpp | 0 + 3 files changed, 0 insertions(+), 0 deletions(-) + rename {src => thirdparty/jsoncpp}/json/json-forwards.h (100%) + rename {src => thirdparty/jsoncpp}/json/json.h (100%) + rename {src => thirdparty/jsoncpp}/jsoncpp.cpp (100%) + +diff --git a/src/json/json-forwards.h b/thirdparty/jsoncpp/json/json-forwards.h +similarity index 100% +rename from src/json/json-forwards.h +rename to thirdparty/jsoncpp/json/json-forwards.h +diff --git a/src/json/json.h b/thirdparty/jsoncpp/json/json.h +similarity index 100% +rename from src/json/json.h +rename to thirdparty/jsoncpp/json/json.h +diff --git a/src/jsoncpp.cpp b/thirdparty/jsoncpp/jsoncpp.cpp +similarity index 100% +rename from src/jsoncpp.cpp +rename to thirdparty/jsoncpp/jsoncpp.cpp diff --git a/openvr-2.5.1-pr-use_correct_definition_of_vsprintf_s.patch b/openvr-2.5.1-pr-use_correct_definition_of_vsprintf_s.patch new file mode 100644 index 0000000..0a6d16e --- /dev/null +++ b/openvr-2.5.1-pr-use_correct_definition_of_vsprintf_s.patch @@ -0,0 +1,23 @@ +From 0fa21ba17748efcca1816536e27bdca70141b074 Mon Sep 17 00:00:00 2001 +From: Christoph Haag +Date: Tue, 25 Jul 2017 02:07:09 +0200 +Subject: [PATCH] Use correct definition for vsprintf_s + +defining it to sprintf actually segfaults in a release build. +--- + samples/shared/compat.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/samples/shared/compat.h b/samples/shared/compat.h +index 154f8b07..28002d99 100644 +--- a/samples/shared/compat.h ++++ b/samples/shared/compat.h +@@ -12,7 +12,7 @@ + #include + + #define sprintf_s snprintf +-#define vsprintf_s sprintf ++#define vsprintf_s vsprintf + #define _stricmp strcmp + #define stricmp strcmp + #define strnicmp strncasecmp diff --git a/openvr.spec b/openvr.spec new file mode 100644 index 0000000..b38a988 --- /dev/null +++ b/openvr.spec @@ -0,0 +1,84 @@ +Name: openvr +Version: 2.5.1 +Release: 1mamba +Summary: Open VR hardware access library +Group: System/Libraries +Vendor: openmamba +Distribution: openmamba +Packager: Silvan Calarco +URL: https://www.steamvr.com/en/ +Source: https://github.com/ValveSoftware/openvr.git/v%{version}/openvr-%{version}.tar.bz2 +Patch0: openvr-2.5.1-pr-use-system-jsoncpp.patch +Patch1: openvr-2.5.1-pr-use_correct_definition_of_vsprintf_s.patch +License: BSD +## AUTOBUILDREQ-BEGIN +BuildRequires: glibc-devel +BuildRequires: libgcc +BuildRequires: libstdc++6-devel +## AUTOBUILDREQ-END +BuildRequires: cmake +Requires: lib%{name} = %{?epoch:%epoch:}%{version}-%{release} + +%description +Open VR hardware access library. + +%package -n lib%{name} +Group: System/Libraries +Summary: Open VR hardware access library + +%description -n lib%{name} +Open Virtual Reality library. +This package contains shared libraries for %{name}. + +%package -n lib%{name}-devel +Group: Development/Libraries +Summary: Development files for %{name} +Requires: lib%{name} = %{?epoch:%epoch:}%{version}-%{release} + +%description -n lib%{name}-devel +This package contains libraries and header files for developing applications that use %{name}. + +%debug_package + +%prep +%setup -q +%patch 0 -p1 -b .pr-use-system-jsoncpp +%patch 1 -p1 -b .pr-use_correct_definition_of_vsprintf_s + +sed -i "s|DESTINATION lib)|DESTINATION %{_lib})|" src/CMakeLists.txt + +%build +%cmake \ + -DBUILD_SHARED=1 + +# FIXME: +# -DUSE_SYSTEM_JSONCPP=True + +%cmake_build + +%install +[ "%{buildroot}" != / ] && rm -rf "%{buildroot}" +%cmake_install + +%clean +[ "%{buildroot}" != / ] && rm -rf "%{buildroot}" + +%post -n lib%{name} -p /sbin/ldconfig +%postun -n lib%{name} -p /sbin/ldconfig + +%files -n lib%{name} +%defattr(-,root,root) +%{_libdir}/libopenvr_api.so +%doc LICENSE + +%files -n lib%{name}-devel +%defattr(-,root,root) +%dir %{_includedir}/openvr +%{_includedir}/openvr/* +%{_datadir}/pkgconfig/openvr.pc +%doc README.md + + +%changelog +* Mon May 06 2024 Silvan Calarco 2.5.1-1mamba +- package created using the webbuild interface