diff --git a/cmake/Find7z.cmake b/cmake/Find7z.cmake new file mode 100644 --- /dev/null +++ b/cmake/Find7z.cmake @@ -0,0 +1,47 @@ +# Finds 7z. +# +# 7z_FOUND - True if 7z is found. +# 7z_EXECUTABLE - Path to executable + +#============================================================================= +# Copyright 2019 Friedrich W. H. Kossebau +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. The name of the author may not be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +#============================================================================= + +find_program(7z_EXECUTABLE NAMES 7z) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(7z + FOUND_VAR + 7z_FOUND + REQUIRED_VARS + 7z_EXECUTABLE +) +mark_as_advanced(7z_EXECUTABLE) + +set_package_properties(7z PROPERTIES + URL "https://www.7-zip.org/" + DESCRIPTION "Data (de)compression program" +) diff --git a/src/desktoptheme/CMakeLists.txt b/src/desktoptheme/CMakeLists.txt --- a/src/desktoptheme/CMakeLists.txt +++ b/src/desktoptheme/CMakeLists.txt @@ -2,10 +2,17 @@ option(GZIP_DESKTOPTHEME_SVG "Install Desktop Theme SVG files as .svgz." ON) if (GZIP_DESKTOPTHEME_SVG) - find_package(gzip) - set_package_properties(gzip PROPERTIES - TYPE REQUIRED - ) + if(WIN32) + find_package(7z) + set_package_properties(7z PROPERTIES + TYPE REQUIRED + ) + else() + find_package(gzip) + set_package_properties(gzip PROPERTIES + TYPE REQUIRED + ) + endif() endif() # Helper function, private for now @@ -55,16 +62,29 @@ if (GZIP_DESKTOPTHEME_SVG) set(_gzipped_file_displayname "${desktoptheme_COMPONENTDIR}/${_fileName}z") set(_gzipped_file "${CMAKE_CURRENT_BINARY_DIR}/${desktoptheme_GZIPDIR}/${_fileName}z") - add_custom_command( - OUTPUT ${_gzipped_file} - COMMAND ${gzip_EXECUTABLE} - ARGS - -9 - -c - ${_src_file} > ${_gzipped_file} - DEPENDS ${_src_file} - COMMENT "Gzipping ${_gzipped_file_displayname}" - ) + if(WIN32) + add_custom_command( + OUTPUT ${_gzipped_file} + COMMAND ${7z_EXECUTABLE} + ARGS + a + -tgzip + ${_gzipped_file} ${_src_file} + DEPENDS ${_src_file} + COMMENT "Gzipping ${_gzipped_file_displayname}" + ) + else() + add_custom_command( + OUTPUT ${_gzipped_file} + COMMAND ${gzip_EXECUTABLE} + ARGS + -9 + -c + ${_src_file} > ${_gzipped_file} + DEPENDS ${_src_file} + COMMENT "Gzipping ${_gzipped_file_displayname}" + ) + endif() else() set(_gzipped_file "${_src_file}") endif()