Warning, /graphics/krita/cmake/modules/FindOpenJPEG.cmake is written in an unsupported language. File is not indexed.

0001 # SPDX-FileCopyrightText: 2023 L. E. Segovia <amy@amyspark.me>
0002 # SPDX-License-Identifier: BSD-3-Clause
0003 #
0004 #[=======================================================================[.rst:
0005 FindOpenJPEG
0006 --------------
0007 
0008 Find OpenJPEG headers and libraries.
0009 
0010 Imported Targets
0011 ^^^^^^^^^^^^^^^^
0012 
0013 ``OpenJPEG::openjp2``
0014   The OpenJPEG library, if found.
0015 
0016 ``OpenJPEG::opj_decompress``
0017   The OpenJPEG decompression executable, if found.
0018 
0019 ``OpenJPEG::opj_compress``
0020   The OpenJPEG compression executable, if found.
0021 
0022 ``OpenJPEG::opj_dump``
0023   The OpenJPEG dump executable, if found.
0024 
0025 Result Variables
0026 ^^^^^^^^^^^^^^^^
0027 
0028 This will define the following variables in your project:
0029 
0030 ``OpenJPEG_FOUND``
0031   true if (the requested version of) OpenJPEG is available.
0032 ``OpenJPEG_VERSION``
0033   the version of OpenJPEG.
0034 ``OpenJPEG_LIBRARIES``
0035   the libraries to link against to use OpenJPEG.
0036 ``OpenJPEG_INCLUDE_DIRS``
0037   where to find the OpenJPEG headers.
0038 ``OpenJPEG_COMPILE_OPTIONS``
0039   this should be passed to target_compile_options(), if the
0040   target is not used for linking
0041 
0042 #]=======================================================================]
0043 
0044 include(FindPackageHandleStandardArgs)
0045 
0046 # No hints in this case because the library versions semantically
0047 # the module folder, and it's also capitalized, so let CMake handle it.
0048 find_package(OPENJPEG QUIET NO_MODULE NAMES OpenJPEG)
0049 mark_as_advanced(OPENJPEG_DIR)
0050 
0051 if(OPENJPEG_FOUND)
0052     if (TARGET openjp2 AND NOT TARGET OpenJPEG::openjp2)
0053         add_library(OpenJPEG::openjp2 ALIAS openjp2)
0054     endif()
0055 
0056     if (TARGET OpenJPEG::openjp2)
0057         set(OpenJPEG_openjp2_FOUND ON)
0058     else ()
0059         set(OpenJPEG_openjp2_FOUND OFF)
0060     endif ()
0061 
0062     if (TARGET opj_decompress AND NOT TARGET OpenJPEG::opj_decompress)
0063         add_executable(OpenJPEG::opj_decompress ALIAS opj_decompress)
0064     endif()
0065 
0066     if (TARGET OpenJPEG::opj_decompress)
0067         set(OpenJPEG_opj_decompress_FOUND ON)
0068     else ()
0069         set(OpenJPEG_opj_decompress_FOUND OFF)
0070     endif ()
0071 
0072     if (TARGET opj_compress AND NOT TARGET OpenJPEG::opj_compress)
0073         add_executable(OpenJPEG::opj_compress ALIAS opj_compress)
0074     endif()
0075 
0076     if (TARGET OpenJPEG::opj_compress)
0077         set(OpenJPEG_opj_compress_FOUND ON)
0078     else ()
0079         set(OpenJPEG_opj_compress_FOUND OFF)
0080     endif ()
0081 
0082     if (TARGET opj_dump AND NOT TARGET OpenJPEG::opj_dump)
0083         add_executable(OpenJPEG::opj_dump ALIAS opj_dump)
0084     endif()
0085 
0086     if (TARGET OpenJPEG::opj_dump)
0087         set(OpenJPEG_opj_dump_FOUND ON)
0088     else ()
0089         set(OpenJPEG_opj_dump_FOUND OFF)
0090     endif ()
0091 
0092     if (TARGET openjpip AND NOT TARGET OpenJPEG::openjpip)
0093         add_library(OpenJPEG::openjpip ALIAS openjpip)
0094     endif()
0095 
0096     if (TARGET OpenJPEG::openjpip)
0097         set(OpenJPEG_openjpip_FOUND ON)
0098     else ()
0099         set(OpenJPEG_openjpip_FOUND OFF)
0100     endif ()
0101 
0102     if (TARGET openjpip_server AND NOT TARGET OpenJPEG::openjpip_server)
0103         add_library(OpenJPEG::openjpip_server ALIAS openjpip_server)
0104     endif()
0105 
0106     if (TARGET OpenJPEG::openjpip_server)
0107         set(OpenJPEG_openjpip_server_FOUND ON)
0108     else ()
0109         set(OpenJPEG_openjpip_server_FOUND OFF)
0110     endif ()
0111 
0112     # Patch in the version string, if needed.
0113     if (NOT OpenJPEG_VERSION)
0114         set(OpenJPEG_VERSION "${OPENJPEG_MAJOR_VERSION}.${OPENJPEG_MINOR_VERSION}.${OPENJPEG_BUILD_VERSION}")
0115     endif ()
0116 
0117     # Patch in the library and include dirs.
0118     if (NOT OpenJPEG_LIBRARIES)
0119         set(OpenJPEG_LIBRARIES OpenJPEG::openjp2)
0120     endif()
0121     set(OpenJPEG_INCLUDE_DIRS "${OPENJPEG_INCLUDE_DIRS}")
0122 
0123     find_package_handle_standard_args(OpenJPEG 
0124         FOUND_VAR OpenJPEG_FOUND
0125         REQUIRED_VARS OpenJPEG_INCLUDE_DIRS OpenJPEG_LIBRARIES
0126         HANDLE_COMPONENTS
0127         VERSION_VAR OpenJPEG_VERSION
0128         NAME_MISMATCHED
0129         # Don't, it defines mismatching cased variables.
0130         # CONFIG_MODE
0131     )
0132     return()
0133 endif()
0134 
0135 find_package(PkgConfig QUIET)
0136 
0137 if (PkgConfig_FOUND)
0138     pkg_check_modules(PC_OPENJPEG QUIET libopenjp2)
0139     set(OpenJPEG_VERSION ${PC_OPENJPEG_VERSION})
0140     set(OpenJPEG_COMPILE_OPTIONS "${PC_OPENJPEG_CFLAGS};${PC_OPENJPEG_CFLAGS_OTHER}")
0141 
0142     pkg_check_modules(PC_OPENJPIP QUIET openjpip)
0143 endif ()
0144 
0145 find_path(OpenJPEG_INCLUDE_DIR
0146     NAMES openjpeg.h
0147     HINTS ${PC_OPENJPEG_INCLUDEDIR} ${PC_OPENJPEG_INCLUDE_DIRS}
0148 )
0149 
0150 find_library(OpenJPEG_LIBRARY
0151     NAMES openjp2 libopenjp2
0152     HINTS ${PC_OPENJPEG_LIBDIR} ${PC_OPENJPEG_LIBRARY_DIRS}
0153 )
0154 
0155 # There's nothing in the OpenJPEG headers that could be used to detect the exact
0156 # OpenJPEG version being used so don't attempt to do so. A version can only be found
0157 # through pkg-config
0158 if (NOT OpenJPEG_VERSION)
0159     message(WARNING "Cannot determine OpenJPEG version without pkg-config")
0160 endif ()
0161 
0162 if (OpenJPEG_INCLUDE_DIR AND OpenJPEG_LIBRARY)
0163     set(OpenJPEG_openjp2_FOUND ON)
0164 else()
0165     set(OpenJPEG_openjp2_FOUND OFF)
0166 endif()
0167 
0168 # Find components
0169 if ("openjpip" IN_LIST OpenJPEG_FIND_COMPONENTS)
0170     find_library(OpenJPEG_openjpip_LIBRARY
0171         NAMES openjpip libopenjpip
0172         HINTS ${PC_OPENJPIP_LIBDIR} ${PC_OPENJPIP_LIBRARY_DIRS}
0173     )
0174 
0175     if (OpenJPEG_openjpip_LIBRARY)
0176         set(OpenJPEG_openjpip_FOUND ON)
0177     else ()
0178         set(OpenJPEG_openjpip_FOUND OFF)
0179     endif ()
0180 endif ()
0181 
0182 if ("openjpip_server" IN_LIST OpenJPEG_FIND_COMPONENTS)
0183     find_library(OpenJPEG_openjpip_server_LIBRARY
0184         NAMES openjpip_server libopenjpip_server
0185         HINTS ${PC_OPENJPIP_LIBDIR} ${PC_OPENJPIP_LIBRARY_DIRS}
0186     )
0187 
0188     if (OpenJPEG_openjpip_server_LIBRARY)
0189         set(OpenJPEG_openjpip_server_FOUND ON)
0190     else ()
0191         set(OpenJPEG_openjpip_server_FOUND OFF)
0192     endif ()
0193 endif ()
0194 
0195 find_package_handle_standard_args(OpenJPEG
0196     FOUND_VAR OpenJPEG_FOUND
0197     REQUIRED_VARS OpenJPEG_INCLUDE_DIR OpenJPEG_LIBRARY
0198     HANDLE_COMPONENTS
0199     VERSION_VAR OpenJPEG_VERSION
0200 )
0201 
0202 if (OpenJPEG_FOUND)
0203 if (OpenJPEG_LIBRARY AND NOT TARGET OpenJPEG::openjp2)
0204     add_library(OpenJPEG::openjp2 UNKNOWN IMPORTED GLOBAL)
0205     set_target_properties(OpenJPEG::openjp2 PROPERTIES
0206         IMPORTED_LOCATION "${OpenJPEG_LIBRARY}"
0207         INTERFACE_COMPILE_OPTIONS "${PC_OPENJPEG_CFLAGS};${PC_OPENJPEG_CFLAGS_OTHER}"
0208         INTERFACE_INCLUDE_DIRECTORIES "${OpenJPEG_INCLUDE_DIR};${PC_OPENJPEG_INCLUDE_DIRS}"
0209         INTERFACE_LINK_LIBRARIES "${PC_OPENJPEG_LINK_LIBRARIES}"
0210     )
0211 endif ()
0212 
0213 if (OpenJPEG_openjpip_LIBRARY AND NOT TARGET OpenJPEG::openjpip)
0214     add_library(OpenJPEG::openjpip UNKNOWN IMPORTED GLOBAL)
0215     set_target_properties(OpenJPEG::openjpip PROPERTIES
0216         IMPORTED_LOCATION "${OpenJPEG_openjpip_LIBRARY}"
0217         INTERFACE_COMPILE_OPTIONS "${PC_OPENJPIP_CFLAGS};${PC_OPENJPIP_CFLAGS_OTHER}"
0218         INTERFACE_INCLUDE_DIRECTORIES "${OpenJPEG_INCLUDE_DIR};${PC_OPENJPIP_INCLUDE_DIRS}"
0219         INTERFACE_LINK_LIBRARIES "${PC_OPENJPIP_LINK_LIBRARIES}"
0220     )
0221 endif ()
0222 
0223 if (OpenJPEG_openjpip_server_LIBRARY AND NOT TARGET OpenJPEG::openjpip_server)
0224     add_library(OpenJPEG::openjpip_server UNKNOWN IMPORTED GLOBAL)
0225     set_target_properties(OpenJPEG::openjpip_server PROPERTIES
0226         IMPORTED_LOCATION "${OpenJPEG_openjpip_server_LIBRARY}"
0227         INTERFACE_COMPILE_OPTIONS "${PC_OPENJPIP_CFLAGS};${PC_OPENJPIP_CFLAGS_OTHER}"
0228         INTERFACE_INCLUDE_DIRECTORIES "${OpenJPEG_INCLUDE_DIR};${PC_OPENJPIP_INCLUDE_DIRS}"
0229         INTERFACE_LINK_LIBRARIES "${PC_OPENJPIP_LINK_LIBRARIES}"
0230     )
0231 endif ()
0232 
0233 mark_as_advanced(
0234     OpenJPEG_INCLUDE_DIR
0235     OpenJPEG_LIBRARY
0236     OpenJPEG_openjpip_LIBRARY
0237     OpenJPEG_openjpip_server_LIBRARY
0238 )
0239 
0240 set(OpenJPEG_LIBRARIES ${OpenJPEG_LIBRARY} ${OpenJPEG_openjpip_LIBRARY} ${OpenJPEG_openjpip_server_LIBRARY})
0241 set(OpenJPEG_INCLUDE_DIRS ${OpenJPEG_INCLUDE_DIR})
0242 
0243 endif()