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