diff options
Diffstat (limited to 'cmake')
| -rw-r--r-- | cmake/FindGraphicsMagick.cmake | 310 | ||||
| -rw-r--r-- | cmake/Findlibsodium.cmake | 29 | ||||
| -rw-r--r-- | cmake/Findweb.cmake | 24 |
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() |
