1# 2# Copyright (c) 2018, Alliance for Open Media. All rights reserved. 3# 4# This source code is subject to the terms of the BSD 2 Clause License and the 5# Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License was 6# not distributed with this source code in the LICENSE file, you can obtain it 7# at www.aomedia.org/license/software. If the Alliance for Open Media Patent 8# License 1.0 was not distributed with this source code in the PATENTS file, you 9# can obtain it at www.aomedia.org/license/patent. 10# 11list(APPEND AOM_INSTALL_INCS "${AOM_ROOT}/aom/aom.h" 12 "${AOM_ROOT}/aom/aom_codec.h" "${AOM_ROOT}/aom/aom_frame_buffer.h" 13 "${AOM_ROOT}/aom/aom_image.h" "${AOM_ROOT}/aom/aom_integer.h") 14 15if(CONFIG_AV1_DECODER) 16 list(APPEND AOM_INSTALL_INCS "${AOM_ROOT}/aom/aom_decoder.h" 17 "${AOM_ROOT}/aom/aomdx.h") 18endif() 19 20if(CONFIG_AV1_ENCODER) 21 list(APPEND AOM_INSTALL_INCS "${AOM_ROOT}/aom/aomcx.h" 22 "${AOM_ROOT}/aom/aom_encoder.h" 23 "${AOM_ROOT}/aom/aom_external_partition.h") 24endif() 25 26# Generate aom.pc and setup dependencies to ensure it is created when necessary. 27# Note: aom.pc generation uses GNUInstallDirs: 28# https://cmake.org/cmake/help/latest/module/GNUInstallDirs.html 29macro(setup_aom_install_targets) 30 if(NOT XCODE) 31 include("GNUInstallDirs") 32 set(AOM_PKG_CONFIG_FILE "${AOM_CONFIG_DIR}/aom.pc") 33 34 # Create a library target for creating aom.pc. 35 create_no_op_source_file(aom_pc c AOM_PKG_CONFIG_SOURCES) 36 add_library(aom_pc ${AOM_PKG_CONFIG_SOURCES}) 37 38 # Setup a rule to generate aom.pc. 39 add_custom_command( 40 OUTPUT "${AOM_PKG_CONFIG_FILE}" 41 COMMAND ${CMAKE_COMMAND} ARGS 42 -DAOM_CONFIG_DIR=${AOM_CONFIG_DIR} 43 -DAOM_ROOT=${AOM_ROOT} 44 -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} 45 -DCMAKE_INSTALL_BINDIR=${CMAKE_INSTALL_BINDIR} 46 -DCMAKE_INSTALL_INCLUDEDIR=${CMAKE_INSTALL_INCLUDEDIR} 47 -DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR} 48 -DCMAKE_PROJECT_NAME=${CMAKE_PROJECT_NAME} 49 -DCMAKE_THREAD_LIBS_INIT=${CMAKE_THREAD_LIBS_INIT} 50 -DCONFIG_MULTITHREAD=${CONFIG_MULTITHREAD} 51 -DCONFIG_TUNE_VMAF=${CONFIG_TUNE_VMAF} 52 -DCONFIG_TUNE_BUTTERAUGLI=${CONFIG_TUNE_BUTTERAUGLI} 53 -DCONFIG_SALIENCY_MAP=${CONFIG_SALIENCY_MAP} 54 -DCONFIG_TFLITE=${CONFIG_TFLITE} 55 -P 56 "${AOM_ROOT}/build/cmake/pkg_config.cmake" 57 COMMENT "Writing aom.pc" 58 VERBATIM) 59 60 # Explicitly add a dependency on the pkg-config file to ensure it's built. 61 get_property(aom_pc_sources TARGET aom_pc PROPERTY SOURCES) 62 set_source_files_properties(${aom_pc_sources} OBJECT_DEPENDS 63 "${AOM_PKG_CONFIG_FILE}") 64 65 # Our pkg-config file carries version information: add a dependency on the 66 # version rule. 67 add_dependencies(aom_pc aom_version) 68 69 if(CONFIG_AV1_DECODER) 70 if(ENABLE_EXAMPLES) 71 list(APPEND AOM_INSTALL_BINS aomdec) 72 endif() 73 endif() 74 75 if(CONFIG_AV1_ENCODER) 76 if(ENABLE_EXAMPLES) 77 list(APPEND AOM_INSTALL_BINS aomenc) 78 endif() 79 endif() 80 81 if(BUILD_SHARED_LIBS) 82 set(AOM_INSTALL_LIBS aom aom_static) 83 else() 84 set(AOM_INSTALL_LIBS aom) 85 endif() 86 87 # Setup the install rules. install() will automatically prepend 88 # CMAKE_INSTALL_PREFIX to relative paths 89 install(FILES ${AOM_INSTALL_INCS} 90 DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/aom") 91 install(FILES "${AOM_PKG_CONFIG_FILE}" 92 DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") 93 install(TARGETS ${AOM_INSTALL_LIBS};${AOM_INSTALL_BINS} 94 RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" 95 LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" 96 ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}") 97 endif() 98endmacro() 99