[neon/neon-packaging/glaxnimate/Neon/unstable] debian/patches: redo patch again

Carlos De Maine null at kde.org
Fri Sep 29 08:47:53 BST 2023


Git commit d0b61fee1d17697bb104db737d5c506e0bc96cff by Carlos De Maine.
Committed on 29/09/2023 at 09:47.
Pushed by carlosdem into branch 'Neon/unstable'.

redo patch again

M  +1051 -64   debian/patches/0001_patch

https://invent.kde.org/neon/neon-packaging/glaxnimate/-/commit/d0b61fee1d17697bb104db737d5c506e0bc96cff

diff --git a/debian/patches/0001_patch b/debian/patches/0001_patch
index ee23186..ab6f229 100644
--- a/debian/patches/0001_patch
+++ b/debian/patches/0001_patch
@@ -1,69 +1,171 @@
 --- /dev/null
-+++ b/cmake/FindPotrace.cmake
-@@ -0,0 +1,63 @@
-+#  POTRACE_FOUND - system has Potrace
-+#  POTRACE_INCLUDE_DIRS - the Potrace include directory
-+#  POTRACE_LIBRARIES - The libraries needed to use Potrace
-+
-+IF (POTRACE_LIBRARIES AND POTRACE_INCLUDE_DIRS)
-+   # in cache already
-+   SET(POTRACE_FOUND TRUE)
-+ELSE (POTRACE_LIBRARIES AND POTRACE_INCLUDE_DIRS)
-+   FIND_PATH (POTRACE_INCLUDE_DIR
-+      NAMES
-+         potracelib.h
-+      PATHS
-+         /usr/include
-+         /usr/local/include
-+	 $ENV{DEVLIBS_PATH}/include
-+      PATH_SUFFIXES
-+         potrace
-+   )
-+
-+   FIND_LIBRARY (POTRACE_LIBRARY
-+      NAMES
-+        potrace
-+        libpotrace
-+      PATHS
-+         /usr/lib
-+         /usr/local/lib
-+         $ENV{DEVLIBS_PATH}/lib
-+   )
-+
-+   if (POTRACE_LIBRARY)
-+      set (POTRACE_FOUND TRUE)
-+   endif (POTRACE_LIBRARY)
-+
-+   set (POTRACE_INCLUDE_DIRS
-+      ${POTRACE_INCLUDE_DIR}
-+   )
-+
-+   if (POTRACE_FOUND)
-+      set(POTRACE_LIBRARIES
-+        ${POTRACE_LIBRARIES}
-+        ${POTRACE_LIBRARY}
-+      )
-+   endif (POTRACE_FOUND)
-+
-+   if (POTRACE_INCLUDE_DIRS AND POTRACE_LIBRARIES)
-+      set(POTRACE_FOUND TRUE)
-+   endif (POTRACE_INCLUDE_DIRS AND POTRACE_LIBRARIES)
-+
-+   if (POTRACE_FOUND)
-+      if (NOT Potrace_FIND_QUIETLY)
-+         message(STATUS "Found Potrace: ${POTRACE_LIBRARIES}")
-+      endif (NOT Potrace_FIND_QUIETLY)
-+   else (POTRACE_FOUND)
-+      if (Potrace_FIND_REQUIRED)
-+	      message(FATAL_ERROR "Could not find potrace")
-+      endif (Potrace_FIND_REQUIRED)
-+   endif (POTRACE_FOUND)
-+
-+   # show the POTRACE_INCLUDE_DIRS and POTRACE_LIBRARIES variables only in the advanced view
-+   MARK_AS_ADVANCED(POTRACE_INCLUDE_DIRS POTRACE_LIBRARIES)
-+
-+endif (POTRACE_LIBRARIES AND POTRACE_INCLUDE_DIRS)
++++ b/cmake/COPYING
+@@ -0,0 +1,165 @@
++                   GNU LESSER GENERAL PUBLIC LICENSE
++                       Version 3, 29 June 2007
++
++ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
++ Everyone is permitted to copy and distribute verbatim copies
++ of this license document, but changing it is not allowed.
++
++
++  This version of the GNU Lesser General Public License incorporates
++the terms and conditions of version 3 of the GNU General Public
++License, supplemented by the additional permissions listed below.
++
++  0. Additional Definitions.
++
++  As used herein, "this License" refers to version 3 of the GNU Lesser
++General Public License, and the "GNU GPL" refers to version 3 of the GNU
++General Public License.
++
++  "The Library" refers to a covered work governed by this License,
++other than an Application or a Combined Work as defined below.
++
++  An "Application" is any work that makes use of an interface provided
++by the Library, but which is not otherwise based on the Library.
++Defining a subclass of a class defined by the Library is deemed a mode
++of using an interface provided by the Library.
++
++  A "Combined Work" is a work produced by combining or linking an
++Application with the Library.  The particular version of the Library
++with which the Combined Work was made is also called the "Linked
++Version".
++
++  The "Minimal Corresponding Source" for a Combined Work means the
++Corresponding Source for the Combined Work, excluding any source code
++for portions of the Combined Work that, considered in isolation, are
++based on the Application, and not on the Linked Version.
++
++  The "Corresponding Application Code" for a Combined Work means the
++object code and/or source code for the Application, including any data
++and utility programs needed for reproducing the Combined Work from the
++Application, but excluding the System Libraries of the Combined Work.
++
++  1. Exception to Section 3 of the GNU GPL.
++
++  You may convey a covered work under sections 3 and 4 of this License
++without being bound by section 3 of the GNU GPL.
++
++  2. Conveying Modified Versions.
++
++  If you modify a copy of the Library, and, in your modifications, a
++facility refers to a function or data to be supplied by an Application
++that uses the facility (other than as an argument passed when the
++facility is invoked), then you may convey a copy of the modified
++version:
++
++   a) under this License, provided that you make a good faith effort to
++   ensure that, in the event an Application does not supply the
++   function or data, the facility still operates, and performs
++   whatever part of its purpose remains meaningful, or
++
++   b) under the GNU GPL, with none of the additional permissions of
++   this License applicable to that copy.
++
++  3. Object Code Incorporating Material from Library Header Files.
++
++  The object code form of an Application may incorporate material from
++a header file that is part of the Library.  You may convey such object
++code under terms of your choice, provided that, if the incorporated
++material is not limited to numerical parameters, data structure
++layouts and accessors, or small macros, inline functions and templates
++(ten or fewer lines in length), you do both of the following:
++
++   a) Give prominent notice with each copy of the object code that the
++   Library is used in it and that the Library and its use are
++   covered by this License.
++
++   b) Accompany the object code with a copy of the GNU GPL and this license
++   document.
++
++  4. Combined Works.
 +
++  You may convey a Combined Work under terms of your choice that,
++taken together, effectively do not restrict modification of the
++portions of the Library contained in the Combined Work and reverse
++engineering for debugging such modifications, if you also do each of
++the following:
++
++   a) Give prominent notice with each copy of the Combined Work that
++   the Library is used in it and that the Library and its use are
++   covered by this License.
++
++   b) Accompany the Combined Work with a copy of the GNU GPL and this license
++   document.
++
++   c) For a Combined Work that displays copyright notices during
++   execution, include the copyright notice for the Library among
++   these notices, as well as a reference directing the user to the
++   copies of the GNU GPL and this license document.
++
++   d) Do one of the following:
++
++       0) Convey the Minimal Corresponding Source under the terms of this
++       License, and the Corresponding Application Code in a form
++       suitable for, and under terms that permit, the user to
++       recombine or relink the Application with a modified version of
++       the Linked Version to produce a modified Combined Work, in the
++       manner specified by section 6 of the GNU GPL for conveying
++       Corresponding Source.
++
++       1) Use a suitable shared library mechanism for linking with the
++       Library.  A suitable mechanism is one that (a) uses at run time
++       a copy of the Library already present on the user's computer
++       system, and (b) will operate properly with a modified version
++       of the Library that is interface-compatible with the Linked
++       Version.
++
++   e) Provide Installation Information, but only if you would otherwise
++   be required to provide such information under section 6 of the
++   GNU GPL, and only to the extent that such information is
++   necessary to install and execute a modified version of the
++   Combined Work produced by recombining or relinking the
++   Application with a modified version of the Linked Version. (If
++   you use option 4d0, the Installation Information must accompany
++   the Minimal Corresponding Source and Corresponding Application
++   Code. If you use option 4d1, you must provide the Installation
++   Information in the manner specified by section 6 of the GNU GPL
++   for conveying Corresponding Source.)
++
++  5. Combined Libraries.
++
++  You may place library facilities that are a work based on the
++Library side by side in a single library together with other library
++facilities that are not Applications and are not covered by this
++License, and convey such a combined library under terms of your
++choice, if you do both of the following:
++
++   a) Accompany the combined library with a copy of the same work based
++   on the Library, uncombined with any other library facilities,
++   conveyed under the terms of this License.
++
++   b) Give prominent notice with the combined library that part of it
++   is a work based on the Library, and explaining where to find the
++   accompanying uncombined form of the same work.
++
++  6. Revised Versions of the GNU Lesser General Public License.
++
++  The Free Software Foundation may publish revised and/or new versions
++of the GNU Lesser General Public License from time to time. Such new
++versions will be similar in spirit to the present version, but may
++differ in detail to address new problems or concerns.
++
++  Each version is given a distinguishing version number. If the
++Library as you received it specifies that a certain numbered version
++of the GNU Lesser General Public License "or any later version"
++applies to it, you have the option of following the terms and
++conditions either of that published version or of any later version
++published by the Free Software Foundation. If the Library as you
++received it does not specify a version number of the GNU Lesser
++General Public License, you may choose any version of the GNU Lesser
++General Public License ever published by the Free Software Foundation.
++
++  If the Library as you received it specifies that a proxy can decide
++whether future versions of the GNU Lesser General Public License shall
++apply, that proxy's public statement of acceptance of any version is
++permanent authorization for you to choose that version for the
++Library.
 --- /dev/null
 +++ b/cmake/GetGitRevisionDescription.cmake
 @@ -0,0 +1,285 @@
@@ -402,6 +504,891 @@
 +    string(STRIP "${HEAD_HASH}" HEAD_HASH)
 +endif()
 --- /dev/null
++++ b/cmake/README.md
+@@ -0,0 +1,2 @@
++# CMake-Lib
++Some reusable CMake scripts
+--- /dev/null
++++ b/cmake/misc.cmake
+@@ -0,0 +1,91 @@
++#
++# Copyright (C) 2015-2017 Mattia Basaglia
++#
++# This program is free software: you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation, either version 3 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program.  If not, see <http://www.gnu.org/licenses/>.
++#
++
++# Sets C++ standard version and disables extensions
++# Synopsis: use_cxx_standard(version)
++function(use_cxx_standard version)
++    set(CMAKE_CXX_STANDARD ${version} PARENT_SCOPE)
++    set(CMAKE_CXX_EXTENSIONS OFF PARENT_SCOPE)
++    set(CMAKE_CXX_STANDARD_REQUIRED ON PARENT_SCOPE)
++    message(STATUS "Using C++${version}")
++
++    if(${CMAKE_VERSION} LESS 3.2)
++        if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR CMAKE_COMPILER_IS_GNUCXX)
++            include(CheckCXXCompilerFlag)
++            check_cxx_compiler_flag(--std=c++${version} STD_CXX)
++            if(STD_CXX)
++                set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++${version}" PARENT_SCOPE)
++            else()
++                message(SEND_ERROR "Requires C++${version} or better")
++            endif()
++        else()
++            message(WARNING "Unrecognized compiler: ${CMAKE_CXX_COMPILER_ID}, make sure it supports C++${version}")
++        endif()
++    endif()
++endfunction()
++
++# Searches all sources matching a some glob patterns
++# Synopsis:
++#   find_sources(
++#       OUTPUT output_variable  # Variable to populate
++#       PATTERNS pattern...     # Glob patterns for matching files
++#       SOURCES directory...    # Directories to scan
++#   )
++function(find_sources)
++    set(options)
++    set(one_value OUTPUT)
++    set(multi_value PATTERNS SOURCES)
++    cmake_parse_arguments(PARSE_ARGV 0 FIND_SOURCES "${options}" "${one_value}" "${multi_value}")
++
++    set(all_files)
++    foreach(dir ${FIND_SOURCES_SOURCES})
++        foreach(pattern ${FIND_SOURCES_PATTERNS})
++            file(GLOB_RECURSE files "${dir}/${pattern}")
++            list(APPEND all_files ${files})
++        endforeach()
++    endforeach()
++    set(${FIND_SOURCES_OUTPUT} ${all_files} PARENT_SCOPE)
++endfunction()
++
++
++# Creates targets to generate Doxygen documentation
++# Synopsis: create_doxygen_target(name)
++function(create_doxygen_target name)
++    set(DOXYGEN_OUTPUT "\"${CMAKE_BINARY_DIR}/${name}\"")
++
++    set(DOXYGEN_INPUT "")
++    find_sources(DOXYGEN_INPUT_FILES "*.dox")
++    set(DOXYGEN_INPUT_FILES ${DOXYGEN_INPUT_FILES} ${ALL_SOURCES})
++    foreach(source ${DOXYGEN_INPUT_FILES})
++        set(DOXYGEN_INPUT "${DOXYGEN_INPUT} \"${source}\"")
++    endforeach()
++
++    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${PROJECT_BINARY_DIR}/Doxyfile)
++    add_custom_target(${name}
++        ${DOXYGEN_EXECUTABLE} ${PROJECT_BINARY_DIR}/Doxyfile
++        DEPENDS ${PROJECT_BINARY_DIR}/Doxyfile ${DOXYGEN_INPUT_FILES}
++        WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
++        COMMENT "Generating Doxygen Documentation" VERBATIM
++    )
++    add_custom_target(${name}-view
++        xdg-open ${DOXYGEN_OUTPUT}/html/index.html
++        COMMENT "Showing Doxygen documentation"
++    )
++endfunction()
++
++
++set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_LIST_DIR}/modules")
+--- /dev/null
++++ b/cmake/modules/FindIconv.cmake
+@@ -0,0 +1,39 @@
++#
++# Copyright (C) 2015-2017 Mattia Basaglia
++#
++# This program is free software: you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation, either version 3 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program.  If not, see <http://www.gnu.org/licenses/>.
++#
++# Tries to find the Iconv library
++
++set(Iconv_PREFIX "${CMAKE_SYSTEM_PREFIX_PATH}" CACHE PATH "Iconv installation prefix")
++set(Iconv_HEADER_BASENAME iconv.h)
++
++find_path(Iconv_INCLUDE_DIR ${Iconv_HEADER_BASENAME} PATHS ${Iconv_PREFIX})
++find_library(Iconv_LIBRARY NAMES iconv PATHS ${Iconv_PREFIX})
++
++if(Iconv_INCLUDE_DIR)
++    message(STATUS "Found Iconv")
++    set(Iconv_FOUND TRUE)
++    if (NOT Iconv_LIBRARY)
++        set(Iconv_LIBRARY "")
++    endif()
++else()
++    set(Iconv_FOUND FALSE)
++    set(Iconv_ERROR_MESSAGE "Iconv not found!")
++    if(Iconv_FIND_REQUIRED)
++        message(FATAL_ERROR ${Iconv_ERROR_MESSAGE})
++    elseif(NOT Iconv_FIND_QUIETLY)
++        message(STATUS ${Iconv_ERROR_MESSAGE})
++    endif()
++endif()
+--- /dev/null
++++ b/cmake/modules/FindImageQuant.cmake
+@@ -0,0 +1,76 @@
++#
++# Copyright (C) 2015-2020 Mattia Basaglia
++#
++# This program is free software: you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation, either version 3 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program.  If not, see <http://www.gnu.org/licenses/>.
++#
++# Tries to find libav
++#
++# Input:
++#   ImageQuant_PREFIX
++#   ImageQuant_LIBRARIES
++#   ImageQuant_INCLUDE_DIRS
++#
++# Output:
++#   ImageQuant_FOUND
++#   ImageQuant_LIBRARIES
++#   ImageQuant_INCLUDE_DIRS
++# For each component:
++#   ImageQuant_<component>_FOUND
++#   ImageQuant_<component>_INCLUDE_DIR
++#   ImageQuant_<component>_LIBRARY
++
++
++set(ImageQuant_PREFIX "${CMAKE_SYSTEM_PREFIX_PATH}" CACHE PATH "libimagequant installation prefix")
++
++if(ImageQuant_LIBRARIES AND ImageQuant_INCLUDE_DIRS)
++    set(ImageQuant_FOUND TRUE)
++else()
++    set(ImageQuant_LIBRARIES)
++    set(ImageQuant_INCLUDE_DIRS)
++
++    find_path(
++        ImageQuant_INCLUDE_DIRS
++        NAMES
++            "libimagequant.h"
++        PATHS
++            ${ImageQuant_PREFIX}/include
++            /usr/local/include
++            /usr/include
++            /usr/local/homebrew/opt/imagequant/include/
++    )
++
++    find_library(
++        ImageQuant_LIBRARIES
++        NAMES
++            imagequant
++        PATHS
++            ${ImageQuant_PREFIX}/lib
++            /usr/local/lib
++            /usr/local/lib/x86_64-linux-gnu
++            /usr/lib
++            /usr/lib/x86_64-linux-gnu
++            /usr/local/homebrew/opt/imagequant/lib/
++    )
++
++    list(REMOVE_DUPLICATES ImageQuant_INCLUDE_DIRS)
++
++    include(FindPackageHandleStandardArgs)
++    find_package_handle_standard_args(
++        ImageQuant
++        REQUIRED_VARS
++            ImageQuant_LIBRARIES
++            ImageQuant_INCLUDE_DIRS
++        HANDLE_COMPONENTS
++    )
++endif()
+--- /dev/null
++++ b/cmake/modules/FindLibav.cmake
+@@ -0,0 +1,102 @@
++#
++# Copyright (C) 2015-2020 Mattia Basaglia
++#
++# This program is free software: you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation, either version 3 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program.  If not, see <http://www.gnu.org/licenses/>.
++#
++# Tries to find libav
++#
++# Input:
++#   Libav_PREFIX
++#   Libav_LIBRARIES
++#   Libav_INCLUDE_DIRS
++#
++# Output:
++#   Libav_FOUND
++#   Libav_LIBRARIES
++#   Libav_INCLUDE_DIRS
++# For each component:
++#   Libav_<component>_FOUND
++#   Libav_<component>_INCLUDE_DIR
++#   Libav_<component>_LIBRARY
++#
++# Components:
++#   codec
++#   filter
++#   format
++#   device
++#   util
++#   resample
++#   swscale
++
++set(Libav_PREFIX "${CMAKE_SYSTEM_PREFIX_PATH}" CACHE PATH "libav installation prefix")
++
++if(Libav_LIBRARIES AND Libav_INCLUDE_DIRS)
++    set(Libav_FOUND TRUE)
++else()
++    set(Libav_LIBRARIES)
++    set(Libav_INCLUDE_DIRS)
++
++    foreach(comp_short ${Libav_FIND_COMPONENTS})
++        if(comp_short MATCHES "^sw.*" )
++            set(component ${comp_short})
++        else()
++            set(component "av${comp_short}")
++        endif()
++
++        find_path(
++            Libav_${comp_short}_INCLUDE_DIR
++            NAMES
++                "lib${component}/${component}.h"
++            PATHS
++                ${Libav_PREFIX}/include
++                /usr/local/include
++                /usr/include
++                /usr/local/homebrew/opt/ffmpeg/include/
++                /usr/include/ffmpeg
++        )
++
++        find_library(
++            Libav_${comp_short}_LIBRARY
++            NAMES
++                ${component}
++            PATHS
++                ${Libav_PREFIX}/lib
++                /usr/local/lib
++                /usr/local/lib/x86_64-linux-gnu
++                /usr/lib
++                /usr/lib/x86_64-linux-gnu
++                /usr/local/homebrew/opt/ffmpeg/lib/
++                /usr/lib64
++        )
++
++        if(Libav_${comp_short}_INCLUDE_DIR AND Libav_${comp_short}_LIBRARY)
++            set(Libav_${comp_short}_FOUND TRUE)
++            list(APPEND Libav_LIBRARIES ${Libav_${comp_short}_LIBRARY})
++            list(APPEND Libav_INCLUDE_DIRS ${Libav_${comp_short}_INCLUDE_DIR})
++        else()
++            set(Libav_${comp_short}_FOUND FALSE)
++        endif()
++    endforeach()
++
++    list(REMOVE_DUPLICATES Libav_INCLUDE_DIRS)
++
++    include(FindPackageHandleStandardArgs)
++    find_package_handle_standard_args(
++        Libav
++        REQUIRED_VARS
++            Libav_LIBRARIES
++            Libav_INCLUDE_DIRS
++        HANDLE_COMPONENTS
++    )
++endif()
+--- /dev/null
++++ b/cmake/modules/FindMagic.cmake
+@@ -0,0 +1,36 @@
++#
++# Copyright (C) 2015-2020 Mattia Basaglia
++#
++# This program is free software: you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation, either version 3 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program.  If not, see <http://www.gnu.org/licenses/>.
++#
++# Tries to find libmagic
++
++set(Magic_PREFIX "${CMAKE_SYSTEM_PREFIX_PATH}" CACHE PATH "libmagic installation prefix")
++set(Magic_HEADER_BASENAME magic.h)
++
++find_path(Magic_INCLUDE_DIR ${Magic_HEADER_BASENAME} PATHS ${Magic_PREFIX})
++find_library(Magic_LIBRARY NAMES magic PATHS ${Magic_PREFIX})
++
++if(Magic_INCLUDE_DIR)
++    set(Magic_FOUND TRUE)
++    message(STATUS "Found libmagic")
++else()
++    set(Magic_FOUND FALSE)
++    set(Magic_ERROR_MESSAGE "libmagic not found!")
++    if(Magic_FIND_REQUIRED)
++        message(FATAL_ERROR ${Magic_ERROR_MESSAGE})
++    elseif(NOT Magic_FIND_QUIETLY)
++        message(STATUS ${Magic_ERROR_MESSAGE})
++    endif()
++endif()
+--- /dev/null
++++ b/cmake/modules/FindPotrace.cmake
+@@ -0,0 +1,74 @@
++#
++# Copyright (C) 2015-2020 Mattia Basaglia
++#
++# This program is free software: you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation, either version 3 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program.  If not, see <http://www.gnu.org/licenses/>.
++#
++# Tries to find libpotrace
++#
++# Input:
++#   Potrace_PREFIX
++#   Potrace_LIBRARIES
++#   Potrace_INCLUDE_DIRS
++# Output:
++#   Potrace_FOUND
++#   Potrace_LIBRARIES
++#   Potrace_INCLUDE_DIRS
++
++set(Potrace_PREFIX "${CMAKE_SYSTEM_PREFIX_PATH}" CACHE PATH "libpotrace installation prefix")
++set(Potrace_HEADER_BASENAME potracelib.h)
++
++if(Potrace_LIBRARIES AND Potrace_INCLUDE_DIRS)
++    set(Potrace_FOUND TRUE)
++else()
++    find_path(
++        Potrace_INCLUDE_DIR
++        NAMES
++            ${Potrace_HEADER_BASENAME}
++        PATHS
++            /usr/include
++            /usr/local/include
++            /usr/local/homebrew/opt/potrace/include
++            ${Potrace_PREFIX}/include
++    )
++
++    find_library(
++        Potrace_LIBRARY
++        NAMES
++            potrace
++            libpotrace
++            potracelib
++        PATHS
++            /usr/lib
++            /usr/local/lib
++            /usr/lib/x86_64-linux-gnu
++            /usr/local/lib/x86_64-linux-gnu
++            /usr/local/homebrew/opt/potrace/lib
++            ${Potrace_PREFIX}/lib
++        )
++
++    if(Potrace_INCLUDE_DIR AND Potrace_LIBRARY)
++        set(Potrace_FOUND TRUE)
++        set(Potrace_LIBRARIES ${Potrace_LIBRARIES} ${Potrace_LIBRARY})
++        set(Potrace_INCLUDE_DIRS ${Potrace_INCLUDE_DIRS} ${Potrace_INCLUDE_DIR})
++        message(STATUS "Found Potrace")
++    else()
++        set(Potrace_FOUND FALSE)
++        set(Potrace_ERROR_MESSAGE "Potrace not found!")
++        if(Potrace_FIND_REQUIRED)
++            message(FATAL_ERROR ${Potrace_ERROR_MESSAGE})
++        elseif(NOT Potrace_FIND_QUIETLY)
++            message(STATUS ${Potrace_ERROR_MESSAGE})
++        endif()
++    endif()
++endif()
+--- /dev/null
++++ b/cmake/modules/FindSDL2.cmake
+@@ -0,0 +1,198 @@
++# Copyright 2016-2020 Mattia Basaglia
++#
++# This program is free software: you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation, either version 3 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program.  If not, see <http://www.gnu.org/licenses/>.
++#
++# =====
++# Finds the SDL2 library and various components
++#
++# Defines the following variable
++# SDL2_FOUND        Whether the ibrary has been found
++# SDL2_LIBRARIES    A list of linker options
++# SDL2_INCLUDE_DIRS A list of paths to include
++# SDL2_VERSION      Version string in the form "major.minor.patch"
++#
++# It supports finding SDL2 components, a component is a library that follows the
++# following pattern:
++# Header in SDL2/SDL_(name).h
++# Library as libSDL2_(name)
++#
++# Some example of these components are SDL_image and SDL_ttf
++# (which would be called "image" and "ttf" respectively)
++#
++# The component "main" links to SDLMain.
++
++# Like find_path() buth tailored to work with SDL2 include paths
++function(sdl2_find_include_path output_var header_name)
++    find_path(${output_var}_tmp ${header_name}
++        HINTS
++        ENV SDL2DIR
++        PATH_SUFFIXES include/SDL2 include
++        PATHS
++        ~/Library/Frameworks
++        /Library/Frameworks
++        /usr/local/include/SDL2
++        /usr/include/SDL2
++        /sw # Fink
++        /opt/local # DarwinPorts
++        /opt/csw # Blastwave
++        /opt
++    )
++    set(${output_var} ${${output_var}_tmp} PARENT_SCOPE)
++endfunction()
++
++# Like find_library() but tailored to work with SDL2 libraries
++function(sdl2_find_library output_var lib_name)
++    find_library(${output_var}_tmp
++        NAMES ${lib_name}
++        HINTS
++        ENV SDL2DIR
++        PATH_SUFFIXES lib64 lib
++        PATHS
++        /sw
++        /opt/local
++        /opt/csw
++        /opt
++    )
++    set(${output_var} ${${output_var}_tmp} PARENT_SCOPE)
++endfunction()
++
++# Helper function to parse version macros from a header
++# Arguments:
++#   header_path:    Full path to the header file to parse
++#   macro_prefix:   Prefix of the _MAJOR_VERSION macro and friends
++#   output_var:     Variable to store the version insto
++function(sdl2_parse_version header_path macro_prefix output_var)
++    if(EXISTS ${header_path})
++        file(STRINGS ${header_path} SDL2_COMP_VERSION_MAJOR_LINE REGEX "^#define[ \t]+${macro_prefix}_MAJOR_VERSION[ \t]+[0-9]+$")
++        file(STRINGS ${header_path} SDL2_COMP_VERSION_MINOR_LINE REGEX "^#define[ \t]+${macro_prefix}_MINOR_VERSION[ \t]+[0-9]+$")
++        file(STRINGS ${header_path} SDL2_COMP_VERSION_PATCH_LINE REGEX "^#define[ \t]+${macro_prefix}_PATCHLEVEL[ \t]+[0-9]+$")
++        string(REGEX REPLACE "^#define[ \t]+${macro_prefix}_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_COMP_VERSION_MAJOR "${SDL2_COMP_VERSION_MAJOR_LINE}")
++        string(REGEX REPLACE "^#define[ \t]+${macro_prefix}_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_COMP_VERSION_MINOR "${SDL2_COMP_VERSION_MINOR_LINE}")
++        string(REGEX REPLACE "^#define[ \t]+${macro_prefix}_PATCHLEVEL[ \t]+([0-9]+)$"    "\\1" SDL2_COMP_VERSION_PATCH "${SDL2_COMP_VERSION_PATCH_LINE}")
++        set(${output_var} ${SDL2_COMP_VERSION_MAJOR}.${SDL2_COMP_VERSION_MINOR}.${SDL2_COMP_VERSION_PATCH} PARENT_SCOPE)
++    endif()
++endfunction()
++
++# Helper function to find SDL2 components
++# Outputs the given variables (all uppercase):
++#   SDL2_(ID)_FOUND         (Boolean, whether the component has been found)
++#   SDL2_(ID)_VERSION       (String, the detected version as "major.minor.patch")
++#   SDL2_(ID)_INCLUDE_DIRS  (Cached, List of paths to include)
++#   SDL2_(ID)_LIBRARIES     (Cached, List of libraries to include)
++function(sdl2_find_component SDL2_COMPONENT_ID)
++    set(SDL2_VARPREFIX "SDL2_${SDL2_COMPONENT_ID}")
++    set(SDL2_COMPONENT_HEADER "SDL_${SDL2_COMPONENT_ID}.h")
++
++    sdl2_find_include_path(${SDL2_VARPREFIX}_INCLUDE_DIR ${SDL2_COMPONENT_HEADER})
++    sdl2_find_library(${SDL2_VARPREFIX}_LIBRARY "SDL2_${SDL2_COMPONENT_ID}")
++
++    set(SDL2_COMPONENT_HEADER_PATH "${${SDL2_VARPREFIX}_INCLUDE_DIR}/${SDL2_COMPONENT_HEADER}")
++
++    if(${SDL2_VARPREFIX}_INCLUDE_DIR)
++        string(TOUPPER "SDL_${SDL2_COMPONENT_ID}" SDL2_COMPONENT_MACRO)
++        sdl2_parse_version(${SDL2_COMPONENT_HEADER_PATH} ${SDL2_COMPONENT_MACRO} "${SDL2_VARPREFIX}_VERSION")
++        set("${SDL2_VARPREFIX}_VERSION" ${${SDL2_VARPREFIX}_VERSION} PARENT_SCOPE)
++    endif()
++
++    if(${SDL2_VARPREFIX}_LIBRARY AND ${SDL2_VARPREFIX}_INCLUDE_DIR)
++        set("${SDL2_VARPREFIX}_LIBRARIES" ${${SDL2_VARPREFIX}_LIBRARY} PARENT_SCOPE)
++        set("${SDL2_VARPREFIX}_INCLUDE_DIRS" ${${SDL2_VARPREFIX}_INCLUDE_DIR} PARENT_SCOPE)
++        set("${SDL2_VARPREFIX}_FOUND" ON PARENT_SCOPE)
++    else()
++        set("${SDL2_VARPREFIX}_FOUND" OFF PARENT_SCOPE)
++    endif()
++endfunction()
++
++# Find the library proper
++set(SDL2_INCLUDE_DIRS "")
++sdl2_find_include_path(SDL2_INCLUDE_DIR SDL.h)
++list(APPEND SDL2_INCLUDE_DIRS ${SDL2_INCLUDE_DIR})
++sdl2_parse_version("${SDL2_INCLUDE_DIR}/SDL_version.h" "SDL" SDL2_VERSION)
++
++set(SDL2_LIBRARIES "")
++sdl2_find_library(SDL2_LIBRARY SDL2)
++
++# Link extra libraries
++if(SDL2_LIBRARY)
++    list(APPEND SDL2_LIBRARIES ${SDL2_LIBRARY})
++
++    # On OS X, SDL needs to link against the Cocoa framework,
++    # on other systems, it needs to link against the threading library
++    if(NOT APPLE)
++        find_package(Threads)
++        list(APPEND SDL2_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
++    else()
++        list(APPEND SDL2_LIBRARIES "-framework Cocoa")
++    endif()
++
++    # MinGW needs a few more libraries
++    if(MINGW)
++        list(APPEND SDL2_LIBRARIES "mingw32" "mwindows")
++    endif()
++
++endif()
++
++# Search for required and optional components
++if(SDL2_FIND_COMPONENTS)
++    message(STATUS "Searching SDL components:")
++
++    foreach(component ${SDL2_FIND_COMPONENTS})
++        # main is a bit special, it doesn't have a header and doesn't follow
++        # the library naming convention
++        # SDL2_main_FOUND is for find_package_handle_standard_args
++        if(${component} STREQUAL "main")
++            sdl2_find_library(SDL2MAIN_LIBRARY SDL2main)
++            if(SDL2_LIBRARIES)
++                list(APPEND SDL2_LIBRARIES ${SDL2MAIN_LIBRARY})
++                set(SDL2_main_FOUND ON)
++            else()
++                set(SDL2_main_FOUND OFF)
++            endif()
++            unset(SDL2MAIN_LIBRARY)
++        # Other components use a helper function
++        else()
++            sdl2_find_component(${component})
++            if(SDL2_${component}_FOUND)
++                message(STATUS "  ${component} found ${SDL2_${component}_VERSION}")
++                list(APPEND SDL2_LIBRARIES ${SDL2_${component}_LIBRARIES})
++                list(APPEND SDL2_INCLUDE_DIRS ${SDL2_${component}_INCLUDE_DIR})
++            else()
++                message(STATUS "  ${component} not found")
++            endif()
++        endif()
++    endforeach()
++endif()
++
++
++# Handle common functionality for Find* scripts
++include(FindPackageHandleStandardArgs)
++find_package_handle_standard_args(
++    SDL2
++    REQUIRED_VARS SDL2_LIBRARY SDL2_INCLUDE_DIR
++    VERSION_VAR SDL2_VERSION
++    HANDLE_COMPONENTS
++)
++
++# Set up cached variables
++if(SDL2_FOUND)
++    set(SDL2_LIBRARIES ${SDL2_LIBRARIES} CACHE STRING "Linker flags for SDL2")
++    list(REMOVE_DUPLICATES SDL2_INCLUDE_DIRS)
++    set(SDL2_INCLUDE_DIRS ${SDL2_INCLUDE_DIRS} CACHE STRING "Search paths for SDL2")
++endif()
++
++mark_as_advanced(SDL2_LIBRARIES SDL2_INCLUDE_DIRS)
++
++# Clean temporaries
++unset(SDL2_INCLUDE_DIR)
++unset(SDL2_LIBRARY)
+--- /dev/null
++++ b/cmake/modules/FindcURL.cmake
+@@ -0,0 +1,52 @@
++#
++# Copyright (C) 2015-2020 Mattia Basaglia
++#
++# This program is free software: you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation, either version 3 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program.  If not, see <http://www.gnu.org/licenses/>.
++#
++# Tries to find the cURL library
++
++set(cURL_PREFIX "${CMAKE_SYSTEM_PREFIX_PATH}" CACHE PATH "cURL installation prefix")
++set(cURL_HEADER_BASENAME curl/curl.h)
++
++find_path(cURL_INCLUDE_DIR ${cURL_HEADER_BASENAME} PATHS ${cURL_PREFIX})
++find_library(cURL_LIBRARY NAMES curl PATHS ${cURL_PREFIX})
++
++set(cURL_ERROR_MESSAGE "")
++if(cURL_LIBRARY AND cURL_INCLUDE_DIR)
++    set(cURL_FOUND TRUE)
++
++    execute_process(
++        COMMAND curl-config --version | grep -E "[0-9.]+"
++        OUTPUT_VARIABLE cURL_VERSION_STRING
++        ERROR_QUIET
++    )
++    set(cURL_LIBRARIES ${cURL_LIBRARY})
++    if (cURL_FIND_VERSION AND cURL_FIND_VERSION STRGREATER cURL_VERSION_STRING)
++        set(cURL_FOUND FALSE)
++        set(cURL_ERROR_MESSAGE "cURL not found (required was ${cURL_FIND_VERSION} but found ${cURL_VERSION_STRING})")
++    endif()
++else()
++    set(cURL_ERROR_MESSAGE "cURL not found!")
++    set(cURL_FOUND FALSE)
++endif()
++
++if(cURL_FOUND)
++    message(STATUS "cURL Version: ${cURL_VERSION_STRING}")
++else()
++    if(cURL_FIND_REQUIRED)
++        message(FATAL_ERROR ${cURL_ERROR_MESSAGE})
++    elseif(NOT cURL_FIND_QUIETLY)
++        message(STATUS ${cURL_ERROR_MESSAGE})
++    endif()
++endif()
+--- /dev/null
++++ b/cmake/qt.cmake
+@@ -0,0 +1,96 @@
++#
++# Copyright (C) 2015-2022 Mattia Basaglia
++#
++# This program is free software: you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation, either version 3 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program.  If not, see <http://www.gnu.org/licenses/>.
++#
++
++if (NOT DEFINED QT_VERSION_MAJOR)
++    set(QT_VERSION_MAJOR 5)
++endif()
++
++function(qt_linguist_command)
++    cmake_parse_arguments(PARSE_ARGV 0 ARGS "" "COMMAND;OUTPUT" "")
++
++    string(TOUPPER ${ARGS_COMMAND} CMD_UPPER)
++    set(varcheck "Qt${QT_VERSION_MAJOR}_${CMD_UPPER}_EXECUTABLE")
++
++    if(NOT "${${varcheck}}" STREQUAL "")
++        set(${ARGS_OUTPUT} ${${varcheck}} PARENT_SCOPE)
++    elseif(NOT "${QT_CMAKE_EXPORT_NAMESPACE}" STREQUAL "")
++        set(${ARGS_OUTPUT} "${QT_CMAKE_EXPORT_NAMESPACE}::${ARGS_COMMAND}" PARENT_SCOPE)
++    else()
++        find_program(program NAMES ${ARGS_COMMAND})
++        set(${ARGS_OUTPUT} ${program} PARENT_SCOPE)
++    endif()
++endfunction()
++
++# Creates a target to compile Qt linguist translations
++# Synopsis:
++#   create_qt_linguist_translations(
++#       TARGET target           # Name of the target used to build/update translations
++#       [DESTINATION directory] # Where to put the qm files
++#       TRANSLATIONS file...    # Source files for translations
++#       SOURCES directory...    # Where to find source files
++#       [OUTPUT varname]        # output variable name for the list of qm files (defaults to LINGUIST_OUTPUT_FILES)
++#   )
++function(create_qt_linguist_translations)
++    include(misc)
++
++    set(options)
++    set(one_value DESTINATION TARGET)
++    set(multi_value TRANSLATIONS SOURCES)
++    cmake_parse_arguments(PARSE_ARGV 0 CREATE_QT_LINGUIST "${options}" "${one_value}" "${multi_value}")
++    if ( NOT CREATE_QT_LINGUIST_DESTINATION )
++        set(CREATE_QT_LINGUIST_DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/translations")
++    endif()
++    if ( NOT CREATE_QT_LINGUIST_OUTPUT )
++        set(CREATE_QT_LINGUIST_OUTPUT LINGUIST_OUTPUT_FILES)
++    endif()
++
++    find_package(Qt${QT_VERSION_MAJOR}LinguistTools QUIET)
++    if(${Qt${QT_VERSION_MAJOR}LinguistTools_FOUND})
++        message(STATUS "Translations enabled")
++        set(abs_ts)
++        foreach(file ${CREATE_QT_LINGUIST_TRANSLATIONS})
++            get_filename_component(file_abs ${file} ABSOLUTE BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
++            list(APPEND abs_ts ${file_abs})
++        endforeach()
++        add_custom_target(
++            ${CREATE_QT_LINGUIST_TARGET}
++            DEPENDS ${CREATE_QT_LINGUIST_TARGET}_cmd
++        )
++
++        qt_linguist_command(COMMAND lupdate OUTPUT lupdate_cmd)
++        qt_linguist_command(COMMAND lrelease OUTPUT lrelease_cmd)
++
++        message(STATUS "Qt linguist commands: '${lupdate_cmd}' '${lrelease_cmd}'")
++        add_custom_command(
++            OUTPUT ${CREATE_QT_LINGUIST_TARGET}_cmd
++            COMMAND ${lupdate_cmd} ${CREATE_QT_LINGUIST_SOURCES} -ts ${abs_ts}
++            COMMAND ${CMAKE_COMMAND} -E make_directory ${CREATE_QT_LINGUIST_DESTINATION}
++        )
++        set(abs_qm)
++        foreach(file ${abs_ts})
++            get_filename_component(file_basename ${file} NAME_WLE)
++            add_custom_command(
++                OUTPUT ${CREATE_QT_LINGUIST_TARGET}_cmd APPEND
++                COMMAND ${lrelease_cmd} ${file} -qm ${CREATE_QT_LINGUIST_DESTINATION}/${file_basename}.qm
++            )
++            list(APPEND abs_qm ${CREATE_QT_LINGUIST_DESTINATION}/${file_basename}.qm)
++        endforeach()
++        set(${CREATE_QT_LINGUIST_OUTPUT} ${abs_qm} PARENT_SCOPE)
++    else()
++        set(${CREATE_QT_LINGUIST_OUTPUT} PARENT_SCOPE)
++    endif()
++endfunction()
+--- /dev/null
++++ b/cmake/testing.cmake
+@@ -0,0 +1,86 @@
++# Copyright 2015-2019 Mattia Basaglia
++#
++# This program is free software: you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation, either version 3 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program.  If not, see <http://www.gnu.org/licenses/>.
++
++
++# Variables:
++#   COVERAGE_TOOL - (lcov or gcovr) Which coverage reporting tool to use
++#   COVERAGE_SOURCE_BASE_DIR - Base dir to extract the sources from for coverage
++#   COVERAGE_REMOVE_PATTERNS  - Patterns to remove from the trace file
++#   COVERAGE_FILTER_PATTERNS  - Patterns to keep in the trace file
++#
++
++if(NOT DEFINED COVERAGE_TARGET_PREFIX)
++    set(COVERAGE_TARGET_PREFIX tests_)
++endif()
++
++enable_testing()
++add_custom_target(${COVERAGE_TARGET_PREFIX}compile
++    COMMENT "Building all tests"
++)
++
++add_custom_target(${COVERAGE_TARGET_PREFIX}run
++    COMMAND ctest -V
++    DEPENDS ${COVERAGE_TARGET_PREFIX}compile
++    COMMENT "Running all tests"
++)
++
++set(TRACEFILE "${CMAKE_BINARY_DIR}/coverage.info")
++set(COVERAGE_DIR "${CMAKE_BINARY_DIR}/coverage")
++
++if(NOT COVERAGE_SOURCE_BASE_DIR)
++    set(COVERAGE_SOURCE_BASE_DIR "${CMAKE_SOURCE_DIR}")
++endif()
++
++if (NOT COVERAGE_TOOL)
++    set(COVERAGE_TOOL "lcov")
++endif()
++
++message(STATUS "Coverage tool is ${COVERAGE_TOOL}")
++
++if (${COVERAGE_TOOL} STREQUAL lcov)
++    add_custom_target(${COVERAGE_TARGET_PREFIX}coverage
++        COMMAND cd ${CMAKE_BINARY_DIR}
++        COMMAND lcov -c -d "${CMAKE_CURRENT_BINARY_DIR}" -b "${COVERAGE_SOURCE_BASE_DIR}" -o ${TRACEFILE} --no-external --rc lcov_branch_coverage=1
++        COMMAND lcov --remove ${TRACEFILE} ${COVERAGE_REMOVE_PATTERNS} -o ${TRACEFILE} --rc lcov_branch_coverage=1
++        COMMAND genhtml ${TRACEFILE} -o ${COVERAGE_DIR} -p "${COVERAGE_SOURCE_BASE_DIR}" --demangle-cpp --branch-coverage --rc genhtml_hi_limit=80
++        DEPENDS ${COVERAGE_TARGET_PREFIX}run
++    )
++elseif(${COVERAGE_TOOL} STREQUAL gcovr)
++    set(GCOVR_CMD
++        gcovr --root ${COVERAGE_SOURCE_BASE_DIR} --object-directory ${CMAKE_BINARY_DIR}
++        -s --branches --exclude-throw-branches
++        --html --html-details "${COVERAGE_DIR}/index.html"
++    )
++
++    foreach(remove IN ITEMS ${COVERAGE_REMOVE_PATTERNS})
++        list(APPEND GCOVR_CMD -e ${remove})
++    endforeach()
++
++    foreach(filter IN ITEMS ${COVERAGE_FILTER_PATTERNS})
++        list(APPEND GCOVR_CMD -f ${filter})
++    endforeach()
++
++    add_custom_target(${COVERAGE_TARGET_PREFIX}coverage
++        COMMAND cd ${CMAKE_BINARY_DIR}
++        COMMAND mkdir -p ${COVERAGE_DIR}
++        COMMAND ${GCOVR_CMD}
++        DEPENDS ${COVERAGE_TARGET_PREFIX}run
++    )
++else()
++endif()
++
++add_custom_target(${COVERAGE_TARGET_PREFIX}coverage_view
++    COMMAND xdg-open "${COVERAGE_DIR}/index.html"
++)
+--- /dev/null
 +++ b/external/Qt-Color-Widgets/.git/HEAD
 @@ -0,0 +1 @@
 +ref: refs/heads/master


More information about the Neon-commits mailing list