summaryrefslogtreecommitdiff
path: root/media/libjxl/src/lib/jxl_extras.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'media/libjxl/src/lib/jxl_extras.cmake')
-rw-r--r--media/libjxl/src/lib/jxl_extras.cmake185
1 files changed, 185 insertions, 0 deletions
diff --git a/media/libjxl/src/lib/jxl_extras.cmake b/media/libjxl/src/lib/jxl_extras.cmake
new file mode 100644
index 0000000000..bfb33f9b2f
--- /dev/null
+++ b/media/libjxl/src/lib/jxl_extras.cmake
@@ -0,0 +1,185 @@
+# 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.
+
+set(JPEGXL_EXTRAS_SOURCES
+ extras/codec.cc
+ extras/codec.h
+ extras/dec/color_description.cc
+ extras/dec/color_description.h
+ extras/dec/color_hints.cc
+ extras/dec/color_hints.h
+ extras/dec/decode.cc
+ extras/dec/decode.h
+ extras/dec/pgx.cc
+ extras/dec/pgx.h
+ extras/dec/pnm.cc
+ extras/dec/pnm.h
+ extras/enc/pgx.cc
+ extras/enc/pgx.h
+ extras/enc/pnm.cc
+ extras/enc/pnm.h
+ extras/hlg.cc
+ extras/hlg.h
+ extras/packed_image.h
+ extras/packed_image_convert.cc
+ extras/packed_image_convert.h
+ extras/time.cc
+ extras/time.h
+ extras/tone_mapping.cc
+ extras/tone_mapping.h
+)
+
+set(JPEGXL_EXTRAS_DEC_SOURCES
+ extras/dec/color_description.cc
+ extras/dec/color_description.h
+ extras/dec/color_hints.cc
+ extras/dec/color_hints.h
+ extras/dec/decode.cc
+ extras/dec/decode.h
+ extras/dec/pgx.cc
+ extras/dec/pgx.h
+ extras/dec/pnm.cc
+ extras/dec/pnm.h
+ extras/packed_image.h
+)
+
+add_library(jxl_extras_dec-obj OBJECT "${JPEGXL_EXTRAS_DEC_SOURCES}")
+target_compile_options(jxl_extras_dec-obj PRIVATE "${JPEGXL_INTERNAL_FLAGS}")
+target_compile_definitions(jxl_extras_dec-obj PRIVATE -DJXL_EXPORT=)
+set_property(TARGET jxl_extras_dec-obj PROPERTY POSITION_INDEPENDENT_CODE ON)
+target_include_directories(jxl_extras_dec-obj PUBLIC
+ ${PROJECT_SOURCE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${CMAKE_CURRENT_BINARY_DIR}/include
+ $<TARGET_PROPERTY:hwy,INTERFACE_INCLUDE_DIRECTORIES>
+)
+set(JXL_EXTRAS_DEC_INTERNAL_LIBRARIES)
+set(JXL_EXTRAS_DEC_PUBLIC_COMPILE_DEFINITIONS)
+
+# We only define a static library for jxl_extras since it uses internal parts
+# of jxl library which are not accessible from outside the library in the
+# shared library case.
+add_library(jxl_extras-static STATIC EXCLUDE_FROM_ALL
+ "${JPEGXL_EXTRAS_SOURCES}")
+target_compile_options(jxl_extras-static PRIVATE "${JPEGXL_INTERNAL_FLAGS}")
+set_property(TARGET jxl_extras-static PROPERTY POSITION_INDEPENDENT_CODE ON)
+target_include_directories(jxl_extras-static PUBLIC "${PROJECT_SOURCE_DIR}")
+target_link_libraries(jxl_extras-static PUBLIC
+ jxl-static
+ jxl_extras_dec-static
+)
+
+find_package(GIF 5.1)
+if(GIF_FOUND)
+ target_sources(jxl_extras_dec-obj PRIVATE
+ extras/dec/gif.cc
+ extras/dec/gif.h
+ )
+ target_include_directories(jxl_extras_dec-obj PRIVATE "${GIF_INCLUDE_DIRS}")
+ list(APPEND JXL_EXTRAS_DEC_INTERNAL_LIBRARIES ${GIF_LIBRARIES})
+ list(APPEND JXL_EXTRAS_DEC_PUBLIC_DEFINITIONS -DJPEGXL_ENABLE_GIF=1)
+ if(JPEGXL_DEP_LICENSE_DIR)
+ configure_file("${JPEGXL_DEP_LICENSE_DIR}/libgif-dev/copyright"
+ ${PROJECT_BINARY_DIR}/LICENSE.libgif COPYONLY)
+ endif() # JPEGXL_DEP_LICENSE_DIR
+endif()
+
+find_package(JPEG)
+if(JPEG_FOUND)
+ target_sources(jxl_extras_dec-obj PRIVATE
+ extras/dec/jpg.cc
+ extras/dec/jpg.h
+ )
+ target_include_directories(jxl_extras_dec-obj PRIVATE "${JPEG_INCLUDE_DIRS}")
+ list(APPEND JXL_EXTRAS_DEC_INTERNAL_LIBRARIES ${JPEG_LIBRARIES})
+ list(APPEND JXL_EXTRAS_DEC_PUBLIC_DEFINITIONS -DJPEGXL_ENABLE_JPEG=1)
+ target_sources(jxl_extras-static PRIVATE
+ extras/enc/jpg.cc
+ extras/enc/jpg.h
+ )
+ target_include_directories(jxl_extras-static PRIVATE "${JPEG_INCLUDE_DIRS}")
+ target_link_libraries(jxl_extras-static PRIVATE ${JPEG_LIBRARIES})
+ target_compile_definitions(jxl_extras-static PUBLIC -DJPEGXL_ENABLE_JPEG=1)
+ if(JPEGXL_DEP_LICENSE_DIR)
+ configure_file("${JPEGXL_DEP_LICENSE_DIR}/libjpeg-dev/copyright"
+ ${PROJECT_BINARY_DIR}/LICENSE.libjpeg COPYONLY)
+ endif() # JPEGXL_DEP_LICENSE_DIR
+endif()
+
+if(NOT JPEGXL_BUNDLE_LIBPNG)
+ find_package(PNG)
+endif()
+if(PNG_FOUND)
+ target_sources(jxl_extras_dec-obj PRIVATE
+ extras/dec/apng.cc
+ extras/dec/apng.h
+ )
+ target_include_directories(jxl_extras_dec-obj PRIVATE "${PNG_INCLUDE_DIRS}")
+ list(APPEND JXL_EXTRAS_DEC_INTERNAL_LIBRARIES ${PNG_LIBRARIES})
+ list(APPEND JXL_EXTRAS_DEC_PUBLIC_DEFINITIONS -DJPEGXL_ENABLE_APNG=1)
+ target_sources(jxl_extras-static PRIVATE
+ extras/enc/apng.cc
+ extras/enc/apng.h
+ )
+ target_include_directories(jxl_extras-static PUBLIC "${PNG_INCLUDE_DIRS}")
+ target_link_libraries(jxl_extras-static PUBLIC ${PNG_LIBRARIES})
+ target_compile_definitions(jxl_extras-static PUBLIC -DJPEGXL_ENABLE_APNG=1)
+ configure_file(extras/LICENSE.apngdis
+ ${PROJECT_BINARY_DIR}/LICENSE.apngdis COPYONLY)
+endif()
+
+if (JPEGXL_ENABLE_SJPEG)
+ target_compile_definitions(jxl_extras-static PUBLIC -DJPEGXL_ENABLE_SJPEG=1)
+ target_link_libraries(jxl_extras-static PRIVATE sjpeg)
+endif ()
+
+if (JPEGXL_ENABLE_OPENEXR)
+pkg_check_modules(OpenEXR IMPORTED_TARGET OpenEXR)
+if (OpenEXR_FOUND)
+ target_sources(jxl_extras_dec-obj PRIVATE
+ extras/dec/exr.cc
+ extras/dec/exr.h
+ )
+ list(APPEND JXL_EXTRAS_DEC_PUBLIC_DEFINITIONS -DJPEGXL_ENABLE_EXR=1)
+ target_include_directories(jxl_extras_dec-obj PRIVATE "${OpenEXR_INCLUDE_DIRS}")
+ list(APPEND JXL_EXTRAS_DEC_INTERNAL_LIBRARIES PkgConfig::OpenEXR)
+ target_sources(jxl_extras-static PRIVATE
+ extras/enc/exr.cc
+ extras/enc/exr.h
+ )
+ target_compile_definitions(jxl_extras-static PUBLIC -DJPEGXL_ENABLE_EXR=1)
+ target_link_libraries(jxl_extras-static PRIVATE PkgConfig::OpenEXR)
+ if(JPEGXL_DEP_LICENSE_DIR)
+ configure_file("${JPEGXL_DEP_LICENSE_DIR}/libopenexr-dev/copyright"
+ ${PROJECT_BINARY_DIR}/LICENSE.libopenexr COPYONLY)
+ endif() # JPEGXL_DEP_LICENSE_DIR
+ # OpenEXR generates exceptions, so we need exception support to catch them.
+ # Actually those flags counteract the ones set in JPEGXL_INTERNAL_FLAGS.
+ if (NOT WIN32)
+ set_source_files_properties(extras/dec/exr.cc extras/enc/exr.cc PROPERTIES COMPILE_FLAGS -fexceptions)
+ if (${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")
+ set_source_files_properties(extras/dec/exr.cc extras/enc/exr.cc PROPERTIES COMPILE_FLAGS -fcxx-exceptions)
+ endif()
+ endif()
+endif() # OpenEXR_FOUND
+endif() # JPEGXL_ENABLE_OPENEXR
+
+target_compile_definitions(jxl_extras_dec-obj PRIVATE ${JXL_EXTRAS_DEC_PUBLIC_DEFINITIONS})
+
+### Static library.
+add_library(jxl_extras_dec-static STATIC $<TARGET_OBJECTS:jxl_extras_dec-obj>)
+target_compile_definitions(jxl_extras_dec-static PUBLIC ${JXL_EXTRAS_DEC_PUBLIC_DEFINITIONS})
+target_link_libraries(jxl_extras_dec-static PRIVATE ${JXL_EXTRAS_DEC_INTERNAL_LIBRARIES})
+
+### Shared library.
+if (((NOT DEFINED "${TARGET_SUPPORTS_SHARED_LIBS}") OR
+ TARGET_SUPPORTS_SHARED_LIBS) AND NOT JPEGXL_STATIC AND BUILD_SHARED_LIBS)
+add_library(jxl_extras_dec SHARED $<TARGET_OBJECTS:jxl_extras_dec-obj>)
+target_compile_definitions(jxl_extras_dec PUBLIC ${JXL_EXTRAS_DEC_PUBLIC_DEFINITIONS})
+target_link_libraries(jxl_extras_dec PRIVATE ${JXL_EXTRAS_DEC_INTERNAL_LIBRARIES} jxl)
+else()
+add_library(jxl_extras_dec ALIAS jxl_extras_dec-static)
+endif() # TARGET_SUPPORTS_SHARED_LIBS AND NOT JPEGXL_STATIC AND
+ # BUILD_SHARED_LIBS