Tom Finegan | fc6f236 | 2016-10-24 10:39:41 -0700 | [diff] [blame] | 1 | ## |
| 2 | ## Copyright (c) 2016, Alliance for Open Media. All rights reserved |
| 3 | ## |
| 4 | ## This source code is subject to the terms of the BSD 2 Clause License and |
| 5 | ## the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License |
| 6 | ## was not distributed with this source code in the LICENSE file, you can |
| 7 | ## obtain it at www.aomedia.org/license/software. If the Alliance for Open |
| 8 | ## Media Patent License 1.0 was not distributed with this source code in the |
| 9 | ## PATENTS file, you can obtain it at www.aomedia.org/license/patent. |
| 10 | ## |
Tom Finegan | 03e8021 | 2017-03-02 18:32:52 -0800 | [diff] [blame] | 11 | cmake_minimum_required(VERSION 3.5) |
Tom Finegan | fc6f236 | 2016-10-24 10:39:41 -0700 | [diff] [blame] | 12 | project(AOM C CXX) |
| 13 | |
| 14 | set(AOM_ROOT "${CMAKE_CURRENT_SOURCE_DIR}") |
Tom Finegan | 973d4d5 | 2016-10-26 11:42:42 -0700 | [diff] [blame] | 15 | set(AOM_CONFIG_DIR "${CMAKE_CURRENT_BINARY_DIR}") |
Tom Finegan | 6e9d0c1 | 2016-10-27 11:57:06 -0700 | [diff] [blame] | 16 | |
Tom Finegan | f77394f | 2017-04-26 11:47:59 -0700 | [diff] [blame^] | 17 | if ("${AOM_ROOT}" STREQUAL "${AOM_CONFIG_DIR}") |
| 18 | message(FATAL_ERROR |
| 19 | "Building from within the aom source tree is not supported.\n" |
| 20 | "Hint: mkdir -p ../aom_build && cd ../aom_build\n" |
| 21 | "Run cmake from there.") |
| 22 | endif () |
| 23 | |
Tom Finegan | 973d4d5 | 2016-10-26 11:42:42 -0700 | [diff] [blame] | 24 | include("${AOM_ROOT}/build/cmake/aom_configure.cmake") |
Tom Finegan | 50c5a7e | 2017-01-31 21:36:56 -0800 | [diff] [blame] | 25 | include("${AOM_ROOT}/build/cmake/aom_optimization.cmake") |
Tom Finegan | 85ac13e | 2017-02-22 15:09:20 -0800 | [diff] [blame] | 26 | include("${AOM_ROOT}/aom_dsp/aom_dsp.cmake") |
Tom Finegan | dd6d057 | 2017-03-01 19:01:23 -0800 | [diff] [blame] | 27 | include("${AOM_ROOT}/aom_mem/aom_mem.cmake") |
Tom Finegan | 507e2e1 | 2017-03-01 19:58:19 -0800 | [diff] [blame] | 28 | include("${AOM_ROOT}/aom_ports/aom_ports.cmake") |
Tom Finegan | f0d1444 | 2017-03-01 20:42:51 -0800 | [diff] [blame] | 29 | include("${AOM_ROOT}/aom_scale/aom_scale.cmake") |
Tom Finegan | b7d0254 | 2017-03-01 21:14:28 -0800 | [diff] [blame] | 30 | include("${AOM_ROOT}/aom_util/aom_util.cmake") |
Tom Finegan | 44916e7 | 2017-02-27 14:12:31 -0800 | [diff] [blame] | 31 | include("${AOM_ROOT}/av1/av1.cmake") |
Tom Finegan | 4db04d3 | 2017-02-23 14:37:27 -0800 | [diff] [blame] | 32 | include("${AOM_ROOT}/test/test.cmake") |
Tom Finegan | 85ac13e | 2017-02-22 15:09:20 -0800 | [diff] [blame] | 33 | |
Tom Finegan | a0c21f0 | 2017-02-01 11:11:09 -0800 | [diff] [blame] | 34 | set(AOM_RTCD_SOURCES |
| 35 | "${AOM_CONFIG_DIR}/aom_dsp_rtcd.h" |
| 36 | "${AOM_CONFIG_DIR}/aom_scale_rtcd.h" |
| 37 | "${AOM_CONFIG_DIR}/av1_rtcd.h" |
| 38 | "${AOM_ROOT}/aom_dsp/aom_dsp_rtcd_defs.pl" |
| 39 | "${AOM_ROOT}/aom_dsp/aom_dsp_rtcd.c" |
| 40 | "${AOM_ROOT}/aom_scale/aom_scale_rtcd.pl" |
| 41 | "${AOM_ROOT}/aom_scale/aom_scale_rtcd.c" |
| 42 | "${AOM_ROOT}/av1/common/av1_rtcd_defs.pl" |
| 43 | "${AOM_ROOT}/av1/common/av1_rtcd.c" |
| 44 | "${AOM_ROOT}/build/make/rtcd.pl") |
| 45 | |
Tom Finegan | 957fe82 | 2016-11-09 10:37:27 -0800 | [diff] [blame] | 46 | # TODO(tomfinegan): Use libwebm's cmake support directly. |
Tom Finegan | 50c5a7e | 2017-01-31 21:36:56 -0800 | [diff] [blame] | 47 | set(AOM_LIBWEBM_SOURCES |
Tom Finegan | 957fe82 | 2016-11-09 10:37:27 -0800 | [diff] [blame] | 48 | "${AOM_ROOT}/third_party/libwebm/common/hdr_util.cc" |
| 49 | "${AOM_ROOT}/third_party/libwebm/common/hdr_util.h" |
| 50 | "${AOM_ROOT}/third_party/libwebm/common/webmids.h" |
| 51 | "${AOM_ROOT}/third_party/libwebm/mkvmuxer/mkvmuxer.cc" |
| 52 | "${AOM_ROOT}/third_party/libwebm/mkvmuxer/mkvmuxer.h" |
| 53 | "${AOM_ROOT}/third_party/libwebm/mkvmuxer/mkvmuxertypes.h" |
| 54 | "${AOM_ROOT}/third_party/libwebm/mkvmuxer/mkvmuxerutil.cc" |
| 55 | "${AOM_ROOT}/third_party/libwebm/mkvmuxer/mkvmuxerutil.h" |
| 56 | "${AOM_ROOT}/third_party/libwebm/mkvmuxer/mkvwriter.cc" |
| 57 | "${AOM_ROOT}/third_party/libwebm/mkvmuxer/mkvwriter.h" |
| 58 | "${AOM_ROOT}/third_party/libwebm/mkvparser/mkvparser.cc" |
| 59 | "${AOM_ROOT}/third_party/libwebm/mkvparser/mkvparser.h" |
| 60 | "${AOM_ROOT}/third_party/libwebm/mkvparser/mkvreader.cc" |
| 61 | "${AOM_ROOT}/third_party/libwebm/mkvparser/mkvreader.h") |
| 62 | |
Tom Finegan | 50c5a7e | 2017-01-31 21:36:56 -0800 | [diff] [blame] | 63 | set(AOM_LIBYUV_SOURCES |
Tom Finegan | 9cd9700 | 2016-11-09 10:37:44 -0800 | [diff] [blame] | 64 | "${AOM_ROOT}/third_party/libyuv/include/libyuv/basic_types.h" |
| 65 | "${AOM_ROOT}/third_party/libyuv/include/libyuv/convert.h" |
| 66 | "${AOM_ROOT}/third_party/libyuv/include/libyuv/convert_argb.h" |
| 67 | "${AOM_ROOT}/third_party/libyuv/include/libyuv/convert_from.h" |
| 68 | "${AOM_ROOT}/third_party/libyuv/include/libyuv/cpu_id.h" |
| 69 | "${AOM_ROOT}/third_party/libyuv/include/libyuv/planar_functions.h" |
| 70 | "${AOM_ROOT}/third_party/libyuv/include/libyuv/rotate.h" |
| 71 | "${AOM_ROOT}/third_party/libyuv/include/libyuv/row.h" |
| 72 | "${AOM_ROOT}/third_party/libyuv/include/libyuv/scale.h" |
| 73 | "${AOM_ROOT}/third_party/libyuv/include/libyuv/scale_row.h" |
| 74 | "${AOM_ROOT}/third_party/libyuv/source/cpu_id.cc" |
| 75 | "${AOM_ROOT}/third_party/libyuv/source/planar_functions.cc" |
| 76 | "${AOM_ROOT}/third_party/libyuv/source/row_any.cc" |
| 77 | "${AOM_ROOT}/third_party/libyuv/source/row_common.cc" |
| 78 | "${AOM_ROOT}/third_party/libyuv/source/row_gcc.cc" |
| 79 | "${AOM_ROOT}/third_party/libyuv/source/row_mips.cc" |
| 80 | "${AOM_ROOT}/third_party/libyuv/source/row_neon.cc" |
| 81 | "${AOM_ROOT}/third_party/libyuv/source/row_neon64.cc" |
| 82 | "${AOM_ROOT}/third_party/libyuv/source/row_win.cc" |
| 83 | "${AOM_ROOT}/third_party/libyuv/source/scale.cc" |
| 84 | "${AOM_ROOT}/third_party/libyuv/source/scale_any.cc" |
| 85 | "${AOM_ROOT}/third_party/libyuv/source/scale_common.cc" |
| 86 | "${AOM_ROOT}/third_party/libyuv/source/scale_gcc.cc" |
| 87 | "${AOM_ROOT}/third_party/libyuv/source/scale_mips.cc" |
| 88 | "${AOM_ROOT}/third_party/libyuv/source/scale_neon.cc" |
| 89 | "${AOM_ROOT}/third_party/libyuv/source/scale_neon64.cc" |
| 90 | "${AOM_ROOT}/third_party/libyuv/source/scale_win.cc") |
| 91 | |
Tom Finegan | 50c5a7e | 2017-01-31 21:36:56 -0800 | [diff] [blame] | 92 | set(AOM_SOURCES |
Tom Finegan | 973d4d5 | 2016-10-26 11:42:42 -0700 | [diff] [blame] | 93 | "${AOM_CONFIG_DIR}/aom_config.c" |
| 94 | "${AOM_CONFIG_DIR}/aom_config.h" |
Tom Finegan | fc6f236 | 2016-10-24 10:39:41 -0700 | [diff] [blame] | 95 | "${AOM_ROOT}/aom/aom.h" |
| 96 | "${AOM_ROOT}/aom/aom_codec.h" |
| 97 | "${AOM_ROOT}/aom/aom_decoder.h" |
| 98 | "${AOM_ROOT}/aom/aom_encoder.h" |
| 99 | "${AOM_ROOT}/aom/aom_frame_buffer.h" |
| 100 | "${AOM_ROOT}/aom/aom_image.h" |
| 101 | "${AOM_ROOT}/aom/aom_integer.h" |
| 102 | "${AOM_ROOT}/aom/aomcx.h" |
| 103 | "${AOM_ROOT}/aom/aomdx.h" |
| 104 | "${AOM_ROOT}/aom/internal/aom_codec_internal.h" |
| 105 | "${AOM_ROOT}/aom/src/aom_codec.c" |
| 106 | "${AOM_ROOT}/aom/src/aom_decoder.c" |
| 107 | "${AOM_ROOT}/aom/src/aom_encoder.c" |
| 108 | "${AOM_ROOT}/aom/src/aom_image.c") |
| 109 | |
Tom Finegan | 03f6ca7 | 2016-11-10 13:02:48 -0800 | [diff] [blame] | 110 | set(AOM_COMMON_APP_UTIL_SOURCES |
Tom Finegan | a89fe0e | 2017-01-19 14:38:28 -0800 | [diff] [blame] | 111 | "${AOM_ROOT}/args.c" |
| 112 | "${AOM_ROOT}/args.h" |
Tom Finegan | 03f6ca7 | 2016-11-10 13:02:48 -0800 | [diff] [blame] | 113 | "${AOM_ROOT}/md5_utils.c" |
| 114 | "${AOM_ROOT}/md5_utils.h" |
| 115 | "${AOM_ROOT}/tools_common.c" |
| 116 | "${AOM_ROOT}/tools_common.h" |
| 117 | "${AOM_ROOT}/video_common.h") |
| 118 | |
| 119 | set(AOM_DECODER_APP_UTIL_SOURCES |
| 120 | "${AOM_ROOT}/ivfdec.c" |
| 121 | "${AOM_ROOT}/ivfdec.h" |
| 122 | "${AOM_ROOT}/video_reader.c" |
Tom Finegan | a89fe0e | 2017-01-19 14:38:28 -0800 | [diff] [blame] | 123 | "${AOM_ROOT}/video_reader.h" |
| 124 | "${AOM_ROOT}/y4menc.c" |
| 125 | "${AOM_ROOT}/y4menc.h") |
Tom Finegan | 03f6ca7 | 2016-11-10 13:02:48 -0800 | [diff] [blame] | 126 | |
| 127 | set(AOM_ENCODER_APP_UTIL_SOURCES |
| 128 | "${AOM_ROOT}/ivfenc.c" |
| 129 | "${AOM_ROOT}/ivfenc.h" |
| 130 | "${AOM_ROOT}/video_writer.c" |
Tom Finegan | a89fe0e | 2017-01-19 14:38:28 -0800 | [diff] [blame] | 131 | "${AOM_ROOT}/video_writer.h" |
| 132 | "${AOM_ROOT}/warnings.c" |
| 133 | "${AOM_ROOT}/warnings.h" |
| 134 | "${AOM_ROOT}/y4minput.c" |
Urvang Joshi | 09c293e | 2017-04-20 17:56:27 -0700 | [diff] [blame] | 135 | "${AOM_ROOT}/y4minput.h" |
| 136 | "${AOM_ROOT}/examples/encoder_util.h" |
| 137 | "${AOM_ROOT}/examples/encoder_util.c") |
Tom Finegan | a89fe0e | 2017-01-19 14:38:28 -0800 | [diff] [blame] | 138 | |
| 139 | set(AOM_ENCODER_STATS_SOURCES |
| 140 | "${AOM_ROOT}/aomstats.c" |
| 141 | "${AOM_ROOT}/aomstats.h" |
| 142 | "${AOM_ROOT}/rate_hist.c" |
| 143 | "${AOM_ROOT}/rate_hist.h") |
| 144 | |
| 145 | set(AOM_WEBM_DECODER_SOURCES |
| 146 | "${AOM_ROOT}/webmdec.cc" |
| 147 | "${AOM_ROOT}/webmdec.h") |
| 148 | |
| 149 | set(AOM_WEBM_ENCODER_SOURCES |
| 150 | "${AOM_ROOT}/webmenc.cc" |
| 151 | "${AOM_ROOT}/webmenc.h") |
| 152 | |
| 153 | include_directories(${AOM_ROOT} ${AOM_CONFIG_DIR}) |
Tom Finegan | 03f6ca7 | 2016-11-10 13:02:48 -0800 | [diff] [blame] | 154 | |
Tom Finegan | fc6f236 | 2016-10-24 10:39:41 -0700 | [diff] [blame] | 155 | # Targets |
Tom Finegan | f0d1444 | 2017-03-01 20:42:51 -0800 | [diff] [blame] | 156 | # TODO(tomfinegan): Move rtcd target setup where it belongs for each rtcd |
| 157 | # source. |
Tom Finegan | a0c21f0 | 2017-02-01 11:11:09 -0800 | [diff] [blame] | 158 | add_rtcd_build_step("${AOM_ROOT}/aom_dsp/aom_dsp_rtcd_defs.pl" |
| 159 | "${AOM_CONFIG_DIR}/aom_dsp_rtcd.h" |
| 160 | "${AOM_ROOT}/aom_dsp/aom_dsp_rtcd.c" |
| 161 | "aom_dsp_rtcd") |
| 162 | add_rtcd_build_step("${AOM_ROOT}/aom_scale/aom_scale_rtcd.pl" |
| 163 | "${AOM_CONFIG_DIR}/aom_scale_rtcd.h" |
| 164 | "${AOM_ROOT}/aom_scale/aom_scale_rtcd.c" |
| 165 | "aom_scale_rtcd") |
| 166 | add_rtcd_build_step("${AOM_ROOT}/av1/common/av1_rtcd_defs.pl" |
| 167 | "${AOM_CONFIG_DIR}/av1_rtcd.h" |
| 168 | "${AOM_ROOT}/av1/common/av1_rtcd.c" |
| 169 | "av1_rtcd") |
Tom Finegan | 85ac13e | 2017-02-22 15:09:20 -0800 | [diff] [blame] | 170 | |
Tom Finegan | a0c21f0 | 2017-02-01 11:11:09 -0800 | [diff] [blame] | 171 | add_library(aom_rtcd OBJECT ${AOM_RTCD_SOURCES}) |
Tom Finegan | a7ed143 | 2017-02-08 10:34:40 -0800 | [diff] [blame] | 172 | add_library(aom_encoder_stats OBJECT ${AOM_ENCODER_STATS_SOURCES}) |
Tom Finegan | b7d0254 | 2017-03-01 21:14:28 -0800 | [diff] [blame] | 173 | add_library(aom ${AOM_SOURCES} $<TARGET_OBJECTS:aom_rtcd>) |
Tom Finegan | 03f6ca7 | 2016-11-10 13:02:48 -0800 | [diff] [blame] | 174 | |
Tom Finegan | a0c21f0 | 2017-02-01 11:11:09 -0800 | [diff] [blame] | 175 | # List of object and static library targets. |
Tom Finegan | b7d0254 | 2017-03-01 21:14:28 -0800 | [diff] [blame] | 176 | set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} aom_rtcd aom_encoder_stats aom_mem |
| 177 | aom_scale aom) |
Tom Finegan | a0c21f0 | 2017-02-01 11:11:09 -0800 | [diff] [blame] | 178 | |
Tom Finegan | 507e2e1 | 2017-03-01 19:58:19 -0800 | [diff] [blame] | 179 | # Setup dependencies. |
Tom Finegan | 85ac13e | 2017-02-22 15:09:20 -0800 | [diff] [blame] | 180 | setup_aom_dsp_targets() |
Tom Finegan | dd6d057 | 2017-03-01 19:01:23 -0800 | [diff] [blame] | 181 | setup_aom_mem_targets() |
Tom Finegan | 507e2e1 | 2017-03-01 19:58:19 -0800 | [diff] [blame] | 182 | setup_aom_ports_targets() |
Tom Finegan | b7d0254 | 2017-03-01 21:14:28 -0800 | [diff] [blame] | 183 | setup_aom_util_targets() |
Tom Finegan | f0d1444 | 2017-03-01 20:42:51 -0800 | [diff] [blame] | 184 | setup_aom_scale_targets() |
Tom Finegan | 44916e7 | 2017-02-27 14:12:31 -0800 | [diff] [blame] | 185 | setup_av1_targets() |
Tom Finegan | 85ac13e | 2017-02-22 15:09:20 -0800 | [diff] [blame] | 186 | |
Tom Finegan | a0c21f0 | 2017-02-01 11:11:09 -0800 | [diff] [blame] | 187 | # Make all library targets depend on aom_rtcd to make sure it builds first. |
| 188 | foreach (aom_lib ${AOM_LIB_TARGETS}) |
| 189 | if (NOT "${aom_lib}" STREQUAL "aom_rtcd") |
| 190 | add_dependencies(${aom_lib} aom_rtcd) |
| 191 | endif () |
| 192 | endforeach () |
Tom Finegan | 50c5a7e | 2017-01-31 21:36:56 -0800 | [diff] [blame] | 193 | # |
| 194 | # Application and application support targets. |
| 195 | # |
Tom Finegan | 03f6ca7 | 2016-11-10 13:02:48 -0800 | [diff] [blame] | 196 | add_library(aom_common_app_util OBJECT ${AOM_COMMON_APP_UTIL_SOURCES}) |
| 197 | add_library(aom_decoder_app_util OBJECT ${AOM_DECODER_APP_UTIL_SOURCES}) |
| 198 | add_library(aom_encoder_app_util OBJECT ${AOM_ENCODER_APP_UTIL_SOURCES}) |
| 199 | |
| 200 | add_executable(aom_cx_set_ref |
| 201 | "${AOM_ROOT}/examples/aom_cx_set_ref.c" |
| 202 | $<TARGET_OBJECTS:aom_common_app_util> |
| 203 | $<TARGET_OBJECTS:aom_encoder_app_util>) |
Tom Finegan | 03f6ca7 | 2016-11-10 13:02:48 -0800 | [diff] [blame] | 204 | |
Tom Finegan | a89fe0e | 2017-01-19 14:38:28 -0800 | [diff] [blame] | 205 | add_executable(aomdec |
| 206 | "${AOM_ROOT}/aomdec.c" |
| 207 | $<TARGET_OBJECTS:aom_common_app_util> |
| 208 | $<TARGET_OBJECTS:aom_decoder_app_util>) |
Tom Finegan | a89fe0e | 2017-01-19 14:38:28 -0800 | [diff] [blame] | 209 | |
| 210 | add_executable(aomenc |
| 211 | "${AOM_ROOT}/aomenc.c" |
| 212 | $<TARGET_OBJECTS:aom_common_app_util> |
| 213 | $<TARGET_OBJECTS:aom_encoder_app_util> |
| 214 | $<TARGET_OBJECTS:aom_encoder_stats>) |
Tom Finegan | a89fe0e | 2017-01-19 14:38:28 -0800 | [diff] [blame] | 215 | |
Nathan E. Egge | 1a0d5ea | 2017-02-22 11:17:00 -0500 | [diff] [blame] | 216 | if (CONFIG_ANALYZER) |
Tom Finegan | 67b5a30 | 2017-03-08 08:50:21 -0800 | [diff] [blame] | 217 | add_executable(analyzer |
| 218 | "${AOM_ROOT}/examples/analyzer.cc" |
| 219 | $<TARGET_OBJECTS:aom_common_app_util> |
| 220 | $<TARGET_OBJECTS:aom_decoder_app_util>) |
| 221 | target_link_libraries(analyzer PUBLIC ${wxWidgets_LIBRARIES}) |
| 222 | set(AOM_APP_TARGETS ${AOM_APP_TARGETS} analyzer) |
Nathan E. Egge | 1a0d5ea | 2017-02-22 11:17:00 -0500 | [diff] [blame] | 223 | endif () |
| 224 | |
Tom Finegan | 03f6ca7 | 2016-11-10 13:02:48 -0800 | [diff] [blame] | 225 | add_executable(decode_to_md5 |
| 226 | "${AOM_ROOT}/examples/decode_to_md5.c" |
| 227 | $<TARGET_OBJECTS:aom_common_app_util> |
| 228 | $<TARGET_OBJECTS:aom_decoder_app_util>) |
Tom Finegan | 03f6ca7 | 2016-11-10 13:02:48 -0800 | [diff] [blame] | 229 | |
| 230 | add_executable(decode_with_drops |
| 231 | "${AOM_ROOT}/examples/decode_with_drops.c" |
| 232 | $<TARGET_OBJECTS:aom_common_app_util> |
| 233 | $<TARGET_OBJECTS:aom_decoder_app_util>) |
Tom Finegan | 03f6ca7 | 2016-11-10 13:02:48 -0800 | [diff] [blame] | 234 | |
| 235 | add_executable(lossless_encoder |
| 236 | "${AOM_ROOT}/examples/lossless_encoder.c" |
| 237 | $<TARGET_OBJECTS:aom_common_app_util> |
| 238 | $<TARGET_OBJECTS:aom_encoder_app_util>) |
Tom Finegan | 03f6ca7 | 2016-11-10 13:02:48 -0800 | [diff] [blame] | 239 | |
| 240 | add_executable(set_maps |
| 241 | "${AOM_ROOT}/examples/set_maps.c" |
| 242 | $<TARGET_OBJECTS:aom_common_app_util> |
| 243 | $<TARGET_OBJECTS:aom_encoder_app_util>) |
Tom Finegan | 03f6ca7 | 2016-11-10 13:02:48 -0800 | [diff] [blame] | 244 | |
| 245 | add_executable(simple_decoder |
| 246 | "${AOM_ROOT}/examples/simple_decoder.c" |
| 247 | $<TARGET_OBJECTS:aom_common_app_util> |
| 248 | $<TARGET_OBJECTS:aom_decoder_app_util>) |
Tom Finegan | 03f6ca7 | 2016-11-10 13:02:48 -0800 | [diff] [blame] | 249 | |
Michael Bebenita | f4f27fe | 2017-03-02 17:40:44 -0800 | [diff] [blame] | 250 | if (CONFIG_INSPECTION) |
| 251 | add_executable(inspect |
| 252 | "${AOM_ROOT}/examples/inspect.c" |
| 253 | $<TARGET_OBJECTS:aom_common_app_util> |
| 254 | $<TARGET_OBJECTS:aom_decoder_app_util>) |
| 255 | set(AOM_APP_TARGETS ${AOM_APP_TARGETS} inspect) |
| 256 | endif () |
| 257 | |
Tom Finegan | 03f6ca7 | 2016-11-10 13:02:48 -0800 | [diff] [blame] | 258 | add_executable(simple_encoder |
| 259 | "${AOM_ROOT}/examples/simple_encoder.c" |
| 260 | $<TARGET_OBJECTS:aom_common_app_util> |
| 261 | $<TARGET_OBJECTS:aom_encoder_app_util>) |
Tom Finegan | 03f6ca7 | 2016-11-10 13:02:48 -0800 | [diff] [blame] | 262 | |
| 263 | add_executable(twopass_encoder |
| 264 | "${AOM_ROOT}/examples/twopass_encoder.c" |
| 265 | $<TARGET_OBJECTS:aom_common_app_util> |
| 266 | $<TARGET_OBJECTS:aom_encoder_app_util>) |
Tom Finegan | 8127980 | 2017-02-01 11:27:05 -0800 | [diff] [blame] | 267 | |
| 268 | # List of app targets. |
Tom Finegan | 1d84847 | 2017-02-23 14:34:02 -0800 | [diff] [blame] | 269 | set(AOM_APP_TARGETS ${AOM_APP_TARGETS} aom_cx_set_ref aomdec aomenc |
| 270 | decode_to_md5 decode_with_drops lossless_encoder set_maps simple_decoder |
| 271 | simple_encoder twopass_encoder) |
Tom Finegan | 8127980 | 2017-02-01 11:27:05 -0800 | [diff] [blame] | 272 | |
| 273 | foreach (aom_app ${AOM_APP_TARGETS}) |
| 274 | target_link_libraries(${aom_app} PUBLIC aom) |
| 275 | endforeach () |
Tom Finegan | fc6f236 | 2016-10-24 10:39:41 -0700 | [diff] [blame] | 276 | |
Tom Finegan | 9cd9700 | 2016-11-09 10:37:44 -0800 | [diff] [blame] | 277 | if (CONFIG_LIBYUV) |
Tom Finegan | 50c5a7e | 2017-01-31 21:36:56 -0800 | [diff] [blame] | 278 | add_library(yuv OBJECT ${AOM_LIBYUV_SOURCES}) |
Tom Finegan | 87fdc28 | 2017-02-10 10:30:28 -0800 | [diff] [blame] | 279 | if (NOT MSVC) |
| 280 | target_compile_options(yuv PRIVATE -Wno-unused-parameter) |
| 281 | endif () |
Tom Finegan | 9cd9700 | 2016-11-09 10:37:44 -0800 | [diff] [blame] | 282 | include_directories("${AOM_ROOT}/third_party/libyuv/include") |
| 283 | |
| 284 | # Add to existing targets. |
Tom Finegan | 8127980 | 2017-02-01 11:27:05 -0800 | [diff] [blame] | 285 | foreach (aom_app ${AOM_APP_TARGETS}) |
| 286 | target_sources(${aom_app} PUBLIC $<TARGET_OBJECTS:yuv>) |
| 287 | set_property(TARGET ${aom_app} PROPERTY LINKER_LANGUAGE CXX) |
| 288 | endforeach () |
Tom Finegan | 9cd9700 | 2016-11-09 10:37:44 -0800 | [diff] [blame] | 289 | endif () |
| 290 | |
Tom Finegan | 957fe82 | 2016-11-09 10:37:27 -0800 | [diff] [blame] | 291 | if (CONFIG_WEBM_IO) |
Tom Finegan | 50c5a7e | 2017-01-31 21:36:56 -0800 | [diff] [blame] | 292 | add_library(webm OBJECT ${AOM_LIBWEBM_SOURCES}) |
Tom Finegan | 957fe82 | 2016-11-09 10:37:27 -0800 | [diff] [blame] | 293 | include_directories("${AOM_ROOT}/third_party/libwebm") |
Tom Finegan | 87fdc28 | 2017-02-10 10:30:28 -0800 | [diff] [blame] | 294 | |
| 295 | if (NOT MSVC) |
| 296 | target_compile_options(webm PRIVATE -Wno-shadow) |
| 297 | endif () |
Tom Finegan | 957fe82 | 2016-11-09 10:37:27 -0800 | [diff] [blame] | 298 | |
| 299 | # Add to existing targets. |
Tom Finegan | a89fe0e | 2017-01-19 14:38:28 -0800 | [diff] [blame] | 300 | target_sources(aom_decoder_app_util PUBLIC ${AOM_WEBM_DECODER_SOURCES}) |
| 301 | target_sources(aom_encoder_app_util PUBLIC ${AOM_WEBM_ENCODER_SOURCES}) |
Tom Finegan | 8127980 | 2017-02-01 11:27:05 -0800 | [diff] [blame] | 302 | |
| 303 | foreach (aom_app ${AOM_APP_TARGETS}) |
| 304 | target_sources(${aom_app} PUBLIC $<TARGET_OBJECTS:webm>) |
| 305 | set_property(TARGET ${aom_app} PROPERTY LINKER_LANGUAGE CXX) |
| 306 | endforeach () |
Tom Finegan | 957fe82 | 2016-11-09 10:37:27 -0800 | [diff] [blame] | 307 | endif () |
Tom Finegan | 7ba9ba8 | 2017-01-23 14:04:28 -0800 | [diff] [blame] | 308 | |
| 309 | if (CONFIG_UNIT_TESTS) |
Tom Finegan | 4db04d3 | 2017-02-23 14:37:27 -0800 | [diff] [blame] | 310 | # Create test_libaom target and the targets it depends on. |
| 311 | setup_aom_test_targets() |
Tom Finegan | 7ba9ba8 | 2017-01-23 14:04:28 -0800 | [diff] [blame] | 312 | endif () |
Tom Finegan | 9412ec3 | 2017-02-01 11:41:43 -0800 | [diff] [blame] | 313 | |
Tom Finegan | 606f646 | 2017-03-06 11:18:29 -0800 | [diff] [blame] | 314 | if (HAVE_PTHREAD_H AND CONFIG_MULTITHREAD) |
| 315 | find_package(Threads) |
| 316 | foreach (app_target ${AOM_APP_TARGETS}) |
| 317 | target_link_libraries(${app_target} PUBLIC Threads::Threads) |
| 318 | endforeach () |
| 319 | endif () |
| 320 | |
Tom Finegan | 9412ec3 | 2017-02-01 11:41:43 -0800 | [diff] [blame] | 321 | if (XCODE) |
| 322 | if (CONFIG_LIBYUV OR CONFIG_WEBM_IO) |
| 323 | # The Xcode generator does not obey LINKER_LANGUAGE. Because of the issue |
| 324 | # what looks like a C++ file needs to be in any target that Xcode will link |
| 325 | # when the target contains a C++ dependency. |
| 326 | # Without this Xcode will try to link with the C linker, which always ends |
| 327 | # badly when a dependency actually includes C++. |
| 328 | # Note: LINKER_LANGUAGE is explicitly set to C++ for all targets touched |
| 329 | # here, it really is the Xcode generator's fault, or just a deficiency in |
| 330 | # Xcode itself. |
| 331 | set(XCODE_DUMMY_CXX_FILE "${AOM_CONFIG_DIR}/dummy.cc") |
| 332 | file(WRITE "${XCODE_DUMMY_CXX_FILE}" |
| 333 | "// Xcode needs a C++ file to link, ignore this file.") |
| 334 | foreach (aom_app ${AOM_APP_TARGETS}) |
| 335 | target_sources(${aom_app} PUBLIC "${XCODE_DUMMY_CXX_FILE}") |
| 336 | endforeach () |
| 337 | endif () |
| 338 | endif () |
Tom Finegan | 0a4ef08 | 2017-03-31 11:07:34 -0700 | [diff] [blame] | 339 | |
| 340 | # Aomedia install rule. |
| 341 | # TODO(tomfinegan): Add the missing pkg-config related bits. |
| 342 | set(AOM_INSTALL_INCS |
| 343 | "${AOM_ROOT}/aom/aom.h" |
| 344 | "${AOM_ROOT}/aom/aomcx.h" |
| 345 | "${AOM_ROOT}/aom/aomdx.h" |
| 346 | "${AOM_ROOT}/aom/aom_codec.h" |
| 347 | "${AOM_ROOT}/aom/aom_frame_buffer.h" |
| 348 | "${AOM_ROOT}/aom/aom_image.h" |
| 349 | "${AOM_ROOT}/aom/aom_integer.h" |
| 350 | "${AOM_ROOT}/aom/aom_decoder.h" |
| 351 | "${AOM_ROOT}/aom/aom_encoder.h" |
| 352 | "${AOM_ROOT}/aom/aom.h") |
| 353 | set(AOM_INSTALL_BINS aomdec aomenc) |
| 354 | set(AOM_INSTALL_LIBS aom) |
| 355 | |
| 356 | install(FILES ${AOM_INSTALL_INCS} |
| 357 | DESTINATION "${CMAKE_INSTALL_PREFIX}/include/aom") |
| 358 | install(TARGETS ${AOM_INSTALL_LIBS} DESTINATION "${CMAKE_INSTALL_PREFIX}/lib") |
| 359 | install(TARGETS ${AOM_INSTALL_BINS} DESTINATION "${CMAKE_INSTALL_PREFIX}/bin") |