summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorDiego Iastrubni <diegoiast@gmail.com>2022-09-02 12:31:20 +0300
committerSam Atkins <atkinssj@gmail.com>2022-09-09 10:31:12 +0100
commit8b30b69dac87ca836cdbc573a1a622130fb37c32 (patch)
treebcce91f1dd96ec3f5c74fe2f80c0257d6023944a /CMakeLists.txt
parent5ab3fcf71020ad01d82c765d706cd253429305e8 (diff)
downloadserenity-8b30b69dac87ca836cdbc573a1a622130fb37c32.zip
Meta: Use CMake functions to extract files
Newer cmake's have internal functions to un-compress files. These functions will work on pure windows - as well as linux. This eliminates the need to search for external tools (TAR,GZIP,ZIP) - and helps fixing #9866. In order to finally fix #9866 we need to decide to bump the cmake version requirements and remove the checks. If we demand a newer cmake version, we will loose Ubuntu 20.04 as a build target - as it ships with CMake 3.16. For now - we keep compatibility with CMake 3.16 - and only if CMake 3.18 as been found - we use its new functionality.
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt12
1 files changed, 10 insertions, 2 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3979b027f8..6f20d10500 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -257,7 +257,11 @@ endif()
if(EXISTS ${PCI_IDS_GZ_PATH} AND NOT EXISTS ${CMAKE_STAGING_PREFIX}/${PCI_IDS_INSTALL_PATH})
message(STATUS "Extracting PCI ID database from ${PCI_IDS_GZ_PATH}...")
file(MAKE_DIRECTORY "${CMAKE_STAGING_PREFIX}/${CMAKE_INSTALL_DATAROOTDIR}")
- execute_process(COMMAND "${GZIP_TOOL}" -d -c "${PCI_IDS_GZ_PATH}" OUTPUT_FILE "${CMAKE_STAGING_PREFIX}/${PCI_IDS_INSTALL_PATH}")
+ if (CMAKE_VERSION VERSION_LESS 3.18.0)
+ execute_process(COMMAND "${GZIP_TOOL}" -d -c "${PCI_IDS_GZ_PATH}" OUTPUT_FILE "${CMAKE_STAGING_PREFIX}/${PCI_IDS_INSTALL_PATH}")
+ else()
+ file(ARCHIVE_EXTRACT INPUT "${PCI_IDS_GZ_PATH}" DESTINATION "${PCI_IDS_GZ_PATH}" PATTERNS "${CMAKE_STAGING_PREFIX}/${PCI_IDS_INSTALL_PATH}")
+ endif()
endif()
set(USB_IDS_FILE usb.ids)
@@ -273,5 +277,9 @@ endif()
if(EXISTS ${USB_IDS_GZ_PATH} AND NOT EXISTS ${CMAKE_STAGING_PREFIX}/${USB_IDS_INSTALL_PATH})
message(STATUS "Extracting USB ID database from ${USB_IDS_GZ_PATH}...")
file(MAKE_DIRECTORY "${CMAKE_STAGING_PREFIX}/${CMAKE_INSTALL_DATAROOTDIR}")
- execute_process(COMMAND "${GZIP_TOOL}" -d -c "${USB_IDS_GZ_PATH}" OUTPUT_FILE "${CMAKE_STAGING_PREFIX}/${USB_IDS_INSTALL_PATH}")
+ if (CMAKE_VERSION VERSION_LESS 3.18.0)
+ execute_process(COMMAND "${GZIP_TOOL}" -d -c "${USB_IDS_GZ_PATH}" OUTPUT_FILE "${CMAKE_STAGING_PREFIX}/${USB_IDS_INSTALL_PATH}")
+ else()
+ file(ARCHIVE_EXTRACT INPUT "${PCI_IDS_GZ_PATH}" DESTINATION "${USB_IDS_GZ_PATH}" PATTERNS "${CMAKE_STAGING_PREFIX}/${USB_IDS_INSTALL_PATH}")
+ endif()
endif()