FindLCMS2.cmake (2063B)
1 # Copyright (c) the JPEG XL Project Authors. All rights reserved. 2 # 3 # Use of this source code is governed by a BSD-style 4 # license that can be found in the LICENSE file. 5 6 find_package(PkgConfig QUIET) 7 if (PkgConfig_FOUND) 8 pkg_check_modules(PC_LCMS2 QUIET libLCMS2) 9 set(LCMS2_VERSION ${PC_LCMS2_VERSION}) 10 endif () 11 12 find_path(LCMS2_INCLUDE_DIR 13 NAMES lcms2.h 14 HINTS ${PC_LCMS2_INCLUDEDIR} ${PC_LCMS2_INCLUDE_DIRS} 15 ) 16 17 find_library(LCMS2_LIBRARY 18 NAMES ${LCMS2_NAMES} lcms2 liblcms2 lcms-2 liblcms-2 19 HINTS ${PC_LCMS2_LIBDIR} ${PC_LCMS2_LIBRARY_DIRS} 20 ) 21 22 if (LCMS2_INCLUDE_DIR AND NOT LCMS_VERSION) 23 file(READ ${LCMS2_INCLUDE_DIR}/lcms2.h LCMS2_VERSION_CONTENT) 24 string(REGEX MATCH "#define[ \t]+LCMS_VERSION[ \t]+([0-9]+)[ \t]*\n" LCMS2_VERSION_MATCH ${LCMS2_VERSION_CONTENT}) 25 if (LCMS2_VERSION_MATCH) 26 string(SUBSTRING ${CMAKE_MATCH_1} 0 1 LCMS2_VERSION_MAJOR) 27 string(SUBSTRING ${CMAKE_MATCH_1} 1 2 LCMS2_VERSION_MINOR) 28 set(LCMS2_VERSION "${LCMS2_VERSION_MAJOR}.${LCMS2_VERSION_MINOR}") 29 endif () 30 endif () 31 32 include(FindPackageHandleStandardArgs) 33 find_package_handle_standard_args(LCMS2 34 FOUND_VAR LCMS2_FOUND 35 REQUIRED_VARS LCMS2_LIBRARY LCMS2_INCLUDE_DIR 36 VERSION_VAR LCMS2_VERSION 37 ) 38 39 if (LCMS2_LIBRARY AND NOT TARGET lcms2) 40 add_library(lcms2 INTERFACE IMPORTED GLOBAL) 41 42 if(CMAKE_VERSION VERSION_LESS "3.13.5") 43 set_property(TARGET lcms2 PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${LCMS2_INCLUDE_DIR}) 44 target_link_libraries(lcms2 INTERFACE ${LCMS2_LIBRARY}) 45 set_property(TARGET lcms2 PROPERTY INTERFACE_COMPILE_OPTIONS ${PC_LCMS2_CFLAGS_OTHER}) 46 else() 47 target_include_directories(lcms2 INTERFACE ${LCMS2_INCLUDE_DIR}) 48 target_link_libraries(lcms2 INTERFACE ${LCMS2_LIBRARY}) 49 target_link_options(lcms2 INTERFACE ${PC_LCMS2_LDFLAGS_OTHER}) 50 target_compile_options(lcms2 INTERFACE ${PC_LCMS2_CFLAGS_OTHER}) 51 endif() 52 endif() 53 54 mark_as_advanced(LCMS2_INCLUDE_DIR LCMS2_LIBRARY) 55 56 if (LCMS2_FOUND) 57 set(LCMS2_LIBRARIES ${LCMS2_LIBRARY}) 58 set(LCMS2_INCLUDE_DIRS ${LCMS2_INCLUDE_DIR}) 59 endif ()