File: FindGMIC.cmake

package info (click to toggle)
darktable 4.2.1-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 52,960 kB
  • sloc: ansic: 329,632; cpp: 90,717; xml: 18,803; lisp: 12,673; sh: 3,478; javascript: 3,264; perl: 1,888; python: 1,082; ruby: 972; makefile: 536; asm: 46; sql: 38; awk: 21
file content (86 lines) | stat: -rw-r--r-- 2,685 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#
# Find the GMIC includes and library
#

# This module defines
# GMIC_INCLUDE_DIR, where to find *.h etc
# GMIC_LIBRARY, the libraries
# GMIC_FOUND, If false, do not try to use GMIC.

set(GMIC_VERSION_NEEDED 270)
set(GMIC_DEPENDENCIES_FOUND TRUE)

include(LibFindMacros)

# Use pkg-config to get hints about paths
libfind_pkg_check_modules(GMIC_PKGCONF GMIC)

# Include dir
find_path(GMIC_INCLUDE_DIR
  NAMES gmic.h
  HINTS ${GMIC_PKGCONF_INCLUDE_DIRS}
  PATH_SUFFIXES GMIC
)

# Finally the library itself
find_library(GMIC_LIBRARY
  NAMES gmic
  HINTS ${GMIC_PKGCONF_LIBRARY_DIRS}
)

if(GMIC_LIBRARY AND GMIC_INCLUDE_DIR)
  set(CMAKE_REQUIRED_INCLUDES ${GMIC_INCLUDE_DIR})
  check_cxx_source_compiles("
  #include <gmic.h>
  #if gmic_version < ${GMIC_VERSION_NEEDED} || gmic_version >= 1000
  #error OLD_VERSION
  #endif
  int main() { return 0; }
  " GMIC_VERSION_OK)

  if(NOT GMIC_VERSION_OK)
    message(STATUS "Found GMIC but version < ${GMIC_VERSION_NEEDED}. Compressed lut will not be available")
  else()
    if(WIN32)
      find_library(FFTW_LIBRARY NAMES fftw3)
      if(NOT FFTW_LIBRARY)
        message(STATUS "missing GMIC dependency fftw3")
      else()
        list(APPEND GMIC_LIBRARY ${FFTW_LIBRARY})
      endif(NOT FFTW_LIBRARY)
      # workaround for msys2 gmic 2.9.0-3. Should be reviewed when gmic 2.9.3 is available
      find_library(OPENCV_CORE_LIBRARY NAMES opencv_core)
      find_library(OPENCV_VIDEOIO_LIBRARY NAMES opencv_videoio)
      if(NOT OPENCV_CORE_LIBRARY OR NOT OPENCV_VIDEOIO_LIBRARY)
        message(STATUS "missing GMIC dependencies OpenCV")
        set(GMIC_DEPENDENCIES_FOUND FALSE)
      else()
        list(APPEND GMIC_LIBRARY ${OPENCV_CORE_LIBRARY})
        list(APPEND GMIC_LIBRARY ${OPENCV_VIDEOIO_LIBRARY})
      endif(NOT OPENCV_CORE_LIBRARY OR NOT OPENCV_VIDEOIO_LIBRARY)
    endif(WIN32)

    # workaround for msys2 gmic 2.9.0-3. Should be reviewed when gmic 2.9.3 is available
    if(GMIC_DEPENDENCIES_FOUND)

      # Set the include dir variables and the libraries and let libfind_process do the rest.
      # NOTE: Singular variables for this library, plural for libraries this lib depends on.
      set(GMIC_PROCESS_INCLUDES ${GMIC_INCLUDE_DIR})
      set(GMIC_PROCESS_LIBS ${GMIC_LIBRARY})
      libfind_process(GMIC)

      if(GMIC_FOUND)
        set(GMIC_INCLUDE_DIRS ${GMIC_INCLUDE_DIR})
        set(GMIC_LIBRARIES ${GMIC_LIBRARY})
      else()
        message(STATUS "GMIC not found")
      endif(GMIC_FOUND)

    else()
      message(STATUS "GMIC dependencies not found")
    endif(GMIC_DEPENDENCIES_FOUND)

  endif(NOT GMIC_VERSION_OK)
else()
  message(STATUS "GMIC not found")
endif(GMIC_LIBRARY AND GMIC_INCLUDE_DIR)