libjxl

FORK: libjxl patches used on blog
git clone https://git.neptards.moe/blog/libjxl.git
Log | Files | Refs | Submodules | README | LICENSE

CMakeLists.txt (3479B)


      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)
      7 pkg_check_modules(Gdk-Pixbuf IMPORTED_TARGET gdk-pixbuf-2.0>=2.36)
      8 
      9 include(GNUInstallDirs)
     10 
     11 if (NOT Gdk-Pixbuf_FOUND)
     12   message(WARNING "GDK Pixbuf development libraries not found, \
     13                    the Gdk-Pixbuf plugin will not be built")
     14   return ()
     15 endif ()
     16 
     17 add_library(pixbufloader-jxl MODULE pixbufloader-jxl.c)
     18 
     19 # Mark all symbols as hidden by default. The PkgConfig::Gdk-Pixbuf dependency
     20 # will cause fill_info and fill_vtable entry points to be made public.
     21 set_target_properties(pixbufloader-jxl PROPERTIES
     22   CXX_VISIBILITY_PRESET hidden
     23   VISIBILITY_INLINES_HIDDEN 1
     24 )
     25 
     26 # Note: This only needs the decoder library, but we don't install the decoder
     27 # shared library.
     28 target_link_libraries(pixbufloader-jxl jxl jxl_threads lcms2 PkgConfig::Gdk-Pixbuf)
     29 
     30 execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} gdk-pixbuf-2.0 --variable gdk_pixbuf_moduledir --define-variable=prefix=${CMAKE_INSTALL_PREFIX} OUTPUT_VARIABLE GDK_PIXBUF_MODULEDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
     31 install(TARGETS pixbufloader-jxl DESTINATION "${GDK_PIXBUF_MODULEDIR}")
     32 
     33 # Instead of the following, we might instead add the
     34 # mime type image/jxl to
     35 # /usr/share/thumbnailers/gdk-pixbuf-thumbnailer.thumbnailer
     36 install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/jxl.thumbnailer DESTINATION "${CMAKE_INSTALL_DATADIR}/thumbnailers/")
     37 
     38 if(BUILD_TESTING AND NOT CMAKE_CROSSCOMPILING)
     39   pkg_check_modules(Gdk IMPORTED_TARGET gdk-2.0)
     40   if (Gdk_FOUND)
     41     # Test for loading a .jxl file using the pixbufloader library via GDK. This
     42     # requires to have the image/jxl mime type and loader library configured,
     43     # which we do in a fake environment in the CMAKE_CURRENT_BINARY_DIR.
     44     add_executable(pixbufloader_test pixbufloader_test.cc)
     45     target_link_libraries(pixbufloader_test PkgConfig::Gdk)
     46 
     47     # Create a mime cache for test.
     48     add_custom_command(
     49       OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/mime/mime.cache"
     50       COMMAND env XDG_DATA_HOME=${CMAKE_CURRENT_BINARY_DIR}
     51         xdg-mime install --novendor
     52         "${CMAKE_SOURCE_DIR}/plugins/mime/image-jxl.xml"
     53       DEPENDS "${CMAKE_SOURCE_DIR}/plugins/mime/image-jxl.xml"
     54     )
     55     add_custom_target(pixbufloader_test_mime
     56       DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/mime/mime.cache"
     57     )
     58     add_dependencies(pixbufloader_test pixbufloader_test_mime)
     59 
     60     # Use a fake X server to run the test if xvfb is installed.
     61     find_program (XVFB_PROGRAM xvfb-run)
     62     if(XVFB_PROGRAM)
     63       set(XVFB_PROGRAM_PREFIX "${XVFB_PROGRAM};-a")
     64     else()
     65       set(XVFB_PROGRAM_PREFIX "")
     66     endif()
     67 
     68     # libX11.so and libgdk-x11-2.0.so are not compiled with MSAN -> report
     69     # use-of-uninitialized-value for string some internal string value.
     70     # TODO(eustas): investigate direct memory leak (32 bytes).
     71     if (NOT (SANITIZER STREQUAL "msan") AND NOT (SANITIZER STREQUAL "asan"))
     72       add_test(
     73         NAME pixbufloader_test_jxl
     74         COMMAND
     75           ${XVFB_PROGRAM_PREFIX} $<TARGET_FILE:pixbufloader_test>
     76           "${CMAKE_CURRENT_SOURCE_DIR}/loaders_test.cache"
     77           "${JPEGXL_TEST_DATA_PATH}/jxl/blending/cropped_traffic_light.jxl"
     78         WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
     79       )
     80       set_tests_properties(pixbufloader_test_jxl PROPERTIES SKIP_RETURN_CODE 254)
     81     endif()
     82   endif()  # Gdk_FOUND
     83 endif()  # BUILD_TESTING