xref: /aosp_15_r20/external/libaom/build/cmake/aom_install.cmake (revision 77c1e3ccc04c968bd2bc212e87364f250e820521)
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