diff --git a/CMakeLists.txt b/CMakeLists.txt index 18190f647..f4b1b359d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,6 +23,9 @@ endif() project(AOM C CXX) +include(GNUInstallDirs) +include(CMakePackageConfigHelpers) + # GENERATED source property global visibility. if(POLICY CMP0118) cmake_policy(SET CMP0118 NEW) @@ -302,6 +305,52 @@ if(BUILD_SHARED_LIBS) set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} aom_static) endif() +set(PUBLIC_HEADERS + aom/aom.h + aom/aom_codec.h + aom/aom_decoder.h + aom/aom_encoder.h + aom/aom_frame_buffer.h + aom/aom_image.h + aom/aom_integer.h + aom/aomcx.h + aom/aomdx.h +) + +set_target_properties(aom PROPERTIES + PUBLIC_HEADER "${PUBLIC_HEADERS}") + + +target_include_directories(aom + PUBLIC $ + $) + +install(TARGETS aom + EXPORT unofficial-aom-targets + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/aom") + +install(EXPORT unofficial-aom-targets + FILE unofficial-aom-targets.cmake + NAMESPACE unofficial:: + DESTINATION lib/cmake/aom) + +configure_package_config_file(cmake/aom-config.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/aom-config.cmake + INSTALL_DESTINATION lib/cmake/aom + NO_SET_AND_CHECK_MACRO + NO_CHECK_REQUIRED_COMPONENTS_MACRO) + +write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/aom-config-version.cmake + VERSION ${SO_FILE_VERSION} + COMPATIBILITY SameMajorVersion) + +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/aom-config.cmake + ${CMAKE_CURRENT_BINARY_DIR}/aom-config-version.cmake + DESTINATION lib/cmake/aom) + # Setup dependencies. if(CONFIG_THREE_PASS) setup_ivf_dec_targets() diff --git a/cmake/aom-config.cmake.in b/cmake/aom-config.cmake.in new file mode 100644 index 000000000..91cac3b5b --- /dev/null +++ b/cmake/aom-config.cmake.in @@ -0,0 +1,2 @@ +@PACKAGE_INIT@ +include(${CMAKE_CURRENT_LIST_DIR}/unofficial-aom-targets.cmake)