diff options
Diffstat (limited to 'third_party/aom/build/cmake')
37 files changed, 1376 insertions, 1511 deletions
diff --git a/third_party/aom/build/cmake/aom_config.c.cmake b/third_party/aom/build/cmake/aom_config.c.template index 62f0a10ab..62f0a10ab 100644 --- a/third_party/aom/build/cmake/aom_config.c.cmake +++ b/third_party/aom/build/cmake/aom_config.c.template diff --git a/third_party/aom/build/cmake/aom_config_defaults.cmake b/third_party/aom/build/cmake/aom_config_defaults.cmake index 488401be1..c7252f064 100644 --- a/third_party/aom/build/cmake/aom_config_defaults.cmake +++ b/third_party/aom/build/cmake/aom_config_defaults.cmake @@ -1,29 +1,28 @@ -## -## 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. -## +# +# 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. +# # Defaults for every libaom configuration variable. Here we add all libaom # config variables to the cmake variable cache, but omit the FORCE parameter to # allow users to specify values when executing cmake to generate build files. # Values here are used only if not set by the user. set(INLINE "" CACHE STRING "Sets INLINE value for current target.") -set(RESTRICT "" CACHE STRING "Sets RESTRICT value for current target.") # CPUs. set(ARCH_ARM 0 CACHE NUMBER "Enables ARM architecture.") set(ARCH_MIPS 0 CACHE NUMBER "Enables MIPS architecture.") +set(ARCH_PPC 0 CACHE NUMBER "Enables PPC architecture.") set(ARCH_X86 0 CACHE NUMBER "Enables X86 architecture.") set(ARCH_X86_64 0 CACHE NUMBER "Enables X86_64 architecture.") # ARM optimization flags. set(HAVE_NEON 0 CACHE NUMBER "Enables NEON intrinsics optimizations.") -set(HAVE_NEON_ASM 0 CACHE NUMBER "Enables NEON assembly optimizations.") # MIPS optimization flags. set(HAVE_DSPR2 0 CACHE NUMBER "Enables DSPR2 optimizations.") @@ -31,6 +30,9 @@ set(HAVE_MIPS32 0 CACHE NUMBER "Enables MIPS32 optimizations.") set(HAVE_MIPS64 0 CACHE NUMBER "Enables MIPS64 optimizations. ") set(HAVE_MSA 0 CACHE NUMBER "Enables MSA optimizations.") +# PPC optimization flags. +set(HAVE_VSX 0 CACHE NUMBER "Enables VSX optimizations.") + # x86/x86_64 optimization flags. set(HAVE_AVX 0 CACHE NUMBER "Enables AVX optimizations.") set(HAVE_AVX2 0 CACHE NUMBER "Enables AVX2 optimizations.") @@ -39,33 +41,16 @@ set(HAVE_SSE 0 CACHE NUMBER "Enables SSE optimizations.") set(HAVE_SSE2 0 CACHE NUMBER "Enables SSE2 optimizations.") set(HAVE_SSE3 0 CACHE NUMBER "Enables SSE3 optimizations.") set(HAVE_SSE4_1 0 CACHE NUMBER "Enables SSE 4.1 optimizations.") +set(HAVE_SSE4_2 0 CACHE NUMBER "Enables SSE 4.2 optimizations.") set(HAVE_SSSE3 0 CACHE NUMBER "Enables SSSE3 optimizations.") # Flags describing the build environment. -set(HAVE_AOM_PORTS 0 CACHE NUMBER "Internal flag, deprecated.") set(HAVE_FEXCEPT 0 CACHE NUMBER "Internal flag, GNU fenv.h present for target.") set(HAVE_PTHREAD_H 0 CACHE NUMBER "Internal flag, target pthread support.") set(HAVE_UNISTD_H 0 CACHE NUMBER "Internal flag, unistd.h present for target.") set(HAVE_WXWIDGETS 0 CACHE NUMBER "WxWidgets present.") -# Deprecated flags preserved for compatibility with configure build. -set(CONFIG_CODEC_SRCS 0 CACHE NUMBER "Deprecated flag.") -set(CONFIG_DEBUG_LIBS 0 CACHE NUMBER "Deprecated flag.") -set(CONFIG_DEPENDENCY_TRACKING 1 CACHE NUMBER "Deprecated flag.") -set(CONFIG_EXPERIMENTAL 0 CACHE NUMBER "Deprecated flag.") -set(CONFIG_EXTERNAL_BUILD 0 CACHE NUMBER "Deprecated flag.") -set(CONFIG_INSTALL_BINS 0 CACHE NUMBER "Deprecated flag.") -set(CONFIG_INSTALL_DOCS 0 CACHE NUMBER "Deprecated flag.") -set(CONFIG_INSTALL_LIBS 0 CACHE NUMBER "Deprecated flag.") -set(CONFIG_INSTALL_SRCS 0 CACHE NUMBER "Deprecated flag.") -set(CONFIG_POSTPROC 1 CACHE NUMBER "Deprecated flag.") -set(CONFIG_POSTPROC_VISUALIZER 0 CACHE NUMBER "Deprecated flag.") -set(CONFIG_RVCT 0 CACHE NUMBER "Deprecated flag.") -set(CONFIG_SMALL 0 CACHE NUMBER "Deprecated flag.") -set(CONFIG_STATIC_MSVCRT 0 CACHE NUMBER "Deprecated flag.") - # Build configuration flags. -set(CONFIG_AV1 1 CACHE NUMBER "Internal flag.") set(CONFIG_AV1_DECODER 1 CACHE NUMBER "Enable AV1 decoder.") set(CONFIG_AV1_ENCODER 1 CACHE NUMBER "Enable AV1 encoder.") set(CONFIG_BIG_ENDIAN 0 CACHE NUMBER "Internal flag.") @@ -85,131 +70,26 @@ set(CONFIG_WEBM_IO 1 CACHE NUMBER "Enables WebM support.") # Debugging flags. set(CONFIG_BITSTREAM_DEBUG 0 CACHE NUMBER "Bitstream debugging flag.") set(CONFIG_DEBUG 0 CACHE NUMBER "Debug build flag.") - -# Testing flags. -set(CONFIG_DECODE_PERF_TESTS 0 CACHE NUMBER "Enables decoder performance test.") -set(CONFIG_ENCODE_PERF_TESTS 0 CACHE NUMBER "Enables encoder performance test.") -set(CONFIG_UNIT_TESTS 1 CACHE NUMBER "Enables unit tests.") +set(CONFIG_MISMATCH_DEBUG 0 CACHE NUMBER "Mismatch debugging flag.") # AV1 feature flags. set(CONFIG_ACCOUNTING 0 CACHE NUMBER "Enables bit accounting.") set(CONFIG_ANALYZER 0 CACHE NUMBER "Enables bit stream analyzer.") set(CONFIG_COEFFICIENT_RANGE_CHECKING 0 CACHE NUMBER "Coefficient range check.") -set(CONFIG_HIGHBITDEPTH 1 CACHE NUMBER "Enables high bit depth support.") +set(CONFIG_FILEOPTIONS 1 CACHE NUMBER "Enables encoder config file support.") set(CONFIG_INSPECTION 0 CACHE NUMBER "Enables bitstream inspection.") -set(CONFIG_INTERNAL_STATS 0 CACHE NUMBER "Codec stats.") -set(CONFIG_LOWBITDEPTH 1 CACHE NUMBER "Enables low bit depth support.") -set(CONFIG_REALTIME_ONLY 0 CACHE NUMBER "Support only realtime encodes.") +set(CONFIG_INTERNAL_STATS 0 CACHE NUMBER "Enables internal encoder stats.") +set(CONFIG_LOWBITDEPTH 0 CACHE NUMBER "Enables 8-bit optimized pipeline.") set(CONFIG_SIZE_LIMIT 0 CACHE NUMBER "Limit max decode width/height.") set(CONFIG_SPATIAL_RESAMPLING 1 CACHE NUMBER "Spatial resampling.") -set(CONFIG_SYMBOLRATE 0 CACHE NUMBER "Enables symbol rate accounting.") +set(DECODE_HEIGHT_LIMIT 0 CACHE NUMBER "Set limit for decode height.") +set(DECODE_WIDTH_LIMIT 0 CACHE NUMBER "Set limit for decode width.") # AV1 experiment flags. -set(CONFIG_ADAPT_SCAN 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_AMVR 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_ANS 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_AOM_QM 1 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_BGSPRITE 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_CB4X4 1 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_CDEF 1 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_CDEF_SINGLEPASS 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_CFL 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_CHROMA_2X2 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_CHROMA_SUB8X8 1 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_COEF_INTERLEAVE 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_COLORSPACE_HEADERS 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_COMPOUND_ROUND 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_COMPOUND_SEGMENT 1 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_COMPOUND_SINGLEREF 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_CONVOLVE_ROUND 1 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_CTX1D 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_DAALA_DCT16 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_DAALA_DCT32 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_DAALA_DCT4 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_DAALA_DCT64 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_DAALA_DCT8 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_DAALA_TX 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_DCT_ONLY 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_DEBLOCK_13TAP 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_DEPENDENT_HORZTILES 0 CACHE NUMBER "AV1 experiment flag.") +set(CONFIG_COLLECT_INTER_MODE_RD_STATS 1 CACHE NUMBER "AV1 experiment flag.") +set(CONFIG_COLLECT_RD_STATS 0 CACHE NUMBER "AV1 experiment flag.") set(CONFIG_DIST_8X8 1 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_DUAL_FILTER 1 CACHE NUMBER "AV1 experiment flag.") set(CONFIG_ENTROPY_STATS 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_EXT_COMP_REFS 1 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_EXT_DELTA_Q 1 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_EXT_INTRA 1 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_EXT_PARTITION 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_EXT_PARTITION_TYPES 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_EXT_PARTITION_TYPES_AB 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_EXT_REFS 1 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_EXT_SKIP 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_EXT_TILE 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_EXT_TX 1 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_FILTER_INTRA 0 CACHE NUMBER "AV1 experiment flag.") set(CONFIG_FP_MB_STATS 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_FRAME_MARKER 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_FRAME_SIGN_BIAS 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_FRAME_SIZE 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_FRAME_SUPERRES 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_GLOBAL_MOTION 1 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_HASH_ME 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_HORZONLY_FRAME_SUPERRES 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_INTERINTRA 1 CACHE NUMBER "AV1 experiment flag.") set(CONFIG_INTER_STATS_ONLY 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_INTRABC 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_INTRA_EDGE 1 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_INTRA_INTERP 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_JNT_COMP 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_KF_CTX 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_LGT 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_LGT_FROM_PRED 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_LOOPFILTERING_ACROSS_TILES 1 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_LOOPFILTER_LEVEL 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_LOOP_RESTORATION 1 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_LPF_DIRECT 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_LPF_SB 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_LV_MAP 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_MASKED_TX 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_MAX_TILE 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_MFMV 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_MOTION_VAR 1 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_MRC_TX 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_MV_COMPRESS 1 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_NCOBMC 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_NCOBMC_ADAPT_WEIGHT 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_NEW_MULTISYMBOL 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_NEW_QUANT 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_NO_FRAME_CONTEXT_SIGNALING 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_OBU 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_ONE_SIDED_COMPOUND 1 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_OPT_REF_MV 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_PALETTE_DELTA_ENCODING 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_PALETTE_THROUGHPUT 1 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_PARALLEL_DEBLOCKING 1 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_PVQ 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_Q_ADAPT_PROBS 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_RAWBITS 0 CACHE NUMBER "AV1 experiment flag.") set(CONFIG_RD_DEBUG 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_RECT_TX 1 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_RECT_TX_EXT 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_REFERENCE_BUFFER 1 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_REF_ADAPT 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_RESTRICT_COMPRESSED_HDR 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_SBL_SYMBOL 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_SEGMENT_ZEROMV 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_SMOOTH_HV 1 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_STRIPED_LOOP_RESTORATION 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_SUPERTX 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_TEMPMV_SIGNALING 1 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_TMV 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_TPL_MV 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_TX64X64 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_TXK_SEL 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_TXMG 1 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_UNPOISON_PARTITION_CTX 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_VAR_REFS 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_VAR_TX 1 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_VAR_TX_NO_TX_MODE 0 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_WARPED_MOTION 1 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_WEDGE 1 CACHE NUMBER "AV1 experiment flag.") -set(CONFIG_XIPHRC 0 CACHE NUMBER "AV1 experiment flag.") diff --git a/third_party/aom/build/cmake/aom_configure.cmake b/third_party/aom/build/cmake/aom_configure.cmake index 3553710d3..5d782aaf9 100644 --- a/third_party/aom/build/cmake/aom_configure.cmake +++ b/third_party/aom/build/cmake/aom_configure.cmake @@ -1,23 +1,24 @@ -## -## 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. -## -if (NOT AOM_BUILD_CMAKE_AOM_CONFIGURE_CMAKE_) +# +# 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. +# +if(AOM_BUILD_CMAKE_AOM_CONFIGURE_CMAKE_) + return() +endif() # AOM_BUILD_CMAKE_AOM_CONFIGURE_CMAKE_ set(AOM_BUILD_CMAKE_AOM_CONFIGURE_CMAKE_ 1) include(FindGit) include(FindPerl) include(FindThreads) -include(FindwxWidgets) set(AOM_SUPPORTED_CPU_TARGETS - "arm64 armv7 armv7s generic mips32 mips64 x86 x86_64") + "arm64 armv7 armv7s generic mips32 mips64 ppc x86 x86_64") # Generate the user config settings. This must occur before include of # aom_config_defaults.cmake (because it turns every config variable into a cache @@ -25,10 +26,10 @@ set(AOM_SUPPORTED_CPU_TARGETS get_cmake_property(cmake_cache_vars CACHE_VARIABLES) foreach(cache_var ${cmake_cache_vars}) get_property(cache_var_helpstring CACHE ${cache_var} PROPERTY HELPSTRING) - set(cmdline_helpstring "No help, variable specified on the command line.") + set(cmdline_helpstring "No help, variable specified on the command line.") if("${cache_var_helpstring}" STREQUAL "${cmdline_helpstring}") set(AOM_CMAKE_CONFIG "${AOM_CMAKE_CONFIG} -D${cache_var}=${${cache_var}}") - endif () + endif() endforeach() string(STRIP "${AOM_CMAKE_CONFIG}" AOM_CMAKE_CONFIG) @@ -41,156 +42,158 @@ include("${AOM_ROOT}/build/cmake/util.cmake") # Build a list of all configurable variables. get_cmake_property(cmake_cache_vars CACHE_VARIABLES) -foreach (var ${cmake_cache_vars}) - if ("${var}" MATCHES "^CONFIG_") +foreach(var ${cmake_cache_vars}) + if("${var}" MATCHES "^CONFIG_") list(APPEND AOM_CONFIG_VARS ${var}) - endif () -endforeach () - -# Adopted experiments get enabled by default. For debugging, make it possible to -# to turn them all off with a single option. -if (NOT ENABLE_ADOPTED_EXPERIMENTS) - get_cmake_property(cmake_cache_vars CACHE_VARIABLES) - unset(var) - foreach (var ${cmake_cache_vars}) - unset(var_helpstring) - get_property(var_helpstring CACHE ${var} PROPERTY HELPSTRING) - if ("${var_helpstring}" STREQUAL "AV1 experiment flag.") - if ("${var}" STREQUAL "CONFIG_CB4X4") - # CB4X4 is required and can not be disabled. - else () - set(${var} 0) - endif () - endif () - endforeach () -endif () + endif() +endforeach() # Detect target CPU. -if (NOT AOM_TARGET_CPU) - if ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "AMD64" OR - "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64") - if (${CMAKE_SIZEOF_VOID_P} EQUAL 4) +if(NOT AOM_TARGET_CPU) + if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "AMD64" OR + "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64") + if(${CMAKE_SIZEOF_VOID_P} EQUAL 4) set(AOM_TARGET_CPU "x86") - elseif (${CMAKE_SIZEOF_VOID_P} EQUAL 8) + elseif(${CMAKE_SIZEOF_VOID_P} EQUAL 8) set(AOM_TARGET_CPU "x86_64") - else () + else() message(FATAL_ERROR - "--- Unexpected pointer size (${CMAKE_SIZEOF_VOID_P}) for\n" - " CMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME}\n" - " CMAKE_SYSTEM_PROCESSOR=${CMAKE_SYSTEM_PROCESSOR}\n" - " CMAKE_GENERATOR=${CMAKE_GENERATOR}\n") - endif () - elseif ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i386" OR - "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86") + "--- Unexpected pointer size (${CMAKE_SIZEOF_VOID_P}) for\n" + " CMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME}\n" + " CMAKE_SYSTEM_PROCESSOR=${CMAKE_SYSTEM_PROCESSOR}\n" + " CMAKE_GENERATOR=${CMAKE_GENERATOR}\n") + endif() + elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i386" OR + "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86") set(AOM_TARGET_CPU "x86") - elseif ("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "^arm" OR - "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "^mips") + elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "^arm" OR + "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "^mips") set(AOM_TARGET_CPU "${CMAKE_SYSTEM_PROCESSOR}") - endif () -endif () + elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "aarch64") + set(AOM_TARGET_CPU "arm64") + elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "^ppc") + set(AOM_TARGET_CPU "ppc") + else() + message(WARNING "The architecture ${CMAKE_SYSTEM_PROCESSOR} is not " + "supported, falling back to the generic target") + set(AOM_TARGET_CPU "generic") + endif() +endif() -if (CMAKE_TOOLCHAIN_FILE) - # Add toolchain file to config string. +if(CMAKE_TOOLCHAIN_FILE) # Add toolchain file to config string. set(toolchain_string "-DCMAKE_TOOLCHAIN_FILE=\\\"${CMAKE_TOOLCHAIN_FILE}\\\"") set(AOM_CMAKE_CONFIG "${toolchain_string} ${AOM_CMAKE_CONFIG}") -else () +else() + # Add detected CPU to the config string. set(AOM_CMAKE_CONFIG "-DAOM_TARGET_CPU=${AOM_TARGET_CPU} ${AOM_CMAKE_CONFIG}") -endif () +endif() set(AOM_CMAKE_CONFIG "-G \\\"${CMAKE_GENERATOR}\\\" ${AOM_CMAKE_CONFIG}") string(STRIP "${AOM_CMAKE_CONFIG}" AOM_CMAKE_CONFIG) message("--- aom_configure: Detected CPU: ${AOM_TARGET_CPU}") set(AOM_TARGET_SYSTEM ${CMAKE_SYSTEM_NAME}) -if ("${CMAKE_BUILD_TYPE}" MATCHES "Deb") +if("${CMAKE_BUILD_TYPE}" MATCHES "Deb") set(CONFIG_DEBUG 1) -endif () +endif() -if (NOT MSVC) - if (BUILD_SHARED_LIBS) +if(NOT MSVC) + if(BUILD_SHARED_LIBS) set(CONFIG_PIC 1) set(CONFIG_SHARED 1) set(CONFIG_STATIC 0) - endif () + endif() - if (CONFIG_PIC) + if(CONFIG_PIC) + + # TODO(tomfinegan): clang needs -pie in CMAKE_EXE_LINKER_FLAGS for this to + # work. set(CMAKE_POSITION_INDEPENDENT_CODE ON) - if ("${AOM_TARGET_SYSTEM}" STREQUAL "Linux" AND - "${AOM_TARGET_CPU}" MATCHES "^armv7") + if("${AOM_TARGET_SYSTEM}" STREQUAL "Linux" AND "${AOM_TARGET_CPU}" MATCHES + "^armv7") set(AOM_AS_FLAGS ${AOM_AS_FLAGS} --defsym PIC=1) - else () + else() set(AOM_AS_FLAGS ${AOM_AS_FLAGS} -DPIC) - endif () - endif () -else () + endif() + endif() +else() set(CONFIG_MSVS 1) -endif () +endif() -if (NOT "${AOM_SUPPORTED_CPU_TARGETS}" MATCHES "${AOM_TARGET_CPU}") - message(FATAL_ERROR "No RTCD support for ${AOM_TARGET_CPU}. Create it, or " - "add -DAOM_TARGET_CPU=generic to your cmake command line for a " - "generic build of libaom and tools.") -endif () +if(NOT "${AOM_SUPPORTED_CPU_TARGETS}" MATCHES "${AOM_TARGET_CPU}") + message(FATAL_ERROR + "No RTCD support for ${AOM_TARGET_CPU}. Create it, or " + "add -DAOM_TARGET_CPU=generic to your cmake command line for a " + "generic build of libaom and tools.") +endif() -if ("${AOM_TARGET_CPU}" STREQUAL "x86" OR "${AOM_TARGET_CPU}" STREQUAL "x86_64") - if (ENABLE_NASM) +if("${AOM_TARGET_CPU}" STREQUAL "x86" OR "${AOM_TARGET_CPU}" STREQUAL "x86_64") + find_program(AS_EXECUTABLE yasm $ENV{YASM_PATH}) + if(NOT AS_EXECUTABLE OR ENABLE_NASM) + unset(AS_EXECUTABLE CACHE) find_program(AS_EXECUTABLE nasm $ENV{NASM_PATH}) - test_nasm() - set(AOM_AS_FLAGS ${AOM_AS_FLAGS} -Ox) - else () - find_program(AS_EXECUTABLE yasm $ENV{YASM_PATH}) - endif () - - if (NOT AS_EXECUTABLE) - message(FATAL_ERROR "Unable to find assembler. To build without " - "optimizations, add -DAOM_TARGET_CPU=generic to your cmake command " - "line.") - endif () + if(AS_EXECUTABLE) + test_nasm() + endif() + endif() + + if(NOT AS_EXECUTABLE) + message(FATAL_ERROR + "Unable to find assembler. Install 'yasm' or 'nasm.' " + "To build without optimizations, add -DAOM_TARGET_CPU=generic to " + "your cmake command line.") + endif() get_asm_obj_format("objformat") set(AOM_AS_FLAGS -f ${objformat} ${AOM_AS_FLAGS}) string(STRIP "${AOM_AS_FLAGS}" AOM_AS_FLAGS) -elseif ("${AOM_TARGET_CPU}" MATCHES "arm") - if ("${AOM_TARGET_SYSTEM}" STREQUAL "Darwin") +elseif("${AOM_TARGET_CPU}" MATCHES "arm") + if("${AOM_TARGET_SYSTEM}" STREQUAL "Darwin") set(AS_EXECUTABLE as) set(AOM_AS_FLAGS -arch ${AOM_TARGET_CPU} -isysroot ${CMAKE_OSX_SYSROOT}) - elseif ("${AOM_TARGET_SYSTEM}" STREQUAL "Linux") - # arm linux assembler settings controlled by - # build/cmake/toolchains/arm*-linux*.cmake - endif () - if (NOT AS_EXECUTABLE) + elseif("${AOM_TARGET_SYSTEM}" STREQUAL "Linux") + if(NOT AS_EXECUTABLE) + set(AS_EXECUTABLE as) + endif() + elseif("${AOM_TARGET_SYSTEM}" STREQUAL "Windows") + if(NOT AS_EXECUTABLE) + set(AS_EXECUTABLE ${CMAKE_C_COMPILER} -c -mimplicit-it=always) + endif() + endif() + if(NOT AS_EXECUTABLE) message(FATAL_ERROR - "Unknown assembler for: ${AOM_TARGET_CPU}-${AOM_TARGET_SYSTEM}") - endif () + "Unknown assembler for: ${AOM_TARGET_CPU}-${AOM_TARGET_SYSTEM}") + endif() string(STRIP "${AOM_AS_FLAGS}" AOM_AS_FLAGS) -endif () +endif() -if (CONFIG_ANALYZER) +if(CONFIG_ANALYZER) + include(FindwxWidgets) find_package(wxWidgets REQUIRED adv base core) include(${wxWidgets_USE_FILE}) -endif () +endif() -if (NOT MSVC AND CMAKE_C_COMPILER_ID MATCHES "GNU\|Clang") +if(NOT MSVC AND CMAKE_C_COMPILER_ID MATCHES "GNU\|Clang") set(CONFIG_GCC 1) -endif () +endif() -if (CONFIG_GCOV) +if(CONFIG_GCOV) message("--- Testing for CONFIG_GCOV support.") require_linker_flag("-fprofile-arcs -ftest-coverage") require_compiler_flag("-fprofile-arcs -ftest-coverage" YES) -endif () +endif() -if (CONFIG_GPROF) +if(CONFIG_GPROF) message("--- Testing for CONFIG_GPROF support.") require_compiler_flag("-pg" YES) -endif () +endif() -if ("${AOM_TARGET_SYSTEM}" MATCHES "Darwin\|Linux\|Windows") +if("${AOM_TARGET_SYSTEM}" MATCHES "Darwin\|Linux\|Windows") set(CONFIG_OS_SUPPORT 1) -endif () +endif() -################################################################################ +# # Fix CONFIG_* dependencies. This must be done before including cpu.cmake to # ensure RTCD_CONFIG_* are properly set. fix_experiment_configs() @@ -198,54 +201,65 @@ fix_experiment_configs() # Test compiler support. aom_get_inline("INLINE") -# TODO(tomfinegan): aom_ports_check is legacy; HAVE_AOM_PORTS is not used -# anywhere in the aom sources. To be removed after parity with the legacy -# build system stops being important. -aom_check_source_compiles("aom_ports_check" - "#include \"${AOM_ROOT}/aom/aom_integer.h\"" - HAVE_AOM_PORTS) -aom_check_source_compiles("pthread_check" "#include <pthread.h>" HAVE_PTHREAD_H) +# Don't just check for pthread.h, but use the result of the full pthreads +# including a linking check in FindThreads above. +set(HAVE_PTHREAD_H ${CMAKE_USE_PTHREADS_INIT}) aom_check_source_compiles("unistd_check" "#include <unistd.h>" HAVE_UNISTD_H) -if (NOT MSVC) +if(NOT MSVC) aom_push_var(CMAKE_REQUIRED_LIBRARIES "m") - aom_check_c_compiles("fenv_check" - "#define _GNU_SOURCE + aom_check_c_compiles( + "fenv_check" + "#define _GNU_SOURCE #include <fenv.h> void unused(void) { (void)unused; (void)feenableexcept(FE_DIVBYZERO | FE_INVALID); - }" HAVE_FEXCEPT) + }" + HAVE_FEXCEPT) aom_pop_var(CMAKE_REQUIRED_LIBRARIES) endif() include("${AOM_ROOT}/build/cmake/cpu.cmake") -if (ENABLE_CCACHE) +if(ENABLE_CCACHE) set_compiler_launcher(ENABLE_CCACHE ccache) -endif () +endif() -if (ENABLE_DISTCC) +if(ENABLE_DISTCC) set_compiler_launcher(ENABLE_DISTCC distcc) -endif () +endif() -if (ENABLE_GOMA) +if(ENABLE_GOMA) set_compiler_launcher(ENABLE_GOMA gomacc) -endif () +endif() -if (NOT CONFIG_AV1_DECODER AND NOT CONFIG_AV1_ENCODER) +if(NOT CONFIG_AV1_DECODER AND NOT CONFIG_AV1_ENCODER) message(FATAL_ERROR "Decoder and encoder disabled, nothing to build.") -endif () +endif() + +if(DECODE_HEIGHT_LIMIT OR DECODE_WIDTH_LIMIT) + change_config_and_warn(CONFIG_SIZE_LIMIT 1 + "DECODE_HEIGHT_LIMIT and DECODE_WIDTH_LIMIT") +endif() + +if(CONFIG_SIZE_LIMIT) + if(NOT DECODE_HEIGHT_LIMIT OR NOT DECODE_WIDTH_LIMIT) + message(FATAL_ERROR "When setting CONFIG_SIZE_LIMIT, DECODE_HEIGHT_LIMIT " + "and DECODE_WIDTH_LIMIT must be set.") + endif() +endif() # Test compiler flags. -if (MSVC) +if(MSVC) add_compiler_flag_if_supported("/W3") + # Disable MSVC warnings that suggest making code non-portable. add_compiler_flag_if_supported("/wd4996") - if (ENABLE_WERROR) + if(ENABLE_WERROR) add_compiler_flag_if_supported("/WX") - endif () -else () + endif() +else() require_c_flag("-std=c99" YES) add_compiler_flag_if_supported("-Wall") add_compiler_flag_if_supported("-Wdisabled-optimization") @@ -261,8 +275,9 @@ else () add_compiler_flag_if_supported("-Wuninitialized") add_compiler_flag_if_supported("-Wunused") add_compiler_flag_if_supported("-Wvla") - # TODO(jzern): this could be added as a cxx flags for test/*.cc only, - # avoiding third_party. + + # TODO(jzern): this could be added as a cxx flags for test/*.cc only, avoiding + # third_party. add_c_flag_if_supported("-Wshorten-64-to-32") # Add -Wshadow only for C files to avoid massive gtest warning spam. @@ -271,67 +286,64 @@ else () # Add -Wundef only for C files to avoid massive gtest warning spam. add_c_flag_if_supported("-Wundef") - if (ENABLE_WERROR) + if(ENABLE_WERROR) add_compiler_flag_if_supported("-Werror") - endif () - # Flag(s) added here negate CMake defaults and produce build output similar - # to the existing configure/make build system. - add_compiler_flag_if_supported("-Wno-unused-function") + endif() - if ("${CMAKE_BUILD_TYPE}" MATCHES "Rel") + if("${CMAKE_BUILD_TYPE}" MATCHES "Rel") add_compiler_flag_if_supported("-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0") - endif () + endif() add_compiler_flag_if_supported("-D_LARGEFILE_SOURCE") add_compiler_flag_if_supported("-D_FILE_OFFSET_BITS=64") -endif () +endif() set(AOM_LIB_LINK_TYPE PUBLIC) -if (EMSCRIPTEN) +if(EMSCRIPTEN) + # Avoid CMake generation time errors resulting from collisions with the form # of target_link_libraries() used by Emscripten.cmake. unset(AOM_LIB_LINK_TYPE) -endif () +endif() # Generate aom_config templates. -set(aom_config_asm_template "${AOM_CONFIG_DIR}/aom_config.asm.cmake") -set(aom_config_h_template "${AOM_CONFIG_DIR}/aom_config.h.cmake") -execute_process(COMMAND ${CMAKE_COMMAND} - -DAOM_CONFIG_DIR=${AOM_CONFIG_DIR} - -DAOM_ROOT=${AOM_ROOT} - -P "${AOM_ROOT}/build/cmake/generate_aom_config_templates.cmake") +set(aom_config_asm_template "${AOM_CONFIG_DIR}/config/aom_config.asm.cmake") +set(aom_config_h_template "${AOM_CONFIG_DIR}/config/aom_config.h.cmake") +execute_process(COMMAND + ${CMAKE_COMMAND} -DAOM_CONFIG_DIR=${AOM_CONFIG_DIR} + -DAOM_ROOT=${AOM_ROOT} -P + "${AOM_ROOT}/build/cmake/generate_aom_config_templates.cmake") # Generate aom_config.{asm,h}. -configure_file("${aom_config_asm_template}" "${AOM_CONFIG_DIR}/aom_config.asm") -configure_file("${aom_config_h_template}" "${AOM_CONFIG_DIR}/aom_config.h") +configure_file("${aom_config_asm_template}" + "${AOM_CONFIG_DIR}/config/aom_config.asm") +configure_file("${aom_config_h_template}" + "${AOM_CONFIG_DIR}/config/aom_config.h") # Read the current git hash. find_package(Git) -if (NOT GIT_FOUND) +if(NOT GIT_FOUND) message("--- Git missing, version will be read from CHANGELOG.") -endif () +endif() -configure_file("${AOM_ROOT}/build/cmake/aom_config.c.cmake" - "${AOM_CONFIG_DIR}/aom_config.c") +configure_file("${AOM_ROOT}/build/cmake/aom_config.c.template" + "${AOM_CONFIG_DIR}/config/aom_config.c") # Find Perl and generate the RTCD sources. find_package(Perl) -if (NOT PERL_FOUND) +if(NOT PERL_FOUND) message(FATAL_ERROR "Perl is required to build libaom.") -endif () +endif() configure_file("${AOM_CONFIG_DIR}/rtcd_config.cmake" "${AOM_CONFIG_DIR}/${AOM_TARGET_CPU}_rtcd_config.rtcd") -set(AOM_RTCD_CONFIG_FILE_LIST - "${AOM_ROOT}/aom_dsp/aom_dsp_rtcd_defs.pl" +set(AOM_RTCD_CONFIG_FILE_LIST "${AOM_ROOT}/aom_dsp/aom_dsp_rtcd_defs.pl" "${AOM_ROOT}/aom_scale/aom_scale_rtcd.pl" "${AOM_ROOT}/av1/common/av1_rtcd_defs.pl") -set(AOM_RTCD_HEADER_FILE_LIST - "${AOM_CONFIG_DIR}/aom_dsp_rtcd.h" - "${AOM_CONFIG_DIR}/aom_scale_rtcd.h" - "${AOM_CONFIG_DIR}/av1_rtcd.h") -set(AOM_RTCD_SOURCE_FILE_LIST - "${AOM_ROOT}/aom_dsp/aom_dsp_rtcd.c" +set(AOM_RTCD_HEADER_FILE_LIST "${AOM_CONFIG_DIR}/config/aom_dsp_rtcd.h" + "${AOM_CONFIG_DIR}/config/aom_scale_rtcd.h" + "${AOM_CONFIG_DIR}/config/av1_rtcd.h") +set(AOM_RTCD_SOURCE_FILE_LIST "${AOM_ROOT}/aom_dsp/aom_dsp_rtcd.c" "${AOM_ROOT}/aom_scale/aom_scale_rtcd.c" "${AOM_ROOT}/av1/common/av1_rtcd.c") set(AOM_RTCD_SYMBOL_LIST aom_dsp_rtcd aom_scale_rtcd av1_rtcd) @@ -345,32 +357,26 @@ foreach(NUM RANGE ${AOM_RTCD_CUSTOM_COMMAND_COUNT}) list(GET AOM_RTCD_SYMBOL_LIST ${NUM} AOM_RTCD_SYMBOL) execute_process( COMMAND ${PERL_EXECUTABLE} "${AOM_ROOT}/build/make/rtcd.pl" - --arch=${AOM_TARGET_CPU} --sym=${AOM_RTCD_SYMBOL} ${AOM_RTCD_FLAGS} - --config=${AOM_CONFIG_DIR}/${AOM_TARGET_CPU}_rtcd_config.rtcd - ${AOM_RTCD_CONFIG_FILE} + --arch=${AOM_TARGET_CPU} + --sym=${AOM_RTCD_SYMBOL} ${AOM_RTCD_FLAGS} + --config=${AOM_CONFIG_DIR}/${AOM_TARGET_CPU}_rtcd_config.rtcd + ${AOM_RTCD_CONFIG_FILE} OUTPUT_FILE ${AOM_RTCD_HEADER_FILE}) endforeach() # Generate aom_version.h. -execute_process( - COMMAND ${CMAKE_COMMAND} - -DAOM_CONFIG_DIR=${AOM_CONFIG_DIR} - -DAOM_ROOT=${AOM_ROOT} - -DGIT_EXECUTABLE=${GIT_EXECUTABLE} - -DPERL_EXECUTABLE=${PERL_EXECUTABLE} - -P "${AOM_ROOT}/build/cmake/version.cmake") - -if (NOT MSVC) - # Generate aom.pc (pkg-config file). - execute_process( - COMMAND ${CMAKE_COMMAND} - -DAOM_CONFIG_DIR=${AOM_CONFIG_DIR} - -DAOM_ROOT=${AOM_ROOT} - -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} - -DCMAKE_PROJECT_NAME=${CMAKE_PROJECT_NAME} - -DCONFIG_MULTITHREAD=${CONFIG_MULTITHREAD} - -DHAVE_PTHREAD_H=${HAVE_PTHREAD_H} - -P "${AOM_ROOT}/build/cmake/pkg_config.cmake") -endif () - -endif () # AOM_BUILD_CMAKE_AOM_CONFIGURE_CMAKE_ +execute_process(COMMAND ${CMAKE_COMMAND} -DAOM_CONFIG_DIR=${AOM_CONFIG_DIR} + -DAOM_ROOT=${AOM_ROOT} + -DGIT_EXECUTABLE=${GIT_EXECUTABLE} + -DPERL_EXECUTABLE=${PERL_EXECUTABLE} -P + "${AOM_ROOT}/build/cmake/version.cmake") + +if(NOT MSVC) # Generate aom.pc (pkg-config file). + execute_process(COMMAND ${CMAKE_COMMAND} -DAOM_CONFIG_DIR=${AOM_CONFIG_DIR} + -DAOM_ROOT=${AOM_ROOT} + -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} + -DCMAKE_PROJECT_NAME=${CMAKE_PROJECT_NAME} + -DCONFIG_MULTITHREAD=${CONFIG_MULTITHREAD} + -DHAVE_PTHREAD_H=${HAVE_PTHREAD_H} -P + "${AOM_ROOT}/build/cmake/pkg_config.cmake") +endif() diff --git a/third_party/aom/build/cmake/aom_experiment_deps.cmake b/third_party/aom/build/cmake/aom_experiment_deps.cmake index 938af2386..e2c8102aa 100644 --- a/third_party/aom/build/cmake/aom_experiment_deps.cmake +++ b/third_party/aom/build/cmake/aom_experiment_deps.cmake @@ -1,139 +1,28 @@ -## -## Copyright (c) 2017, 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. -## -if (NOT AOM_BUILD_CMAKE_AOM_EXPERIMENT_DEPS_CMAKE_) +# +# Copyright (c) 2017, 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. +# +if(AOM_BUILD_CMAKE_AOM_EXPERIMENT_DEPS_CMAKE_) + return() +endif() # AOM_BUILD_CMAKE_AOM_EXPERIMENT_DEPS_CMAKE_ set(AOM_BUILD_CMAKE_AOM_EXPERIMENT_DEPS_CMAKE_ 1) # Adjusts CONFIG_* CMake variables to address conflicts between active AV1 # experiments. -macro (fix_experiment_configs) - if (CONFIG_ANALYZER) - if (NOT CONFIG_INSPECTION) - change_config_and_warn(CONFIG_INSPECTION 1 CONFIG_ANALYZER) - endif () - endif () +macro(fix_experiment_configs) - if (CONFIG_VAR_TX_NO_TX_MODE AND NOT CONFIG_VAR_TX) - change_config_and_warn(CONFIG_VAR_TX 1 CONFIG_VAR_TX_NO_TX_MODE) - endif () + if(CONFIG_ANALYZER) + change_config_and_warn(CONFIG_INSPECTION 1 CONFIG_ANALYZER) + endif() - if (CONFIG_CHROMA_2X2) - change_config_and_warn(CONFIG_CHROMA_SUB8X8 0 CONFIG_CHROMA_2X2) - endif () + if(CONFIG_RD_DEBUG) + change_config_and_warn(CONFIG_RD_DEBUG 0 CONFIG_JNT_COMP) + endif() - if (CONFIG_DAALA_TX) - set(CONFIG_DAALA_DCT4 1) - set(CONFIG_DAALA_DCT8 1) - set(CONFIG_DAALA_DCT16 1) - set(CONFIG_DAALA_DCT32 1) - set(CONFIG_DAALA_DCT64 1) - endif () - - if (CONFIG_DAALA_DCT64) - if (NOT CONFIG_TX64X64) - set(CONFIG_DAALA_DCT64 0) - message("--- DAALA_DCT64 requires TX64X64: disabled DAALA_DCT64") - endif () - endif () - - if (CONFIG_DAALA_DCT4 OR CONFIG_DAALA_DCT8 OR CONFIG_DAALA_DCT16 OR - CONFIG_DAALA_DCT32 OR CONFIG_DAALA_DCT64) - if (CONFIG_LGT) - change_config_and_warn(CONFIG_LGT 0 CONFIG_DAALA_DCTx) - endif () - if (NOT CONFIG_LOWBITDEPTH) - change_config_and_warn(CONFIG_LOWBITDEPTH 1 CONFIG_DAALA_DCTx) - endif () - endif () - - if (CONFIG_TXK_SEL) - if (NOT CONFIG_LV_MAP) - change_config_and_warn(CONFIG_LV_MAP 1 CONFIG_TXK_SEL) - endif () - endif () - - if (CONFIG_CTX1D) - if (NOT CONFIG_LV_MAP) - change_config_and_warn(CONFIG_LV_MAP 1 CONFIG_CTX1D) - endif () - if (NOT CONFIG_EXT_TX) - change_config_and_warn(CONFIG_EXT_TX 1 CONFIG_CTX1D) - endif () - endif () - - if (CONFIG_EXT_COMP_REFS) - if (NOT CONFIG_EXT_REFS) - change_config_and_warn(CONFIG_EXT_REFS 1 CONFIG_EXT_COMP_REFS) - endif () - endif () - - if (CONFIG_STRIPED_LOOP_RESTORATION) - if (NOT CONFIG_LOOP_RESTORATION) - change_config_and_warn(CONFIG_LOOP_RESTORATION 1 - CONFIG_STRIPED_LOOP_RESTORATION) - endif () - endif () - - if (CONFIG_MFMV) - if (NOT CONFIG_FRAME_MARKER) - change_config_and_warn(CONFIG_FRAME_MARKER 1 CONFIG_MFMV) - endif () - endif () - - if (CONFIG_NEW_MULTISYMBOL) - if (NOT CONFIG_RESTRICT_COMPRESSED_HDR) - change_config_and_warn(CONFIG_RESTRICT_COMPRESSED_HDR 1 - CONFIG_NEW_MULTISYMBOL) - endif () - endif () - - if (CONFIG_EXT_PARTITION_TYPES) - if (CONFIG_SUPERTX) - change_config_and_warn(CONFIG_SUPERTX 0 - CONFIG_EXT_PARTITION_TYPES) - endif () - endif () - - if (CONFIG_JNT_COMP) - if (NOT CONFIG_FRAME_MARKER) - change_config_and_warn(CONFIG_FRAME_MARKER 1 CONFIG_JNT_COMP) - endif () - endif () - - if (CONFIG_AMVR) - change_config_and_warn(CONFIG_HASH_ME 1 CONFIG_AMVR) - endif () - - if (CONFIG_PVQ) - if (CONFIG_EXT_TX) - change_config_and_warn(CONFIG_EXT_TX 0 CONFIG_PVQ) - endif () - if (CONFIG_HIGHBITDEPTH) - change_config_and_warn(CONFIG_HIGHBITDEPTH 0 CONFIG_PVQ) - endif () - if (CONFIG_PALETTE_THROUGHPUT) - change_config_and_warn(CONFIG_PALETTE_THROUGHPUT 0 CONFIG_PVQ) - endif () - if (CONFIG_RECT_TX) - change_config_and_warn(CONFIG_RECT_TX 0 CONFIG_PVQ) - endif () - if (CONFIG_VAR_TX) - change_config_and_warn(CONFIG_VAR_TX 0 CONFIG_PVQ) - endif () - endif () - - if (CONFIG_HORZONLY_FRAME_SUPERRES) - if (NOT CONFIG_FRAME_SUPERRES) - change_config_and_warn(CONFIG_FRAME_SUPERRES 1 CONFIG_HORZONLY_FRAME_SUPERRES) - endif () - endif () -endmacro () - -endif () # AOM_BUILD_CMAKE_AOM_EXPERIMENT_DEPS_CMAKE_ +endmacro() diff --git a/third_party/aom/build/cmake/aom_optimization.cmake b/third_party/aom/build/cmake/aom_optimization.cmake index c58c3993e..069ea1bb9 100644 --- a/third_party/aom/build/cmake/aom_optimization.cmake +++ b/third_party/aom/build/cmake/aom_optimization.cmake @@ -1,138 +1,146 @@ -## -## Copyright (c) 2017, 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. -## -if (NOT AOM_BUILD_CMAKE_AOM_OPTIMIZATION_CMAKE_) +# +# Copyright (c) 2017, 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. +# +if(AOM_BUILD_CMAKE_AOM_OPTIMIZATION_CMAKE_) + return() +endif() # AOM_BUILD_CMAKE_AOM_OPTIMIZATION_CMAKE_ set(AOM_BUILD_CMAKE_AOM_OPTIMIZATION_CMAKE_ 1) include("${AOM_ROOT}/build/cmake/util.cmake") # Translate $flag to one which MSVC understands, and write the new flag to the # variable named by $translated_flag (or unset it, when MSVC needs no flag). -function (get_msvc_intrinsic_flag flag translated_flag) - if ("${flag}" STREQUAL "-mavx") +function(get_msvc_intrinsic_flag flag translated_flag) + if("${flag}" STREQUAL "-mavx") set(${translated_flag} "/arch:AVX" PARENT_SCOPE) - elseif ("${flag}" STREQUAL "-mavx2") + elseif("${flag}" STREQUAL "-mavx2") set(${translated_flag} "/arch:AVX2" PARENT_SCOPE) - else () + else() + # MSVC does not need flags for intrinsics flavors other than AVX/AVX2. unset(${translated_flag} PARENT_SCOPE) - endif () -endfunction () + endif() +endfunction() # Adds an object library target. Terminates generation if $flag is not supported # by the current compiler. $flag is the intrinsics flag required by the current # compiler, and is added to the compile flags for all sources in $sources. -# $opt_name is used to name the target. $target_to_update is made -# dependent upon the created target. +# $opt_name is used to name the target. $target_to_update is made dependent upon +# the created target. # # Note: the libaom target is always updated because OBJECT libraries have rules # that disallow the direct addition of .o files to them as dependencies. Static # libraries do not have this limitation. -function (add_intrinsics_object_library flag opt_name target_to_update sources - dependent_target) +function(add_intrinsics_object_library flag opt_name target_to_update sources + dependent_target) + if("${${sources}}" STREQUAL "") + return() + endif() set(target_name ${target_to_update}_${opt_name}_intrinsics) add_library(${target_name} OBJECT ${${sources}}) - if (MSVC) + if(MSVC) get_msvc_intrinsic_flag(${flag} "flag") - endif () + endif() - if (flag) + if(flag) + separate_arguments(flag) target_compile_options(${target_name} PUBLIC ${flag}) - endif () + endif() target_sources(${dependent_target} PRIVATE $<TARGET_OBJECTS:${target_name}>) # Add the new lib target to the global list of aom library targets. list(APPEND AOM_LIB_TARGETS ${target_name}) set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} PARENT_SCOPE) -endfunction () +endfunction() # Adds sources in list named by $sources to $target and adds $flag to the # compile flags for each source file. -function (add_intrinsics_source_to_target flag target sources) +function(add_intrinsics_source_to_target flag target sources) target_sources(${target} PRIVATE ${${sources}}) - if (MSVC) + if(MSVC) get_msvc_intrinsic_flag(${flag} "flag") - endif () - if (flag) - foreach (source ${${sources}}) + endif() + if(flag) + foreach(source ${${sources}}) set_property(SOURCE ${source} APPEND PROPERTY COMPILE_FLAGS ${flag}) - endforeach () - endif () -endfunction () + endforeach() + endif() +endfunction() # Writes object format for the current target to the var named by $out_format, # or terminates the build when the object format for the current target is # unknown. -function (get_asm_obj_format out_format) - if ("${AOM_TARGET_CPU}" STREQUAL "x86_64") - if ("${AOM_TARGET_SYSTEM}" STREQUAL "Darwin") +function(get_asm_obj_format out_format) + if("${AOM_TARGET_CPU}" STREQUAL "x86_64") + if("${AOM_TARGET_SYSTEM}" STREQUAL "Darwin") set(objformat "macho64") - elseif ("${AOM_TARGET_SYSTEM}" STREQUAL "Linux") + elseif("${AOM_TARGET_SYSTEM}" STREQUAL "Linux") set(objformat "elf64") - elseif ("${AOM_TARGET_SYSTEM}" STREQUAL "MSYS" OR - "${AOM_TARGET_SYSTEM}" STREQUAL "Windows") + elseif("${AOM_TARGET_SYSTEM}" STREQUAL "MSYS" OR "${AOM_TARGET_SYSTEM}" + STREQUAL "Windows") set(objformat "win64") - else () + else() message(FATAL_ERROR "Unknown obj format: ${AOM_TARGET_SYSTEM}") - endif () - elseif ("${AOM_TARGET_CPU}" STREQUAL "x86") - if ("${AOM_TARGET_SYSTEM}" STREQUAL "Darwin") + endif() + elseif("${AOM_TARGET_CPU}" STREQUAL "x86") + if("${AOM_TARGET_SYSTEM}" STREQUAL "Darwin") set(objformat "macho32") - elseif ("${AOM_TARGET_SYSTEM}" STREQUAL "Linux") + elseif("${AOM_TARGET_SYSTEM}" STREQUAL "Linux") set(objformat "elf32") - elseif ("${AOM_TARGET_SYSTEM}" STREQUAL "MSYS" OR - "${AOM_TARGET_SYSTEM}" STREQUAL "Windows") + elseif("${AOM_TARGET_SYSTEM}" STREQUAL "MSYS" OR "${AOM_TARGET_SYSTEM}" + STREQUAL "Windows") set(objformat "win32") - else () + else() message(FATAL_ERROR "Unknown obj format: ${AOM_TARGET_SYSTEM}") - endif () - else () + endif() + else() message(FATAL_ERROR - "Unknown obj format: ${AOM_TARGET_CPU}-${AOM_TARGET_SYSTEM}") - endif () + "Unknown obj format: ${AOM_TARGET_CPU}-${AOM_TARGET_SYSTEM}") + endif() set(${out_format} ${objformat} PARENT_SCOPE) -endfunction () +endfunction() # Adds library target named $lib_name for ASM files in variable named by # $asm_sources. Builds an output directory path from $lib_name. Links $lib_name # into $dependent_target. Generates a dummy C file with a dummy function to # ensure that all cmake generators can determine the linker language, and that # build tools don't complain that an object exposes no symbols. -function (add_asm_library lib_name asm_sources dependent_target) +function(add_asm_library lib_name asm_sources dependent_target) + if("${${asm_sources}}" STREQUAL "") + return() + endif() set(asm_lib_obj_dir "${AOM_CONFIG_DIR}/asm_objects/${lib_name}") - if (NOT EXISTS "${asm_lib_obj_dir}") + if(NOT EXISTS "${asm_lib_obj_dir}") file(MAKE_DIRECTORY "${asm_lib_obj_dir}") - endif () + endif() # TODO(tomfinegan): If cmake ever allows addition of .o files to OBJECT lib # targets, make this OBJECT instead of STATIC to hide the target from # consumers of the AOM cmake build. add_library(${lib_name} STATIC ${${asm_sources}}) - foreach (asm_source ${${asm_sources}}) + foreach(asm_source ${${asm_sources}}) get_filename_component(asm_source_name "${asm_source}" NAME) set(asm_object "${asm_lib_obj_dir}/${asm_source_name}.o") add_custom_command(OUTPUT "${asm_object}" - COMMAND ${AS_EXECUTABLE} - ARGS ${AOM_AS_FLAGS} - -I${AOM_ROOT}/ -I${AOM_CONFIG_DIR}/ - -o "${asm_object}" "${asm_source}" + COMMAND ${AS_EXECUTABLE} ARGS ${AOM_AS_FLAGS} + -I${AOM_ROOT}/ -I${AOM_CONFIG_DIR}/ -o + "${asm_object}" "${asm_source}" DEPENDS "${asm_source}" COMMENT "Building ASM object ${asm_object}" - WORKING_DIRECTORY "${AOM_CONFIG_DIR}" - VERBATIM) + WORKING_DIRECTORY "${AOM_CONFIG_DIR}" VERBATIM) target_sources(aom PRIVATE "${asm_object}") - endforeach () + endforeach() # The above created a target containing only ASM sources. Cmake needs help # here to determine the linker language. Add a dummy C file to force the @@ -144,121 +152,61 @@ function (add_asm_library lib_name asm_sources dependent_target) # Add the new lib target to the global list of aom library targets. list(APPEND AOM_LIB_TARGETS ${lib_name}) set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} PARENT_SCOPE) -endfunction () - -# Converts asm sources in $asm_sources using $AOM_ADS2GAS and calls -# add_asm_library() to create a library from the converted sources. At -# generation time the converted sources are created, and a custom rule is added -# to ensure the sources are reconverted when the original asm source is updated. -# See add_asm_library() for more information. -function (add_gas_asm_library lib_name asm_sources dependent_target) - set(asm_converted_source_dir "${AOM_CONFIG_DIR}/asm_gas/${lib_name}") - if (NOT EXISTS "${asm_converted_source_dir}") - file(MAKE_DIRECTORY "${asm_converted_source_dir}") - endif () - - # Create the converted version of each assembly source at generation time. - unset(gas_target_sources) - foreach (neon_asm_source ${${asm_sources}}) - get_filename_component(output_asm_source "${neon_asm_source}" NAME) - set(output_asm_source "${asm_converted_source_dir}/${output_asm_source}") - set(output_asm_source "${output_asm_source}.${AOM_GAS_EXT}") - execute_process(COMMAND "${PERL_EXECUTABLE}" "${AOM_ADS2GAS}" - INPUT_FILE "${neon_asm_source}" - OUTPUT_FILE "${output_asm_source}") - list(APPEND gas_target_sources "${output_asm_source}") - endforeach () - - add_asm_library("${lib_name}" "gas_target_sources" "${dependent_target}") - - # For each of the converted sources, create a custom rule that will regenerate - # the converted source when its input is touched. - list(LENGTH gas_target_sources num_asm_files) - math(EXPR num_asm_files "${num_asm_files} - 1") - foreach(NUM RANGE ${num_asm_files}) - list(GET ${asm_sources} ${NUM} neon_asm_source) - list(GET gas_target_sources ${NUM} gas_asm_source) - - # Grab only the filename for the custom command output to keep build output - # reasonably sane. - get_filename_component(neon_name "${neon_asm_source}" NAME) - get_filename_component(gas_name "${gas_asm_source}" NAME) - - add_custom_command( - OUTPUT "${gas_asm_source}" - COMMAND ${PERL_EXECUTABLE} - ARGS "${AOM_ADS2GAS}" < "${neon_asm_source}" > "${gas_asm_source}" - DEPENDS "${neon_asm_source}" - COMMENT "ads2gas conversion ${neon_name} -> ${gas_name}" - WORKING_DIRECTORY "${AOM_CONFIG_DIR}" - VERBATIM) - endforeach () - - # Update the sources list passed in to include the converted asm source files. - list(APPEND asm_sources ${gas_target_sources}) - set(${asm_sources} ${${asm_sources}} PARENT_SCOPE) -endfunction () +endfunction() # Terminates generation if nasm found in PATH does not meet requirements. # Currently checks only for presence of required object formats and support for # the -Ox argument (multipass optimization). -function (test_nasm) - execute_process(COMMAND ${AS_EXECUTABLE} -hf - OUTPUT_VARIABLE nasm_helptext) +function(test_nasm) + execute_process(COMMAND ${AS_EXECUTABLE} -hf OUTPUT_VARIABLE nasm_helptext) - if (NOT "${nasm_helptext}" MATCHES "-Ox") + if(NOT "${nasm_helptext}" MATCHES "-Ox") message(FATAL_ERROR - "Unsupported nasm: multipass optimization not supported.") - endif () + "Unsupported nasm: multipass optimization not supported.") + endif() - if ("${AOM_TARGET_CPU}" STREQUAL "x86") - if ("${AOM_TARGET_SYSTEM}" STREQUAL "Darwin") - if (NOT "${nasm_helptext}" MATCHES "macho32") + if("${AOM_TARGET_CPU}" STREQUAL "x86") + if("${AOM_TARGET_SYSTEM}" STREQUAL "Darwin") + if(NOT "${nasm_helptext}" MATCHES "macho32") message(FATAL_ERROR - "Unsupported nasm: macho32 object format not supported.") - endif () - elseif ("${AOM_TARGET_SYSTEM}" STREQUAL "Linux") - if (NOT "${nasm_helptext}" MATCHES "elf32") + "Unsupported nasm: macho32 object format not supported.") + endif() + elseif("${AOM_TARGET_SYSTEM}" STREQUAL "Linux") + if(NOT "${nasm_helptext}" MATCHES "elf32") message(FATAL_ERROR - "Unsupported nasm: elf32 object format not supported.") - endif () - endif () - else () - if ("${AOM_TARGET_SYSTEM}" STREQUAL "Darwin") - if (NOT "${nasm_helptext}" MATCHES "macho64") + "Unsupported nasm: elf32 object format not supported.") + endif() + endif() + else() + if("${AOM_TARGET_SYSTEM}" STREQUAL "Darwin") + if(NOT "${nasm_helptext}" MATCHES "macho64") message(FATAL_ERROR - "Unsupported nasm: macho64 object format not supported.") - endif () - elseif ("${AOM_TARGET_SYSTEM}" STREQUAL "Linux") - if (NOT "${nasm_helptext}" MATCHES "elf64") + "Unsupported nasm: macho64 object format not supported.") + endif() + elseif("${AOM_TARGET_SYSTEM}" STREQUAL "Linux") + if(NOT "${nasm_helptext}" MATCHES "elf64") message(FATAL_ERROR - "Unsupported nasm: elf64 object format not supported.") - endif () - endif () - endif () -endfunction () + "Unsupported nasm: elf64 object format not supported.") + endif() + endif() + endif() +endfunction() # Adds build command for generation of rtcd C source files using # build/make/rtcd.pl. $config is the input perl file, $output is the output C # include file, $source is the C source file, and $symbol is used for the symbol # argument passed to rtcd.pl. -function (add_rtcd_build_step config output source symbol) +function(add_rtcd_build_step config output source symbol) add_custom_command( OUTPUT ${output} - COMMAND ${PERL_EXECUTABLE} - ARGS "${AOM_ROOT}/build/make/rtcd.pl" - --arch=${AOM_TARGET_CPU} - --sym=${symbol} - ${AOM_RTCD_FLAGS} - --config=${AOM_CONFIG_DIR}/${AOM_TARGET_CPU}_rtcd_config.rtcd - ${config} - > ${output} + COMMAND ${PERL_EXECUTABLE} ARGS "${AOM_ROOT}/build/make/rtcd.pl" + --arch=${AOM_TARGET_CPU} + --sym=${symbol} ${AOM_RTCD_FLAGS} + --config=${AOM_CONFIG_DIR}/${AOM_TARGET_CPU}_rtcd_config.rtcd + ${config} > ${output} DEPENDS ${config} COMMENT "Generating ${output}" - WORKING_DIRECTORY ${AOM_CONFIG_DIR} - VERBATIM) + WORKING_DIRECTORY ${AOM_CONFIG_DIR} VERBATIM) set_property(SOURCE ${source} PROPERTY OBJECT_DEPENDS ${output}) set_property(SOURCE ${output} PROPERTY GENERATED) -endfunction () - -endif () # AOM_BUILD_CMAKE_AOM_OPTIMIZATION_CMAKE_ +endfunction() diff --git a/third_party/aom/build/cmake/compiler_flags.cmake b/third_party/aom/build/cmake/compiler_flags.cmake index aa34b83ae..79192c1fa 100644 --- a/third_party/aom/build/cmake/compiler_flags.cmake +++ b/third_party/aom/build/cmake/compiler_flags.cmake @@ -1,14 +1,16 @@ -## -## 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. -## -if (NOT AOM_BUILD_CMAKE_COMPILER_FLAGS_CMAKE_) +# +# 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. +# +if(AOM_BUILD_CMAKE_COMPILER_FLAGS_CMAKE_) + return() +endif() # AOM_BUILD_CMAKE_COMPILER_FLAGS_CMAKE_ set(AOM_BUILD_CMAKE_COMPILER_FLAGS_CMAKE_ 1) include(CheckCCompilerFlag) @@ -27,302 +29,301 @@ set(AOM_FAILED_CXX_FLAGS) # otherwise. function(is_flag_present flag_cache flag out_is_present) string(FIND "${${flag_cache}}" "${flag}" flag_pos) - if (${flag_pos} EQUAL -1) + if(${flag_pos} EQUAL -1) set(${out_is_present} NO PARENT_SCOPE) - else () + else() set(${out_is_present} YES PARENT_SCOPE) - endif () -endfunction () + endif() +endfunction() # Appends $flag to $flags. Ignores scope via use of FORCE with set() call. -function (append_flag flags flag) +function(append_flag flags flag) string(FIND "${${flags}}" "${flag}" found) - if (${found} EQUAL -1) + if(${found} EQUAL -1) set(${flags} "${${flags}} ${flag}" CACHE STRING "" FORCE) - endif () -endfunction () + endif() +endfunction() # Checks C compiler for support of $c_flag. Adds $c_flag to all # $CMAKE_C_FLAGS_<CONFIG>s stored in AOM_C_CONFIGS when the compile test passes. # Caches $c_flag in $AOM_C_FLAGS or $AOM_FAILED_C_FLAGS depending on test # outcome. -function (add_c_flag_if_supported c_flag) - if (DEBUG_CMAKE_DISABLE_COMPILER_TESTS) +function(add_c_flag_if_supported c_flag) + if(DEBUG_CMAKE_DISABLE_COMPILER_TESTS) return() - endif () + endif() is_flag_present(AOM_C_FLAGS "${c_flag}" flag_ok) is_flag_present(AOM_FAILED_C_FLAGS "${c_flag}" flag_failed) - if (${flag_ok} OR ${flag_failed}) - return () - endif () + if(${flag_ok} OR ${flag_failed}) + return() + endif() unset(C_FLAG_SUPPORTED CACHE) message("Checking C compiler flag support for: " ${c_flag}) check_c_compiler_flag("${c_flag}" C_FLAG_SUPPORTED) - if (${C_FLAG_SUPPORTED}) + if(${C_FLAG_SUPPORTED}) append_flag(AOM_C_FLAGS "${c_flag}") - foreach (config ${AOM_C_CONFIGS}) + foreach(config ${AOM_C_CONFIGS}) unset(C_FLAG_FOUND) append_flag("${config}" "${c_flag}") - endforeach () - else () + endforeach() + else() append_flag(AOM_FAILED_C_FLAGS "${c_flag}") - endif () -endfunction () + endif() +endfunction() # Checks C++ compiler for support of $cxx_flag. Adds $cxx_flag to all # $CMAKE_CXX_FLAGS_<CONFIG>s stored in AOM_CXX_CONFIGS when the compile test -# passes. -# Caches $cxx_flag in $AOM_CXX_FLAGS or $AOM_FAILED_CXX_FLAGS depending on test -# outcome. -function (add_cxx_flag_if_supported cxx_flag) - if (DEBUG_CMAKE_DISABLE_COMPILER_TESTS) +# passes. Caches $cxx_flag in $AOM_CXX_FLAGS or $AOM_FAILED_CXX_FLAGS depending +# on test outcome. +function(add_cxx_flag_if_supported cxx_flag) + if(DEBUG_CMAKE_DISABLE_COMPILER_TESTS) return() - endif () + endif() is_flag_present(AOM_CXX_FLAGS "${cxx_flag}" flag_ok) is_flag_present(AOM_FAILED_CXX_FLAGS "${cxx_flag}" flag_failed) - if (${flag_ok} OR ${flag_failed}) - return () - endif () + if(${flag_ok} OR ${flag_failed}) + return() + endif() unset(CXX_FLAG_SUPPORTED CACHE) message("Checking C++ compiler flag support for: " ${cxx_flag}) check_cxx_compiler_flag("${cxx_flag}" CXX_FLAG_SUPPORTED) - if (${CXX_FLAG_SUPPORTED}) + if(${CXX_FLAG_SUPPORTED}) append_flag(AOM_CXX_FLAGS "${cxx_flag}") - foreach (config ${AOM_CXX_CONFIGS}) + foreach(config ${AOM_CXX_CONFIGS}) unset(CXX_FLAG_FOUND) append_flag("${config}" "${cxx_flag}") - endforeach () - else () + endforeach() + else() append_flag(AOM_FAILED_CXX_FLAGS "${cxx_flag}") - endif () -endfunction () + endif() +endfunction() # Convenience method for adding a flag to both the C and C++ compiler command # lines. -function (add_compiler_flag_if_supported flag) +function(add_compiler_flag_if_supported flag) add_c_flag_if_supported(${flag}) add_cxx_flag_if_supported(${flag}) -endfunction () +endfunction() # Checks C compiler for support of $c_flag and terminates generation when # support is not present. -function (require_c_flag c_flag update_c_flags) - if (DEBUG_CMAKE_DISABLE_COMPILER_TESTS) +function(require_c_flag c_flag update_c_flags) + if(DEBUG_CMAKE_DISABLE_COMPILER_TESTS) return() - endif () + endif() is_flag_present(AOM_C_FLAGS "${c_flag}" flag_ok) - if (${flag_ok}) - return () - endif () + if(${flag_ok}) + return() + endif() - if (NOT "${AOM_EXE_LINKER_FLAGS}" STREQUAL "") + if(NOT "${AOM_EXE_LINKER_FLAGS}" STREQUAL "") aom_push_var(CMAKE_EXE_LINKER_FLAGS "${AOM_EXE_LINKER_FLAGS}") - endif () + endif() unset(HAVE_C_FLAG CACHE) message("Checking C compiler flag support for: " ${c_flag}) check_c_compiler_flag("${c_flag}" HAVE_C_FLAG) - if (NOT HAVE_C_FLAG) + if(NOT HAVE_C_FLAG) message(FATAL_ERROR - "${PROJECT_NAME} requires support for C flag: ${c_flag}.") - endif () + "${PROJECT_NAME} requires support for C flag: ${c_flag}.") + endif() - if (NOT "${AOM_EXE_LINKER_FLAGS}" STREQUAL "") + if(NOT "${AOM_EXE_LINKER_FLAGS}" STREQUAL "") aom_pop_var(CMAKE_EXE_LINKER_FLAGS) - endif () + endif() append_flag(AOM_C_FLAGS "${c_flag}") - if (update_c_flags) - foreach (config ${AOM_C_CONFIGS}) + if(update_c_flags) + foreach(config ${AOM_C_CONFIGS}) set(${config} "${${config}} ${c_flag}" CACHE STRING "" FORCE) - endforeach () - endif () -endfunction () + endforeach() + endif() +endfunction() # Checks CXX compiler for support of $cxx_flag and terminates generation when # support is not present. -function (require_cxx_flag cxx_flag update_cxx_flags) - if (DEBUG_CMAKE_DISABLE_COMPILER_TESTS) +function(require_cxx_flag cxx_flag update_cxx_flags) + if(DEBUG_CMAKE_DISABLE_COMPILER_TESTS) return() - endif () + endif() is_flag_present(AOM_CXX_FLAGS "${cxx_flag}" flag_ok) - if (${flag_ok}) - return () - endif () + if(${flag_ok}) + return() + endif() - if (NOT "${AOM_EXE_LINKER_FLAGS}" STREQUAL "") + if(NOT "${AOM_EXE_LINKER_FLAGS}" STREQUAL "") aom_push_var(CMAKE_EXE_LINKER_FLAGS "${AOM_EXE_LINKER_FLAGS}") - endif () + endif() unset(HAVE_CXX_FLAG CACHE) message("Checking C compiler flag support for: " ${cxx_flag}) check_cxx_compiler_flag("${cxx_flag}" HAVE_CXX_FLAG) - if (NOT HAVE_CXX_FLAG) + if(NOT HAVE_CXX_FLAG) message(FATAL_ERROR - "${PROJECT_NAME} requires support for C flag: ${cxx_flag}.") - endif () + "${PROJECT_NAME} requires support for C flag: ${cxx_flag}.") + endif() - if (NOT "${AOM_EXE_LINKER_FLAGS}" STREQUAL "") + if(NOT "${AOM_EXE_LINKER_FLAGS}" STREQUAL "") aom_pop_var(CMAKE_EXE_LINKER_FLAGS) - endif () + endif() append_flag(AOM_CXX_FLAGS "${cxx_flag}") - if (update_cxx_flags) - foreach (config ${AOM_CXX_CONFIGS}) + if(update_cxx_flags) + foreach(config ${AOM_CXX_CONFIGS}) set(${config} "${${config}} ${cxx_flag}" CACHE STRING "" FORCE) - endforeach () - endif () -endfunction () + endforeach() + endif() +endfunction() # Checks for support of $flag by both the C and CXX compilers. Terminates # generation when support is not present in both compilers. -function (require_compiler_flag flag update_cmake_flags) +function(require_compiler_flag flag update_cmake_flags) require_c_flag(${flag} ${update_cmake_flags}) require_cxx_flag(${flag} ${update_cmake_flags}) -endfunction () +endfunction() # Checks only non-MSVC targets for support of $c_flag and terminates generation # when support is not present. -function (require_c_flag_nomsvc c_flag update_c_flags) - if (NOT MSVC) +function(require_c_flag_nomsvc c_flag update_c_flags) + if(NOT MSVC) require_c_flag(${c_flag} ${update_c_flags}) - endif () -endfunction () + endif() +endfunction() # Checks only non-MSVC targets for support of $cxx_flag and terminates # generation when support is not present. -function (require_cxx_flag_nomsvc cxx_flag update_cxx_flags) - if (NOT MSVC) +function(require_cxx_flag_nomsvc cxx_flag update_cxx_flags) + if(NOT MSVC) require_cxx_flag(${cxx_flag} ${update_cxx_flags}) - endif () -endfunction () + endif() +endfunction() # Checks only non-MSVC targets for support of $flag by both the C and CXX # compilers. Terminates generation when support is not present in both # compilers. -function (require_compiler_flag_nomsvc flag update_cmake_flags) +function(require_compiler_flag_nomsvc flag update_cmake_flags) require_c_flag_nomsvc(${flag} ${update_cmake_flags}) require_cxx_flag_nomsvc(${flag} ${update_cmake_flags}) -endfunction () +endfunction() # Adds $preproc_def to C compiler command line (as -D$preproc_def) if not # already present. -function (add_c_preproc_definition preproc_def) +function(add_c_preproc_definition preproc_def) set(preproc_def "-D${preproc_def}") is_flag_present(AOM_C_FLAGS "${preproc_def}" flag_cached) - if (${flag_cached}) - return () - endif () + if(${flag_cached}) + return() + endif() - foreach (config ${AOM_C_CONFIGS}) + foreach(config ${AOM_C_CONFIGS}) set(${config} "${${config}} ${preproc_def}" CACHE STRING "" FORCE) - endforeach () -endfunction () + endforeach() +endfunction() # Adds $preproc_def to CXX compiler command line (as -D$preproc_def) if not # already present. -function (add_cxx_preproc_definition preproc_def) +function(add_cxx_preproc_definition preproc_def) set(preproc_def "-D${preproc_def}") is_flag_present(AOM_CXX_FLAGS "${preproc_def}" flag_cached) - if (${flag_cached}) - return () - endif () + if(${flag_cached}) + return() + endif() - foreach (config ${AOM_CXX_CONFIGS}) + foreach(config ${AOM_CXX_CONFIGS}) set(${config} "${${config}} ${preproc_def}" CACHE STRING "" FORCE) - endforeach () -endfunction () + endforeach() +endfunction() # Adds $preproc_def to C and CXX compiler command line (as -D$preproc_def) if # not already present. -function (add_preproc_definition preproc_def) +function(add_preproc_definition preproc_def) add_c_preproc_definition(${preproc_def}) add_cxx_preproc_definition(${preproc_def}) -endfunction () +endfunction() # Adds $flag to assembler command line. -function (append_as_flag flag) +function(append_as_flag flag) is_flag_present(AOM_AS_FLAGS "${flag}" flag_cached) - if (${flag_cached}) - return () - endif () + if(${flag_cached}) + return() + endif() append_flag(AOM_AS_FLAGS "${flag}") -endfunction () +endfunction() # Adds $flag to the C compiler command line. -function (append_c_flag flag) +function(append_c_flag flag) is_flag_present(AOM_C_FLAGS "${flag}" flag_cached) - if (${flag_cached}) - return () - endif () + if(${flag_cached}) + return() + endif() - foreach (config ${AOM_C_CONFIGS}) + foreach(config ${AOM_C_CONFIGS}) append_flag(${config} "${flag}") - endforeach () -endfunction () + endforeach() +endfunction() # Adds $flag to the CXX compiler command line. -function (append_cxx_flag flag) +function(append_cxx_flag flag) is_flag_present(AOM_CXX_FLAGS "${flag}" flag_cached) - if (${flag_cached}) - return () - endif () + if(${flag_cached}) + return() + endif() - foreach (config ${AOM_CXX_CONFIGS}) + foreach(config ${AOM_CXX_CONFIGS}) append_flag(${config} "${flag}") - endforeach () -endfunction () + endforeach() +endfunction() # Adds $flag to the C and CXX compiler command lines. -function (append_compiler_flag flag) +function(append_compiler_flag flag) append_c_flag(${flag}) append_cxx_flag(${flag}) -endfunction () +endfunction() # Adds $flag to the executable linker command line when not present. -function (append_exe_linker_flag flag) +function(append_exe_linker_flag flag) is_flag_present(AOM_EXE_LINKER_FLAGS "${flag}" flag_cached) - if (${flag_cached}) + if(${flag_cached}) return() - endif () + endif() append_flag(AOM_EXE_LINKER_FLAGS "${flag}") - foreach (config ${AOM_EXE_LINKER_CONFIGS}) + foreach(config ${AOM_EXE_LINKER_CONFIGS}) append_flag(${config} "${flag}") - endforeach () -endfunction () + endforeach() +endfunction() # Adds $flag to the link flags for $target. -function (append_link_flag_to_target target flag) +function(append_link_flag_to_target target flag) unset(target_link_flags) get_target_property(target_link_flags ${target} LINK_FLAGS) - if (target_link_flags) + if(target_link_flags) is_flag_present(target_link_flags "${flag}" flag_found) - if (${flag_found}) + if(${flag_found}) return() - endif () - set(target_link_flags "${target_link_flags} ${flags}") - else () - set(target_link_flags "${flags}") - endif () + endif() + set(target_link_flags "${target_link_flags} ${flag}") + else() + set(target_link_flags "${flag}") + endif() set_target_properties(${target} PROPERTIES LINK_FLAGS ${target_link_flags}) -endfunction () +endfunction() # Adds $flag to executable linker flags, and makes sure C/CXX builds still work. -function (require_linker_flag flag) - if (DEBUG_CMAKE_DISABLE_COMPILER_TESTS) +function(require_linker_flag flag) + if(DEBUG_CMAKE_DISABLE_COMPILER_TESTS) return() - endif () + endif() append_exe_linker_flag(${flag}) @@ -331,42 +332,42 @@ function (require_linker_flag flag) unset(cxx_passed) aom_check_cxx_compiles("LINKER_FLAG_CXX_TEST(${flag})" "" cxx_passed) - if (NOT c_passed OR NOT cxx_passed) + if(NOT c_passed OR NOT cxx_passed) message(FATAL_ERROR "Linker flag test for ${flag} failed.") - endif () -endfunction () + endif() +endfunction() # Appends flags in $AOM_EXTRA_<TYPE>_FLAGS variables to the flags used at build # time. -function (set_user_flags) +function(set_user_flags) + # Linker flags are handled first because some C/CXX flags require that a # linker flag is present at link time. - if (AOM_EXTRA_EXE_LINKER_FLAGS) + if(AOM_EXTRA_EXE_LINKER_FLAGS) is_flag_present(AOM_EXE_LINKER_FLAGS "${AOM_EXTRA_EXE_LINKER_FLAGS}" extra_present) - if (NOT ${extra_present}) + if(NOT ${extra_present}) require_linker_flag("${AOM_EXTRA_EXE_LINKER_FLAGS}") - endif () - endif () - if (AOM_EXTRA_AS_FLAGS) + endif() + endif() + if(AOM_EXTRA_AS_FLAGS) + # TODO(tomfinegan): assembler flag testing would be a good thing to have. is_flag_present(AOM_AS_FLAGS "${AOM_EXTRA_AS_FLAGS}" extra_present) - if (NOT ${extra_present}) + if(NOT ${extra_present}) append_flag(AOM_AS_FLAGS "${AOM_EXTRA_AS_FLAGS}") - endif () - endif () - if (AOM_EXTRA_C_FLAGS) + endif() + endif() + if(AOM_EXTRA_C_FLAGS) is_flag_present(AOM_C_FLAGS "${AOM_EXTRA_C_FLAGS}" extra_present) - if (NOT ${extra_present}) + if(NOT ${extra_present}) require_c_flag("${AOM_EXTRA_C_FLAGS}" YES) - endif () - endif () - if (AOM_EXTRA_CXX_FLAGS) + endif() + endif() + if(AOM_EXTRA_CXX_FLAGS) is_flag_present(AOM_CXX_FLAGS "${AOM_EXTRA_CXX_FLAGS}" extra_present) - if (NOT ${extra_present}) + if(NOT ${extra_present}) require_cxx_flag("${AOM_EXTRA_CXX_FLAGS}" YES) - endif () - endif () -endfunction () - -endif () # AOM_BUILD_CMAKE_COMPILER_FLAGS_CMAKE_ + endif() + endif() +endfunction() diff --git a/third_party/aom/build/cmake/compiler_tests.cmake b/third_party/aom/build/cmake/compiler_tests.cmake index 8a73ec8ff..f115610ba 100644 --- a/third_party/aom/build/cmake/compiler_tests.cmake +++ b/third_party/aom/build/cmake/compiler_tests.cmake @@ -1,26 +1,30 @@ -## -## 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. -## -if (NOT AOM_BUILD_CMAKE_COMPILER_TESTS_CMAKE_) +# +# 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. +# +if(AOM_BUILD_CMAKE_COMPILER_TESTS_CMAKE_) + return() +endif() # AOM_BUILD_CMAKE_COMPILER_TESTS_CMAKE_ set(AOM_BUILD_CMAKE_COMPILER_TESTS_CMAKE_ 1) include(CheckCSourceCompiles) include(CheckCXXSourceCompiles) # CMake passes command line flags like this: -# $compiler $lang_flags $lang_flags_config ... +# +# * $compiler $lang_flags $lang_flags_config ... +# # To ensure the flags tested here and elsewhere are obeyed a list of active # build configuration types is built, and flags are applied to the flag strings # for each configuration currently active for C and CXX builds as determined by # reading $CMAKE_CONFIGURATION_TYPES and $CMAKE_BUILD_TYPE. When -# $CMAKE_CONFIGURATION_TYPES is non-empty a multi-configuration generator is in +# $CMAKE_CONFIGURATION_TYPES is non-empty a multi- configuration generator is in # use: currently this includes MSVC and Xcode. For other generators # $CMAKE_BUILD_TYPE is used. For both cases AOM_<LANG>_CONFIGS is populated with # CMake string variable names that contain flags for the currently available @@ -28,19 +32,19 @@ include(CheckCXXSourceCompiles) unset(AOM_C_CONFIGS) unset(AOM_CXX_CONFIGS) list(LENGTH CMAKE_CONFIGURATION_TYPES num_configs) -if (${num_configs} GREATER 0) - foreach (config ${CMAKE_CONFIGURATION_TYPES}) +if(${num_configs} GREATER 0) + foreach(config ${CMAKE_CONFIGURATION_TYPES}) string(TOUPPER ${config} config) list(APPEND AOM_C_CONFIGS "CMAKE_C_FLAGS_${config}") list(APPEND AOM_CXX_CONFIGS "CMAKE_CXX_FLAGS_${config}") list(APPEND AOM_EXE_LINKER_CONFIGS "CMAKE_EXE_LINKER_FLAGS_${config}") - endforeach () -else () + endforeach() +else() string(TOUPPER ${CMAKE_BUILD_TYPE} config) set(AOM_C_CONFIGS "CMAKE_C_FLAGS_${config}") set(AOM_CXX_CONFIGS "CMAKE_CXX_FLAGS_${config}") set(AOM_EXE_LINKER_CONFIGS "CMAKE_EXE_LINKER_FLAGS_${config}") -endif () +endif() # The basic main() function used in all compile tests. set(AOM_C_MAIN "\nint main(void) { return 0; }") @@ -55,120 +59,117 @@ set(AOM_CXX_FAILED_TESTS) function(aom_push_var var new_value) set(SAVED_${var} ${${var}} PARENT_SCOPE) set(${var} "${${var}} ${new_value}" PARENT_SCOPE) -endfunction () +endfunction() function(aom_pop_var var) set(var ${SAVED_${var}} PARENT_SCOPE) unset(SAVED_${var} PARENT_SCOPE) -endfunction () +endfunction() # Confirms $test_source compiles and stores $test_name in one of # $AOM_C_PASSED_TESTS or $AOM_C_FAILED_TESTS depending on out come. When the -# test passes $result_var is set to 1. When it fails $result_var is unset. -# The test is not run if the test name is found in either of the passed or -# failed test variables. +# test passes $result_var is set to 1. When it fails $result_var is unset. The +# test is not run if the test name is found in either of the passed or failed +# test variables. function(aom_check_c_compiles test_name test_source result_var) - if (DEBUG_CMAKE_DISABLE_COMPILER_TESTS) + if(DEBUG_CMAKE_DISABLE_COMPILER_TESTS) return() - endif () + endif() unset(C_TEST_PASSED CACHE) unset(C_TEST_FAILED CACHE) string(FIND "${AOM_C_PASSED_TESTS}" "${test_name}" C_TEST_PASSED) string(FIND "${AOM_C_FAILED_TESTS}" "${test_name}" C_TEST_FAILED) - if (${C_TEST_PASSED} EQUAL -1 AND ${C_TEST_FAILED} EQUAL -1) + if(${C_TEST_PASSED} EQUAL -1 AND ${C_TEST_FAILED} EQUAL -1) unset(C_TEST_COMPILED CACHE) message("Running C compiler test: ${test_name}") check_c_source_compiles("${test_source} ${AOM_C_MAIN}" C_TEST_COMPILED) set(${result_var} ${C_TEST_COMPILED} PARENT_SCOPE) - if (C_TEST_COMPILED) - set(AOM_C_PASSED_TESTS "${AOM_C_PASSED_TESTS} ${test_name}" CACHE STRING - "" FORCE) - else () - set(AOM_C_FAILED_TESTS "${AOM_C_FAILED_TESTS} ${test_name}" CACHE STRING - "" FORCE) + if(C_TEST_COMPILED) + set(AOM_C_PASSED_TESTS "${AOM_C_PASSED_TESTS} ${test_name}" + CACHE STRING "" FORCE) + else() + set(AOM_C_FAILED_TESTS "${AOM_C_FAILED_TESTS} ${test_name}" + CACHE STRING "" FORCE) message("C Compiler test ${test_name} failed.") - endif () - elseif (NOT ${C_TEST_PASSED} EQUAL -1) + endif() + elseif(NOT ${C_TEST_PASSED} EQUAL -1) set(${result_var} 1 PARENT_SCOPE) - else () # ${C_TEST_FAILED} NOT EQUAL -1 + else() # ${C_TEST_FAILED} NOT EQUAL -1 unset(${result_var} PARENT_SCOPE) - endif () -endfunction () + endif() +endfunction() # Confirms $test_source compiles and stores $test_name in one of # $AOM_CXX_PASSED_TESTS or $AOM_CXX_FAILED_TESTS depending on out come. When the -# test passes $result_var is set to 1. When it fails $result_var is unset. -# The test is not run if the test name is found in either of the passed or -# failed test variables. +# test passes $result_var is set to 1. When it fails $result_var is unset. The +# test is not run if the test name is found in either of the passed or failed +# test variables. function(aom_check_cxx_compiles test_name test_source result_var) - if (DEBUG_CMAKE_DISABLE_COMPILER_TESTS) + if(DEBUG_CMAKE_DISABLE_COMPILER_TESTS) return() - endif () + endif() unset(CXX_TEST_PASSED CACHE) unset(CXX_TEST_FAILED CACHE) string(FIND "${AOM_CXX_PASSED_TESTS}" "${test_name}" CXX_TEST_PASSED) string(FIND "${AOM_CXX_FAILED_TESTS}" "${test_name}" CXX_TEST_FAILED) - if (${CXX_TEST_PASSED} EQUAL -1 AND ${CXX_TEST_FAILED} EQUAL -1) + if(${CXX_TEST_PASSED} EQUAL -1 AND ${CXX_TEST_FAILED} EQUAL -1) unset(CXX_TEST_COMPILED CACHE) message("Running CXX compiler test: ${test_name}") check_cxx_source_compiles("${test_source} ${AOM_CXX_MAIN}" CXX_TEST_COMPILED) set(${result_var} ${CXX_TEST_COMPILED} PARENT_SCOPE) - if (CXX_TEST_COMPILED) - set(AOM_CXX_PASSED_TESTS "${AOM_CXX_PASSED_TESTS} ${test_name}" CACHE - STRING "" FORCE) - else () - set(AOM_CXX_FAILED_TESTS "${AOM_CXX_FAILED_TESTS} ${test_name}" CACHE - STRING "" FORCE) + if(CXX_TEST_COMPILED) + set(AOM_CXX_PASSED_TESTS "${AOM_CXX_PASSED_TESTS} ${test_name}" + CACHE STRING "" FORCE) + else() + set(AOM_CXX_FAILED_TESTS "${AOM_CXX_FAILED_TESTS} ${test_name}" + CACHE STRING "" FORCE) message("CXX Compiler test ${test_name} failed.") - endif () - elseif (NOT ${CXX_TEST_PASSED} EQUAL -1) + endif() + elseif(NOT ${CXX_TEST_PASSED} EQUAL -1) set(${result_var} 1 PARENT_SCOPE) - else () # ${CXX_TEST_FAILED} NOT EQUAL -1 + else() # ${CXX_TEST_FAILED} NOT EQUAL -1 unset(${result_var} PARENT_SCOPE) - endif () -endfunction () + endif() +endfunction() # Convenience function that confirms $test_source compiles as C and C++. # $result_var is set to 1 when both tests are successful, and 0 when one or both -# tests fail. -# Note: This function is intended to be used to write to result variables that -# are expanded via configure_file(). $result_var is set to 1 or 0 to allow -# direct usage of the value in generated source files. +# tests fail. Note: This function is intended to be used to write to result +# variables that are expanded via configure_file(). $result_var is set to 1 or 0 +# to allow direct usage of the value in generated source files. function(aom_check_source_compiles test_name test_source result_var) unset(C_PASSED) unset(CXX_PASSED) aom_check_c_compiles(${test_name} ${test_source} C_PASSED) aom_check_cxx_compiles(${test_name} ${test_source} CXX_PASSED) - if (C_PASSED AND CXX_PASSED) + if(C_PASSED AND CXX_PASSED) set(${result_var} 1 PARENT_SCOPE) - else () + else() set(${result_var} 0 PARENT_SCOPE) - endif () -endfunction () + endif() +endfunction() # When inline support is detected for the current compiler the supported # inlining keyword is written to $result in caller scope. -function (aom_get_inline result) +function(aom_get_inline result) aom_check_source_compiles("inline_check_1" "static inline void function(void) {}" HAVE_INLINE_1) - if (HAVE_INLINE_1 EQUAL 1) + if(HAVE_INLINE_1 EQUAL 1) set(${result} "inline" PARENT_SCOPE) return() - endif () + endif() # Check __inline. aom_check_source_compiles("inline_check_2" "static __inline void function(void) {}" HAVE_INLINE_2) - if (HAVE_INLINE_2 EQUAL 1) + if(HAVE_INLINE_2 EQUAL 1) set(${result} "__inline" PARENT_SCOPE) - endif () -endfunction () - -endif () # AOM_BUILD_CMAKE_COMPILER_TESTS_CMAKE_ + endif() +endfunction() diff --git a/third_party/aom/build/cmake/cpu.cmake b/third_party/aom/build/cmake/cpu.cmake index 5d0b1a6e8..6f866d04d 100644 --- a/third_party/aom/build/cmake/cpu.cmake +++ b/third_party/aom/build/cmake/cpu.cmake @@ -1,72 +1,99 @@ -## -## Copyright (c) 2017, 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. -## -if ("${AOM_TARGET_CPU}" STREQUAL "arm64") +# +# Copyright (c) 2017, 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. +# + +if("${AOM_TARGET_CPU}" STREQUAL "arm64") set(ARCH_ARM 1) - set(HAVE_NEON 1) set(RTCD_ARCH_ARM "yes") - set(RTCD_HAVE_NEON "yes") -elseif ("${AOM_TARGET_CPU}" MATCHES "^armv7") + + if(ENABLE_NEON) + set(HAVE_NEON 1) + set(RTCD_HAVE_NEON "yes") + else() + set(HAVE_NEON 0) + set(AOM_RTCD_FLAGS ${AOM_RTCD_FLAGS} --disable-neon) + endif() +elseif("${AOM_TARGET_CPU}" MATCHES "^armv7") set(ARCH_ARM 1) - set(HAVE_NEON 1) - set(HAVE_NEON_ASM 1) set(RTCD_ARCH_ARM "yes") - set(RTCD_HAVE_NEON "yes") - set(RTCD_HAVE_NEON_ASM "yes") -elseif ("${AOM_TARGET_CPU}" MATCHES "^mips") + + if(ENABLE_NEON) + set(HAVE_NEON 1) + set(RTCD_HAVE_NEON "yes") + else() + set(HAVE_NEON 0) + set(AOM_RTCD_FLAGS ${AOM_RTCD_FLAGS} --disable-neon) + endif() +elseif("${AOM_TARGET_CPU}" MATCHES "^mips") set(ARCH_MIPS 1) + set(RTCD_ARCH_MIPS "yes") - if ("${AOM_TARGET_CPU}" STREQUAL "mips32") + if("${AOM_TARGET_CPU}" STREQUAL "mips32") set(HAVE_MIPS32 1) - elseif ("${AOM_TARGET_CPU}" STREQUAL "mips64") + set(RTCD_HAVE_MIPS32 "yes") + elseif("${AOM_TARGET_CPU}" STREQUAL "mips64") set(HAVE_MIPS64 1) - endif () + set(RTCD_HAVE_MIPS64 "yes") + endif() - set(RTCD_ARCH_MIPS "yes") - - if (HAVE_DSPR2) + # HAVE_DSPR2 is set by mips toolchain files. + if(ENABLE_DSPR2 AND HAVE_DSPR2) set(RTCD_HAVE_DSPR2 "yes") - endif () + else() + set(HAVE_DSPR2 0) + set(AOM_RTCD_FLAGS ${AOM_RTCD_FLAGS} --disable-dspr2) + endif() - if (HAVE_MSA) + # HAVE_MSA is set by mips toolchain files. + if(ENABLE_MSA AND HAVE_MSA) set(RTCD_HAVE_MSA "yes") - endif () -elseif ("${AOM_TARGET_CPU}" MATCHES "^x86") - if ("${AOM_TARGET_CPU}" STREQUAL "x86") + else() + set(HAVE_MSA 0) + set(AOM_RTCD_FLAGS ${AOM_RTCD_FLAGS} --disable-msa) + endif() +elseif("${AOM_TARGET_CPU}" MATCHES "ppc") + set(ARCH_PPC 1) + set(RTCD_ARCH_PPC "yes") + + if(ENABLE_VSX) + set(HAVE_VSX 1) + set(RTCD_HAVE_VSX "yes") + else() + set(HAVE_VSX 0) + set(AOM_RTCD_FLAGS ${AOM_RTCD_FLAGS} --disable-vsx) + endif() +elseif("${AOM_TARGET_CPU}" MATCHES "^x86") + if("${AOM_TARGET_CPU}" STREQUAL "x86") set(ARCH_X86 1) set(RTCD_ARCH_X86 "yes") - elseif ("${AOM_TARGET_CPU}" STREQUAL "x86_64") + elseif("${AOM_TARGET_CPU}" STREQUAL "x86_64") set(ARCH_X86_64 1) set(RTCD_ARCH_X86_64 "yes") - endif () + endif() - set(HAVE_MMX 1) - set(HAVE_SSE 1) - set(HAVE_SSE2 1) - set(HAVE_SSE3 1) - set(HAVE_SSSE3 1) - set(HAVE_SSE4_1 1) - set(HAVE_AVX 1) - set(HAVE_AVX2 1) - set(RTCD_HAVE_MMX "yes") - set(RTCD_HAVE_SSE "yes") - set(RTCD_HAVE_SSE2 "yes") - set(RTCD_HAVE_SSE3 "yes") - set(RTCD_HAVE_SSSE3 "yes") - set(RTCD_HAVE_SSE4_1 "yes") - set(RTCD_HAVE_AVX "yes") - set(RTCD_HAVE_AVX2 "yes") -endif () + set(X86_FLAVORS "MMX;SSE;SSE2;SSE3;SSSE3;SSE4_1;SSE4_2;AVX;AVX2") + foreach(flavor ${X86_FLAVORS}) + if(ENABLE_${flavor} AND NOT disable_remaining_flavors) + set(HAVE_${flavor} 1) + set(RTCD_HAVE_${flavor} "yes") + else() + set(disable_remaining_flavors 1) + set(HAVE_${flavor} 0) + string(TOLOWER ${flavor} flavor) + set(AOM_RTCD_FLAGS ${AOM_RTCD_FLAGS} --disable-${flavor}) + endif() + endforeach() +endif() -foreach (config_var ${AOM_CONFIG_VARS}) - if (${${config_var}}) +foreach(config_var ${AOM_CONFIG_VARS}) + if(${${config_var}}) set(RTCD_${config_var} yes) - endif () -endforeach () + endif() +endforeach() diff --git a/third_party/aom/build/cmake/dist.cmake b/third_party/aom/build/cmake/dist.cmake index ad1e069fe..6f81736f0 100644 --- a/third_party/aom/build/cmake/dist.cmake +++ b/third_party/aom/build/cmake/dist.cmake @@ -1,63 +1,64 @@ -## -## Copyright (c) 2017, 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. -## +# +# Copyright (c) 2017, 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. +# cmake_minimum_required(VERSION 3.5) # Converts spaces in $in_string to semicolons and writes the output to # $out_string. In CMake's eyes this converts the input string to a list. -function (listify_string in_string out_string) +function(listify_string in_string out_string) string(REPLACE " " ";" ${out_string} ${in_string}) set(${out_string} "${${out_string}}" PARENT_SCOPE) -endfunction () +endfunction() -set(REQUIRED_ARGS "AOM_ROOT" "AOM_CONFIG_DIR" "AOM_DIST_DIR" "AOM_DIST_INCLUDES" - "AOM_DIST_LIBS" "ENABLE_DOCS") +set(REQUIRED_ARGS "AOM_ROOT" "AOM_CONFIG_DIR" "AOM_DIST_DIR" + "AOM_DIST_INCLUDES" "AOM_DIST_LIBS" "ENABLE_DOCS") -foreach (arg ${REQUIRED_ARGS}) - if ("${${arg}}" STREQUAL "") +foreach(arg ${REQUIRED_ARGS}) + if("${${arg}}" STREQUAL "") message(FATAL_ERROR "${arg} must not be empty.") - endif () -endforeach () + endif() +endforeach() -if (ENABLE_DOCS) +if(ENABLE_DOCS) file(INSTALL "${AOM_CONFIG_DIR}/docs" DESTINATION "${AOM_DIST_DIR}") -endif () +endif() -if (AOM_DIST_EXAMPLES) +if(AOM_DIST_EXAMPLES) listify_string("${AOM_DIST_EXAMPLES}" "AOM_DIST_EXAMPLES") - foreach (example ${AOM_DIST_EXAMPLES}) - if (NOT "${example}" MATCHES "aomdec\|aomenc") + foreach(example ${AOM_DIST_EXAMPLES}) + if(NOT "${example}" MATCHES "aomdec\|aomenc") file(INSTALL "${example}" DESTINATION "${AOM_DIST_DIR}/bin/examples") - endif () - endforeach () -endif () + endif() + endforeach() +endif() -if (AOM_DIST_TOOLS) - foreach (tool ${AOM_DIST_TOOLS}) +if(AOM_DIST_TOOLS) + listify_string("${AOM_DIST_TOOLS}" "AOM_DIST_TOOLS") + foreach(tool ${AOM_DIST_TOOLS}) file(INSTALL "${tool}" DESTINATION "${AOM_DIST_DIR}/bin/tools") - endforeach () -endif () + endforeach() +endif() -if (AOM_DIST_APPS) +if(AOM_DIST_APPS) listify_string("${AOM_DIST_APPS}" "AOM_DIST_APPS") - foreach (app ${AOM_DIST_APPS}) + foreach(app ${AOM_DIST_APPS}) file(INSTALL "${app}" DESTINATION "${AOM_DIST_DIR}/bin") - endforeach () -endif () + endforeach() +endif() listify_string("${AOM_DIST_INCLUDES}" "AOM_DIST_INCLUDES") -foreach (inc ${AOM_DIST_INCLUDES}) +foreach(inc ${AOM_DIST_INCLUDES}) file(INSTALL "${inc}" DESTINATION "${AOM_DIST_DIR}/include/aom") -endforeach () +endforeach() listify_string("${AOM_DIST_LIBS}" "AOM_DIST_LIBS") -foreach (lib ${AOM_DIST_LIBS}) +foreach(lib ${AOM_DIST_LIBS}) file(INSTALL "${lib}" DESTINATION "${AOM_DIST_DIR}/lib") -endforeach () +endforeach() diff --git a/third_party/aom/build/cmake/exports.cmake b/third_party/aom/build/cmake/exports.cmake index 8153aad98..5abfc9a5f 100644 --- a/third_party/aom/build/cmake/exports.cmake +++ b/third_party/aom/build/cmake/exports.cmake @@ -1,42 +1,41 @@ -## -## Copyright (c) 2017, 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. -## -if (NOT AOM_BUILD_CMAKE_EXPORTS_CMAKE_) +# +# Copyright (c) 2017, 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. +# +if(AOM_BUILD_CMAKE_EXPORTS_CMAKE_) + return() +endif() # AOM_BUILD_CMAKE_EXPORTS_CMAKE_ set(AOM_BUILD_CMAKE_EXPORTS_CMAKE_ 1) include("${AOM_ROOT}/build/cmake/exports_sources.cmake") # Creates the custom target which handles generation of the symbol export lists. -function (setup_exports_target) - if ("${AOM_TARGET_SYSTEM}" STREQUAL "Darwin") +function(setup_exports_target) + if("${AOM_TARGET_SYSTEM}" STREQUAL "Darwin") set(symbol_file_ext "syms") - elseif ("${AOM_TARGET_SYSTEM}" MATCHES "Windows\|MSYS" AND MSVC) + elseif("${AOM_TARGET_SYSTEM}" MATCHES "Windows\|MSYS" AND MSVC) set(symbol_file_ext "def") - else () + else() set(symbol_file_ext "ver") - endif () + endif() set(aom_sym_file "${AOM_CONFIG_DIR}/libaom.${symbol_file_ext}") add_custom_target(generate_exports - COMMAND ${CMAKE_COMMAND} - -DAOM_ROOT="${AOM_ROOT}" - -DAOM_CONFIG_DIR="${AOM_CONFIG_DIR}" - -DAOM_TARGET_SYSTEM=${AOM_TARGET_SYSTEM} - -DAOM_SYM_FILE="${aom_sym_file}" - -DAOM_MSVC=${MSVC} - -DAOM_XCODE=${XCODE} - -DCONFIG_NAME=$<CONFIG> - -DCONFIG_AV1_DECODER=${CONFIG_AV1_DECODER} - -DCONFIG_AV1_ENCODER=${CONFIG_AV1_ENCODER} - -P "${AOM_ROOT}/build/cmake/generate_exports.cmake" + COMMAND ${CMAKE_COMMAND} -DAOM_ROOT="${AOM_ROOT}" + -DAOM_CONFIG_DIR="${AOM_CONFIG_DIR}" + -DAOM_TARGET_SYSTEM=${AOM_TARGET_SYSTEM} + -DAOM_SYM_FILE="${aom_sym_file}" -DAOM_MSVC=${MSVC} + -DAOM_XCODE=${XCODE} -DCONFIG_NAME=$<CONFIG> + -DCONFIG_AV1_DECODER=${CONFIG_AV1_DECODER} + -DCONFIG_AV1_ENCODER=${CONFIG_AV1_ENCODER} -P + "${AOM_ROOT}/build/cmake/generate_exports.cmake" SOURCES ${AOM_EXPORTS_SOURCES} DEPENDS ${AOM_EXPORTS_SOURCES}) @@ -44,22 +43,20 @@ function (setup_exports_target) # creating the dylib. add_dependencies(aom generate_exports) - if (APPLE) - set_property(TARGET aom APPEND_STRING PROPERTY LINK_FLAGS - "-exported_symbols_list ${aom_sym_file}") - elseif (WIN32) + if(APPLE) + set_property(TARGET aom APPEND_STRING + PROPERTY LINK_FLAGS "-exported_symbols_list ${aom_sym_file}") + elseif(WIN32) message(FATAL_ERROR "Windows DLL builds not supported yet.") - if (NOT MSVC) - set_property(TARGET aom APPEND_STRING PROPERTY LINK_FLAGS - "-Wl,--version-script ${aom_sym_file}") - endif () + if(NOT MSVC) + set_property(TARGET aom APPEND_STRING + PROPERTY LINK_FLAGS "-Wl,--version-script ${aom_sym_file}") + endif() # TODO(tomfinegan): Sort out the import lib situation and flags for MSVC. - else () - set_property(TARGET aom APPEND_STRING PROPERTY LINK_FLAGS - "-Wl,--version-script,${aom_sym_file}") - endif () -endfunction () - -endif () # AOM_BUILD_CMAKE_EXPORTS_CMAKE_ + else() + set_property(TARGET aom APPEND_STRING + PROPERTY LINK_FLAGS "-Wl,--version-script,${aom_sym_file}") + endif() +endfunction() diff --git a/third_party/aom/build/cmake/exports_sources.cmake b/third_party/aom/build/cmake/exports_sources.cmake index 36f79ee09..48790dbaa 100644 --- a/third_party/aom/build/cmake/exports_sources.cmake +++ b/third_party/aom/build/cmake/exports_sources.cmake @@ -1,30 +1,26 @@ -## -## Copyright (c) 2017, 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. -## -if (NOT AOM_BUILD_CMAKE_EXPORTS_SOURCES_CMAKE_) +# +# Copyright (c) 2017, 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. +# +if(AOM_BUILD_CMAKE_EXPORTS_SOURCES_CMAKE_) + return() +endif() # AOM_BUILD_CMAKE_EXPORTS_SOURCES_CMAKE_ set(AOM_BUILD_CMAKE_EXPORTS_SOURCES_CMAKE_ 1) set(AOM_EXPORTS_SOURCES "${AOM_ROOT}/aom/exports_com") -if (CONFIG_AV1_DECODER) - set(AOM_EXPORTS_SOURCES - ${AOM_EXPORTS_SOURCES} - "${AOM_ROOT}/aom/exports_dec" +if(CONFIG_AV1_DECODER) + set(AOM_EXPORTS_SOURCES ${AOM_EXPORTS_SOURCES} "${AOM_ROOT}/aom/exports_dec" "${AOM_ROOT}/av1/exports_dec") -endif () +endif() -if (CONFIG_AV1_ENCODER) - set(AOM_EXPORTS_SOURCES - ${AOM_EXPORTS_SOURCES} - "${AOM_ROOT}/aom/exports_enc" +if(CONFIG_AV1_ENCODER) + set(AOM_EXPORTS_SOURCES ${AOM_EXPORTS_SOURCES} "${AOM_ROOT}/aom/exports_enc" "${AOM_ROOT}/av1/exports_enc") -endif () - -endif () # AOM_BUILD_CMAKE_EXPORTS_SOURCES_CMAKE_ +endif() diff --git a/third_party/aom/build/cmake/generate_aom_config_templates.cmake b/third_party/aom/build/cmake/generate_aom_config_templates.cmake index effa456fc..6ea02295c 100644 --- a/third_party/aom/build/cmake/generate_aom_config_templates.cmake +++ b/third_party/aom/build/cmake/generate_aom_config_templates.cmake @@ -1,18 +1,19 @@ -## -## Copyright (c) 2017, 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. -## +# +# Copyright (c) 2017, 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. +# cmake_minimum_required(VERSION 3.5) string(TIMESTAMP year "%Y") -set(asm_file_header_block -"\; +set( + asm_file_header_block + "\; \; Copyright (c) ${year}, Alliance for Open Media. All rights reserved \; \; This source code is subject to the terms of the BSD 2 Clause License and @@ -22,9 +23,11 @@ set(asm_file_header_block \; 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. \; -") -set(h_file_header_block -"/* +" + ) +set( + h_file_header_block + "/* * Copyright (c) ${year}, Alliance for Open Media. All rights reserved * * This source code is subject to the terms of the BSD 2 Clause License and @@ -36,9 +39,11 @@ set(h_file_header_block */ \#ifndef AOM_CONFIG_H_ \#define AOM_CONFIG_H_ -") -set(cmake_file_header_block -"## +" + ) +set( + cmake_file_header_block + "## ## Copyright (c) ${year}, Alliance for Open Media. All rights reserved ## ## This source code is subject to the terms of the BSD 2 Clause License and @@ -48,59 +53,58 @@ set(cmake_file_header_block ## 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. ## -") +" + ) # Terminates cmake execution when $var_name is an empty string, or the variable # name it contains does not expand to an existing directory. -function (check_directory_var var_name) - if ("${var_name}" STREQUAL "") +function(check_directory_var var_name) + if("${var_name}" STREQUAL "") message(FATAL_ERROR "The CMake variable ${var_name} must be defined.") - endif () + endif() - if (NOT EXISTS "${${var_name}}") + if(NOT EXISTS "${${var_name}}") message(FATAL_ERROR "${${var_name}} (${var_name}) missing.") - endif () -endfunction () + endif() +endfunction() check_directory_var(AOM_CONFIG_DIR) check_directory_var(AOM_ROOT) set(AOM_DEFAULTS "${AOM_ROOT}/build/cmake/aom_config_defaults.cmake") -if (NOT EXISTS "${AOM_DEFAULTS}") +if(NOT EXISTS "${AOM_DEFAULTS}") message(FATAL_ERROR - "Configuration default values file (${AOM_DEFAULTS}) missing.") -endif () + "Configuration default values file (${AOM_DEFAULTS}) missing.") +endif() include("${AOM_ROOT}/build/cmake/aom_config_defaults.cmake") get_cmake_property(cmake_cache_vars CACHE_VARIABLES) -set(aom_config_h_template "${AOM_CONFIG_DIR}/aom_config.h.cmake") +set(aom_config_h_template "${AOM_CONFIG_DIR}/config/aom_config.h.cmake") file(WRITE "${aom_config_h_template}" ${h_file_header_block}) foreach(cache_var ${cmake_cache_vars}) - if (NOT "${cache_var}" MATCHES "AOM_CONFIG_DIR\|AOM_ROOT\|^CMAKE_") - file(APPEND - "${aom_config_h_template}" "\#define ${cache_var} \${${cache_var}}\n") - endif () + if(NOT "${cache_var}" MATCHES "AOM_CONFIG_DIR\|AOM_ROOT\|^CMAKE_") + file(APPEND "${aom_config_h_template}" + "\#define ${cache_var} \${${cache_var}}\n") + endif() endforeach() file(APPEND "${aom_config_h_template}" "\#endif /* AOM_CONFIG_H_ */") -set(aom_asm_config_template "${AOM_CONFIG_DIR}/aom_config.asm.cmake") +set(aom_asm_config_template "${AOM_CONFIG_DIR}/config/aom_config.asm.cmake") file(WRITE "${aom_asm_config_template}" ${asm_file_header_block}) foreach(cache_var ${cmake_cache_vars}) - if (NOT "${cache_var}" MATCHES - "AOM_CONFIG_DIR\|AOM_ROOT\|^CMAKE_\|INLINE\|RESTRICT") + if(NOT "${cache_var}" MATCHES "AOM_CONFIG_DIR\|AOM_ROOT\|^CMAKE_\|INLINE") file(APPEND "${aom_asm_config_template}" - "${cache_var} equ \${${cache_var}}\n") - endif () -endforeach () + "${cache_var} equ \${${cache_var}}\n") + endif() +endforeach() set(aom_rtcd_config_template "${AOM_CONFIG_DIR}/rtcd_config.cmake") file(WRITE "${aom_rtcd_config_template}" ${cmake_file_header_block}) foreach(cache_var ${cmake_cache_vars}) - if (NOT "${cache_var}" MATCHES - "AOM_CONFIG_DIR\|AOM_ROOT\|^CMAKE_\|INLINE\|RESTRICT") + if(NOT "${cache_var}" MATCHES "AOM_CONFIG_DIR\|AOM_ROOT\|^CMAKE_\|INLINE") file(APPEND "${aom_rtcd_config_template}" - "${cache_var}=\${RTCD_${cache_var}}\n") - endif () -endforeach () + "${cache_var}=\${RTCD_${cache_var}}\n") + endif() +endforeach() diff --git a/third_party/aom/build/cmake/generate_exports.cmake b/third_party/aom/build/cmake/generate_exports.cmake index baa29828b..4dce3a671 100644 --- a/third_party/aom/build/cmake/generate_exports.cmake +++ b/third_party/aom/build/cmake/generate_exports.cmake @@ -1,64 +1,60 @@ -## -## Copyright (c) 2017, 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. -## +# +# Copyright (c) 2017, 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. +# cmake_minimum_required(VERSION 3.5) -set(REQUIRED_ARGS "AOM_ROOT" "AOM_CONFIG_DIR" "AOM_TARGET_SYSTEM" "AOM_SYM_FILE" - "CONFIG_AV1_DECODER" "CONFIG_AV1_ENCODER") +set(REQUIRED_ARGS "AOM_ROOT" "AOM_CONFIG_DIR" "AOM_TARGET_SYSTEM" + "AOM_SYM_FILE" "CONFIG_AV1_DECODER" "CONFIG_AV1_ENCODER") -foreach (arg ${REQUIRED_ARGS}) - if ("${${arg}}" STREQUAL "") +foreach(arg ${REQUIRED_ARGS}) + if("${${arg}}" STREQUAL "") message(FATAL_ERROR "${arg} must not be empty.") - endif () -endforeach () + endif() +endforeach() include("${AOM_ROOT}/build/cmake/exports_sources.cmake") -if ("${AOM_TARGET_SYSTEM}" STREQUAL "Darwin") +if("${AOM_TARGET_SYSTEM}" STREQUAL "Darwin") set(symbol_prefix "_") -elseif ("${AOM_TARGET_SYSTEM}" MATCHES "Windows\|MSYS" AND AOM_MSVC) +elseif("${AOM_TARGET_SYSTEM}" MATCHES "Windows\|MSYS" AND AOM_MSVC) set(symbol_prefix "_") - file(WRITE "${AOM_SYM_FILE}" - "LIBRARY libaom INITINSTANCE TERMINSTANCE\n" - "DATA MULTIPLE NONSHARED\n" - "EXPORTS\n") -else () + file(WRITE "${AOM_SYM_FILE}" "LIBRARY libaom INITINSTANCE TERMINSTANCE\n" + "DATA MULTIPLE NONSHARED\n" "EXPORTS\n") +else() set(symbol_suffix ";") -endif () +endif() set(aom_sym_file "${AOM_SYM_FILE}") -if ("${AOM_TARGET_SYSTEM}" STREQUAL "Darwin") +if("${AOM_TARGET_SYSTEM}" STREQUAL "Darwin") file(REMOVE "${aom_sym_file}") -elseif ("${AOM_TARGET_SYSTEM}" MATCHES "Windows\|MSYS") - file(WRITE "${aom_sym_file}" - "LIBRARY libaom INITINSTANCE TERMINSTANCE\n" - "DATA MULTIPLE NONSHARED\n" - "EXPORTS\n") -else () +elseif("${AOM_TARGET_SYSTEM}" MATCHES "Windows\|MSYS") + file(WRITE "${aom_sym_file}" "LIBRARY libaom INITINSTANCE TERMINSTANCE\n" + "DATA MULTIPLE NONSHARED\n" "EXPORTS\n") +else() file(WRITE "${aom_sym_file}" "{ global:\n") -endif () +endif() -foreach (export_file ${AOM_EXPORTS_SOURCES}) +foreach(export_file ${AOM_EXPORTS_SOURCES}) file(STRINGS "${export_file}" exported_file_data) set(exported_symbols "${exported_symbols} ${exported_file_data};") string(STRIP "${exported_symbols}" exported_symbols) -endforeach () +endforeach() -foreach (exported_symbol ${exported_symbols}) +foreach(exported_symbol ${exported_symbols}) string(STRIP "${exported_symbol}" exported_symbol) string(REGEX REPLACE "text \|data " "" "exported_symbol" "${exported_symbol}") set(exported_symbol "${symbol_prefix}${exported_symbol}${symbol_suffix}") file(APPEND "${aom_sym_file}" "${exported_symbol}\n") -endforeach () +endforeach() -if ("${aom_sym_file}" MATCHES "ver$") +if("${aom_sym_file}" MATCHES "ver$") file(APPEND "${aom_sym_file}" " };") -endif () +endif() diff --git a/third_party/aom/build/cmake/msvc_runtime.cmake b/third_party/aom/build/cmake/msvc_runtime.cmake index 3da5f7df6..9e4cbea43 100644 --- a/third_party/aom/build/cmake/msvc_runtime.cmake +++ b/third_party/aom/build/cmake/msvc_runtime.cmake @@ -1,30 +1,37 @@ -## -## Copyright (c) 2017, 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. -## -if (NOT AOM_BUILD_CMAKE_MSVC_RUNTIME_CMAKE_) +# +# Copyright (c) 2017, 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. +# +if(AOM_BUILD_CMAKE_MSVC_RUNTIME_CMAKE_) + return() +endif() # AOM_BUILD_CMAKE_MSVC_RUNTIME_CMAKE_ set(AOM_BUILD_CMAKE_MSVC_RUNTIME_CMAKE_ 1) -if (MSVC) +if(MSVC) + # CMake defaults to producing code linked to the DLL MSVC runtime. That will # not work with googletest, and isn't what we want anyway. - if (NOT "${MSVC_RUNTIME}" STREQUAL "dll") - foreach (flag_var - CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE - CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO - CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE - CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) - if (${flag_var} MATCHES "/MD") + if(NOT "${MSVC_RUNTIME}" STREQUAL "dll") + foreach(flag_var + CMAKE_C_FLAGS + CMAKE_C_FLAGS_DEBUG + CMAKE_C_FLAGS_RELEASE + CMAKE_C_FLAGS_MINSIZEREL + CMAKE_C_FLAGS_RELWITHDEBINFO + CMAKE_CXX_FLAGS + CMAKE_CXX_FLAGS_DEBUG + CMAKE_CXX_FLAGS_RELEASE + CMAKE_CXX_FLAGS_MINSIZEREL + CMAKE_CXX_FLAGS_RELWITHDEBINFO) + if(${flag_var} MATCHES "/MD") string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") - endif (${flag_var} MATCHES "/MD") - endforeach (flag_var) - endif () -endif () - -endif () # AOM_BUILD_CMAKE_MSVC_RUNTIME_CMAKE_ + endif(${flag_var} MATCHES "/MD") + endforeach(flag_var) + endif() +endif() diff --git a/third_party/aom/build/cmake/pkg_config.cmake b/third_party/aom/build/cmake/pkg_config.cmake index aee375f43..64e20214e 100644 --- a/third_party/aom/build/cmake/pkg_config.cmake +++ b/third_party/aom/build/cmake/pkg_config.cmake @@ -1,37 +1,36 @@ -## -## Copyright (c) 2017, 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. -## +# +# Copyright (c) 2017, 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. +# cmake_minimum_required(VERSION 3.5) -set(REQUIRED_ARGS - "AOM_ROOT" "AOM_CONFIG_DIR" "CMAKE_INSTALL_PREFIX" "CMAKE_PROJECT_NAME" - "CONFIG_MULTITHREAD" "HAVE_PTHREAD_H") +set(REQUIRED_ARGS "AOM_ROOT" "AOM_CONFIG_DIR" "CMAKE_INSTALL_PREFIX" + "CMAKE_PROJECT_NAME" "CONFIG_MULTITHREAD" "HAVE_PTHREAD_H") -foreach (arg ${REQUIRED_ARGS}) - if ("${${arg}}" STREQUAL "") +foreach(arg ${REQUIRED_ARGS}) + if("${${arg}}" STREQUAL "") message(FATAL_ERROR "${arg} must not be empty.") - endif () -endforeach () + endif() +endforeach() include("${AOM_ROOT}/build/cmake/util.cmake") -extract_version_string("${AOM_CONFIG_DIR}/aom_version.h" aom_version) +extract_version_string("${AOM_CONFIG_DIR}/config/aom_version.h" aom_version) # Create a version string suitable for comparison using the RPM version compare # algorithm: strip out everything after the number. string(FIND "${aom_version}" "-" dash_pos) -if (${dash_pos} EQUAL -1) +if(${dash_pos} EQUAL -1) set(package_version "${aom_version}") -else () +else() string(SUBSTRING "${aom_version}" 0 ${dash_pos} package_version) -endif () +endif() # Write pkg-config info. set(prefix "${CMAKE_INSTALL_PREFIX}") @@ -39,19 +38,21 @@ set(pkgconfig_file "${AOM_CONFIG_DIR}/aom.pc") string(TOLOWER ${CMAKE_PROJECT_NAME} pkg_name) file(WRITE "${pkgconfig_file}" "# libaom pkg-config.\n") file(APPEND "${pkgconfig_file}" "prefix=${prefix}\n") -file(APPEND "${pkgconfig_file}" "exec_prefix=${prefix}/bin\n") -file(APPEND "${pkgconfig_file}" "libdir=${prefix}/lib\n") -file(APPEND "${pkgconfig_file}" "includedir=${prefix}/include\n\n") +file(APPEND "${pkgconfig_file}" "exec_prefix=\${prefix}/bin\n") +file(APPEND "${pkgconfig_file}" "libdir=\${prefix}/lib\n") +file(APPEND "${pkgconfig_file}" "includedir=\${prefix}/include\n\n") file(APPEND "${pkgconfig_file}" "Name: ${pkg_name}\n") file(APPEND "${pkgconfig_file}" - "Description: AV1 codec library v${aom_version}.\n") + "Description: AV1 codec library v${aom_version}.\n") file(APPEND "${pkgconfig_file}" "Version: ${package_version}\n") file(APPEND "${pkgconfig_file}" "Requires:\n") file(APPEND "${pkgconfig_file}" "Conflicts:\n") -file(APPEND "${pkgconfig_file}" "Libs: -L${prefix}/lib -l${pkg_name} -lm\n") -if (CONFIG_MULTITHREAD AND HAVE_PTHREAD_H) +if(CONFIG_MULTITHREAD AND HAVE_PTHREAD_H) + file(APPEND "${pkgconfig_file}" + "Libs: -L\${prefix}/lib -l${pkg_name} -lm -lpthread\n") file(APPEND "${pkgconfig_file}" "Libs.private: -lm -lpthread\n") -else () +else() + file(APPEND "${pkgconfig_file}" "Libs: -L\${prefix}/lib -l${pkg_name} -lm\n") file(APPEND "${pkgconfig_file}" "Libs.private: -lm\n") -endif () -file(APPEND "${pkgconfig_file}" "Cflags: -I${prefix}/include\n") +endif() +file(APPEND "${pkgconfig_file}" "Cflags: -I\${prefix}/include\n") diff --git a/third_party/aom/build/cmake/sanitizers.cmake b/third_party/aom/build/cmake/sanitizers.cmake index 2b9067868..77708e101 100644 --- a/third_party/aom/build/cmake/sanitizers.cmake +++ b/third_party/aom/build/cmake/sanitizers.cmake @@ -1,19 +1,21 @@ -## -## Copyright (c) 2017, 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. -## -if (NOT AOM_BUILD_CMAKE_SANITIZERS_CMAKE_) +# +# Copyright (c) 2017, 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. +# +if(AOM_BUILD_CMAKE_SANITIZERS_CMAKE_) + return() +endif() # AOM_BUILD_CMAKE_SANITIZERS_CMAKE_ set(AOM_BUILD_CMAKE_SANITIZERS_CMAKE_ 1) -if (MSVC OR NOT SANITIZE) - return () -endif () +if(MSVC OR NOT SANITIZE) + return() +endif() include("${AOM_ROOT}/build/cmake/compiler_flags.cmake") @@ -26,4 +28,11 @@ require_compiler_flag("-fsanitize=${SANITIZE}" YES) # Make callstacks accurate. require_compiler_flag("-fno-omit-frame-pointer -fno-optimize-sibling-calls" YES) -endif() # AOM_BUILD_CMAKE_SANITIZERS_CMAKE_ +# Fix link errors due to missing rt compiler lib in 32-bit builds. +# http://llvm.org/bugs/show_bug.cgi?id=17693 +if(CMAKE_C_COMPILER_ID MATCHES "Clang") + if(${CMAKE_SIZEOF_VOID_P} EQUAL 4 AND "${SANITIZE}" MATCHES + "integer|undefined") + require_linker_flag("--rtlib=compiler-rt -lgcc_s") + endif() +endif() diff --git a/third_party/aom/build/cmake/toolchains/arm-ios-common.cmake b/third_party/aom/build/cmake/toolchains/arm-ios-common.cmake index 8929f3b1d..8f4095145 100644 --- a/third_party/aom/build/cmake/toolchains/arm-ios-common.cmake +++ b/third_party/aom/build/cmake/toolchains/arm-ios-common.cmake @@ -1,14 +1,16 @@ -## -## Copyright (c) 2017, 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. -## -if (NOT AOM_BUILD_CMAKE_TOOLCHAINS_ARM_IOS_COMMON_CMAKE_) +# +# Copyright (c) 2017, 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. +# +if(AOM_BUILD_CMAKE_TOOLCHAINS_ARM_IOS_COMMON_CMAKE_) + return() +endif() # AOM_BUILD_CMAKE_TOOLCHAINS_ARM_IOS_COMMON_CMAKE_ set(AOM_BUILD_CMAKE_ARM_IOS_COMMON_CMAKE_ 1) set(CMAKE_SYSTEM_NAME "Darwin") @@ -18,14 +20,7 @@ set(CMAKE_C_COMPILER_ARG1 "-arch ${CMAKE_SYSTEM_PROCESSOR}") set(CMAKE_CXX_COMPILER clang++) set(CMAKE_CXX_COMPILER_ARG1 "-arch ${CMAKE_SYSTEM_PROCESSOR}") -# Assembler sources must be converted for ARM iOS targets. -set(AOM_ADS2GAS_REQUIRED 1) -set(AOM_ADS2GAS "${CMAKE_CURRENT_SOURCE_DIR}/build/make/ads2gas_apple.pl") -set(AOM_GAS_EXT "S") - # No runtime cpu detect for arm*-ios targets. set(CONFIG_RUNTIME_CPU_DETECT 0 CACHE NUMBER "") # TODO(tomfinegan): Handle bit code embedding. - -endif () # AOM_BUILD_CMAKE_TOOLCHAINS_ARM_IOS_COMMON_CMAKE_ diff --git a/third_party/aom/build/cmake/toolchains/arm64-ios.cmake b/third_party/aom/build/cmake/toolchains/arm64-ios.cmake index 434809db9..6feb1090f 100644 --- a/third_party/aom/build/cmake/toolchains/arm64-ios.cmake +++ b/third_party/aom/build/cmake/toolchains/arm64-ios.cmake @@ -1,24 +1,23 @@ -## -## Copyright (c) 2017, 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. -## -if (NOT AOM_BUILD_CMAKE_TOOLCHAINS_ARM64_IOS_CMAKE_) +# +# Copyright (c) 2017, 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. +# +if(AOM_BUILD_CMAKE_TOOLCHAINS_ARM64_IOS_CMAKE_) + return() +endif() # AOM_BUILD_CMAKE_TOOLCHAINS_ARM64_IOS_CMAKE_ set(AOM_BUILD_CMAKE_TOOLCHAINS_ARM64_IOS_CMAKE_ 1) -if (XCODE) - # TODO(tomfinegan): Handle arm builds in Xcode. +if(XCODE) # TODO(tomfinegan): Handle arm builds in Xcode. message(FATAL_ERROR "This toolchain does not support Xcode.") -endif () +endif() set(CMAKE_SYSTEM_PROCESSOR "arm64") set(CMAKE_OSX_ARCHITECTURES "arm64") include("${CMAKE_CURRENT_LIST_DIR}/arm-ios-common.cmake") - -endif () # AOM_BUILD_CMAKE_TOOLCHAINS_ARM64_IOS_CMAKE_ diff --git a/third_party/aom/build/cmake/toolchains/arm64-linux-gcc.cmake b/third_party/aom/build/cmake/toolchains/arm64-linux-gcc.cmake index 303f1cf9a..590a97a8e 100644 --- a/third_party/aom/build/cmake/toolchains/arm64-linux-gcc.cmake +++ b/third_party/aom/build/cmake/toolchains/arm64-linux-gcc.cmake @@ -1,22 +1,25 @@ -## -## Copyright (c) 2017, 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. -## -if (NOT AOM_BUILD_CMAKE_TOOLCHAINS_ARM64_LINUX_GCC_CMAKE_) +# +# Copyright (c) 2017, 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. +# +if(AOM_BUILD_CMAKE_TOOLCHAINS_ARM64_LINUX_GCC_CMAKE_) + return() +endif() # AOM_BUILD_CMAKE_TOOLCHAINS_ARM64_LINUX_GCC_CMAKE_ set(AOM_BUILD_CMAKE_TOOLCHAINS_ARM64_LINUX_GCC_CMAKE_ 1) set(CMAKE_SYSTEM_NAME "Linux") -if ("${CROSS}" STREQUAL "") +if("${CROSS}" STREQUAL "") + # Default the cross compiler prefix to something known to work. set(CROSS aarch64-linux-gnu-) -endif () +endif() set(CMAKE_C_COMPILER ${CROSS}gcc) set(CMAKE_CXX_COMPILER ${CROSS}g++) @@ -31,5 +34,3 @@ set(AOM_NEON_INTRIN_FLAG "") # No runtime cpu detect for arm64-linux-gcc. set(CONFIG_RUNTIME_CPU_DETECT 0 CACHE NUMBER "") - -endif () # AOM_BUILD_CMAKE_TOOLCHAINS_ARM64_LINUX_GCC_CMAKE_ diff --git a/third_party/aom/build/cmake/toolchains/arm64-mingw-gcc.cmake b/third_party/aom/build/cmake/toolchains/arm64-mingw-gcc.cmake new file mode 100644 index 000000000..b5b2ff1cd --- /dev/null +++ b/third_party/aom/build/cmake/toolchains/arm64-mingw-gcc.cmake @@ -0,0 +1,32 @@ +# +# Copyright (c) 2018, 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. +# +if(AOM_BUILD_CMAKE_TOOLCHAINS_ARM64_MINGW_GCC_CMAKE_) + return() +endif() # AOM_BUILD_CMAKE_TOOLCHAINS_ARM64_MINGW_GCC_CMAKE_ +set(AOM_BUILD_CMAKE_TOOLCHAINS_ARM64_MINGW_GCC_CMAKE_ 1) + +set(CMAKE_SYSTEM_PROCESSOR "arm64") +set(CMAKE_SYSTEM_NAME "Windows") + +if("${CROSS}" STREQUAL "") + set(CROSS aarch64-w64-mingw32-) +endif() + +set(CMAKE_C_COMPILER ${CROSS}gcc) +set(CMAKE_CXX_COMPILER ${CROSS}g++) +set(CMAKE_AR ${CROSS}ar CACHE FILEPATH Archiver) +set(CMAKE_RANLIB ${CROSS}ranlib CACHE FILEPATH Indexer) + +# No runtime cpu detect for arm64-mingw-gcc. +set(CONFIG_RUNTIME_CPU_DETECT 0 CACHE NUMBER "") + +# Disable the use of the gtest's CMake support. +set(AOM_DISABLE_GTEST_CMAKE 1) diff --git a/third_party/aom/build/cmake/toolchains/armv7-ios.cmake b/third_party/aom/build/cmake/toolchains/armv7-ios.cmake index c1e72ce3d..32a1b534a 100644 --- a/third_party/aom/build/cmake/toolchains/armv7-ios.cmake +++ b/third_party/aom/build/cmake/toolchains/armv7-ios.cmake @@ -1,20 +1,23 @@ -## -## Copyright (c) 2017, 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. -## -if (NOT AOM_BUILD_CMAKE_TOOLCHAINS_ARMV7_IOS_CMAKE_) +# +# Copyright (c) 2017, 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. +# +if(AOM_BUILD_CMAKE_TOOLCHAINS_ARMV7_IOS_CMAKE_) + return() +endif() # AOM_BUILD_CMAKE_TOOLCHAINS_ARMV7_IOS_CMAKE_ set(AOM_BUILD_CMAKE_TOOLCHAINS_ARMV7_IOS_CMAKE_ 1) -if (XCODE) +if(XCODE) + # TODO(tomfinegan): Handle arm builds in Xcode. message(FATAL_ERROR "This toolchain does not support Xcode.") -endif () +endif() set(CMAKE_SYSTEM_PROCESSOR "armv7") set(CMAKE_OSX_ARCHITECTURES "armv7") @@ -26,5 +29,3 @@ set(AOM_NEON_INTRIN_FLAG "") # No runtime cpu detect for armv7s-ios. set(CONFIG_RUNTIME_CPU_DETECT 0 CACHE NUMBER "") - -endif () # AOM_BUILD_CMAKE_TOOLCHAINS_ARMV7_IOS_CMAKE_ diff --git a/third_party/aom/build/cmake/toolchains/armv7-linux-gcc.cmake b/third_party/aom/build/cmake/toolchains/armv7-linux-gcc.cmake index 13a737784..7d3d63085 100644 --- a/third_party/aom/build/cmake/toolchains/armv7-linux-gcc.cmake +++ b/third_party/aom/build/cmake/toolchains/armv7-linux-gcc.cmake @@ -1,26 +1,29 @@ -## -## Copyright (c) 2017, 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. -## -if (NOT AOM_BUILD_CMAKE_TOOLCHAINS_ARMV7_LINUX_GCC_CMAKE_) +# +# Copyright (c) 2017, 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. +# +if(AOM_BUILD_CMAKE_TOOLCHAINS_ARMV7_LINUX_GCC_CMAKE_) + return() +endif() # AOM_BUILD_CMAKE_TOOLCHAINS_ARMV7_LINUX_GCC_CMAKE_ set(AOM_BUILD_CMAKE_TOOLCHAINS_ARMV7_LINUX_GCC_CMAKE_ 1) set(CMAKE_SYSTEM_NAME "Linux") -if ("${CROSS}" STREQUAL "") +if("${CROSS}" STREQUAL "") + # Default the cross compiler prefix to something known to work. set(CROSS arm-linux-gnueabihf-) -endif () +endif() -if (NOT ${CROSS} MATCHES hf-$) +if(NOT ${CROSS} MATCHES hf-$) set(AOM_EXTRA_TOOLCHAIN_FLAGS "-mfloat-abi=softfp") -endif () +endif() set(CMAKE_C_COMPILER ${CROSS}gcc) set(CMAKE_CXX_COMPILER ${CROSS}g++) @@ -29,20 +32,12 @@ set(CMAKE_C_COMPILER_ARG1 "-march=armv7-a -mfpu=neon ${AOM_EXTRA_TOOLCHAIN_FLAGS}") set(CMAKE_CXX_COMPILER_ARG1 "-march=armv7-a -mfpu=neon ${AOM_EXTRA_TOOLCHAIN_FLAGS}") -set(AOM_AS_FLAGS - --defsym ARCHITECTURE=7 -march=armv7-a -mfpu=neon +set(AOM_AS_FLAGS --defsym ARCHITECTURE=7 -march=armv7-a -mfpu=neon ${AOM_EXTRA_TOOLCHAIN_FLAGS}) set(CMAKE_SYSTEM_PROCESSOR "armv7") # No intrinsics flag required for armv7-linux-gcc. set(AOM_NEON_INTRIN_FLAG "") -# Assembler sources must be converted for armv7-linux-gcc targets. -set(AOM_ADS2GAS_REQUIRED 1) -set(AOM_ADS2GAS "${CMAKE_CURRENT_SOURCE_DIR}/build/make/ads2gas.pl") -set(AOM_GAS_EXT "S") - # No runtime cpu detect for armv7-linux-gcc. set(CONFIG_RUNTIME_CPU_DETECT 0 CACHE NUMBER "") - -endif () # AOM_BUILD_CMAKE_TOOLCHAINS_ARMV7_LINUX_GCC_CMAKE_ diff --git a/third_party/aom/build/cmake/toolchains/armv7-mingw-gcc.cmake b/third_party/aom/build/cmake/toolchains/armv7-mingw-gcc.cmake new file mode 100644 index 000000000..cf06a11b3 --- /dev/null +++ b/third_party/aom/build/cmake/toolchains/armv7-mingw-gcc.cmake @@ -0,0 +1,32 @@ +# +# Copyright (c) 2018, 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. +# +if(AOM_BUILD_CMAKE_TOOLCHAINS_ARMV7_MINGW_GCC_CMAKE_) + return() +endif() # AOM_BUILD_CMAKE_TOOLCHAINS_ARMV7_MINGW_GCC_CMAKE_ +set(AOM_BUILD_CMAKE_TOOLCHAINS_ARMV7_MINGW_GCC_CMAKE_ 1) + +set(CMAKE_SYSTEM_PROCESSOR "armv7") +set(CMAKE_SYSTEM_NAME "Windows") + +if("${CROSS}" STREQUAL "") + set(CROSS armv7-w64-mingw32-) +endif() + +set(CMAKE_C_COMPILER ${CROSS}gcc) +set(CMAKE_CXX_COMPILER ${CROSS}g++) +set(CMAKE_AR ${CROSS}ar CACHE FILEPATH Archiver) +set(CMAKE_RANLIB ${CROSS}ranlib CACHE FILEPATH Indexer) + +# No runtime cpu detect for armv7-mingw-gcc. +set(CONFIG_RUNTIME_CPU_DETECT 0 CACHE NUMBER "") + +# Disable the use of the gtest's CMake support. +set(AOM_DISABLE_GTEST_CMAKE 1) diff --git a/third_party/aom/build/cmake/toolchains/armv7s-ios.cmake b/third_party/aom/build/cmake/toolchains/armv7s-ios.cmake index bdb627c78..0940a6ee8 100644 --- a/third_party/aom/build/cmake/toolchains/armv7s-ios.cmake +++ b/third_party/aom/build/cmake/toolchains/armv7s-ios.cmake @@ -1,20 +1,23 @@ -## -## Copyright (c) 2017, 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. -## -if (NOT AOM_BUILD_CMAKE_TOOLCHAINS_ARMV7S_IOS_CMAKE_) +# +# Copyright (c) 2017, 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. +# +if(AOM_BUILD_CMAKE_TOOLCHAINS_ARMV7S_IOS_CMAKE_) + return() +endif() # AOM_BUILD_CMAKE_TOOLCHAINS_ARMV7S_IOS_CMAKE_ set(AOM_BUILD_CMAKE_TOOLCHAINS_ARMV7S_IOS_CMAKE_ 1) -if (XCODE) +if(XCODE) + # TODO(tomfinegan): Handle arm builds in Xcode. message(FATAL_ERROR "This toolchain does not support Xcode.") -endif () +endif() set(CMAKE_SYSTEM_PROCESSOR "armv7s") set(CMAKE_OSX_ARCHITECTURES "armv7s") @@ -26,5 +29,3 @@ set(AOM_NEON_INTRIN_FLAG "") # No runtime cpu detect for armv7s-ios. set(CONFIG_RUNTIME_CPU_DETECT 0 CACHE NUMBER "") - -endif () # AOM_BUILD_CMAKE_TOOLCHAINS_ARMV7S_IOS_CMAKE_ diff --git a/third_party/aom/build/cmake/toolchains/ios-simulator-common.cmake b/third_party/aom/build/cmake/toolchains/ios-simulator-common.cmake index 7a28e329c..76e0bd140 100644 --- a/third_party/aom/build/cmake/toolchains/ios-simulator-common.cmake +++ b/third_party/aom/build/cmake/toolchains/ios-simulator-common.cmake @@ -1,14 +1,16 @@ -## -## Copyright (c) 2017, 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. -## -if (NOT AOM_BUILD_CMAKE_TOOLCHAINS_IOS_SIMULATOR_COMMON_CMAKE_) +# +# Copyright (c) 2017, 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. +# +if(AOM_BUILD_CMAKE_TOOLCHAINS_IOS_SIMULATOR_COMMON_CMAKE_) + return() +endif() # AOM_BUILD_CMAKE_TOOLCHAINS_IOS_SIMULATOR_COMMON_CMAKE_ set(AOM_BUILD_CMAKE_IOS_SIMULATOR_COMMON_CMAKE_ 1) set(CMAKE_SYSTEM_NAME "Darwin") @@ -19,5 +21,3 @@ set(CMAKE_CXX_COMPILER clang++) set(CMAKE_CXX_COMPILER_ARG1 "-arch ${CMAKE_SYSTEM_PROCESSOR}") # TODO(tomfinegan): Handle bit code embedding. - -endif () # AOM_BUILD_CMAKE_TOOLCHAINS_IOS_SIMULATOR_COMMON_CMAKE_ diff --git a/third_party/aom/build/cmake/toolchains/mips32-linux-gcc.cmake b/third_party/aom/build/cmake/toolchains/mips32-linux-gcc.cmake index b452e368f..0f93490b1 100644 --- a/third_party/aom/build/cmake/toolchains/mips32-linux-gcc.cmake +++ b/third_party/aom/build/cmake/toolchains/mips32-linux-gcc.cmake @@ -1,62 +1,66 @@ -## -## Copyright (c) 2017, 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. -## -if (NOT AOM_BUILD_CMAKE_TOOLCHAINS_MIPS32_LINUX_GCC_CMAKE_) +# +# Copyright (c) 2017, 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. +# +if(AOM_BUILD_CMAKE_TOOLCHAINS_MIPS32_LINUX_GCC_CMAKE_) + return() +endif() # AOM_BUILD_CMAKE_TOOLCHAINS_MIPS32_LINUX_GCC_CMAKE_ set(AOM_BUILD_CMAKE_TOOLCHAINS_MIPS32_LINUX_GCC_CMAKE_ 1) set(CMAKE_SYSTEM_NAME "Linux") -if (ENABLE_DSPR2 AND ENABLE_MSA) +if(ENABLE_DSPR2 AND ENABLE_MSA) message(FATAL_ERROR "ENABLE_DSPR2 and ENABLE_MSA cannot be combined.") -endif () +endif() -if (ENABLE_DSPR2) +if(ENABLE_DSPR2) set(HAVE_DSPR2 1 CACHE BOOL "" FORCE) - if ("${CROSS}" STREQUAL "") + if("${CROSS}" STREQUAL "") + # Default the cross compiler prefix to something known to work. set(CROSS mips-linux-gnu-) - endif () + endif() set(MIPS_CFLAGS "-mdspr2") set(MIPS_CXXFLAGS "-mdspr2") -elseif (ENABLE_MSA) +elseif(ENABLE_MSA) set(HAVE_MSA 1 CACHE BOOL "" FORCE) - if ("${CROSS}" STREQUAL "") + if("${CROSS}" STREQUAL "") + # Default the cross compiler prefix to something known to work. set(CROSS mips-mti-linux-gnu-) - endif () + endif() set(MIPS_CFLAGS "-mmsa") set(MIPS_CXXFLAGS "-mmsa") -endif () +endif() -if ("${CROSS}" STREQUAL "") - # TODO(tomfinegan): Make it possible to turn this off. The $CROSS prefix - # won't be desired on a mips host. - # Default cross compiler prefix to something that might work for an - # unoptimized build. +if("${CROSS}" STREQUAL "") + + # TODO(tomfinegan): Make it possible to turn this off. The $CROSS prefix won't + # be desired on a mips host. Default cross compiler prefix to something that + # might work for an unoptimized build. set(CROSS mips-linux-gnu-) -endif () +endif() -if ("${MIPS_CPU}" STREQUAL "") +if("${MIPS_CPU}" STREQUAL "") set(MIPS_CFLAGS "${MIPS_CFLAGS} -mips32r2") set(MIPS_CXXFLAGS "${MIPS_CXXFLAGS} -mips32r2") -elseif ("${MIPS_CPU}" STREQUAL "p5600") +elseif("${MIPS_CPU}" STREQUAL "p5600") set(P56_FLAGS "-mips32r5 -mload-store-pairs -msched-weight -mhard-float -mfp64") set(MIPS_CFLAGS "${MIPS_CFLAGS} ${P56_FLAGS}") set(MIPS_CXXFLAGS "${MIPS_CXXFLAGS} ${P56_FLAGS}") set(CMAKE_EXE_LINKER_FLAGS "-mfp64 ${CMAKE_EXE_LINKER_FLAGS}") -endif () +endif() set(CMAKE_C_COMPILER ${CROSS}gcc) set(CMAKE_CXX_COMPILER ${CROSS}g++) @@ -66,10 +70,8 @@ set(CMAKE_CXX_COMPILER_ARG1 "-EL ${MIPS_CXXFLAGS}") set(CMAKE_SYSTEM_PROCESSOR "mips32") # No runtime cpu detect for mips32-linux-gcc. -if (CONFIG_RUNTIME_CPU_DETECT) +if(CONFIG_RUNTIME_CPU_DETECT) message("--- CONFIG_RUNTIME_CPU_DETECT not supported for mips32 targets.") -endif () +endif() set(CONFIG_RUNTIME_CPU_DETECT 0 CACHE NUMBER "" FORCE) - -endif () # AOM_BUILD_CMAKE_TOOLCHAINS_MIPS32_LINUX_GCC_CMAKE_ diff --git a/third_party/aom/build/cmake/toolchains/mips64-linux-gcc.cmake b/third_party/aom/build/cmake/toolchains/mips64-linux-gcc.cmake index 0b63d778d..ad9aab09d 100644 --- a/third_party/aom/build/cmake/toolchains/mips64-linux-gcc.cmake +++ b/third_party/aom/build/cmake/toolchains/mips64-linux-gcc.cmake @@ -1,39 +1,43 @@ -## -## Copyright (c) 2017, 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. -## -if (NOT AOM_BUILD_CMAKE_TOOLCHAINS_MIPS64_LINUX_GCC_CMAKE_) +# +# Copyright (c) 2017, 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. +# +if(AOM_BUILD_CMAKE_TOOLCHAINS_MIPS64_LINUX_GCC_CMAKE_) + return() +endif() # AOM_BUILD_CMAKE_TOOLCHAINS_MIPS64_LINUX_GCC_CMAKE_ set(AOM_BUILD_CMAKE_TOOLCHAINS_MIPS64_LINUX_GCC_CMAKE_ 1) set(CMAKE_SYSTEM_NAME "Linux") -if ("${CROSS}" STREQUAL "") - # TODO(tomfinegan): Make it possible to turn this off. The $CROSS prefix - # won't be desired on a mips host. +if("${CROSS}" STREQUAL "") + + # TODO(tomfinegan): Make it possible to turn this off. The $CROSS prefix won't + # be desired on a mips host. + # # Default the cross compiler prefix to something known to work. set(CROSS mips-img-linux-gnu-) -endif () +endif() -if (ENABLE_MSA) +if(ENABLE_MSA) set(HAVE_MSA 1 CACHE BOOL "" FORCE) set(MIPS_CFLAGS "-mmsa") set(MIPS_CXXFLAGS "-mmsa") -endif () +endif() -if ("${MIPS_CPU}" STREQUAL "i6400" OR "${MIPS_CPU}" STREQUAL "p6600") +if("${MIPS_CPU}" STREQUAL "i6400" OR "${MIPS_CPU}" STREQUAL "p6600") set(MIPS_CPU_FLAGS "-mips64r6 -mabi=64 -mload-store-pairs -msched-weight") set(MIPS_CPU_FLAGS "${MIPS_CPU_FLAGS} -mhard-float -mfp64") set(MIPS_CFLAGS "${MIPS_CFLAGS} ${MIPS_CPU_FLAGS}") set(MIPS_CXXFLAGS "${MIPS_CXXFLAGS} ${MIPS_CPU_FLAGS}") set(CMAKE_EXE_LINKER_FLAGS "-mips64r6 -mabi64 -mfp64 ${CMAKE_EXE_LINKER_FLAGS}") -endif () +endif() set(CMAKE_C_COMPILER ${CROSS}gcc) set(CMAKE_CXX_COMPILER ${CROSS}g++) @@ -43,10 +47,8 @@ set(CMAKE_CXX_COMPILER_ARG1 "-EL ${MIPS_CXXFLAGS}") set(CMAKE_SYSTEM_PROCESSOR "mips64") # No runtime cpu detect for mips64-linux-gcc. -if (CONFIG_RUNTIME_CPU_DETECT) +if(CONFIG_RUNTIME_CPU_DETECT) message("--- CONFIG_RUNTIME_CPU_DETECT not supported for mips64 targets.") -endif () +endif() set(CONFIG_RUNTIME_CPU_DETECT 0 CACHE NUMBER "" FORCE) - -endif () # AOM_BUILD_CMAKE_TOOLCHAINS_MIPS64_LINUX_GCC_CMAKE_ diff --git a/third_party/aom/build/cmake/toolchains/ppc-linux-gcc.cmake b/third_party/aom/build/cmake/toolchains/ppc-linux-gcc.cmake new file mode 100644 index 000000000..c86cc27e3 --- /dev/null +++ b/third_party/aom/build/cmake/toolchains/ppc-linux-gcc.cmake @@ -0,0 +1,29 @@ +# +# Copyright (c) 2018, 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. +# +if(AOM_BUILD_CMAKE_TOOLCHAINS_PPC_LINUX_GCC_CMAKE_) + return() +endif() # AOM_BUILD_CMAKE_TOOLCHAINS_PPC_LINUX_GCC_CMAKE_ +set(AOM_BUILD_CMAKE_TOOLCHAINS_PPC_LINUX_GCC_CMAKE_ 1) + +set(CMAKE_SYSTEM_NAME "Linux") + +if("${CROSS}" STREQUAL "") + + # Default the cross compiler prefix to something known to work. + set(CROSS powerpc64le-unknown-linux-gnu-) +endif() + +set(CMAKE_C_COMPILER ${CROSS}gcc) +set(CMAKE_CXX_COMPILER ${CROSS}g++) +set(AS_EXECUTABLE ${CROSS}as) +set(CMAKE_SYSTEM_PROCESSOR "ppc") + +set(CONFIG_RUNTIME_CPU_DETECT 0 CACHE NUMBER "") diff --git a/third_party/aom/build/cmake/toolchains/x86-ios-simulator.cmake b/third_party/aom/build/cmake/toolchains/x86-ios-simulator.cmake index 295156c3d..6b6f52cac 100644 --- a/third_party/aom/build/cmake/toolchains/x86-ios-simulator.cmake +++ b/third_party/aom/build/cmake/toolchains/x86-ios-simulator.cmake @@ -1,20 +1,23 @@ -## -## Copyright (c) 2017, 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. -## -if (NOT AOM_BUILD_CMAKE_TOOLCHAINS_X86_IOS_SIMULATOR_CMAKE_) +# +# Copyright (c) 2017, 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. +# +if(AOM_BUILD_CMAKE_TOOLCHAINS_X86_IOS_SIMULATOR_CMAKE_) + return() +endif() # AOM_BUILD_CMAKE_TOOLCHAINS_X86_IOS_SIMULATOR_CMAKE_ set(AOM_BUILD_CMAKE_TOOLCHAINS_X86_IOS_SIMULATOR_CMAKE_ 1) -if (XCODE) +if(XCODE) + # TODO(tomfinegan): Handle ios sim builds in Xcode. message(FATAL_ERROR "This toolchain does not support Xcode.") -endif () +endif() set(CMAKE_SYSTEM_PROCESSOR "i386") set(CMAKE_OSX_ARCHITECTURES "i386") @@ -23,5 +26,3 @@ set(CMAKE_OSX_ARCHITECTURES "i386") set(CONFIG_PIC 1 CACHE NUMBER "") include("${CMAKE_CURRENT_LIST_DIR}/ios-simulator-common.cmake") - -endif () # AOM_BUILD_CMAKE_TOOLCHAINS_X86_IOS_SIMULATOR_CMAKE_ diff --git a/third_party/aom/build/cmake/toolchains/x86-linux.cmake b/third_party/aom/build/cmake/toolchains/x86-linux.cmake index 42cc61467..c2a700bfe 100644 --- a/third_party/aom/build/cmake/toolchains/x86-linux.cmake +++ b/third_party/aom/build/cmake/toolchains/x86-linux.cmake @@ -1,19 +1,19 @@ -## -## Copyright (c) 2017, 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. -## -if (NOT AOM_BUILD_CMAKE_TOOLCHAINS_X86_LINUX_CMAKE_) +# +# Copyright (c) 2017, 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. +# +if(AOM_BUILD_CMAKE_TOOLCHAINS_X86_LINUX_CMAKE_) + return() +endif() # AOM_BUILD_CMAKE_TOOLCHAINS_X86_LINUX_CMAKE_ set(AOM_BUILD_CMAKE_TOOLCHAINS_X86_LINUX_CMAKE_ 1) set(CMAKE_SYSTEM_PROCESSOR "x86") set(CMAKE_SYSTEM_NAME "Linux") set(CMAKE_C_COMPILER_ARG1 "-m32") set(CMAKE_CXX_COMPILER_ARG1 "-m32") - -endif () # AOM_BUILD_CMAKE_TOOLCHAINS_X86_LINUX_CMAKE_ diff --git a/third_party/aom/build/cmake/toolchains/x86-macos.cmake b/third_party/aom/build/cmake/toolchains/x86-macos.cmake index c9cab3d5b..7a46e06a9 100644 --- a/third_party/aom/build/cmake/toolchains/x86-macos.cmake +++ b/third_party/aom/build/cmake/toolchains/x86-macos.cmake @@ -1,13 +1,13 @@ -## -## Copyright (c) 2017, 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. -## +# +# Copyright (c) 2017, 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. +# set(CMAKE_SYSTEM_PROCESSOR "x86") set(CMAKE_SYSTEM_NAME "Darwin") set(CMAKE_OSX_ARCHITECTURES "i386") diff --git a/third_party/aom/build/cmake/toolchains/x86-mingw-gcc.cmake b/third_party/aom/build/cmake/toolchains/x86-mingw-gcc.cmake index bdd3fa539..c986c4ee3 100644 --- a/third_party/aom/build/cmake/toolchains/x86-mingw-gcc.cmake +++ b/third_party/aom/build/cmake/toolchains/x86-mingw-gcc.cmake @@ -1,14 +1,16 @@ -## -## Copyright (c) 2017, 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. -## -if (NOT AOM_BUILD_CMAKE_TOOLCHAINS_X86_MINGW_GCC_CMAKE_) +# +# Copyright (c) 2017, 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. +# +if(AOM_BUILD_CMAKE_TOOLCHAINS_X86_MINGW_GCC_CMAKE_) + return() +endif() # AOM_BUILD_CMAKE_TOOLCHAINS_X86_MINGW_GCC_CMAKE_ set(AOM_BUILD_CMAKE_TOOLCHAINS_X86_MINGW_GCC_CMAKE_ 1) set(CMAKE_SYSTEM_PROCESSOR "x86") @@ -16,14 +18,14 @@ set(CMAKE_SYSTEM_NAME "Windows") set(CMAKE_C_COMPILER_ARG1 "-m32") set(CMAKE_CXX_COMPILER_ARG1 "-m32") -if ("${CROSS}" STREQUAL "") +if("${CROSS}" STREQUAL "") set(CROSS i686-w64-mingw32-) -endif () +endif() set(CMAKE_C_COMPILER ${CROSS}gcc) set(CMAKE_CXX_COMPILER ${CROSS}g++) +set(CMAKE_AR ${CROSS}ar CACHE FILEPATH Archiver) +set(CMAKE_RANLIB ${CROSS}ranlib CACHE FILEPATH Indexer) # Disable the use of the gtest's CMake support. set(AOM_DISABLE_GTEST_CMAKE 1) - -endif () # AOM_BUILD_CMAKE_TOOLCHAINS_X86_MINGW_GCC_CMAKE_ diff --git a/third_party/aom/build/cmake/toolchains/x86_64-ios-simulator.cmake b/third_party/aom/build/cmake/toolchains/x86_64-ios-simulator.cmake index 884540a9d..d4b40ed09 100644 --- a/third_party/aom/build/cmake/toolchains/x86_64-ios-simulator.cmake +++ b/third_party/aom/build/cmake/toolchains/x86_64-ios-simulator.cmake @@ -1,24 +1,25 @@ -## -## Copyright (c) 2017, 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. -## -if (NOT AOM_BUILD_CMAKE_TOOLCHAINS_X86_64_IOS_SIMULATOR_CMAKE_) +# +# Copyright (c) 2017, 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. +# +if(AOM_BUILD_CMAKE_TOOLCHAINS_X86_64_IOS_SIMULATOR_CMAKE_) + return() +endif() # AOM_BUILD_CMAKE_TOOLCHAINS_X86_64_IOS_SIMULATOR_CMAKE_ set(AOM_BUILD_CMAKE_TOOLCHAINS_X86_64_IOS_SIMULATOR_CMAKE_ 1) -if (XCODE) +if(XCODE) + # TODO(tomfinegan): Handle ios sim builds in Xcode. message(FATAL_ERROR "This toolchain does not support Xcode.") -endif () +endif() set(CMAKE_SYSTEM_PROCESSOR "x86_64") set(CMAKE_OSX_ARCHITECTURES "x86_64") include("${CMAKE_CURRENT_LIST_DIR}/ios-simulator-common.cmake") - -endif () # AOM_BUILD_CMAKE_TOOLCHAINS_X86_64_IOS_SIMULATOR_CMAKE_ diff --git a/third_party/aom/build/cmake/toolchains/x86_64-mingw-gcc.cmake b/third_party/aom/build/cmake/toolchains/x86_64-mingw-gcc.cmake index be94332b4..00d94d5f1 100644 --- a/third_party/aom/build/cmake/toolchains/x86_64-mingw-gcc.cmake +++ b/third_party/aom/build/cmake/toolchains/x86_64-mingw-gcc.cmake @@ -1,27 +1,29 @@ -## -## Copyright (c) 2017, 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. -## -if (NOT AOM_BUILD_CMAKE_TOOLCHAINS_X86_64_MINGW_GCC_CMAKE_) +# +# Copyright (c) 2017, 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. +# +if(AOM_BUILD_CMAKE_TOOLCHAINS_X86_64_MINGW_GCC_CMAKE_) + return() +endif() # AOM_BUILD_CMAKE_TOOLCHAINS_X86_64_MINGW_GCC_CMAKE_ set(AOM_BUILD_CMAKE_TOOLCHAINS_X86_64_MINGW_GCC_CMAKE_ 1) set(CMAKE_SYSTEM_PROCESSOR "x86_64") set(CMAKE_SYSTEM_NAME "Windows") -if ("${CROSS}" STREQUAL "") +if("${CROSS}" STREQUAL "") set(CROSS x86_64-w64-mingw32-) -endif () +endif() set(CMAKE_C_COMPILER ${CROSS}gcc) set(CMAKE_CXX_COMPILER ${CROSS}g++) +set(CMAKE_AR ${CROSS}ar CACHE FILEPATH Archiver) +set(CMAKE_RANLIB ${CROSS}ranlib CACHE FILEPATH Indexer) # Disable the use of the gtest's CMake support. set(AOM_DISABLE_GTEST_CMAKE 1) - -endif () # AOM_BUILD_CMAKE_TOOLCHAINS_X86_64_MINGW_GCC_CMAKE_ diff --git a/third_party/aom/build/cmake/util.cmake b/third_party/aom/build/cmake/util.cmake index d6c432229..a0c705691 100644 --- a/third_party/aom/build/cmake/util.cmake +++ b/third_party/aom/build/cmake/util.cmake @@ -1,84 +1,88 @@ -## -## Copyright (c) 2017, 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. -## -if (NOT AOM_BUILD_CMAKE_UTIL_CMAKE_) +# +# Copyright (c) 2017, 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. +# +if(AOM_BUILD_CMAKE_UTIL_CMAKE_) + return() +endif() # AOM_BUILD_CMAKE_UTIL_CMAKE_ set(AOM_BUILD_CMAKE_UTIL_CMAKE_ 1) # Creates dummy source file in $AOM_CONFIG_DIR named $basename.$extension and # returns the full path to the dummy source file via the $out_file_path # parameter. -function (create_dummy_source_file basename extension out_file_path) - set(dummy_source_file "${AOM_CONFIG_DIR}/${basename}.${extension}") - file(WRITE "${dummy_source_file}" - "// Generated file. DO NOT EDIT!\n" - "// ${target_name} needs a ${extension} file to force link language, \n" - "// or to silence a harmless CMake warning: Ignore me.\n" - "void ${target_name}_dummy_function(void) {}\n") +function(create_dummy_source_file basename extension out_file_path) + set(dummy_source_file "${AOM_CONFIG_DIR}/${basename}_dummy.${extension}") + file( + WRITE + "${dummy_source_file}" "// Generated file. DO NOT EDIT!\n" + "// ${target_name} needs a ${extension} file to force link language, \n" + "// or to silence a harmless CMake warning: Ignore me.\n" + "void ${target_name}_dummy_function(void) {}\n") set(${out_file_path} ${dummy_source_file} PARENT_SCOPE) -endfunction () +endfunction() # Convenience function for adding a dummy source file to $target_name using # $extension as the file extension. Wraps create_dummy_source_file(). -function (add_dummy_source_file_to_target target_name extension) +function(add_dummy_source_file_to_target target_name extension) create_dummy_source_file("${target_name}" "${extension}" "dummy_source_file") target_sources(${target_name} PRIVATE ${dummy_source_file}) -endfunction () +endfunction() # Sets the value of the variable referenced by $feature to $value, and reports # the change to the user via call to message(WARNING ...). $cause is expected to -# be a configuration variable that conflicts with $feature in some way. -function (change_config_and_warn feature value cause) +# be a configuration variable that conflicts with $feature in some way. This +# function is a noop if $feature is already set to $value. +function(change_config_and_warn feature value cause) + if(${feature} EQUAL ${value}) + return() + endif() set(${feature} ${value} PARENT_SCOPE) - if (${value} EQUAL 1) + if(${value} EQUAL 1) set(verb "Enabled") set(reason "required for") - else () + else() set(verb "Disabled") set(reason "incompatible with") - endif () + endif() set(warning_message "${verb} ${feature}, ${reason} ${cause}.") message(WARNING "--- ${warning_message}") -endfunction () +endfunction() # Extracts the version string from $version_file and returns it to the user via # $version_string_out_var. To achieve this VERSION_STRING_NOSP is located in # $version_file and then everything but the string literal assigned to the -# variable is removed. Quotes and the leading 'v' are stripped from the -# returned string. -function (extract_version_string version_file version_string_out_var) +# variable is removed. Quotes and the leading 'v' are stripped from the returned +# string. +function(extract_version_string version_file version_string_out_var) file(STRINGS "${version_file}" aom_version REGEX "VERSION_STRING_NOSP") - string(REPLACE "#define VERSION_STRING_NOSP " "" aom_version - "${aom_version}") + string(REPLACE "#define VERSION_STRING_NOSP " "" aom_version "${aom_version}") string(REPLACE "\"" "" aom_version "${aom_version}") string(REPLACE " " "" aom_version "${aom_version}") string(FIND "${aom_version}" "v" v_pos) - if (${v_pos} EQUAL 0) + if(${v_pos} EQUAL 0) string(SUBSTRING "${aom_version}" 1 -1 aom_version) - endif () + endif() set("${version_string_out_var}" "${aom_version}" PARENT_SCOPE) -endfunction () +endfunction() # Sets CMake compiler launcher to $launcher_name when $launcher_name is found in # $PATH. Warns user about ignoring build flag $launcher_flag when $launcher_name # is not found in $PATH. -function (set_compiler_launcher launcher_flag launcher_name) +function(set_compiler_launcher launcher_flag launcher_name) find_program(launcher_path "${launcher_name}") - if (launcher_path) + if(launcher_path) set(CMAKE_C_COMPILER_LAUNCHER "${launcher_path}" PARENT_SCOPE) set(CMAKE_CXX_COMPILER_LAUNCHER "${launcher_path}" PARENT_SCOPE) message("--- Using ${launcher_name} as compiler launcher.") - else () + else() message(WARNING - "--- Cannot find ${launcher_name}, ${launcher_flag} ignored.") - endif () -endfunction () - -endif() # AOM_BUILD_CMAKE_UTIL_CMAKE_ + "--- Cannot find ${launcher_name}, ${launcher_flag} ignored.") + endif() +endfunction() diff --git a/third_party/aom/build/cmake/version.cmake b/third_party/aom/build/cmake/version.cmake index c2b3bdb61..d169b12ac 100644 --- a/third_party/aom/build/cmake/version.cmake +++ b/third_party/aom/build/cmake/version.cmake @@ -1,55 +1,57 @@ -## -## Copyright (c) 2017, 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. -## +# +# Copyright (c) 2017, 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. +# cmake_minimum_required(VERSION 3.5) -set(REQUIRED_ARGS - "AOM_ROOT" "AOM_CONFIG_DIR" "GIT_EXECUTABLE" "PERL_EXECUTABLE") +set(REQUIRED_ARGS "AOM_ROOT" "AOM_CONFIG_DIR" "GIT_EXECUTABLE" + "PERL_EXECUTABLE") -foreach (arg ${REQUIRED_ARGS}) - if ("${${arg}}" STREQUAL "") +foreach(arg ${REQUIRED_ARGS}) + if("${${arg}}" STREQUAL "") message(FATAL_ERROR "${arg} must not be empty.") - endif () -endforeach () + endif() +endforeach() include("${AOM_ROOT}/build/cmake/util.cmake") # Generate the version string for this run. unset(aom_version) -if (EXISTS "${GIT_EXECUTABLE}") +if(EXISTS "${GIT_EXECUTABLE}") execute_process(COMMAND ${GIT_EXECUTABLE} --git-dir=${AOM_ROOT}/.git describe OUTPUT_VARIABLE aom_version ERROR_QUIET) string(STRIP "${aom_version}" aom_version) # Remove the leading 'v' from the version string. string(FIND "${aom_version}" "v" v_pos) - if (${v_pos} EQUAL 0) + if(${v_pos} EQUAL 0) string(SUBSTRING "${aom_version}" 1 -1 aom_version) - endif () -endif () + endif() +endif() -if ("${aom_version}" STREQUAL "") +if("${aom_version}" STREQUAL "") set(aom_version "${AOM_ROOT}/CHANGELOG") -endif () +endif() unset(last_aom_version) -if (EXISTS "${AOM_CONFIG_DIR}/aom_version.h") - extract_version_string("${AOM_CONFIG_DIR}/aom_version.h" last_aom_version) -endif () +if(EXISTS "${AOM_CONFIG_DIR}/config/aom_version.h") + extract_version_string("${AOM_CONFIG_DIR}/config/aom_version.h" + last_aom_version) +endif() + +if(NOT "${aom_version}" STREQUAL "${last_aom_version}") -if (NOT "${aom_version}" STREQUAL "${last_aom_version}") # TODO(tomfinegan): Perl dependency is unnecessary. CMake can do everything # that is done by version.pl on its own (if a bit more verbose...). - execute_process( - COMMAND ${PERL_EXECUTABLE} "${AOM_ROOT}/build/cmake/version.pl" - --version_data=${aom_version} - --version_filename=${AOM_CONFIG_DIR}/aom_version.h - VERBATIM) -endif () + execute_process(COMMAND + ${PERL_EXECUTABLE} "${AOM_ROOT}/build/cmake/version.pl" + --version_data=${aom_version} + --version_filename=${AOM_CONFIG_DIR}/config/aom_version.h + VERBATIM) +endif() diff --git a/third_party/aom/build/cmake/version.pl b/third_party/aom/build/cmake/version.pl index 323e178f8..7c0608aeb 100755 --- a/third_party/aom/build/cmake/version.pl +++ b/third_party/aom/build/cmake/version.pl @@ -60,8 +60,9 @@ my $version_minor = $version_components[1]; my $version_patch = $version_components[2]; my $version_extra = ""; -if (@version_components > 3) { - $version_extra = $version_components[3]; +if (length($git_desc) > 0) { + my @git_desc_components = split('-', $git_desc, 2); + $version_extra = $git_desc_components[1]; } open(my $version_file, '>', $version_filename) or |