aboutsummaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake')
-rw-r--r--cmake/FindGraphicsMagick.cmake310
-rw-r--r--cmake/Findlibsodium.cmake29
-rw-r--r--cmake/Findweb.cmake24
3 files changed, 363 insertions, 0 deletions
diff --git a/cmake/FindGraphicsMagick.cmake b/cmake/FindGraphicsMagick.cmake
new file mode 100644
index 0000000..2182849
--- /dev/null
+++ b/cmake/FindGraphicsMagick.cmake
@@ -0,0 +1,310 @@
+# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindGraphicsMagick
+---------------
+
+Find GraphicsMagick binary suite.
+
+.. versionadded:: 3.9
+ Added support for GraphicsMagick 7.
+
+This module will search for a set of GraphicsMagick tools specified as
+components in the :command:`find_package` call. Typical components include,
+but are not limited to (future versions of GraphicsMagick might have
+additional components not listed here):
+
+::
+
+ animate
+ compare
+ composite
+ conjure
+ convert
+ display
+ identify
+ import
+ mogrify
+ montage
+ stream
+
+
+
+If no component is specified in the :command:`find_package` call, then it only
+searches for the GraphicsMagick executable directory. This code defines
+the following variables:
+
+::
+
+ GraphicsMagick_FOUND - TRUE if all components are found.
+ GraphicsMagick_EXECUTABLE_DIR - Full path to executables directory.
+ GraphicsMagick_<component>_FOUND - TRUE if <component> is found.
+ GraphicsMagick_<component>_EXECUTABLE - Full path to <component> executable.
+ GraphicsMagick_VERSION_STRING - the version of GraphicsMagick found
+ (since CMake 2.8.8)
+
+
+
+``GraphicsMagick_VERSION_STRING`` will not work for old versions like 5.2.3.
+
+There are also components for the following GraphicsMagick APIs:
+
+::
+
+ Magick++
+ MagickWand
+ MagickCore
+
+
+
+For these components the following variables are set:
+
+::
+
+ GraphicsMagick_FOUND - TRUE if all components are found.
+ GraphicsMagick_INCLUDE_DIRS - Full paths to all include dirs.
+ GraphicsMagick_LIBRARIES - Full paths to all libraries.
+ GraphicsMagick_<component>_FOUND - TRUE if <component> is found.
+ GraphicsMagick_<component>_INCLUDE_DIRS - Full path to <component> include dirs.
+ GraphicsMagick_<component>_LIBRARIES - Full path to <component> libraries.
+
+
+
+Example Usages:
+
+::
+
+ find_package(GraphicsMagick)
+ find_package(GraphicsMagick COMPONENTS convert)
+ find_package(GraphicsMagick COMPONENTS convert mogrify display)
+ find_package(GraphicsMagick COMPONENTS Magick++)
+ find_package(GraphicsMagick COMPONENTS Magick++ convert)
+
+
+
+Note that the standard :command:`find_package` features are supported (i.e.,
+``QUIET``, ``REQUIRED``, etc.).
+#]=======================================================================]
+
+find_package(PkgConfig QUIET)
+
+#---------------------------------------------------------------------
+# Helper functions
+#---------------------------------------------------------------------
+function(FIND_GRAPHICSMAGICK_API component header)
+ set(GraphicsMagick_${component}_FOUND FALSE PARENT_SCOPE)
+
+ pkg_check_modules(PC_${component} QUIET ${component})
+
+ find_path(GraphicsMagick_${component}_INCLUDE_DIR
+ NAMES ${header}
+ HINTS
+ ${PC_${component}_INCLUDEDIR}
+ ${PC_${component}_INCLUDE_DIRS}
+ PATHS
+ ${GraphicsMagick_INCLUDE_DIRS}
+ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GraphicsMagick\\Current;BinPath]/include"
+ PATH_SUFFIXES
+ GraphicsMagick GraphicsMagick-6 GraphicsMagick-7
+ DOC "Path to the GraphicsMagick arch-independent include dir."
+ NO_DEFAULT_PATH
+ )
+ find_path(GraphicsMagick_${component}_ARCH_INCLUDE_DIR
+ NAMES magick/magick-baseconfig.h
+ HINTS
+ ${PC_${component}_INCLUDEDIR}
+ ${PC_${component}_INCLUDE_DIRS}
+ PATHS
+ ${GraphicsMagick_INCLUDE_DIRS}
+ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GraphicsMagick\\Current;BinPath]/include"
+ PATH_SUFFIXES
+ GraphicsMagick GraphicsMagick-6 GraphicsMagick-7
+ DOC "Path to the GraphicsMagick arch-specific include dir."
+ NO_DEFAULT_PATH
+ )
+ find_library(GraphicsMagick_${component}_LIBRARY
+ NAMES ${ARGN}
+ HINTS
+ ${PC_${component}_LIBDIR}
+ ${PC_${component}_LIB_DIRS}
+ PATHS
+ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GraphicsMagick\\Current;BinPath]/lib"
+ DOC "Path to the GraphicsMagick Magick++ library."
+ NO_DEFAULT_PATH
+ )
+
+ # old version have only indep dir
+ if(GraphicsMagick_${component}_INCLUDE_DIR AND GraphicsMagick_${component}_LIBRARY)
+ set(GraphicsMagick_${component}_FOUND TRUE PARENT_SCOPE)
+
+ # Construct per-component include directories.
+ set(GraphicsMagick_${component}_INCLUDE_DIRS
+ ${GraphicsMagick_${component}_INCLUDE_DIR}
+ )
+ if(GraphicsMagick_${component}_ARCH_INCLUDE_DIR)
+ list(APPEND GraphicsMagick_${component}_INCLUDE_DIRS
+ ${GraphicsMagick_${component}_ARCH_INCLUDE_DIR})
+ endif()
+ list(REMOVE_DUPLICATES GraphicsMagick_${component}_INCLUDE_DIRS)
+ set(GraphicsMagick_${component}_INCLUDE_DIRS
+ ${GraphicsMagick_${component}_INCLUDE_DIRS} PARENT_SCOPE)
+
+ # Add the per-component include directories to the full include dirs.
+ list(APPEND GraphicsMagick_INCLUDE_DIRS ${GraphicsMagick_${component}_INCLUDE_DIRS})
+ list(REMOVE_DUPLICATES GraphicsMagick_INCLUDE_DIRS)
+ set(GraphicsMagick_INCLUDE_DIRS ${GraphicsMagick_INCLUDE_DIRS} PARENT_SCOPE)
+
+ list(APPEND GraphicsMagick_LIBRARIES
+ ${GraphicsMagick_${component}_LIBRARY}
+ )
+ set(GraphicsMagick_LIBRARIES ${GraphicsMagick_LIBRARIES} PARENT_SCOPE)
+ endif()
+endfunction()
+
+function(FIND_GRAPHICSMAGICK_EXE component)
+ set(_GRAPHICSMAGICK_EXECUTABLE
+ ${GraphicsMagick_EXECUTABLE_DIR}/${component}${CMAKE_EXECUTABLE_SUFFIX})
+ if(EXISTS ${_GRAPHICSMAGICK_EXECUTABLE})
+ set(GraphicsMagick_${component}_EXECUTABLE
+ ${_GRAPHICSMAGICK_EXECUTABLE}
+ PARENT_SCOPE
+ )
+ set(GraphicsMagick_${component}_FOUND TRUE PARENT_SCOPE)
+ else()
+ set(GraphicsMagick_${component}_FOUND FALSE PARENT_SCOPE)
+ endif()
+endfunction()
+
+#---------------------------------------------------------------------
+# Start Actual Work
+#---------------------------------------------------------------------
+# Try to find a GraphicsMagick installation binary path.
+find_path(GraphicsMagick_EXECUTABLE_DIR
+ NAMES mogrify${CMAKE_EXECUTABLE_SUFFIX}
+ PATHS
+ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GraphicsMagick\\Current;BinPath]"
+ DOC "Path to the GraphicsMagick binary directory."
+ NO_DEFAULT_PATH
+ )
+find_path(GraphicsMagick_EXECUTABLE_DIR
+ NAMES mogrify${CMAKE_EXECUTABLE_SUFFIX}
+ )
+
+# Find each component. Search for all tools in same dir
+# <GraphicsMagick_EXECUTABLE_DIR>; otherwise they should be found
+# independently and not in a cohesive module such as this one.
+unset(GraphicsMagick_REQUIRED_VARS)
+unset(GraphicsMagick_DEFAULT_EXECUTABLES)
+foreach(component ${GraphicsMagick_FIND_COMPONENTS}
+ # DEPRECATED: forced components for backward compatibility
+ gm
+ )
+ if(component STREQUAL "Magick++")
+ FIND_GRAPHICSMAGICK_API(Magick++ Magick++.h
+ Magick++ CORE_RL_Magick++_
+ Magick++-6 Magick++-7
+ Magick++-Q8 Magick++-Q16 Magick++-Q16HDRI Magick++-Q8HDRI
+ Magick++-6.Q64 Magick++-6.Q32 Magick++-6.Q64HDRI Magick++-6.Q32HDRI
+ Magick++-6.Q16 Magick++-6.Q8 Magick++-6.Q16HDRI Magick++-6.Q8HDRI
+ Magick++-7.Q64 Magick++-7.Q32 Magick++-7.Q64HDRI Magick++-7.Q32HDRI
+ Magick++-7.Q16 Magick++-7.Q8 Magick++-7.Q16HDRI Magick++-7.Q8HDRI
+ )
+ list(APPEND GraphicsMagick_REQUIRED_VARS GraphicsMagick_Magick++_LIBRARY)
+ elseif(component STREQUAL "MagickWand")
+ FIND_GRAPHICSMAGICK_API(MagickWand "wand/MagickWand.h;MagickWand/MagickWand.h"
+ Wand MagickWand CORE_RL_wand_ CORE_RL_MagickWand_
+ MagickWand-6 MagickWand-7
+ MagickWand-Q16 MagickWand-Q8 MagickWand-Q16HDRI MagickWand-Q8HDRI
+ MagickWand-6.Q64 MagickWand-6.Q32 MagickWand-6.Q64HDRI MagickWand-6.Q32HDRI
+ MagickWand-6.Q16 MagickWand-6.Q8 MagickWand-6.Q16HDRI MagickWand-6.Q8HDRI
+ MagickWand-7.Q64 MagickWand-7.Q32 MagickWand-7.Q64HDRI MagickWand-7.Q32HDRI
+ MagickWand-7.Q16 MagickWand-7.Q8 MagickWand-7.Q16HDRI MagickWand-7.Q8HDRI
+ )
+ list(APPEND GraphicsMagick_REQUIRED_VARS GraphicsMagick_MagickWand_LIBRARY)
+ elseif(component STREQUAL "MagickCore")
+ FIND_GRAPHICSMAGICK_API(MagickCore "magick/MagickCore.h;MagickCore/MagickCore.h"
+ Magick MagickCore CORE_RL_magick_ CORE_RL_MagickCore_
+ MagickCore-6 MagickCore-7
+ MagickCore-Q16 MagickCore-Q8 MagickCore-Q16HDRI MagickCore-Q8HDRI
+ MagickCore-6.Q64 MagickCore-6.Q32 MagickCore-6.Q64HDRI MagickCore-6.Q32HDRI
+ MagickCore-6.Q16 MagickCore-6.Q8 MagickCore-6.Q16HDRI MagickCore-6.Q8HDRI
+ MagickCore-7.Q64 MagickCore-7.Q32 MagickCore-7.Q64HDRI MagickCore-7.Q32HDRI
+ MagickCore-7.Q16 MagickCore-7.Q8 MagickCore-7.Q16HDRI MagickCore-7.Q8HDRI
+ )
+ list(APPEND GraphicsMagick_REQUIRED_VARS GraphicsMagick_MagickCore_LIBRARY)
+ else()
+ if(GraphicsMagick_EXECUTABLE_DIR)
+ FIND_GRAPHICSMAGICK_EXE(${component})
+ endif()
+
+ if(GraphicsMagick_FIND_COMPONENTS)
+ list(FIND GraphicsMagick_FIND_COMPONENTS ${component} is_requested)
+ if(is_requested GREATER -1)
+ list(APPEND GraphicsMagick_REQUIRED_VARS GraphicsMagick_${component}_EXECUTABLE)
+ endif()
+ elseif(GraphicsMagick_${component}_EXECUTABLE)
+ # if no components were requested explicitly put all (default) executables
+ # in the list
+ list(APPEND GraphicsMagick_DEFAULT_EXECUTABLES GraphicsMagick_${component}_EXECUTABLE)
+ endif()
+ endif()
+endforeach()
+
+if(NOT GraphicsMagick_FIND_COMPONENTS AND NOT GraphicsMagick_DEFAULT_EXECUTABLES)
+ # No components were requested, and none of the default components were
+ # found. Just insert mogrify into the list of the default components to
+ # find so FPHSA below has something to check
+ list(APPEND GraphicsMagick_REQUIRED_VARS GraphicsMagick_mogrify_EXECUTABLE)
+elseif(GraphicsMagick_DEFAULT_EXECUTABLES)
+ list(APPEND GraphicsMagick_REQUIRED_VARS ${GraphicsMagick_DEFAULT_EXECUTABLES})
+endif()
+
+set(GraphicsMagick_INCLUDE_DIRS ${GraphicsMagick_INCLUDE_DIRS})
+set(GraphicsMagick_LIBRARIES ${GraphicsMagick_LIBRARIES})
+
+if(GraphicsMagick_mogrify_EXECUTABLE)
+ execute_process(COMMAND ${GraphicsMagick_mogrify_EXECUTABLE} -version
+ OUTPUT_VARIABLE graphicsmagick_version
+ ERROR_QUIET
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ if(graphicsmagick_version MATCHES "^Version: GraphicsMagick ([-0-9\\.]+)")
+ set(GraphicsMagick_VERSION_STRING "${CMAKE_MATCH_1}")
+ endif()
+ unset(graphicsmagick_version)
+endif()
+
+#---------------------------------------------------------------------
+# Standard Package Output
+#---------------------------------------------------------------------
+include(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(GraphicsMagick
+ REQUIRED_VARS ${GraphicsMagick_REQUIRED_VARS}
+ VERSION_VAR GraphicsMagick_VERSION_STRING
+ )
+# Maintain consistency with all other variables.
+set(GraphicsMagick_FOUND ${GRAPHICSMAGICK_FOUND})
+
+#---------------------------------------------------------------------
+# DEPRECATED: Setting variables for backward compatibility.
+#---------------------------------------------------------------------
+set(GRAPHICSMAGICK_BINARY_PATH ${GraphicsMagick_EXECUTABLE_DIR}
+ CACHE PATH "Path to the GraphicsMagick binary directory.")
+set(GRAPHICSMAGICK_CONVERT_EXECUTABLE ${GraphicsMagick_convert_EXECUTABLE}
+ CACHE FILEPATH "Path to GraphicsMagick's convert executable.")
+set(GRAPHICSMAGICK_MOGRIFY_EXECUTABLE ${GraphicsMagick_mogrify_EXECUTABLE}
+ CACHE FILEPATH "Path to GraphicsMagick's mogrify executable.")
+set(GRAPHICSMAGICK_IMPORT_EXECUTABLE ${GraphicsMagick_import_EXECUTABLE}
+ CACHE FILEPATH "Path to GraphicsMagick's import executable.")
+set(GRAPHICSMAGICK_MONTAGE_EXECUTABLE ${GraphicsMagick_montage_EXECUTABLE}
+ CACHE FILEPATH "Path to GraphicsMagick's montage executable.")
+set(GRAPHICSMAGICK_COMPOSITE_EXECUTABLE ${GraphicsMagick_composite_EXECUTABLE}
+ CACHE FILEPATH "Path to GraphicsMagick's composite executable.")
+mark_as_advanced(
+ GRAPHICSMAGICK_BINARY_PATH
+ GRAPHICSMAGICK_CONVERT_EXECUTABLE
+ GRAPHICSMAGICK_MOGRIFY_EXECUTABLE
+ GRAPHICSMAGICK_IMPORT_EXECUTABLE
+ GRAPHICSMAGICK_MONTAGE_EXECUTABLE
+ GRAPHICSMAGICK_COMPOSITE_EXECUTABLE
+ )
diff --git a/cmake/Findlibsodium.cmake b/cmake/Findlibsodium.cmake
new file mode 100644
index 0000000..5bf917a
--- /dev/null
+++ b/cmake/Findlibsodium.cmake
@@ -0,0 +1,29 @@
+find_package(PkgConfig)
+
+if(PKG_CONFIG_FOUND)
+ pkg_check_modules(libsodium libsodium)
+endif()
+
+if(NOT libsodium_FOUND)
+ find_library(libsodium_LIBRARIES name sodium)
+ find_file(libsodium_INCLUDE_DIRS NAMES
+ sodium.h
+ sodium/core.h
+ PATH_SUFFIXES include/ include/sodium)
+
+ if (libsodium_LIBRARIES STREQUAL "libsodium_LIBRARIES-NOTFOUND")
+ message(FATAL_ERROR "libsodium not found")
+ elseif (libsodium_INCLUDE_DIRS STREQUAL "libsodium_INCLUDE_DIRS-NOTFOUND")
+ message(FATAL_ERROR "libsodium headers not found")
+ endif()
+endif()
+
+message("libsodium_LINK_LIBRARIES=${libsodium_LINK_LIBRARIES}")
+message("libsodium_INCLUDE_DIRS=${libsodium_INCLUDE_DIRS}")
+
+if(NOT TARGET libsodium)
+ add_library(libsodium INTERFACE IMPORTED)
+ set_target_properties(libsodium PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES ${libsodium_INCLUDE_DIRS}
+ INTERFACE_LINK_LIBRARIES ${libsodium_LINK_LIBRARIES})
+endif()
diff --git a/cmake/Findweb.cmake b/cmake/Findweb.cmake
new file mode 100644
index 0000000..a5d1d68
--- /dev/null
+++ b/cmake/Findweb.cmake
@@ -0,0 +1,24 @@
+mark_as_advanced(WEB_LIBRARY WEB_INCLUDE_DIR)
+find_library(WEB_LIBRARY NAMES libweb web)
+
+find_path(WEB_INCLUDE_DIR
+ NAMES
+ handler.h
+ html.h
+ http.h
+ server.h
+ wildcard_cmp.h
+ PATH_SUFFIXES libweb include/libweb)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(web
+ DEFAULT_MSG WEB_LIBRARY WEB_INCLUDE_DIR)
+
+if(WEB_FOUND)
+ if(NOT TARGET web)
+ add_library(web UNKNOWN IMPORTED)
+ set_target_properties(web PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${WEB_INCLUDE_DIR}"
+ IMPORTED_LOCATION "${WEB_LIBRARY}")
+ endif()
+endif()