CMakeLists.txt 17.3 KB
Newer Older
Tom Finegan's avatar
Tom Finegan committed
1 2 3 4 5 6 7 8 9 10
##
## Copyright (c) 2016, Alliance for Open Media. All rights reserved
##
## This source code is subject to the terms of the BSD 2 Clause License and
## the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
## was not distributed with this source code in the LICENSE file, you can
## obtain it at www.aomedia.org/license/software. If the Alliance for Open
## Media Patent License 1.0 was not distributed with this source code in the
## PATENTS file, you can obtain it at www.aomedia.org/license/patent.
##
11
cmake_minimum_required(VERSION 3.5)
12 13 14 15 16 17 18

if (NOT EMSCRIPTEN)
  if ("${CMAKE_BUILD_TYPE}" STREQUAL "")
    set(CMAKE_BUILD_TYPE "RelWithDebInfo")
  endif ()
endif ()

19 20
option(ENABLE_CCACHE "Enable ccache support." OFF)
option(ENABLE_DISTCC "Enable distcc support." OFF)
21
option(ENABLE_DOCS "Enable documentation generation (doxygen required)." ON)
22
option(ENABLE_NASM "Use nasm instead of yasm for x86 assembly." OFF)
23

Tom Finegan's avatar
Tom Finegan committed
24 25 26
project(AOM C CXX)

set(AOM_ROOT "${CMAKE_CURRENT_SOURCE_DIR}")
Tom Finegan's avatar
Tom Finegan committed
27
set(AOM_CONFIG_DIR "${CMAKE_CURRENT_BINARY_DIR}")
Tom Finegan's avatar
Tom Finegan committed
28

Tom Finegan's avatar
Tom Finegan committed
29 30 31 32 33 34 35
if ("${AOM_ROOT}" STREQUAL "${AOM_CONFIG_DIR}")
  message(FATAL_ERROR
          "Building from within the aom source tree is not supported.\n"
          "Hint: mkdir -p ../aom_build && cd ../aom_build\n"
          "Run cmake from there.")
endif ()

Tom Finegan's avatar
Tom Finegan committed
36
include("${AOM_ROOT}/build/cmake/aom_configure.cmake")
37
include("${AOM_ROOT}/build/cmake/aom_optimization.cmake")
38
include("${AOM_ROOT}/aom_dsp/aom_dsp.cmake")
39
include("${AOM_ROOT}/aom_mem/aom_mem.cmake")
40
include("${AOM_ROOT}/aom_ports/aom_ports.cmake")
41
include("${AOM_ROOT}/aom_scale/aom_scale.cmake")
42
include("${AOM_ROOT}/aom_util/aom_util.cmake")
43
include("${AOM_ROOT}/av1/av1.cmake")
44
include("${AOM_ROOT}/test/test.cmake")
45

46 47 48 49 50 51 52 53 54 55 56 57
set(AOM_RTCD_SOURCES
    "${AOM_CONFIG_DIR}/aom_dsp_rtcd.h"
    "${AOM_CONFIG_DIR}/aom_scale_rtcd.h"
    "${AOM_CONFIG_DIR}/av1_rtcd.h"
    "${AOM_ROOT}/aom_dsp/aom_dsp_rtcd_defs.pl"
    "${AOM_ROOT}/aom_dsp/aom_dsp_rtcd.c"
    "${AOM_ROOT}/aom_scale/aom_scale_rtcd.pl"
    "${AOM_ROOT}/aom_scale/aom_scale_rtcd.c"
    "${AOM_ROOT}/av1/common/av1_rtcd_defs.pl"
    "${AOM_ROOT}/av1/common/av1_rtcd.c"
    "${AOM_ROOT}/build/make/rtcd.pl")

Tom Finegan's avatar
Tom Finegan committed
58
# TODO(tomfinegan): Use libwebm's cmake support directly.
59
set(AOM_LIBWEBM_SOURCES
Tom Finegan's avatar
Tom Finegan committed
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
    "${AOM_ROOT}/third_party/libwebm/common/hdr_util.cc"
    "${AOM_ROOT}/third_party/libwebm/common/hdr_util.h"
    "${AOM_ROOT}/third_party/libwebm/common/webmids.h"
    "${AOM_ROOT}/third_party/libwebm/mkvmuxer/mkvmuxer.cc"
    "${AOM_ROOT}/third_party/libwebm/mkvmuxer/mkvmuxer.h"
    "${AOM_ROOT}/third_party/libwebm/mkvmuxer/mkvmuxertypes.h"
    "${AOM_ROOT}/third_party/libwebm/mkvmuxer/mkvmuxerutil.cc"
    "${AOM_ROOT}/third_party/libwebm/mkvmuxer/mkvmuxerutil.h"
    "${AOM_ROOT}/third_party/libwebm/mkvmuxer/mkvwriter.cc"
    "${AOM_ROOT}/third_party/libwebm/mkvmuxer/mkvwriter.h"
    "${AOM_ROOT}/third_party/libwebm/mkvparser/mkvparser.cc"
    "${AOM_ROOT}/third_party/libwebm/mkvparser/mkvparser.h"
    "${AOM_ROOT}/third_party/libwebm/mkvparser/mkvreader.cc"
    "${AOM_ROOT}/third_party/libwebm/mkvparser/mkvreader.h")

75
set(AOM_LIBYUV_SOURCES
Tom Finegan's avatar
Tom Finegan committed
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
    "${AOM_ROOT}/third_party/libyuv/include/libyuv/basic_types.h"
    "${AOM_ROOT}/third_party/libyuv/include/libyuv/convert.h"
    "${AOM_ROOT}/third_party/libyuv/include/libyuv/convert_argb.h"
    "${AOM_ROOT}/third_party/libyuv/include/libyuv/convert_from.h"
    "${AOM_ROOT}/third_party/libyuv/include/libyuv/cpu_id.h"
    "${AOM_ROOT}/third_party/libyuv/include/libyuv/planar_functions.h"
    "${AOM_ROOT}/third_party/libyuv/include/libyuv/rotate.h"
    "${AOM_ROOT}/third_party/libyuv/include/libyuv/row.h"
    "${AOM_ROOT}/third_party/libyuv/include/libyuv/scale.h"
    "${AOM_ROOT}/third_party/libyuv/include/libyuv/scale_row.h"
    "${AOM_ROOT}/third_party/libyuv/source/cpu_id.cc"
    "${AOM_ROOT}/third_party/libyuv/source/planar_functions.cc"
    "${AOM_ROOT}/third_party/libyuv/source/row_any.cc"
    "${AOM_ROOT}/third_party/libyuv/source/row_common.cc"
    "${AOM_ROOT}/third_party/libyuv/source/row_gcc.cc"
    "${AOM_ROOT}/third_party/libyuv/source/row_mips.cc"
    "${AOM_ROOT}/third_party/libyuv/source/row_neon.cc"
    "${AOM_ROOT}/third_party/libyuv/source/row_neon64.cc"
    "${AOM_ROOT}/third_party/libyuv/source/row_win.cc"
    "${AOM_ROOT}/third_party/libyuv/source/scale.cc"
    "${AOM_ROOT}/third_party/libyuv/source/scale_any.cc"
    "${AOM_ROOT}/third_party/libyuv/source/scale_common.cc"
    "${AOM_ROOT}/third_party/libyuv/source/scale_gcc.cc"
    "${AOM_ROOT}/third_party/libyuv/source/scale_mips.cc"
    "${AOM_ROOT}/third_party/libyuv/source/scale_neon.cc"
    "${AOM_ROOT}/third_party/libyuv/source/scale_neon64.cc"
    "${AOM_ROOT}/third_party/libyuv/source/scale_win.cc")

104
set(AOM_SOURCES
Tom Finegan's avatar
Tom Finegan committed
105 106
    "${AOM_CONFIG_DIR}/aom_config.c"
    "${AOM_CONFIG_DIR}/aom_config.h"
Tom Finegan's avatar
Tom Finegan committed
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
    "${AOM_ROOT}/aom/aom.h"
    "${AOM_ROOT}/aom/aom_codec.h"
    "${AOM_ROOT}/aom/aom_decoder.h"
    "${AOM_ROOT}/aom/aom_encoder.h"
    "${AOM_ROOT}/aom/aom_frame_buffer.h"
    "${AOM_ROOT}/aom/aom_image.h"
    "${AOM_ROOT}/aom/aom_integer.h"
    "${AOM_ROOT}/aom/aomcx.h"
    "${AOM_ROOT}/aom/aomdx.h"
    "${AOM_ROOT}/aom/internal/aom_codec_internal.h"
    "${AOM_ROOT}/aom/src/aom_codec.c"
    "${AOM_ROOT}/aom/src/aom_decoder.c"
    "${AOM_ROOT}/aom/src/aom_encoder.c"
    "${AOM_ROOT}/aom/src/aom_image.c")

122
set(AOM_COMMON_APP_UTIL_SOURCES
123 124
    "${AOM_ROOT}/args.c"
    "${AOM_ROOT}/args.h"
125 126 127 128
    "${AOM_ROOT}/md5_utils.c"
    "${AOM_ROOT}/md5_utils.h"
    "${AOM_ROOT}/tools_common.c"
    "${AOM_ROOT}/tools_common.h"
129 130 131
    "${AOM_ROOT}/video_common.h"
    "${AOM_ROOT}/y4menc.c"
    "${AOM_ROOT}/y4menc.h")
132 133 134 135 136

set(AOM_DECODER_APP_UTIL_SOURCES
    "${AOM_ROOT}/ivfdec.c"
    "${AOM_ROOT}/ivfdec.h"
    "${AOM_ROOT}/video_reader.c"
137
    "${AOM_ROOT}/video_reader.h")
138 139 140 141 142

set(AOM_ENCODER_APP_UTIL_SOURCES
    "${AOM_ROOT}/ivfenc.c"
    "${AOM_ROOT}/ivfenc.h"
    "${AOM_ROOT}/video_writer.c"
143 144 145 146
    "${AOM_ROOT}/video_writer.h"
    "${AOM_ROOT}/warnings.c"
    "${AOM_ROOT}/warnings.h"
    "${AOM_ROOT}/y4minput.c"
147 148 149
    "${AOM_ROOT}/y4minput.h"
    "${AOM_ROOT}/examples/encoder_util.h"
    "${AOM_ROOT}/examples/encoder_util.c")
150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165

set(AOM_ENCODER_STATS_SOURCES
    "${AOM_ROOT}/aomstats.c"
    "${AOM_ROOT}/aomstats.h"
    "${AOM_ROOT}/rate_hist.c"
    "${AOM_ROOT}/rate_hist.h")

set(AOM_WEBM_DECODER_SOURCES
    "${AOM_ROOT}/webmdec.cc"
    "${AOM_ROOT}/webmdec.h")

set(AOM_WEBM_ENCODER_SOURCES
    "${AOM_ROOT}/webmenc.cc"
    "${AOM_ROOT}/webmenc.h")

include_directories(${AOM_ROOT} ${AOM_CONFIG_DIR})
166

Tom Finegan's avatar
Tom Finegan committed
167
# Targets
168 169
# TODO(tomfinegan): Move rtcd target setup where it belongs for each rtcd
# source.
170 171 172 173 174 175 176 177 178 179 180 181
add_rtcd_build_step("${AOM_ROOT}/aom_dsp/aom_dsp_rtcd_defs.pl"
                    "${AOM_CONFIG_DIR}/aom_dsp_rtcd.h"
                    "${AOM_ROOT}/aom_dsp/aom_dsp_rtcd.c"
                    "aom_dsp_rtcd")
add_rtcd_build_step("${AOM_ROOT}/aom_scale/aom_scale_rtcd.pl"
                    "${AOM_CONFIG_DIR}/aom_scale_rtcd.h"
                    "${AOM_ROOT}/aom_scale/aom_scale_rtcd.c"
                    "aom_scale_rtcd")
add_rtcd_build_step("${AOM_ROOT}/av1/common/av1_rtcd_defs.pl"
                    "${AOM_CONFIG_DIR}/av1_rtcd.h"
                    "${AOM_ROOT}/av1/common/av1_rtcd.c"
                    "av1_rtcd")
182

183
add_library(aom_rtcd OBJECT ${AOM_RTCD_SOURCES})
184
add_library(aom_encoder_stats OBJECT ${AOM_ENCODER_STATS_SOURCES})
185
add_library(aom ${AOM_SOURCES} $<TARGET_OBJECTS:aom_rtcd>)
186

187
# List of object and static library targets.
188 189
set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} aom_rtcd aom_encoder_stats aom_mem
    aom_scale aom)
190

191
# Setup dependencies.
192
setup_aom_dsp_targets()
193
setup_aom_mem_targets()
194
setup_aom_ports_targets()
195
setup_aom_util_targets()
196
setup_aom_scale_targets()
197
setup_av1_targets()
198

199 200 201 202 203 204
# Make all library targets depend on aom_rtcd to make sure it builds first.
foreach (aom_lib ${AOM_LIB_TARGETS})
  if (NOT "${aom_lib}" STREQUAL "aom_rtcd")
    add_dependencies(${aom_lib} aom_rtcd)
  endif ()
endforeach ()
205

206 207 208
#
# Application and application support targets.
#
209 210 211
add_library(aom_common_app_util OBJECT ${AOM_COMMON_APP_UTIL_SOURCES})


212 213 214
if (CONFIG_AV1_DECODER)
  add_library(aom_decoder_app_util OBJECT ${AOM_DECODER_APP_UTIL_SOURCES})
  add_executable(aomdec
215 216 217 218
               "${AOM_ROOT}/aomdec.c"
               $<TARGET_OBJECTS:aom_common_app_util>
               $<TARGET_OBJECTS:aom_decoder_app_util>)

219 220 221 222 223 224 225 226
  if (CONFIG_ANALYZER)
    add_executable(analyzer
                   "${AOM_ROOT}/examples/analyzer.cc"
                   $<TARGET_OBJECTS:aom_common_app_util>
                   $<TARGET_OBJECTS:aom_decoder_app_util>)
    target_link_libraries(analyzer ${AOM_LIB_LINK_TYPE} ${wxWidgets_LIBRARIES})
    set(AOM_APP_TARGETS ${AOM_APP_TARGETS} analyzer)
  endif ()
227

228 229
  add_executable(decode_to_md5
                 "${AOM_ROOT}/examples/decode_to_md5.c"
230 231
                 $<TARGET_OBJECTS:aom_common_app_util>
                 $<TARGET_OBJECTS:aom_decoder_app_util>)
232 233 234 235 236 237
  add_executable(decode_with_drops
                 "${AOM_ROOT}/examples/decode_with_drops.c"
                 $<TARGET_OBJECTS:aom_common_app_util>
                 $<TARGET_OBJECTS:aom_decoder_app_util>)
  add_executable(simple_decoder
                 "${AOM_ROOT}/examples/simple_decoder.c"
238 239
                 $<TARGET_OBJECTS:aom_common_app_util>
                 $<TARGET_OBJECTS:aom_decoder_app_util>)
240 241 242 243 244 245

  if (CONFIG_INSPECTION)
    add_executable(inspect
                   "${AOM_ROOT}/examples/inspect.c"
                   $<TARGET_OBJECTS:aom_common_app_util>
                   $<TARGET_OBJECTS:aom_decoder_app_util>)
246
    set(AOM_DECODER_EXAMPLE_TARGETS ${AOM_DECODER_EXAMPLE_TARGETS} inspect)
247 248 249 250 251 252 253 254 255 256 257 258

    if (EMSCRIPTEN)
      add_preproc_definition(_POSIX_SOURCE)
      add_compiler_flag_if_supported("-s TOTAL_MEMORY=134217728")
      add_compiler_flag_if_supported("-s MODULARIZE=1")
      add_compiler_flag_if_supported("-s EXPORT_NAME=\"\'DecoderModule\'\"")
      add_compiler_flag_if_supported("--memory-init-file 0")
      if ("${CMAKE_BUILD_TYPE}" STREQUAL "")
        # Default to -O3 when no build type specified.
        add_compiler_flag_if_supported("-O3")
      endif ()
      em_link_post_js(inspect "${AOM_ROOT}/tools/inspect-post.js")
259 260
    endif ()
  endif ()
261

262 263 264 265
  # Maintain lists of example and app targets.
  set(AOM_DECODER_EXAMPLE_TARGETS ${AOM_DECODER_EXAMPLE_TARGETS}
      decode_to_md5 decode_with_drops simple_decoder)
  set(AOM_APP_TARGETS ${AOM_APP_TARGETS} aomdec ${AOM_DECODER_EXAMPLE_TARGETS})
266 267
endif ()

268

269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292
if (CONFIG_AV1_ENCODER)
  add_library(aom_encoder_app_util OBJECT ${AOM_ENCODER_APP_UTIL_SOURCES})
  add_executable(aomenc
                 "${AOM_ROOT}/aomenc.c"
                 $<TARGET_OBJECTS:aom_common_app_util>
                 $<TARGET_OBJECTS:aom_encoder_app_util>
                 $<TARGET_OBJECTS:aom_encoder_stats>)
  add_executable(lossless_encoder
                 "${AOM_ROOT}/examples/lossless_encoder.c"
                 $<TARGET_OBJECTS:aom_common_app_util>
                 $<TARGET_OBJECTS:aom_encoder_app_util>)
  add_executable(set_maps
                 "${AOM_ROOT}/examples/set_maps.c"
                 $<TARGET_OBJECTS:aom_common_app_util>
                 $<TARGET_OBJECTS:aom_encoder_app_util>)
  add_executable(simple_encoder
                 "${AOM_ROOT}/examples/simple_encoder.c"
                 $<TARGET_OBJECTS:aom_common_app_util>
                 $<TARGET_OBJECTS:aom_encoder_app_util>)
  add_executable(twopass_encoder
                 "${AOM_ROOT}/examples/twopass_encoder.c"
                 $<TARGET_OBJECTS:aom_common_app_util>
                 $<TARGET_OBJECTS:aom_encoder_app_util>)

293 294 295 296
  # Add encoder apps and examples to target lists.
  set(AOM_ENCODER_EXAMPLE_TARGETS
      lossless_encoder set_maps simple_encoder twopass_encoder)
  set(AOM_APP_TARGETS ${AOM_APP_TARGETS} aomenc ${AOM_ENCODER_EXAMPLE_TARGETS})
297
endif ()
298

299 300 301 302 303 304
# Maintain a separate variable listing only the examples to facilitate
# installation of example programs into an examples sub directory of
# $AOM_DIST_DIR/bin when building the dist target.
set(AOM_EXAMPLE_TARGETS
    ${AOM_DECODER_EXAMPLE_TARGETS} ${AOM_ENCODER_EXAMPLE_TARGETS})

305 306 307 308 309
if (CONFIG_AV1_DECODER AND CONFIG_AV1_ENCODER)
  add_executable(aom_cx_set_ref
                 "${AOM_ROOT}/examples/aom_cx_set_ref.c"
                 $<TARGET_OBJECTS:aom_common_app_util>
                 $<TARGET_OBJECTS:aom_encoder_app_util>)
310
  set(AOM_EXAMPLE_TARGETS ${AOM_EXAMPLE_TARGETS} aom_cx_set_ref)
311 312
  set(AOM_APP_TARGETS ${AOM_APP_TARGETS} aom_cx_set_ref)
endif ()
313 314

foreach (aom_app ${AOM_APP_TARGETS})
315
  target_link_libraries(${aom_app} ${AOM_LIB_LINK_TYPE} aom)
316
endforeach ()
Tom Finegan's avatar
Tom Finegan committed
317

Tom Finegan's avatar
Tom Finegan committed
318
if (CONFIG_LIBYUV)
319
  add_library(yuv OBJECT ${AOM_LIBYUV_SOURCES})
320 321 322
  if (NOT MSVC)
    target_compile_options(yuv PRIVATE -Wno-unused-parameter)
  endif ()
Tom Finegan's avatar
Tom Finegan committed
323 324 325
  include_directories("${AOM_ROOT}/third_party/libyuv/include")

  # Add to existing targets.
326 327 328 329
  foreach (aom_app ${AOM_APP_TARGETS})
    target_sources(${aom_app} PUBLIC $<TARGET_OBJECTS:yuv>)
    set_property(TARGET ${aom_app} PROPERTY LINKER_LANGUAGE CXX)
  endforeach ()
Tom Finegan's avatar
Tom Finegan committed
330 331
endif ()

Tom Finegan's avatar
Tom Finegan committed
332
if (CONFIG_WEBM_IO)
333
  add_library(webm OBJECT ${AOM_LIBWEBM_SOURCES})
Tom Finegan's avatar
Tom Finegan committed
334
  include_directories("${AOM_ROOT}/third_party/libwebm")
335 336 337 338

  if (NOT MSVC)
    target_compile_options(webm PRIVATE -Wno-shadow)
  endif ()
Tom Finegan's avatar
Tom Finegan committed
339 340

  # Add to existing targets.
341 342 343 344 345 346 347
  if (CONFIG_AV1_DECODER)
    target_sources(aom_decoder_app_util PUBLIC ${AOM_WEBM_DECODER_SOURCES})
  endif ()

  if (CONFIG_AV1_ENCODER)
    target_sources(aom_encoder_app_util PUBLIC ${AOM_WEBM_ENCODER_SOURCES})
  endif ()
348 349 350 351 352

  foreach (aom_app ${AOM_APP_TARGETS})
    target_sources(${aom_app} PUBLIC $<TARGET_OBJECTS:webm>)
    set_property(TARGET ${aom_app} PROPERTY LINKER_LANGUAGE CXX)
   endforeach ()
Tom Finegan's avatar
Tom Finegan committed
353
endif ()
354 355

if (CONFIG_UNIT_TESTS)
356 357 358
  # Create test_libaom target and the targets it depends on.
  setup_aom_test_targets()
endif ()
359

360 361 362
if (HAVE_PTHREAD_H AND CONFIG_MULTITHREAD)
  find_package(Threads)
  foreach (app_target ${AOM_APP_TARGETS})
363
    target_link_libraries(${app_target} ${AOM_LIB_LINK_TYPE} Threads::Threads)
364 365 366
  endforeach ()
endif ()

367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384
if (XCODE)
  if (CONFIG_LIBYUV OR CONFIG_WEBM_IO)
    # The Xcode generator does not obey LINKER_LANGUAGE. Because of the issue
    # what looks like a C++ file needs to be in any target that Xcode will link
    # when the target contains a C++ dependency.
    # Without this Xcode will try to link with the C linker, which always ends
    # badly when a dependency actually includes C++.
    # Note: LINKER_LANGUAGE is explicitly set to C++ for all targets touched
    # here, it really is the Xcode generator's fault, or just a deficiency in
    # Xcode itself.
    set(XCODE_DUMMY_CXX_FILE "${AOM_CONFIG_DIR}/dummy.cc")
    file(WRITE "${XCODE_DUMMY_CXX_FILE}"
         "// Xcode needs a C++ file to link, ignore this file.")
    foreach (aom_app ${AOM_APP_TARGETS})
      target_sources(${aom_app} PUBLIC "${XCODE_DUMMY_CXX_FILE}")
    endforeach ()
  endif ()
endif ()
Tom Finegan's avatar
Tom Finegan committed
385

386 387 388 389 390 391 392 393
if ("${CMAKE_GENERATOR}" MATCHES "Makefiles$" )
  # Users of the configure build expect the example targets to be built in the
  # examples sub directory of the configured build directory after running make.
  file(MAKE_DIRECTORY "${AOM_CONFIG_DIR}/examples")
  set_target_properties(${AOM_EXAMPLE_TARGETS} PROPERTIES
                        RUNTIME_OUTPUT_DIRECTORY "${AOM_CONFIG_DIR}/examples")
endif ()

394 395 396 397 398 399 400 401 402 403 404 405
# Aomedia documentation rule.
if (ENABLE_DOCS)
  include(FindDoxygen)
  if (DOXYGEN_FOUND)
    include("${AOM_ROOT}/docs.cmake")
    setup_documentation_targets()
  else ()
    message("--- Cannot find doxygen, ENABLE_DOCS turned off.")
    set(ENABLE_DOCS OFF)
  endif ()
endif ()

Tom Finegan's avatar
Tom Finegan committed
406 407 408 409 410 411 412 413
# Aomedia install rule.
set(AOM_INSTALL_INCS
    "${AOM_ROOT}/aom/aom.h"
    "${AOM_ROOT}/aom/aom_codec.h"
    "${AOM_ROOT}/aom/aom_frame_buffer.h"
    "${AOM_ROOT}/aom/aom_image.h"
    "${AOM_ROOT}/aom/aom_integer.h"
    "${AOM_ROOT}/aom/aom.h")
414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430

if (CONFIG_AV1_DECODER)
  set(AOM_INSTALL_BINS ${AOM_INSTALL_BINS} aomdec)
  set(AOM_INSTALL_INCS
      ${AOM_INSTALL_INCS}
      "${AOM_ROOT}/aom/aom_decoder.h"
      "${AOM_ROOT}/aom/aomdx.h")
endif ()

if (CONFIG_AV1_ENCODER)
  set(AOM_INSTALL_INCS
      ${AOM_INSTALL_INCS}
      "${AOM_ROOT}/aom/aomcx.h"
      "${AOM_ROOT}/aom/aom_encoder.h")
  set(AOM_INSTALL_BINS ${AOM_INSTALL_BINS} aomenc)
endif ()

Tom Finegan's avatar
Tom Finegan committed
431 432 433 434
set(AOM_INSTALL_LIBS aom)

install(FILES ${AOM_INSTALL_INCS}
        DESTINATION "${CMAKE_INSTALL_PREFIX}/include/aom")
435 436
install(FILES "${AOM_CONFIG_DIR}/aom.pc"
        DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig")
Tom Finegan's avatar
Tom Finegan committed
437 438
install(TARGETS ${AOM_INSTALL_LIBS} DESTINATION "${CMAKE_INSTALL_PREFIX}/lib")
install(TARGETS ${AOM_INSTALL_BINS} DESTINATION "${CMAKE_INSTALL_PREFIX}/bin")
439

440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469
# Aomedia dist rule.
if (CONFIG_AV1_DECODER)
  set(AOM_DIST_APPS ${AOM_DIST_APPS} $<TARGET_FILE:aomdec>)
endif ()
if (CONFIG_AV1_ENCODER)
  set(AOM_DIST_APPS ${AOM_DIST_APPS} $<TARGET_FILE:aomenc>)
endif ()

foreach (example ${AOM_EXAMPLE_TARGETS})
  list(APPEND AOM_DIST_EXAMPLES $<TARGET_FILE:${example}>)
endforeach ()

if (NOT AOM_DIST_DIR)
  set(AOM_DIST_DIR "${AOM_CONFIG_DIR}/dist")
endif ()

add_custom_target(dist
                  COMMAND ${CMAKE_COMMAND}
                  -DAOM_ROOT=${AOM_ROOT}
                  -DAOM_CONFIG_DIR=${AOM_CONFIG_DIR}
                  -DAOM_DIST_DIR=${AOM_DIST_DIR}
                  -DAOM_DIST_APPS="${AOM_DIST_APPS}"
                  -DAOM_DIST_EXAMPLES="${AOM_DIST_EXAMPLES}"
                  -DAOM_DIST_INCLUDES="${AOM_INSTALL_INCS}"
                  -DAOM_DIST_LIBS=$<TARGET_FILE:aom>
                  -DENABLE_DOCS=${ENABLE_DOCS}
                  -P "${AOM_ROOT}/build/cmake/dist.cmake"
                  DEPENDS ${AOM_INSTALL_BINS} ${AOM_INSTALL_LIBS}
                  ${AOM_INSTALL_INCS} ${AOM_EXAMPLE_TARGETS})

470
if (ENABLE_DOCS)
471
  add_dependencies(dist docs)
472
endif ()