Add the option of using pkg-config for libjxl
Use -DSTATIC_LINK_JXL for a static link of libjxl.
Change-Id: Ia9a505c633501b0c81665b1f3d40cb2d50ea3c25
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f182576..8ebe580 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -447,28 +447,52 @@
${AOM_ENCODER_TOOL_TARGETS})
if(CONFIG_TUNE_BUTTERAUGLI)
- find_library(LIBJXL_LIBRARIES libjxl.a)
- find_library(LIBHWY_LIBRARIES libhwy.a)
- find_library(LIBSKCMS_LIBRARIES libskcms.a)
- find_path(LIBJXL_INCLUDE_DIRS butteraugli.h PATH_SUFFIXES jxl)
- if(LIBJXL_LIBRARIES
- AND LIBHWY_LIBRARIES
- AND LIBSKCMS_LIBRARIES
- AND LIBJXL_INCLUDE_DIRS)
- message(STATUS "Found JXL library: ${LIBJXL_LIBRARIES} "
- "${LIBHWY_LIBRARIES} ${LIBJXLT_LIBRARIES} "
- "${LIBSKCMS_LIBRARIES}")
- message(STATUS "Found JXL include: ${LIBJXL_INCLUDE_DIRS}")
+ find_package(PkgConfig)
+ # Use find_library() with STATIC_LINK_JXL for static build since
+ # pkg_check_modules() with LIBJXL_STATIC is not working.
+ if(STATIC_LINK_JXL OR NOT PKG_CONFIG_FOUND)
+ find_library(LIBJXL_LIBRARIES libjxl.a)
+ find_library(LIBHWY_LIBRARIES libhwy.a)
+ find_library(LIBSKCMS_LIBRARIES libskcms.a)
+ find_library(LIBBROTLICOMMON_LIBRARIES libbrotlicommon-static.a)
+ find_library(LIBBROTLIENC_LIBRARIES libbrotlienc-static.a)
+ find_library(LIBBROTLIDEC_LIBRARIES libbrotlidec-static.a)
+ find_path(LIBJXL_INCLUDE_DIRS butteraugli.h PATH_SUFFIXES jxl)
+ if(LIBJXL_LIBRARIES
+ AND LIBHWY_LIBRARIES
+ AND LIBSKCMS_LIBRARIES
+ AND LIBBROTLICOMMON_LIBRARIES
+ AND LIBBROTLIENC_LIBRARIES
+ AND LIBBROTLIDEC_LIBRARIES
+ AND LIBJXL_INCLUDE_DIRS)
+ message(STATUS "Found JXL library: ${LIBJXL_LIBRARIES} "
+ "${LIBHWY_LIBRARIES} ${LIBSKCMS_LIBRARIES} "
+ "${LIBBROTLICOMMON_LIBRARIES} ${LIBBROTLIENC_LIBRARIES}"
+ "${LIBBROTLIDEC_LIBRARIES}")
+ message(STATUS "Found JXL include: ${LIBJXL_INCLUDE_DIRS}")
+ else()
+ message(FATAL_ERROR "JXL library not found.")
+ endif()
+ target_link_libraries(aom
+ PRIVATE ${LIBJXL_LIBRARIES} ${LIBHWY_LIBRARIES}
+ ${LIBSKCMS_LIBRARIES}
+ ${LIBBROTLIENC_LIBRARIES}
+ ${LIBBROTLIDEC_LIBRARIES}
+ ${LIBBROTLICOMMON_LIBRARIES})
+ target_include_directories(aom PRIVATE ${LIBJXL_INCLUDE_DIRS})
else()
- message(FATAL_ERROR "JXL library not found.")
- endif()
- target_link_libraries(aom
- PRIVATE ${LIBJXL_LDFLAGS} ${LIBJXL_LIBRARIES}
- ${LIBHWY_LIBRARIES} ${LIBJXLT_LIBRARIES}
- ${LIBSKCMS_LIBRARIES})
- target_include_directories(aom PRIVATE ${LIBJXL_INCLUDE_DIRS})
- if(LIBJXL_CFLAGS)
- append_compiler_flag("${LIBJXL_CFLAGS}")
+ pkg_check_modules(LIBJXL REQUIRED libjxl)
+ target_link_libraries(aom PRIVATE ${LIBJXL_LDFLAGS} ${LIBJXL_LIBRARIES})
+ target_include_directories(aom PRIVATE ${LIBJXL_INCLUDE_DIRS})
+ if(LIBJXL_CFLAGS)
+ append_compiler_flag("${LIBJXL_CFLAGS}")
+ endif()
+ pkg_check_modules(LIBHWY REQUIRED libhwy)
+ target_link_libraries(aom PRIVATE ${LIBHWY_LDFLAGS} ${LIBHWY_LIBRARIES})
+ target_include_directories(aom PRIVATE ${LIBLIBHWY_INCLUDE_DIRS})
+ if(LIBHWY_CFLAGS)
+ append_compiler_flag("${LIBHWY_CFLAGS}")
+ endif()
endif()
set_target_properties(aom PROPERTIES LINKER_LANGUAGE CXX)
diff --git a/build/cmake/aom_config_defaults.cmake b/build/cmake/aom_config_defaults.cmake
index 294af80..2680b91 100644
--- a/build/cmake/aom_config_defaults.cmake
+++ b/build/cmake/aom_config_defaults.cmake
@@ -118,6 +118,7 @@
set_aom_config_var(CONFIG_USE_VMAF_RC 0 "Use libvmaf_rc tune for VMAF_NEG.")
set_aom_config_var(CONFIG_TUNE_BUTTERAUGLI 0
"Enable encoding tuning for Butteraugli.")
+set_aom_config_var(STATIC_LINK_JXL 0 "Statically link the JPEG-XL library.")
# AV1 experiment flags.
set_aom_config_var(CONFIG_SPEED_STATS 0 "AV1 experiment flag.")