summaryrefslogtreecommitdiffstats
path: root/third_party/jpeg-xl/lib/jxl_cms.cmake
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /third_party/jpeg-xl/lib/jxl_cms.cmake
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/jpeg-xl/lib/jxl_cms.cmake')
-rw-r--r--third_party/jpeg-xl/lib/jxl_cms.cmake72
1 files changed, 72 insertions, 0 deletions
diff --git a/third_party/jpeg-xl/lib/jxl_cms.cmake b/third_party/jpeg-xl/lib/jxl_cms.cmake
new file mode 100644
index 0000000000..47757c8f3b
--- /dev/null
+++ b/third_party/jpeg-xl/lib/jxl_cms.cmake
@@ -0,0 +1,72 @@
+# Copyright (c) the JPEG XL Project Authors. All rights reserved.
+#
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+include(jxl_lists.cmake)
+
+# Headers for exporting/importing public headers
+include(GenerateExportHeader)
+
+add_library(jxl_cms
+ ${JPEGXL_INTERNAL_CMS_SOURCES}
+)
+target_compile_options(jxl_cms PRIVATE "${JPEGXL_INTERNAL_FLAGS}")
+set_target_properties(jxl_cms PROPERTIES
+ POSITION_INDEPENDENT_CODE ON
+ CXX_VISIBILITY_PRESET hidden
+ VISIBILITY_INLINES_HIDDEN 1)
+target_link_libraries(jxl_cms PUBLIC jxl_base)
+target_include_directories(jxl_cms PRIVATE
+ ${JXL_HWY_INCLUDE_DIRS}
+)
+generate_export_header(jxl_cms
+ BASE_NAME JXL_CMS
+ EXPORT_FILE_NAME include/jxl/jxl_cms_export.h)
+target_include_directories(jxl_cms PUBLIC
+ "$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>")
+
+set(JPEGXL_CMS_LIBRARY_REQUIRES "")
+
+if (JPEGXL_ENABLE_SKCMS)
+ target_link_skcms(jxl_cms)
+else()
+ target_link_libraries(jxl_cms PRIVATE lcms2)
+ if (JPEGXL_FORCE_SYSTEM_LCMS2)
+ set(JPEGXL_CMS_LIBRARY_REQUIRES "lcms2")
+ endif()
+endif()
+
+target_link_libraries(jxl_cms PRIVATE hwy)
+
+set_target_properties(jxl_cms PROPERTIES
+ VERSION ${JPEGXL_LIBRARY_VERSION}
+ SOVERSION ${JPEGXL_LIBRARY_SOVERSION})
+
+# Check whether the linker support excluding libs
+set(LINKER_EXCLUDE_LIBS_FLAG "-Wl,--exclude-libs=ALL")
+include(CheckCSourceCompiles)
+list(APPEND CMAKE_EXE_LINKER_FLAGS ${LINKER_EXCLUDE_LIBS_FLAG})
+check_c_source_compiles("int main(){return 0;}" LINKER_SUPPORT_EXCLUDE_LIBS)
+list(REMOVE_ITEM CMAKE_EXE_LINKER_FLAGS ${LINKER_EXCLUDE_LIBS_FLAG})
+
+if(LINKER_SUPPORT_EXCLUDE_LIBS)
+ set_property(TARGET jxl_cms APPEND_STRING PROPERTY
+ LINK_FLAGS " ${LINKER_EXCLUDE_LIBS_FLAG}")
+endif()
+
+install(TARGETS jxl_cms
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+
+if (BUILD_SHARED_LIBS)
+ set(JPEGXL_REQUIRES_TYPE "Requires.private")
+else()
+ set(JPEGXL_REQUIRES_TYPE "Requires")
+endif()
+
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/jxl/libjxl_cms.pc.in"
+ "libjxl_cms.pc" @ONLY)
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libjxl_cms.pc"
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")