Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2022-09-29 11:33:09 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2022-09-29 11:33:09 +0200
commit2145960c785a2e2081b323e30ee0ed27b5a77972 (patch)
tree1be8790ff4124eb1b537900a15f3eb9fe38dd7a3
parent06d0c1a6655160d7755bd71f3699388f951a83d5 (diff)
extra/quazip: fix for Qt5 builds (FS32#273)
-rw-r--r--extra/quazip/CMakeLists-Qt5.txt78
-rw-r--r--extra/quazip/PKGBUILD14
2 files changed, 92 insertions, 0 deletions
diff --git a/extra/quazip/CMakeLists-Qt5.txt b/extra/quazip/CMakeLists-Qt5.txt
new file mode 100644
index 00000000..5e24bab7
--- /dev/null
+++ b/extra/quazip/CMakeLists-Qt5.txt
@@ -0,0 +1,78 @@
+# require 3.15 for GNUInstallDirs
+cmake_minimum_required(VERSION 3.15...3.18)
+
+project(QuaZip VERSION 1.3)
+
+set(CMAKE_CXX_STANDARD 14)
+
+set(QUAZIP_LIB_VERSION ${QuaZip_VERSION})
+set(QUAZIP_LIB_SOVERSION 1.3.0)
+
+option(BUILD_SHARED_LIBS "" ON)
+option(QUAZIP_INSTALL "" ON)
+option(QUAZIP_USE_QT_ZLIB "" OFF)
+option(QUAZIP_ENABLE_TESTS "Build QuaZip tests" OFF)
+
+# force Qt verison 5 when building for Qt5, no probing
+set(QT_VERSION_MAJOR 5)
+set(QUAZIP_QT_MAJOR_VERSION ${QT_VERSION_MAJOR} CACHE STRING "Qt version to use (4, 5 or 6), defaults to ${QT_VERSION_MAJOR}")
+
+if(NOT CMAKE_BUILD_TYPE)
+ set(CMAKE_BUILD_TYPE RELEASE)
+endif()
+
+set(CMAKE_AUTOMOC ON)
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+set(CMAKE_DEBUG_POSTFIX d)
+
+set(QUAZIP_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
+set(QUAZIP_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
+set(QUAZIP_LIB_FILE_NAME quazip${QuaZip_VERSION_MAJOR}-qt${QUAZIP_QT_MAJOR_VERSION})
+set(QUAZIP_LIB_TARGET_NAME QuaZip)
+set(QUAZIP_DIR_NAME QuaZip-Qt${QUAZIP_QT_MAJOR_VERSION}-${QUAZIP_LIB_VERSION})
+set(QUAZIP_PACKAGE_NAME QuaZip-Qt${QUAZIP_QT_MAJOR_VERSION})
+
+if(QUAZIP_QT_MAJOR_VERSION EQUAL 6)
+ find_package(Qt6 REQUIRED COMPONENTS Core Core5Compat
+ OPTIONAL_COMPONENTS Network Test)
+ set(QUAZIP_LIB_LIBRARIES Qt6::Core Qt6::Core5Compat)
+ set(QUAZIP_TEST_QT_LIBRARIES Qt6::Core Qt6::Core5Compat Qt6::Network Qt6::Test)
+ set(QUAZIP_PKGCONFIG_REQUIRES "zlib, Qt6Core")
+elseif(QUAZIP_QT_MAJOR_VERSION EQUAL 5)
+ find_package(Qt5 REQUIRED COMPONENTS Core
+ OPTIONAL_COMPONENTS Network Test)
+ set(QUAZIP_LIB_LIBRARIES Qt5::Core)
+ set(QUAZIP_TEST_QT_LIBRARIES Qt5::Core Qt5::Network Qt5::Test)
+ set(QUAZIP_PKGCONFIG_REQUIRES "zlib, Qt5Core")
+elseif(QUAZIP_QT_MAJOR_VERSION EQUAL 4)
+ find_package(Qt4 4.5.0 REQUIRED COMPONENTS QtCore
+ OPTIONAL_COMPONENTS QtNetwork QtTest)
+ set(QUAZIP_LIB_LIBRARIES Qt4::QtCore)
+ set(QUAZIP_TEST_QT_LIBRARIES Qt4::QtCore Qt4::QtNetwork Qt4::QtTest)
+ set(QUAZIP_PKGCONFIG_REQUIRES "zlib, QtCore")
+else()
+ message(FATAL_ERROR "Qt version ${QUAZIP_QT_MAJOR_VERSION} is not supported")
+endif()
+
+message(STATUS "Using Qt version ${QUAZIP_QT_MAJOR_VERSION}")
+
+set(QUAZIP_QT_ZLIB_USED OFF)
+if(QUAZIP_USE_QT_ZLIB)
+ find_package(Qt${QUAZIP_QT_MAJOR_VERSION} OPTIONAL_COMPONENTS Zlib)
+ if (Qt${QUAZIP_QT_MAJOR_VERSION}Zlib_FOUND)
+ set(QUAZIP_LIB_LIBRARIES ${QUAZIP_LIB_LIBRARIES} Qt${QUAZIP_QT_MAJOR_VERSION}::Zlib)
+ set(QUAZIP_QT_ZLIB_USED ON)
+ endif()
+endif()
+if(NOT QUAZIP_QT_ZLIB_USED)
+ find_package(ZLIB REQUIRED)
+ set(QUAZIP_LIB_LIBRARIES ${QUAZIP_LIB_LIBRARIES} ZLIB::ZLIB)
+endif()
+
+add_subdirectory(quazip)
+
+if(QUAZIP_ENABLE_TESTS)
+ message(STATUS "Building QuaZip tests")
+ enable_testing()
+ add_subdirectory(qztest)
+endif()
diff --git a/extra/quazip/PKGBUILD b/extra/quazip/PKGBUILD
new file mode 100644
index 00000000..a3ff50a4
--- /dev/null
+++ b/extra/quazip/PKGBUILD
@@ -0,0 +1,14 @@
+# build with non-probing CMakeLists.txt the qt5 version, assuming both
+# qt6 and qt5 artifacts are installed which make the automatic guesser
+# recognize the major version of Qt
+# (see also upstream FS#76054)
+source+=('CMakeLists-Qt5.txt')
+sha256sums+=('44378ad0642f14173b4d3b2f98332546d88ffe045db465c415d9c37708fdb1ea')
+eval "$(
+ declare -f build | \
+ sed '
+ /cmake -B build5/ i cp $pkgbase-$pkgver/CMakeLists.txt CMakeLists.bak \
+ cp CMakeLists-Qt5.txt $pkgbase-$pkgver/CMakeLists.txt
+ /cmake -B build6/ i cp CMakeLists.bak $pkgbase-$pkgver/CMakeLists.txt
+ '
+)"