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.")