jxl_cms.cmake (2400B)
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 include(jxl_lists.cmake) 7 8 # Headers for exporting/importing public headers 9 include(GenerateExportHeader) 10 11 add_library(jxl_cms 12 ${JPEGXL_INTERNAL_CMS_SOURCES} 13 ) 14 target_compile_options(jxl_cms PRIVATE "${JPEGXL_INTERNAL_FLAGS}") 15 set_target_properties(jxl_cms PROPERTIES 16 POSITION_INDEPENDENT_CODE ON 17 CXX_VISIBILITY_PRESET hidden 18 VISIBILITY_INLINES_HIDDEN 1) 19 target_link_libraries(jxl_cms PUBLIC jxl_base) 20 target_include_directories(jxl_cms PRIVATE 21 ${JXL_HWY_INCLUDE_DIRS} 22 ) 23 generate_export_header(jxl_cms 24 BASE_NAME JXL_CMS 25 EXPORT_FILE_NAME include/jxl/jxl_cms_export.h) 26 target_include_directories(jxl_cms PUBLIC 27 "$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>") 28 29 set(JPEGXL_CMS_LIBRARY_REQUIRES "") 30 31 if (JPEGXL_ENABLE_SKCMS) 32 target_link_skcms(jxl_cms) 33 else() 34 target_link_libraries(jxl_cms PRIVATE lcms2) 35 if (JPEGXL_FORCE_SYSTEM_LCMS2) 36 set(JPEGXL_CMS_LIBRARY_REQUIRES "lcms2") 37 endif() 38 endif() 39 40 target_link_libraries(jxl_cms PRIVATE hwy) 41 42 set_target_properties(jxl_cms PROPERTIES 43 VERSION ${JPEGXL_LIBRARY_VERSION} 44 SOVERSION ${JPEGXL_LIBRARY_SOVERSION}) 45 46 # Check whether the linker support excluding libs 47 set(LINKER_EXCLUDE_LIBS_FLAG "-Wl,--exclude-libs=ALL") 48 include(CheckCSourceCompiles) 49 list(APPEND CMAKE_EXE_LINKER_FLAGS ${LINKER_EXCLUDE_LIBS_FLAG}) 50 check_c_source_compiles("int main(){return 0;}" LINKER_SUPPORT_EXCLUDE_LIBS) 51 list(REMOVE_ITEM CMAKE_EXE_LINKER_FLAGS ${LINKER_EXCLUDE_LIBS_FLAG}) 52 53 if(LINKER_SUPPORT_EXCLUDE_LIBS) 54 set_property(TARGET jxl_cms APPEND_STRING PROPERTY 55 LINK_FLAGS " ${LINKER_EXCLUDE_LIBS_FLAG}") 56 endif() 57 58 install(TARGETS jxl_cms 59 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} 60 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} 61 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) 62 63 if (BUILD_SHARED_LIBS) 64 set(JPEGXL_REQUIRES_TYPE "Requires.private") 65 set(JPEGXL_CMS_PRIVATE_LIBS "-lm ${PKGCONFIG_CXX_LIB}") 66 else() 67 set(JPEGXL_REQUIRES_TYPE "Requires") 68 set(JPEGXL_CMS_PRIVATE_LIBS "-lm ${PKGCONFIG_CXX_LIB}") 69 endif() 70 71 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/jxl/libjxl_cms.pc.in" 72 "libjxl_cms.pc" @ONLY) 73 install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libjxl_cms.pc" 74 DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")