libjxl

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

jxl_threads.cmake (3232B)


      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(Threads REQUIRED)
      7 
      8 include(jxl_lists.cmake)
      9 
     10 add_library(jxl_threads ${JPEGXL_INTERNAL_THREADS_SOURCES})
     11 target_compile_options(jxl_threads PRIVATE ${JPEGXL_INTERNAL_FLAGS})
     12 target_compile_options(jxl_threads PUBLIC ${JPEGXL_COVERAGE_FLAGS})
     13 set_property(TARGET jxl_threads PROPERTY POSITION_INDEPENDENT_CODE ON)
     14 
     15 target_include_directories(jxl_threads
     16   PRIVATE
     17     "${PROJECT_SOURCE_DIR}"
     18   PUBLIC
     19     "${CMAKE_CURRENT_SOURCE_DIR}/include"
     20     "${CMAKE_CURRENT_BINARY_DIR}/include")
     21 
     22 target_link_libraries(jxl_threads
     23   PUBLIC ${JPEGXL_COVERAGE_FLAGS} Threads::Threads
     24 )
     25 
     26 set_target_properties(jxl_threads PROPERTIES
     27   CXX_VISIBILITY_PRESET hidden
     28   VISIBILITY_INLINES_HIDDEN 1
     29   DEFINE_SYMBOL JXL_THREADS_INTERNAL_LIBRARY_BUILD
     30 )
     31 
     32 install(TARGETS jxl_threads
     33   RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
     34   LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
     35   ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
     36 
     37 set_target_properties(jxl_threads PROPERTIES
     38   VERSION ${JPEGXL_LIBRARY_VERSION}
     39   SOVERSION ${JPEGXL_LIBRARY_SOVERSION})
     40 
     41 set_target_properties(jxl_threads PROPERTIES
     42     LINK_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/jxl/jxl.version)
     43 if(APPLE)
     44   set_property(TARGET ${target} APPEND_STRING PROPERTY
     45       LINK_FLAGS "-Wl,-exported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/jxl/jxl_osx.syms")
     46 elseif(WIN32)
     47 # Nothing needed here, we use __declspec(dllexport) (jxl_threads_export.h)
     48 else()
     49   set_property(TARGET jxl_threads APPEND_STRING PROPERTY
     50       LINK_FLAGS " -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/jxl/jxl.version")
     51 endif()  # APPLE
     52 
     53 # Compile the shared library such that the JXL_THREADS_EXPORT symbols are
     54 # exported. Users of the library will not set this flag and therefore import
     55 # those symbols.
     56 target_compile_definitions(jxl_threads
     57   PRIVATE -DJXL_THREADS_INTERNAL_LIBRARY_BUILD)
     58 
     59 generate_export_header(jxl_threads
     60   BASE_NAME JXL_THREADS
     61   EXPORT_FILE_NAME include/jxl/jxl_threads_export.h)
     62 # Place all public headers in a single directory.
     63 foreach(path ${JPEGXL_INTERNAL_THREADS_PUBLIC_HEADERS})
     64   configure_file(
     65     ${path}
     66     ${path}
     67     COPYONLY
     68   )
     69 endforeach()
     70 
     71 ### Add a pkg-config file for libjxl_threads.
     72 
     73 # Allow adding prefix if CMAKE_INSTALL_INCLUDEDIR not absolute.
     74 if(IS_ABSOLUTE "${CMAKE_INSTALL_INCLUDEDIR}")
     75     set(PKGCONFIG_TARGET_INCLUDES "${CMAKE_INSTALL_INCLUDEDIR}")
     76 else()
     77     set(PKGCONFIG_TARGET_INCLUDES "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}")
     78 endif()
     79 # Allow adding prefix if CMAKE_INSTALL_LIBDIR not absolute.
     80 if(IS_ABSOLUTE "${CMAKE_INSTALL_LIBDIR}")
     81     set(PKGCONFIG_TARGET_LIBS "${CMAKE_INSTALL_LIBDIR}")
     82 else()
     83     set(PKGCONFIG_TARGET_LIBS "\${exec_prefix}/${CMAKE_INSTALL_LIBDIR}")
     84 endif()
     85 
     86 if (BUILD_SHARED_LIBS)
     87   set(JPEGXL_REQUIRES_TYPE "Requires.private")
     88 else()
     89   set(JPEGXL_REQUIRES_TYPE "Requires")
     90 endif()
     91 
     92 set(JPEGXL_THREADS_LIBRARY_REQUIRES "")
     93 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/threads/libjxl_threads.pc.in"
     94                "libjxl_threads.pc" @ONLY)
     95 install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libjxl_threads.pc"
     96   DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")