From: Jakub Jirutka Date: Fri, 23 Jan 2026 17:36:34 +0100 Subject: [PATCH] Allow static library to be packaged separately Exporting aom_static unconditionally causes find_package(AOM CONFIG) to fail when only the shared library is installed. Split the static target into an optional export so the CMake package remains valid. --- a/build/cmake/aom_install.cmake +++ b/build/cmake/aom_install.cmake @@ -78,11 +78,7 @@ endif() endif() - if(BUILD_SHARED_LIBS) - set(AOM_INSTALL_LIBS aom aom_static) - else() - set(AOM_INSTALL_LIBS aom) - endif() + set(AOM_INSTALL_LIBS aom) # XXXâ‚‹Patched set(AOM_GENERATED_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated") set(AOM_VERSION_CONFIG @@ -121,5 +117,18 @@ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}") + + # XXX-Patched: When building shared libs, export static archive separately. + # This lets distributors split libaom.a into a separate package without + # breaking find_package(AOM CONFIG) for consumers who only want shared. + if(BUILD_SHARED_LIBS) + set(AOM_STATIC_TARGETS_EXPORT_NAME "${PROJECT_NAME}StaticTargets") + install(TARGETS aom_static + EXPORT "${AOM_STATIC_TARGETS_EXPORT_NAME}" + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}") + install(EXPORT "${AOM_STATIC_TARGETS_EXPORT_NAME}" + NAMESPACE "${PROJECT_NAME}::" + DESTINATION "${AOM_CONFIG_INSTALL_DIR}") + endif() endif() endmacro() --- a/build/cmake/config.cmake.in +++ b/build/cmake/config.cmake.in @@ -8,6 +8,11 @@ include("${CMAKE_CURRENT_LIST_DIR}/@AOM_TARGETS_EXPORT_NAME@.cmake") +# XXX-Patched: Optional static targets may be shipped separately (-static package). +if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@StaticTargets.cmake") + include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@StaticTargets.cmake") +endif() + set_and_check(@PROJECT_NAME@_INCLUDE_DIRS "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@") # @PROJECT_NAME@::aom_static is defined only if BUILD_SHARED_LIBS=1 when libaom