diff options
Diffstat (limited to 'third_party/aom/build')
53 files changed, 1437 insertions, 5347 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 diff --git a/third_party/aom/build/make/Android.mk b/third_party/aom/build/make/Android.mk deleted file mode 100644 index e50faef92..000000000 --- a/third_party/aom/build/make/Android.mk +++ /dev/null @@ -1,194 +0,0 @@ -## -## 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. -## - - -# -# This file is to be used for compiling libaom for Android using the NDK. -# In an Android project place a libaom checkout in the jni directory. -# Run the configure script from the jni directory. Base libaom -# encoder/decoder configuration will look similar to: -# ./libaom/configure --target=armv7-android-gcc --disable-examples \ -# --sdk-path=/opt/android-ndk-r6b/ -# -# When targeting Android, realtime-only is enabled by default. This can -# be overridden by adding the command line flag: -# --disable-realtime-only -# -# This will create .mk files that contain variables that contain the -# source files to compile. -# -# Place an Android.mk file in the jni directory that references the -# Android.mk file in the libaom directory: -# LOCAL_PATH := $(call my-dir) -# include $(CLEAR_VARS) -# include jni/libaom/build/make/Android.mk -# -# There are currently two TARGET_ARCH_ABI targets for ARM. -# armeabi and armeabi-v7a. armeabi-v7a is selected by creating an -# Application.mk in the jni directory that contains: -# APP_ABI := armeabi-v7a -# -# By default libaom will detect at runtime the existance of NEON extension. -# For this we import the 'cpufeatures' module from the NDK sources. -# libaom can also be configured without this runtime detection method. -# Configuring with --disable-runtime-cpu-detect will assume presence of NEON. -# Configuring with --disable-runtime-cpu-detect --disable-neon \ -# --disable-neon-asm -# will remove any NEON dependency. -# -# Running ndk-build will build libaom and include it in your project. -# - -CONFIG_DIR := $(LOCAL_PATH)/ -LIBAOM_PATH := $(LOCAL_PATH)/libaom -ASM_CNV_PATH_LOCAL := $(TARGET_ARCH_ABI)/ads2gas -ASM_CNV_PATH := $(LOCAL_PATH)/$(ASM_CNV_PATH_LOCAL) - -# Use the makefiles generated by upstream configure to determine which files to -# build. Also set any architecture-specific flags. -ifeq ($(TARGET_ARCH_ABI),armeabi-v7a) - include $(CONFIG_DIR)libs-armv7-android-gcc.mk - LOCAL_ARM_MODE := arm -else ifeq ($(TARGET_ARCH_ABI),arm64-v8a) - include $(CONFIG_DIR)libs-armv8-android-gcc.mk - LOCAL_ARM_MODE := arm -else ifeq ($(TARGET_ARCH_ABI),x86) - include $(CONFIG_DIR)libs-x86-android-gcc.mk -else ifeq ($(TARGET_ARCH_ABI),x86_64) - include $(CONFIG_DIR)libs-x86_64-android-gcc.mk -else ifeq ($(TARGET_ARCH_ABI),mips) - include $(CONFIG_DIR)libs-mips-android-gcc.mk -else - $(error Not a supported TARGET_ARCH_ABI: $(TARGET_ARCH_ABI)) -endif - -# Rule that is normally in Makefile created by libaom -# configure. Used to filter out source files based on configuration. -enabled=$(filter-out $($(1)-no),$($(1)-yes)) - -# Override the relative path that is defined by the libaom -# configure process -SRC_PATH_BARE := $(LIBAOM_PATH) - -# Include the list of files to be built -include $(LIBAOM_PATH)/libs.mk - -# Optimise the code. May want to revisit this setting in the future. -LOCAL_CFLAGS := -O3 - -# For x86, include the source code in the search path so it will find files -# like x86inc.asm and x86_abi_support.asm -LOCAL_ASMFLAGS := -I$(LIBAOM_PATH) - -.PRECIOUS: %.asm.s -$(ASM_CNV_PATH)/libaom/%.asm.s: $(LIBAOM_PATH)/%.asm - @mkdir -p $(dir $@) - @$(CONFIG_DIR)$(ASM_CONVERSION) <$< > $@ - -# For building *_rtcd.h, which have rules in libs.mk -TGT_ISA:=$(word 1, $(subst -, ,$(TOOLCHAIN))) -target := libs - -LOCAL_SRC_FILES += aom_config.c - -# Remove duplicate entries -CODEC_SRCS_UNIQUE = $(sort $(CODEC_SRCS)) - -# Pull out C files. aom_config.c is in the immediate directory and -# so it does not need libaom/ prefixed like the rest of the source files. -# The neon files with intrinsics need to have .neon appended so the proper -# flags are applied. -CODEC_SRCS_C = $(filter %.c, $(CODEC_SRCS_UNIQUE)) -LOCAL_NEON_SRCS_C = $(filter %_neon.c, $(CODEC_SRCS_C)) -LOCAL_CODEC_SRCS_C = $(filter-out aom_config.c %_neon.c, $(CODEC_SRCS_C)) - -LOCAL_SRC_FILES += $(foreach file, $(LOCAL_CODEC_SRCS_C), libaom/$(file)) -ifeq ($(TARGET_ARCH_ABI),armeabi-v7a) - LOCAL_SRC_FILES += $(foreach file, $(LOCAL_NEON_SRCS_C), libaom/$(file).neon) -else # If there are neon sources then we are building for arm64 and do not need to specify .neon - LOCAL_SRC_FILES += $(foreach file, $(LOCAL_NEON_SRCS_C), libaom/$(file)) -endif - -# Pull out assembly files, splitting NEON from the rest. This is -# done to specify that the NEON assembly files use NEON assembler flags. -# x86 assembly matches %.asm, arm matches %.asm.s - -# x86: - -CODEC_SRCS_ASM_X86 = $(filter %.asm, $(CODEC_SRCS_UNIQUE)) -LOCAL_SRC_FILES += $(foreach file, $(CODEC_SRCS_ASM_X86), libaom/$(file)) - -# arm: -CODEC_SRCS_ASM_ARM_ALL = $(filter %.asm.s, $(CODEC_SRCS_UNIQUE)) -CODEC_SRCS_ASM_ARM = $(foreach v, \ - $(CODEC_SRCS_ASM_ARM_ALL), \ - $(if $(findstring neon,$(v)),,$(v))) -CODEC_SRCS_ASM_ADS2GAS = $(patsubst %.s, \ - $(ASM_CNV_PATH_LOCAL)/libaom/%.s, \ - $(CODEC_SRCS_ASM_ARM)) -LOCAL_SRC_FILES += $(CODEC_SRCS_ASM_ADS2GAS) - -ifeq ($(TARGET_ARCH_ABI),armeabi-v7a) - CODEC_SRCS_ASM_NEON = $(foreach v, \ - $(CODEC_SRCS_ASM_ARM_ALL),\ - $(if $(findstring neon,$(v)),$(v),)) - CODEC_SRCS_ASM_NEON_ADS2GAS = $(patsubst %.s, \ - $(ASM_CNV_PATH_LOCAL)/libaom/%.s, \ - $(CODEC_SRCS_ASM_NEON)) - LOCAL_SRC_FILES += $(patsubst %.s, \ - %.s.neon, \ - $(CODEC_SRCS_ASM_NEON_ADS2GAS)) -endif - -LOCAL_CFLAGS += \ - -DHAVE_CONFIG_H=aom_config.h \ - -I$(LIBAOM_PATH) \ - -I$(ASM_CNV_PATH) - -LOCAL_MODULE := libaom - -ifeq ($(CONFIG_RUNTIME_CPU_DETECT),yes) - LOCAL_STATIC_LIBRARIES := cpufeatures -endif - -# Add a dependency to force generation of the RTCD files. -define rtcd_dep_template -rtcd_dep_template_SRCS := $(addprefix $(LOCAL_PATH)/, $(LOCAL_SRC_FILES)) -rtcd_dep_template_SRCS := $$(rtcd_dep_template_SRCS:.neon=) -ifeq ($(CONFIG_AV1), yes) -$$(rtcd_dep_template_SRCS): av1_rtcd.h -endif -$$(rtcd_dep_template_SRCS): aom_scale_rtcd.h -$$(rtcd_dep_template_SRCS): aom_dsp_rtcd.h - -ifneq ($(findstring $(TARGET_ARCH_ABI),x86 x86_64),) -$$(rtcd_dep_template_SRCS): aom_config.asm -endif -endef - -$(eval $(call rtcd_dep_template)) - -.PHONY: clean -clean: - @echo "Clean: ads2gas files [$(TARGET_ARCH_ABI)]" - @$(RM) $(CODEC_SRCS_ASM_ADS2GAS) $(CODEC_SRCS_ASM_NEON_ADS2GAS) - @$(RM) -r $(ASM_CNV_PATH) - @$(RM) $(CLEAN-OBJS) - -ifeq ($(ENABLE_SHARED),1) - include $(BUILD_SHARED_LIBRARY) -else - include $(BUILD_STATIC_LIBRARY) -endif - -ifeq ($(CONFIG_RUNTIME_CPU_DETECT),yes) -$(call import-module,cpufeatures) -endif diff --git a/third_party/aom/build/make/Makefile b/third_party/aom/build/make/Makefile deleted file mode 100644 index 0b869db0a..000000000 --- a/third_party/aom/build/make/Makefile +++ /dev/null @@ -1,466 +0,0 @@ -## 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. -## - - -include config.mk -quiet?=true -ifeq ($(target),) -# If a target wasn't specified, invoke for all enabled targets. -.DEFAULT: - @for t in $(ALL_TARGETS); do \ - $(MAKE) --no-print-directory target=$$t $(MAKECMDGOALS) || exit $$?;\ - done -all: .DEFAULT -clean:: .DEFAULT -exampletest: .DEFAULT -install:: .DEFAULT -test:: .DEFAULT -test-no-data-check:: .DEFAULT -testdata:: .DEFAULT -utiltest: .DEFAULT -exampletest-no-data-check utiltest-no-data-check: .DEFAULT -test_%: .DEFAULT ; - -# Note: md5sum is not installed on OS X, but openssl is. Openssl may not be -# installed on cygwin, so we need to autodetect here. -md5sum := $(firstword $(wildcard \ - $(foreach e,md5sum openssl,\ - $(foreach p,$(subst :, ,$(PATH)),$(p)/$(e)*))\ - )) -md5sum := $(if $(filter %openssl,$(md5sum)),$(md5sum) dgst -md5,$(md5sum)) - -TGT_CC:=$(word 3, $(subst -, ,$(TOOLCHAIN))) -dist: - @for t in $(ALL_TARGETS); do \ - $(MAKE) --no-print-directory target=$$t $(MAKECMDGOALS) || exit $$?;\ - done - # Run configure for the user with the current toolchain. - @if [ -d "$(DIST_DIR)/src" ]; then \ - mkdir -p "$(DIST_DIR)/build"; \ - cd "$(DIST_DIR)/build"; \ - echo "Rerunning configure $(CONFIGURE_ARGS)"; \ - ../src/configure $(CONFIGURE_ARGS); \ - $(if $(filter vs%,$(TGT_CC)),make NO_LAUNCH_DEVENV=1;) \ - fi - @if [ -d "$(DIST_DIR)" ]; then \ - echo " [MD5SUM] $(DIST_DIR)"; \ - cd $(DIST_DIR) && \ - $(md5sum) `find . -name md5sums.txt -prune -o -type f -print` \ - | sed -e 's/MD5(\(.*\))= \([0-9a-f]\{32\}\)/\2 \1/' \ - > md5sums.txt;\ - fi -endif - -# Since we invoke make recursively for multiple targets we need to include the -# .mk file for the correct target, but only when $(target) is non-empty. -ifneq ($(target),) -include $(target)-$(TOOLCHAIN).mk -endif -BUILD_ROOT?=. -VPATH=$(SRC_PATH_BARE) -CFLAGS+=-I$(BUILD_PFX)$(BUILD_ROOT) -I$(SRC_PATH) -CXXFLAGS+=-I$(BUILD_PFX)$(BUILD_ROOT) -I$(SRC_PATH) -ASFLAGS+=-I$(BUILD_PFX)$(BUILD_ROOT)/ -I$(SRC_PATH)/ -DIST_DIR?=dist -HOSTCC?=gcc -TGT_ISA:=$(word 1, $(subst -, ,$(TOOLCHAIN))) -TGT_OS:=$(word 2, $(subst -, ,$(TOOLCHAIN))) -TGT_CC:=$(word 3, $(subst -, ,$(TOOLCHAIN))) -quiet:=$(if $(or $(verbose), $(V)),, yes) -qexec=$(if $(quiet),@) - -# Cancel built-in implicit rules -%: %.o -%.asm: -%.a: -%: %.cc - -# -# Common rules" -# -.PHONY: all -all: - -.PHONY: clean -clean:: - rm -f $(OBJS-yes) $(OBJS-yes:.o=.d) $(OBJS-yes:.asm.s.o=.asm.s) - rm -f $(CLEAN-OBJS) - -.PHONY: clean -distclean: clean - if [ -z "$(target)" ]; then \ - rm -f Makefile; \ - rm -f config.log config.mk; \ - rm -f aom_config.[hc] aom_config.asm; \ - else \ - rm -f $(target)-$(TOOLCHAIN).mk; \ - fi - -.PHONY: dist -dist: -.PHONY: exampletest -exampletest: -.PHONY: install -install:: -.PHONY: test -test:: -.PHONY: testdata -testdata:: -.PHONY: utiltest -utiltest: -.PHONY: test-no-data-check exampletest-no-data-check utiltest-no-data-check -test-no-data-check:: -exampletest-no-data-check utiltest-no-data-check: - -# Force to realign stack always on OS/2 -ifeq ($(TOOLCHAIN), x86-os2-gcc) -CFLAGS += -mstackrealign -endif - -$(BUILD_PFX)%_mmx.c.d: CFLAGS += -mmmx -$(BUILD_PFX)%_mmx.c.o: CFLAGS += -mmmx -$(BUILD_PFX)%_sse2.c.d: CFLAGS += -msse2 -$(BUILD_PFX)%_sse2.c.o: CFLAGS += -msse2 -$(BUILD_PFX)%_sse3.c.d: CFLAGS += -msse3 -$(BUILD_PFX)%_sse3.c.o: CFLAGS += -msse3 -$(BUILD_PFX)%_ssse3.c.d: CFLAGS += -mssse3 -$(BUILD_PFX)%_ssse3.c.o: CFLAGS += -mssse3 -$(BUILD_PFX)%_sse4.c.d: CFLAGS += -msse4.1 -$(BUILD_PFX)%_sse4.c.o: CFLAGS += -msse4.1 -$(BUILD_PFX)%_avx.c.d: CFLAGS += -mavx -$(BUILD_PFX)%_avx.c.o: CFLAGS += -mavx -$(BUILD_PFX)%_avx2.c.d: CFLAGS += -mavx2 -$(BUILD_PFX)%_avx2.c.o: CFLAGS += -mavx2 -$(BUILD_PFX)%_mmx.cc.d: CXXFLAGS += -mmmx -$(BUILD_PFX)%_mmx.cc.o: CXXFLAGS += -mmmx -$(BUILD_PFX)%_sse2.cc.d: CXXFLAGS += -msse2 -$(BUILD_PFX)%_sse2.cc.o: CXXFLAGS += -msse2 -$(BUILD_PFX)%_sse3.cc.d: CXXFLAGS += -msse3 -$(BUILD_PFX)%_sse3.cc.o: CXXFLAGS += -msse3 -$(BUILD_PFX)%_ssse3.cc.d: CXXFLAGS += -mssse3 -$(BUILD_PFX)%_ssse3.cc.o: CXXFLAGS += -mssse3 -$(BUILD_PFX)%_sse4.cc.d: CXXFLAGS += -msse4.1 -$(BUILD_PFX)%_sse4.cc.o: CXXFLAGS += -msse4.1 -$(BUILD_PFX)%_avx.cc.d: CXXFLAGS += -mavx -$(BUILD_PFX)%_avx.cc.o: CXXFLAGS += -mavx -$(BUILD_PFX)%_avx2.cc.d: CXXFLAGS += -mavx2 -$(BUILD_PFX)%_avx2.cc.o: CXXFLAGS += -mavx2 - -$(BUILD_PFX)%.c.d: %.c - $(if $(quiet),@echo " [DEP] $@") - $(qexec)mkdir -p $(dir $@) - $(qexec)$(CC) $(INTERNAL_CFLAGS) $(CFLAGS) -M $< | $(fmt_deps) > $@ - -$(BUILD_PFX)%.c.o: %.c - $(if $(quiet),@echo " [CC] $@") - $(qexec)$(if $(CONFIG_DEPENDENCY_TRACKING),,mkdir -p $(dir $@)) - $(qexec)$(CC) $(INTERNAL_CFLAGS) $(CFLAGS) -c -o $@ $< - -$(BUILD_PFX)%.cc.d: %.cc - $(if $(quiet),@echo " [DEP] $@") - $(qexec)mkdir -p $(dir $@) - $(qexec)$(CXX) $(INTERNAL_CFLAGS) $(CXXFLAGS) -M $< | $(fmt_deps) > $@ - -$(BUILD_PFX)%.cc.o: %.cc - $(if $(quiet),@echo " [CXX] $@") - $(qexec)$(if $(CONFIG_DEPENDENCY_TRACKING),,mkdir -p $(dir $@)) - $(qexec)$(CXX) $(INTERNAL_CFLAGS) $(CXXFLAGS) -c -o $@ $< - -$(BUILD_PFX)%.cpp.d: %.cpp - $(if $(quiet),@echo " [DEP] $@") - $(qexec)mkdir -p $(dir $@) - $(qexec)$(CXX) $(INTERNAL_CFLAGS) $(CXXFLAGS) -M $< | $(fmt_deps) > $@ - -$(BUILD_PFX)%.cpp.o: %.cpp - $(if $(quiet),@echo " [CXX] $@") - $(qexec)$(if $(CONFIG_DEPENDENCY_TRACKING),,mkdir -p $(dir $@)) - $(qexec)$(CXX) $(INTERNAL_CFLAGS) $(CXXFLAGS) -c -o $@ $< - -$(BUILD_PFX)%.asm.d: %.asm - $(if $(quiet),@echo " [DEP] $@") - $(qexec)mkdir -p $(dir $@) - $(qexec)$(SRC_PATH_BARE)/build/make/gen_asm_deps.sh \ - --build-pfx=$(BUILD_PFX) --depfile=$@ $(ASFLAGS) $< > $@ - -$(BUILD_PFX)%.asm.o: %.asm - $(if $(quiet),@echo " [AS] $@") - $(qexec)$(if $(CONFIG_DEPENDENCY_TRACKING),,mkdir -p $(dir $@)) - $(qexec)$(AS) $(ASFLAGS) -o $@ $< - -$(BUILD_PFX)%.s.d: %.s - $(if $(quiet),@echo " [DEP] $@") - $(qexec)mkdir -p $(dir $@) - $(qexec)$(SRC_PATH_BARE)/build/make/gen_asm_deps.sh \ - --build-pfx=$(BUILD_PFX) --depfile=$@ $(ASFLAGS) $< > $@ - -$(BUILD_PFX)%.s.o: %.s - $(if $(quiet),@echo " [AS] $@") - $(qexec)$(if $(CONFIG_DEPENDENCY_TRACKING),,mkdir -p $(dir $@)) - $(qexec)$(AS) $(ASFLAGS) -o $@ $< - -.PRECIOUS: %.c.S -%.c.S: CFLAGS += -DINLINE_ASM -$(BUILD_PFX)%.c.S: %.c - $(if $(quiet),@echo " [GEN] $@") - $(qexec)$(if $(CONFIG_DEPENDENCY_TRACKING),,mkdir -p $(dir $@)) - $(qexec)$(CC) -S $(CFLAGS) -o $@ $< - -.PRECIOUS: %.asm.s -$(BUILD_PFX)%.asm.s: %.asm - $(if $(quiet),@echo " [ASM CONVERSION] $@") - $(qexec)mkdir -p $(dir $@) - $(qexec)$(ASM_CONVERSION) <$< >$@ - -# If we're in debug mode, pretend we don't have GNU strip, to fall back to -# the copy implementation -HAVE_GNU_STRIP := $(if $(CONFIG_DEBUG),,$(HAVE_GNU_STRIP)) -ifeq ($(HAVE_GNU_STRIP),yes) -# Older binutils strip global symbols not needed for relocation processing -# when given --strip-unneeded. Using nm and awk to identify globals and -# keep them caused command line length issues under mingw and segfaults in -# test_libaom were observed under OS/2: simply use --strip-debug. -%.a: %_g.a - $(if $(quiet),@echo " [STRIP] $@ < $<") - $(qexec)$(STRIP) --strip-debug \ - -o $@ $< -else -%.a: %_g.a - $(if $(quiet),@echo " [CP] $@ < $<") - $(qexec)cp $< $@ -endif - -# -# Utility functions -# -pairmap=$(if $(strip $(2)),\ - $(call $(1),$(word 1,$(2)),$(word 2,$(2)))\ - $(call pairmap,$(1),$(wordlist 3,$(words $(2)),$(2)))\ -) - -enabled=$(filter-out $($(1)-no),$($(1)-yes)) -cond_enabled=$(if $(filter yes,$($(1))), $(call enabled,$(2))) - -find_file1=$(word 1,$(wildcard $(subst //,/,$(addsuffix /$(1),$(2))))) -find_file=$(foreach f,$(1),$(call find_file1,$(strip $(f)),$(strip $(2))) ) -obj_pats=.c=.c.o $(AS_SFX)=$(AS_SFX).o .cc=.cc.o .cpp=.cpp.o -objs=$(addprefix $(BUILD_PFX),$(foreach p,$(obj_pats),$(filter %.o,$(1:$(p))) )) - -install_map_templates=$(eval $(call install_map_template,$(1),$(2))) - -not=$(subst yes,no,$(1)) - -ifeq ($(CONFIG_MSVS),yes) -lib_file_name=$(1).lib -else -lib_file_name=lib$(1).a -endif -# -# Rule Templates -# -define linker_template -$(1): $(filter-out -%,$(2)) -$(1): - $(if $(quiet),@echo " [LD] $$@") - $(qexec)$$(LD) $$(strip $$(INTERNAL_LDFLAGS) $$(LDFLAGS) -o $$@ $(2) $(3) $$(extralibs)) -endef -define linkerxx_template -$(1): $(filter-out -%,$(2)) -$(1): - $(if $(quiet),@echo " [LD] $$@") - $(qexec)$$(CXX) $$(strip $$(INTERNAL_LDFLAGS) $$(LDFLAGS) -o $$@ $(2) $(3) $$(extralibs)) -endef -# make-3.80 has a bug with expanding large input strings to the eval function, -# which was triggered in some cases by the following component of -# linker_template: -# $(1): $$(call find_file, $(patsubst -l%,lib%.a,$(filter -l%,$(2))),\ -# $$(patsubst -L%,%,$$(filter -L%,$$(LDFLAGS) $(2)))) -# This may be useful to revisit in the future (it tries to locate libraries -# in a search path and add them as prerequisites - -define install_map_template -$(DIST_DIR)/$(1): $(2) - $(if $(quiet),@echo " [INSTALL] $$@") - $(qexec)mkdir -p $$(dir $$@) - $(qexec)cp -p $$< $$@ -endef - -define archive_template -# Not using a pattern rule here because we don't want to generate empty -# archives when they are listed as a dependency in files not responsible -# for creating them. -$(1): - $(if $(quiet),@echo " [AR] $$@") - $(qexec)$$(AR) $$(ARFLAGS) $$@ $$^ -endef - -define so_template -# Not using a pattern rule here because we don't want to generate empty -# archives when they are listed as a dependency in files not responsible -# for creating them. -# -# This needs further abstraction for dealing with non-GNU linkers. -$(1): - $(if $(quiet),@echo " [LD] $$@") - $(qexec)$$(LD) -shared $$(LDFLAGS) \ - -Wl,--no-undefined -Wl,-soname,$$(SONAME) \ - -Wl,--version-script,$$(EXPORTS_FILE) -o $$@ \ - $$(filter %.o,$$^) $$(extralibs) -endef - -define dl_template -# Not using a pattern rule here because we don't want to generate empty -# archives when they are listed as a dependency in files not responsible -# for creating them. -$(1): - $(if $(quiet),@echo " [LD] $$@") - $(qexec)$$(LD) -dynamiclib $$(LDFLAGS) \ - -exported_symbols_list $$(EXPORTS_FILE) \ - -Wl,-headerpad_max_install_names,-compatibility_version,1.0,-current_version,$$(VERSION_MAJOR) \ - -o $$@ \ - $$(filter %.o,$$^) $$(extralibs) -endef - -define dll_template -# Not using a pattern rule here because we don't want to generate empty -# archives when they are listed as a dependency in files not responsible -# for creating them. -$(1): - $(if $(quiet),@echo " [LD] $$@") - $(qexec)$$(LD) -Zdll $$(LDFLAGS) \ - -o $$@ \ - $$(filter %.o,$$^) $$(extralibs) $$(EXPORTS_FILE) -endef - - -# -# Get current configuration -# -ifneq ($(target),) -include $(SRC_PATH_BARE)/$(target:-$(TOOLCHAIN)=).mk -endif - -skip_deps := $(filter %clean,$(MAKECMDGOALS)) -skip_deps += $(findstring testdata,$(MAKECMDGOALS)) -ifeq ($(strip $(skip_deps)),) - ifeq ($(CONFIG_DEPENDENCY_TRACKING),yes) - # Older versions of make don't like -include directives with no arguments - ifneq ($(filter %.d,$(OBJS-yes:.o=.d)),) - -include $(filter %.d,$(OBJS-yes:.o=.d)) - endif - endif -endif - -# -# Configuration dependent rules -# -$(call pairmap,install_map_templates,$(INSTALL_MAPS)) - -DOCS=$(call cond_enabled,CONFIG_INSTALL_DOCS,DOCS) -.docs: $(DOCS) - @touch $@ - -INSTALL-DOCS=$(call cond_enabled,CONFIG_INSTALL_DOCS,INSTALL-DOCS) -ifeq ($(MAKECMDGOALS),dist) -INSTALL-DOCS+=$(call cond_enabled,CONFIG_INSTALL_DOCS,DIST-DOCS) -endif -.install-docs: .docs $(addprefix $(DIST_DIR)/,$(INSTALL-DOCS)) - @touch $@ - -clean:: - rm -f .docs .install-docs $(DOCS) - -BINS=$(call enabled,BINS) -.bins: $(BINS) - @touch $@ - -INSTALL-BINS=$(call cond_enabled,CONFIG_INSTALL_BINS,INSTALL-BINS) -ifeq ($(MAKECMDGOALS),dist) -INSTALL-BINS+=$(call cond_enabled,CONFIG_INSTALL_BINS,DIST-BINS) -endif -.install-bins: .bins $(addprefix $(DIST_DIR)/,$(INSTALL-BINS)) - @touch $@ - -clean:: - rm -f .bins .install-bins $(BINS) - -LIBS=$(call enabled,LIBS) -.libs: $(LIBS) - @touch $@ -$(foreach lib,$(filter %_g.a,$(LIBS)),$(eval $(call archive_template,$(lib)))) -$(foreach lib,$(filter %so.$(SO_VERSION_MAJOR).$(SO_VERSION_MINOR).$(SO_VERSION_PATCH),$(LIBS)),$(eval $(call so_template,$(lib)))) -$(foreach lib,$(filter %$(SO_VERSION_MAJOR).dylib,$(LIBS)),$(eval $(call dl_template,$(lib)))) -$(foreach lib,$(filter %$(SO_VERSION_MAJOR).dll,$(LIBS)),$(eval $(call dll_template,$(lib)))) - -INSTALL-LIBS=$(call cond_enabled,CONFIG_INSTALL_LIBS,INSTALL-LIBS) -ifeq ($(MAKECMDGOALS),dist) -INSTALL-LIBS+=$(call cond_enabled,CONFIG_INSTALL_LIBS,DIST-LIBS) -endif -.install-libs: .libs $(addprefix $(DIST_DIR)/,$(INSTALL-LIBS)) - @touch $@ - -clean:: - rm -f .libs .install-libs $(LIBS) - -ifeq ($(CONFIG_EXTERNAL_BUILD),yes) -PROJECTS=$(call enabled,PROJECTS) -.projects: $(PROJECTS) - @touch $@ - -INSTALL-PROJECTS=$(call cond_enabled,CONFIG_INSTALL_PROJECTS,INSTALL-PROJECTS) -ifeq ($(MAKECMDGOALS),dist) -INSTALL-PROJECTS+=$(call cond_enabled,CONFIG_INSTALL_PROJECTS,DIST-PROJECTS) -endif -.install-projects: .projects $(addprefix $(DIST_DIR)/,$(INSTALL-PROJECTS)) - @touch $@ - -clean:: - rm -f .projects .install-projects $(PROJECTS) -endif - -# If there are any source files to be distributed, then include the build -# system too. -ifneq ($(call enabled,DIST-SRCS),) - DIST-SRCS-yes += configure - DIST-SRCS-yes += build/make/configure.sh - DIST-SRCS-yes += build/make/gen_asm_deps.sh - DIST-SRCS-yes += build/make/Makefile - DIST-SRCS-$(CONFIG_MSVS) += build/make/gen_msvs_def.sh - DIST-SRCS-$(CONFIG_MSVS) += build/make/gen_msvs_sln.sh - DIST-SRCS-$(CONFIG_MSVS) += build/make/gen_msvs_vcxproj.sh - DIST-SRCS-$(CONFIG_MSVS) += build/make/msvs_common.sh - DIST-SRCS-$(CONFIG_RVCT) += build/make/armlink_adapter.sh - DIST-SRCS-$(ARCH_ARM) += build/make/ads2gas.pl - DIST-SRCS-$(ARCH_ARM) += build/make/ads2gas_apple.pl - DIST-SRCS-$(ARCH_ARM) += build/make/ads2armasm_ms.pl - DIST-SRCS-$(ARCH_ARM) += build/make/thumb.pm - DIST-SRCS-yes += $(target:-$(TOOLCHAIN)=).mk -endif -INSTALL-SRCS := $(call cond_enabled,CONFIG_INSTALL_SRCS,INSTALL-SRCS) -ifeq ($(MAKECMDGOALS),dist) -INSTALL-SRCS += $(call cond_enabled,CONFIG_INSTALL_SRCS,DIST-SRCS) -endif -.install-srcs: $(addprefix $(DIST_DIR)/src/,$(INSTALL-SRCS)) - @touch $@ - -clean:: - rm -f .install-srcs - -ifeq ($(CONFIG_EXTERNAL_BUILD),yes) - BUILD_TARGETS += .projects - INSTALL_TARGETS += .install-projects -endif -BUILD_TARGETS += .docs .libs .bins -INSTALL_TARGETS += .install-docs .install-srcs .install-libs .install-bins -all: $(BUILD_TARGETS) -install:: $(INSTALL_TARGETS) -dist: $(INSTALL_TARGETS) -test:: - -.SUFFIXES: # Delete default suffix rules diff --git a/third_party/aom/build/make/ads2armasm_ms.pl b/third_party/aom/build/make/ads2armasm_ms.pl deleted file mode 100755 index 8568a2dad..000000000 --- a/third_party/aom/build/make/ads2armasm_ms.pl +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env perl -## 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. -## - -use FindBin; -use lib $FindBin::Bin; -use thumb; - -print "; This file was created from a .asm file\n"; -print "; using the ads2armasm_ms.pl script.\n"; - -while (<STDIN>) -{ - undef $comment; - undef $line; - - s/REQUIRE8//; - s/PRESERVE8//; - s/^\s*ARM\s*$//; - s/AREA\s+\|\|(.*)\|\|/AREA |$1|/; - s/qsubaddx/qsax/i; - s/qaddsubx/qasx/i; - - thumb::FixThumbInstructions($_, 1); - - s/ldrneb/ldrbne/i; - s/ldrneh/ldrhne/i; - s/^(\s*)ENDP.*/$&\n$1ALIGN 4/; - - print; -} - diff --git a/third_party/aom/build/make/ads2gas.pl b/third_party/aom/build/make/ads2gas.pl deleted file mode 100755 index adf45a3c9..000000000 --- a/third_party/aom/build/make/ads2gas.pl +++ /dev/null @@ -1,236 +0,0 @@ -#!/usr/bin/env perl -## 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. -## - - -# ads2gas.pl -# Author: Eric Fung (efung (at) acm.org) -# -# Convert ARM Developer Suite 1.0.1 syntax assembly source to GNU as format -# -# Usage: cat inputfile | perl ads2gas.pl > outputfile -# - -use FindBin; -use lib $FindBin::Bin; -use thumb; - -my $thumb = 0; - -foreach my $arg (@ARGV) { - $thumb = 1 if ($arg eq "-thumb"); -} - -print "@ This file was created from a .asm file\n"; -print "@ using the ads2gas.pl script.\n"; -print "\t.equ DO1STROUNDING, 0\n"; -if ($thumb) { - print "\t.syntax unified\n"; - print "\t.thumb\n"; -} - -# Stack of procedure names. -@proc_stack = (); - -while (<STDIN>) -{ - undef $comment; - undef $line; - $comment_char = ";"; - $comment_sub = "@"; - - # Handle comments. - if (/$comment_char/) - { - $comment = ""; - ($line, $comment) = /(.*?)$comment_char(.*)/; - $_ = $line; - } - - # Load and store alignment - s/@/,:/g; - - # Hexadecimal constants prefaced by 0x - s/#&/#0x/g; - - # Convert :OR: to | - s/:OR:/ | /g; - - # Convert :AND: to & - s/:AND:/ & /g; - - # Convert :NOT: to ~ - s/:NOT:/ ~ /g; - - # Convert :SHL: to << - s/:SHL:/ << /g; - - # Convert :SHR: to >> - s/:SHR:/ >> /g; - - # Convert ELSE to .else - s/\bELSE\b/.else/g; - - # Convert ENDIF to .endif - s/\bENDIF\b/.endif/g; - - # Convert ELSEIF to .elseif - s/\bELSEIF\b/.elseif/g; - - # Convert LTORG to .ltorg - s/\bLTORG\b/.ltorg/g; - - # Convert endfunc to nothing. - s/\bendfunc\b//ig; - - # Convert FUNCTION to nothing. - s/\bFUNCTION\b//g; - s/\bfunction\b//g; - - s/\bENTRY\b//g; - s/\bMSARMASM\b/0/g; - s/^\s+end\s+$//g; - - # Convert IF :DEF:to .if - # gcc doesn't have the ability to do a conditional - # if defined variable that is set by IF :DEF: on - # armasm, so convert it to a normal .if and then - # make sure to define a value elesewhere - if (s/\bIF :DEF:\b/.if /g) - { - s/=/==/g; - } - - # Convert IF to .if - if (s/\bIF\b/.if/g) - { - s/=+/==/g; - } - - # Convert INCLUDE to .INCLUDE "file" - s/INCLUDE(\s*)(.*)$/.include $1\"$2\"/; - - # Code directive (ARM vs Thumb) - s/CODE([0-9][0-9])/.code $1/; - - # No AREA required - # But ALIGNs in AREA must be obeyed - s/^\s*AREA.*ALIGN=([0-9])$/.text\n.p2align $1/; - # If no ALIGN, strip the AREA and align to 4 bytes - s/^\s*AREA.*$/.text\n.p2align 2/; - - # DCD to .word - # This one is for incoming symbols - s/DCD\s+\|(\w*)\|/.long $1/; - - # DCW to .short - s/DCW\s+\|(\w*)\|/.short $1/; - s/DCW(.*)/.short $1/; - - # Constants defined in scope - s/DCD(.*)/.long $1/; - s/DCB(.*)/.byte $1/; - - # RN to .req - if (s/RN\s+([Rr]\d+|lr)/.req $1/) - { - print; - print "$comment_sub$comment\n" if defined $comment; - next; - } - - # Make function visible to linker, and make additional symbol with - # prepended underscore - s/EXPORT\s+\|([\$\w]*)\|/.global $1 \n\t.type $1, function/; - s/IMPORT\s+\|([\$\w]*)\|/.global $1/; - - s/EXPORT\s+([\$\w]*)/.global $1/; - s/export\s+([\$\w]*)/.global $1/; - - # No vertical bars required; make additional symbol with prepended - # underscore - s/^\|(\$?\w+)\|/_$1\n\t$1:/g; - - # Labels need trailing colon -# s/^(\w+)/$1:/ if !/EQU/; - # put the colon at the end of the line in the macro - s/^([a-zA-Z_0-9\$]+)/$1:/ if !/EQU/; - - # ALIGN directive - s/\bALIGN\b/.balign/g; - - if ($thumb) { - # ARM code - we force everything to thumb with the declaration in the header - s/\sARM//g; - } else { - # ARM code - s/\sARM/.arm/g; - } - - # push/pop - s/(push\s+)(r\d+)/stmdb sp\!, \{$2\}/g; - s/(pop\s+)(r\d+)/ldmia sp\!, \{$2\}/g; - - # NEON code - s/(vld1.\d+\s+)(q\d+)/$1\{$2\}/g; - s/(vtbl.\d+\s+[^,]+),([^,]+)/$1,\{$2\}/g; - - if ($thumb) { - thumb::FixThumbInstructions($_, 0); - } - - # eabi_attributes numerical equivalents can be found in the - # "ARM IHI 0045C" document. - - # REQUIRE8 Stack is required to be 8-byte aligned - s/\sREQUIRE8/.eabi_attribute 24, 1 \@Tag_ABI_align_needed/g; - - # PRESERVE8 Stack 8-byte align is preserved - s/\sPRESERVE8/.eabi_attribute 25, 1 \@Tag_ABI_align_preserved/g; - - # Use PROC and ENDP to give the symbols a .size directive. - # This makes them show up properly in debugging tools like gdb and valgrind. - if (/\bPROC\b/) - { - my $proc; - /^_([\.0-9A-Z_a-z]\w+)\b/; - $proc = $1; - push(@proc_stack, $proc) if ($proc); - s/\bPROC\b/@ $&/; - } - if (/\bENDP\b/) - { - my $proc; - s/\bENDP\b/@ $&/; - $proc = pop(@proc_stack); - $_ = "\t.size $proc, .-$proc".$_ if ($proc); - } - - # EQU directive - s/(\S+\s+)EQU(\s+\S+)/.equ $1, $2/; - - # Begin macro definition - if (/\bMACRO\b/) { - $_ = <STDIN>; - s/^/.macro/; - s/\$//g; # remove formal param reference - s/;/@/g; # change comment characters - } - - # For macros, use \ to reference formal params - s/\$/\\/g; # End macro definition - s/\bMEND\b/.endm/; # No need to tell it where to stop assembling - next if /^\s*END\s*$/; - print; - print "$comment_sub$comment\n" if defined $comment; -} - -# Mark that this object doesn't need an executable stack. -printf ("\t.section\t.note.GNU-stack,\"\",\%\%progbits\n"); diff --git a/third_party/aom/build/make/ads2gas_apple.pl b/third_party/aom/build/make/ads2gas_apple.pl deleted file mode 100755 index 31ec91d56..000000000 --- a/third_party/aom/build/make/ads2gas_apple.pl +++ /dev/null @@ -1,235 +0,0 @@ -#!/usr/bin/env perl -## 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. -## - - -# ads2gas_apple.pl -# Author: Eric Fung (efung (at) acm.org) -# -# Convert ARM Developer Suite 1.0.1 syntax assembly source to GNU as format -# -# Usage: cat inputfile | perl ads2gas_apple.pl > outputfile -# - -my $chromium = 0; - -foreach my $arg (@ARGV) { - $chromium = 1 if ($arg eq "-chromium"); -} - -print "@ This file was created from a .asm file\n"; -print "@ using the ads2gas_apple.pl script.\n\n"; -print "\t.set WIDE_REFERENCE, 0\n"; -print "\t.set ARCHITECTURE, 5\n"; -print "\t.set DO1STROUNDING, 0\n"; - -my %register_aliases; -my %macro_aliases; - -my @mapping_list = ("\$0", "\$1", "\$2", "\$3", "\$4", "\$5", "\$6", "\$7", "\$8", "\$9"); - -my @incoming_array; - -my @imported_functions; - -# Perl trim function to remove whitespace from the start and end of the string -sub trim($) -{ - my $string = shift; - $string =~ s/^\s+//; - $string =~ s/\s+$//; - return $string; -} - -while (<STDIN>) -{ - # Load and store alignment - s/@/,:/g; - - # Comment character - s/;/ @/g; - - # Hexadecimal constants prefaced by 0x - s/#&/#0x/g; - - # Convert :OR: to | - s/:OR:/ | /g; - - # Convert :AND: to & - s/:AND:/ & /g; - - # Convert :NOT: to ~ - s/:NOT:/ ~ /g; - - # Convert :SHL: to << - s/:SHL:/ << /g; - - # Convert :SHR: to >> - s/:SHR:/ >> /g; - - # Convert ELSE to .else - s/\bELSE\b/.else/g; - - # Convert ENDIF to .endif - s/\bENDIF\b/.endif/g; - - # Convert ELSEIF to .elseif - s/\bELSEIF\b/.elseif/g; - - # Convert LTORG to .ltorg - s/\bLTORG\b/.ltorg/g; - - # Convert IF :DEF:to .if - # gcc doesn't have the ability to do a conditional - # if defined variable that is set by IF :DEF: on - # armasm, so convert it to a normal .if and then - # make sure to define a value elesewhere - if (s/\bIF :DEF:\b/.if /g) - { - s/=/==/g; - } - - # Convert IF to .if - if (s/\bIF\b/.if/g) - { - s/=/==/g; - } - - # Convert INCLUDE to .INCLUDE "file" - s/INCLUDE(\s*)(.*)$/.include $1\"$2\"/; - - # Code directive (ARM vs Thumb) - s/CODE([0-9][0-9])/.code $1/; - - # No AREA required - # But ALIGNs in AREA must be obeyed - s/^\s*AREA.*ALIGN=([0-9])$/.text\n.p2align $1/; - # If no ALIGN, strip the AREA and align to 4 bytes - s/^\s*AREA.*$/.text\n.p2align 2/; - - # DCD to .word - # This one is for incoming symbols - s/DCD\s+\|(\w*)\|/.long $1/; - - # DCW to .short - s/DCW\s+\|(\w*)\|/.short $1/; - s/DCW(.*)/.short $1/; - - # Constants defined in scope - s/DCD(.*)/.long $1/; - s/DCB(.*)/.byte $1/; - - # Build a hash of all the register - alias pairs. - if (s/(.*)RN(.*)/$1 .req $2/g) - { - $register_aliases{trim($1)} = trim($2); - next; - } - - while (($key, $value) = each(%register_aliases)) - { - s/\b$key\b/$value/g; - } - - # Make function visible to linker, and make additional symbol with - # prepended underscore - s/EXPORT\s+\|([\$\w]*)\|/.globl _$1\n\t.globl $1/; - - # Prepend imported functions with _ - if (s/IMPORT\s+\|([\$\w]*)\|/.globl $1/) - { - $function = trim($1); - push(@imported_functions, $function); - } - - foreach $function (@imported_functions) - { - s/$function/_$function/; - } - - # No vertical bars required; make additional symbol with prepended - # underscore - s/^\|(\$?\w+)\|/_$1\n\t$1:/g; - - # Labels need trailing colon -# s/^(\w+)/$1:/ if !/EQU/; - # put the colon at the end of the line in the macro - s/^([a-zA-Z_0-9\$]+)/$1:/ if !/EQU/; - - # ALIGN directive - s/\bALIGN\b/.balign/g; - - # Strip ARM - s/\sARM/@ ARM/g; - - # Strip REQUIRE8 - #s/\sREQUIRE8/@ REQUIRE8/g; - s/\sREQUIRE8/@ /g; - - # Strip PRESERVE8 - s/\sPRESERVE8/@ PRESERVE8/g; - - # Strip PROC and ENDPROC - s/\bPROC\b/@/g; - s/\bENDP\b/@/g; - - # EQU directive - s/(.*)EQU(.*)/.set $1, $2/; - - # Begin macro definition - if (/\bMACRO\b/) - { - # Process next line down, which will be the macro definition - $_ = <STDIN>; - - $trimmed = trim($_); - - # remove commas that are separating list - $trimmed =~ s/,//g; - - # string to array - @incoming_array = split(/\s+/, $trimmed); - - print ".macro @incoming_array[0]\n"; - - # remove the first element, as that is the name of the macro - shift (@incoming_array); - - @macro_aliases{@incoming_array} = @mapping_list; - - next; - } - - while (($key, $value) = each(%macro_aliases)) - { - $key =~ s/\$/\\\$/; - s/$key\b/$value/g; - } - - # For macros, use \ to reference formal params -# s/\$/\\/g; # End macro definition - s/\bMEND\b/.endm/; # No need to tell it where to stop assembling - next if /^\s*END\s*$/; - - # Clang used by Chromium differs slightly from clang in XCode in what it - # will accept in the assembly. - if ($chromium) { - s/qsubaddx/qsax/i; - s/qaddsubx/qasx/i; - s/ldrneb/ldrbne/i; - s/ldrneh/ldrhne/i; - s/(vqshrun\.s16 .*, \#)0$/${1}8/i; - - # http://llvm.org/bugs/show_bug.cgi?id=16022 - s/\.include/#include/; - } - - print; -} diff --git a/third_party/aom/build/make/armlink_adapter.sh b/third_party/aom/build/make/armlink_adapter.sh deleted file mode 100755 index 85c6c96c1..000000000 --- a/third_party/aom/build/make/armlink_adapter.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/sh -## 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. -## - -verbose=0 -set -- $* -for i; do - if [ "$i" = "-o" ]; then - on_of=1 - elif [ "$i" = "-v" ]; then - verbose=1 - elif [ "$i" = "-g" ]; then - args="${args} --debug" - elif [ "$on_of" = "1" ]; then - outfile=$i - on_of=0 - elif [ -f "$i" ]; then - infiles="$infiles $i" - elif [ "${i#-l}" != "$i" ]; then - libs="$libs ${i#-l}" - elif [ "${i#-L}" != "$i" ]; then - libpaths="${libpaths} ${i#-L}" - else - args="${args} ${i}" - fi - shift -done - -# Absolutize library file names -for f in $libs; do - found=0 - for d in $libpaths; do - [ -f "$d/$f" ] && infiles="$infiles $d/$f" && found=1 && break - [ -f "$d/lib${f}.so" ] && infiles="$infiles $d/lib${f}.so" && found=1 && break - [ -f "$d/lib${f}.a" ] && infiles="$infiles $d/lib${f}.a" && found=1 && break - done - [ $found -eq 0 ] && infiles="$infiles $f" -done -for d in $libpaths; do - [ -n "$libsearchpath" ] && libsearchpath="${libsearchpath}," - libsearchpath="${libsearchpath}$d" -done - -cmd="armlink $args --userlibpath=$libsearchpath --output=$outfile $infiles" -[ $verbose -eq 1 ] && echo $cmd -$cmd diff --git a/third_party/aom/build/make/configure.sh b/third_party/aom/build/make/configure.sh deleted file mode 100644 index b18173b82..000000000 --- a/third_party/aom/build/make/configure.sh +++ /dev/null @@ -1,1522 +0,0 @@ -#!/bin/sh -## -## configure.sh -## -## This script is sourced by the main configure script and contains -## utility functions and other common bits that aren't strictly libaom -## related. -## -## This build system is based in part on the FFmpeg configure script. -## - - -# -# Logging / Output Functions -# -die_unknown(){ - echo "Unknown option \"$1\"." - echo "See $0 --help for available options." - clean_temp_files - exit 1 -} - -die() { - echo "$@" - echo - echo "Configuration failed. This could reflect a misconfiguration of your" - echo "toolchains, improper options selected, or another problem. If you" - echo "don't see any useful error messages above, the next step is to look" - echo "at the configure error log file ($logfile) to determine what" - echo "configure was trying to do when it died." - clean_temp_files - exit 1 -} - -log(){ - echo "$@" >>$logfile -} - -log_file(){ - log BEGIN $1 - cat -n $1 >>$logfile - log END $1 -} - -log_echo() { - echo "$@" - log "$@" -} - -fwrite () { - outfile=$1 - shift - echo "$@" >> ${outfile} -} - -show_help_pre(){ - for opt in ${CMDLINE_SELECT}; do - opt2=`echo $opt | sed -e 's;_;-;g'` - if enabled $opt; then - eval "toggle_${opt}=\"--disable-${opt2}\"" - else - eval "toggle_${opt}=\"--enable-${opt2} \"" - fi - done - - cat <<EOF -Usage: configure [options] -Options: - -Build options: - --help print this message - --log=yes|no|FILE file configure log is written to [config.log] - --target=TARGET target platform tuple [generic-gnu] - --cpu=CPU optimize for a specific cpu rather than a family - --extra-cflags=ECFLAGS add ECFLAGS to CFLAGS [$CFLAGS] - --extra-cxxflags=ECXXFLAGS add ECXXFLAGS to CXXFLAGS [$CXXFLAGS] - ${toggle_extra_warnings} emit harmless warnings (always non-fatal) - ${toggle_werror} treat warnings as errors, if possible - (not available with all compilers) - ${toggle_optimizations} turn on/off compiler optimization flags - ${toggle_pic} turn on/off Position Independent Code - ${toggle_ccache} turn on/off compiler cache - ${toggle_debug} enable/disable debug mode - ${toggle_gprof} enable/disable gprof profiling instrumentation - ${toggle_gcov} enable/disable gcov coverage instrumentation - ${toggle_thumb} enable/disable building arm assembly in thumb mode - ${toggle_dependency_tracking} - disable to speed up one-time build - -Install options: - ${toggle_install_docs} control whether docs are installed - ${toggle_install_bins} control whether binaries are installed - ${toggle_install_libs} control whether libraries are installed - ${toggle_install_srcs} control whether sources are installed - - -EOF -} - -show_help_post(){ - cat <<EOF - - -NOTES: - Object files are built at the place where configure is launched. - - All boolean options can be negated. The default value is the opposite - of that shown above. If the option --disable-foo is listed, then - the default value for foo is enabled. - -Supported targets: -EOF - show_targets ${all_platforms} - echo - exit 1 -} - -show_targets() { - while [ -n "$*" ]; do - if [ "${1%%-*}" = "${2%%-*}" ]; then - if [ "${2%%-*}" = "${3%%-*}" ]; then - printf " %-24s %-24s %-24s\n" "$1" "$2" "$3" - shift; shift; shift - else - printf " %-24s %-24s\n" "$1" "$2" - shift; shift - fi - else - printf " %-24s\n" "$1" - shift - fi - done -} - -show_help() { - show_help_pre - show_help_post -} - -# -# List Processing Functions -# -set_all(){ - value=$1 - shift - for var in $*; do - eval $var=$value - done -} - -is_in(){ - value=$1 - shift - for var in $*; do - [ $var = $value ] && return 0 - done - return 1 -} - -add_cflags() { - CFLAGS="${CFLAGS} $@" - CXXFLAGS="${CXXFLAGS} $@" -} - -add_cflags_only() { - CFLAGS="${CFLAGS} $@" -} - -add_cxxflags_only() { - CXXFLAGS="${CXXFLAGS} $@" -} - -add_ldflags() { - LDFLAGS="${LDFLAGS} $@" -} - -add_asflags() { - ASFLAGS="${ASFLAGS} $@" -} - -add_extralibs() { - extralibs="${extralibs} $@" -} - -# -# Boolean Manipulation Functions -# - -enable_feature(){ - set_all yes $* -} - -disable_feature(){ - set_all no $* -} - -enabled(){ - eval test "x\$$1" = "xyes" -} - -disabled(){ - eval test "x\$$1" = "xno" -} - -enable_codec(){ - enabled "${1}" || echo " enabling ${1}" - enable_feature "${1}" - - is_in "${1}" av1 && enable_feature "${1}_encoder" "${1}_decoder" -} - -disable_codec(){ - disabled "${1}" || echo " disabling ${1}" - disable_feature "${1}" - - is_in "${1}" av1 && disable_feature "${1}_encoder" "${1}_decoder" -} - -# Iterates through positional parameters, checks to confirm the parameter has -# not been explicitly (force) disabled, and enables the setting controlled by -# the parameter when the setting is not disabled. -# Note: Does NOT alter RTCD generation options ($RTCD_OPTIONS). -soft_enable() { - for var in $*; do - if ! disabled $var; then - enabled $var || log_echo " enabling $var" - enable_feature $var - fi - done -} - -# Iterates through positional parameters, checks to confirm the parameter has -# not been explicitly (force) enabled, and disables the setting controlled by -# the parameter when the setting is not enabled. -# Note: Does NOT alter RTCD generation options ($RTCD_OPTIONS). -soft_disable() { - for var in $*; do - if ! enabled $var; then - disabled $var || log_echo " disabling $var" - disable_feature $var - fi - done -} - -# -# Text Processing Functions -# -toupper(){ - echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ -} - -tolower(){ - echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz -} - -# -# Temporary File Functions -# -source_path=${0%/*} -enable_feature source_path_used -if [ -z "$source_path" ] || [ "$source_path" = "." ]; then - source_path="`pwd`" - disable_feature source_path_used -fi - -if test ! -z "$TMPDIR" ; then - TMPDIRx="${TMPDIR}" -elif test ! -z "$TEMPDIR" ; then - TMPDIRx="${TEMPDIR}" -else - TMPDIRx="/tmp" -fi -RAND=$(awk 'BEGIN { srand(); printf "%d\n",(rand() * 32768)}') -TMP_H="${TMPDIRx}/aom-conf-$$-${RAND}.h" -TMP_C="${TMPDIRx}/aom-conf-$$-${RAND}.c" -TMP_CC="${TMPDIRx}/aom-conf-$$-${RAND}.cc" -TMP_O="${TMPDIRx}/aom-conf-$$-${RAND}.o" -TMP_X="${TMPDIRx}/aom-conf-$$-${RAND}.x" -TMP_ASM="${TMPDIRx}/aom-conf-$$-${RAND}.asm" - -clean_temp_files() { - rm -f ${TMP_C} ${TMP_CC} ${TMP_H} ${TMP_O} ${TMP_X} ${TMP_ASM} - enabled gcov && rm -f ${TMP_C%.c}.gcno ${TMP_CC%.cc}.gcno -} - -# -# Toolchain Check Functions -# -check_cmd() { - enabled external_build && return - log "$@" - "$@" >>${logfile} 2>&1 -} - -check_cc() { - log check_cc "$@" - cat >${TMP_C} - log_file ${TMP_C} - check_cmd ${CC} ${CFLAGS} "$@" -c -o ${TMP_O} ${TMP_C} -} - -check_cxx() { - log check_cxx "$@" - cat >${TMP_CC} - log_file ${TMP_CC} - check_cmd ${CXX} ${CXXFLAGS} "$@" -c -o ${TMP_O} ${TMP_CC} -} - -check_cpp() { - log check_cpp "$@" - cat > ${TMP_C} - log_file ${TMP_C} - check_cmd ${CC} ${CFLAGS} "$@" -E -o ${TMP_O} ${TMP_C} -} - -check_ld() { - log check_ld "$@" - check_cc $@ \ - && check_cmd ${LD} ${LDFLAGS} "$@" -o ${TMP_X} ${TMP_O} ${extralibs} -} - -check_header(){ - log check_header "$@" - header=$1 - shift - var=`echo $header | sed 's/[^A-Za-z0-9_]/_/g'` - disable_feature $var - check_cpp "$@" <<EOF && enable_feature $var -#include "$header" -int x; -EOF -} - -check_cflags() { - log check_cflags "$@" - check_cc -Werror "$@" <<EOF -int x; -EOF -} - -check_cxxflags() { - log check_cxxflags "$@" - - # Catch CFLAGS that trigger CXX warnings - case "$CXX" in - *c++-analyzer|*clang++|*g++*) - check_cxx -Werror "$@" <<EOF -int x; -EOF - ;; - *) - check_cxx -Werror "$@" <<EOF -int x; -EOF - ;; - esac -} - -check_add_cflags() { - check_cxxflags "$@" && add_cxxflags_only "$@" - check_cflags "$@" && add_cflags_only "$@" -} - -check_add_cxxflags() { - check_cxxflags "$@" && add_cxxflags_only "$@" -} - -check_add_asflags() { - log add_asflags "$@" - add_asflags "$@" -} - -check_add_ldflags() { - log add_ldflags "$@" - add_ldflags "$@" -} - -check_asm_align() { - log check_asm_align "$@" - cat >${TMP_ASM} <<EOF -section .rodata -align 16 -EOF - log_file ${TMP_ASM} - check_cmd ${AS} ${ASFLAGS} -o ${TMP_O} ${TMP_ASM} - readelf -WS ${TMP_O} >${TMP_X} - log_file ${TMP_X} - if ! grep -q '\.rodata .* 16$' ${TMP_X}; then - die "${AS} ${ASFLAGS} does not support section alignment (nasm <=2.08?)" - fi -} - -# tests for -m$1 toggling the feature given in $2. If $2 is empty $1 is used. -check_gcc_machine_option() { - opt="$1" - feature="$2" - [ -n "$feature" ] || feature="$opt" - - if enabled gcc && ! disabled "$feature" && ! check_cflags "-m$opt"; then - RTCD_OPTIONS="${RTCD_OPTIONS}--disable-$feature " - else - soft_enable "$feature" - fi -} - -write_common_config_banner() { - print_webm_license config.mk "##" "" - echo '# This file automatically generated by configure. Do not edit!' >> config.mk - echo "TOOLCHAIN := ${toolchain}" >> config.mk - - case ${toolchain} in - *-linux-rvct) - echo "ALT_LIBC := ${alt_libc}" >> config.mk - ;; - esac -} - -write_common_config_targets() { - for t in ${all_targets}; do - if enabled ${t}; then - if enabled child; then - fwrite config.mk "ALL_TARGETS += ${t}-${toolchain}" - else - fwrite config.mk "ALL_TARGETS += ${t}" - fi - fi - true; - done - true -} - -write_common_target_config_mk() { - saved_CC="${CC}" - saved_CXX="${CXX}" - enabled ccache && CC="ccache ${CC}" - enabled ccache && CXX="ccache ${CXX}" - print_webm_license $1 "##" "" - - cat >> $1 << EOF -# This file automatically generated by configure. Do not edit! -SRC_PATH="$source_path" -SRC_PATH_BARE=$source_path -BUILD_PFX=${BUILD_PFX} -TOOLCHAIN=${toolchain} -ASM_CONVERSION=${asm_conversion_cmd:-${source_path}/build/make/ads2gas.pl} -GEN_VCPROJ=${gen_vcproj_cmd} -MSVS_ARCH_DIR=${msvs_arch_dir} - -CC=${CC} -CXX=${CXX} -AR=${AR} -LD=${LD} -AS=${AS} -STRIP=${STRIP} -NM=${NM} - -CFLAGS = ${CFLAGS} -CXXFLAGS = ${CXXFLAGS} -ARFLAGS = crs\$(if \$(quiet),,v) -LDFLAGS = ${LDFLAGS} -ASFLAGS = ${ASFLAGS} -extralibs = ${extralibs} -AS_SFX = ${AS_SFX:-.asm} -EXE_SFX = ${EXE_SFX} -VCPROJ_SFX = ${VCPROJ_SFX} -RTCD_OPTIONS = ${RTCD_OPTIONS} -WX_CXXFLAGS = ${WX_CXXFLAGS} -WX_LDFLAGS = ${WX_LDFLAGS} -EOF - - if enabled rvct; then cat >> $1 << EOF -fmt_deps = sed -e 's;^__image.axf;\${@:.d=.o} \$@;' #hide -EOF - else cat >> $1 << EOF -fmt_deps = sed -e 's;^\([a-zA-Z0-9_]*\)\.o;\${@:.d=.o} \$@;' -EOF - fi - - print_config_mk ARCH "${1}" ${ARCH_LIST} - print_config_mk HAVE "${1}" ${HAVE_LIST} - print_config_mk CONFIG "${1}" ${CONFIG_LIST} - print_config_mk HAVE "${1}" gnu_strip - - enabled msvs && echo "CONFIG_VS_VERSION=${vs_version}" >> "${1}" - - CC="${saved_CC}" - CXX="${saved_CXX}" -} - -write_common_target_config_h() { - print_webm_license ${TMP_H} "/*" " */" - cat >> ${TMP_H} << EOF -/* This file automatically generated by configure. Do not edit! */ -#ifndef AOM_CONFIG_H -#define AOM_CONFIG_H -#define RESTRICT ${RESTRICT} -#define INLINE ${INLINE} -EOF - print_config_h ARCH "${TMP_H}" ${ARCH_LIST} - print_config_h HAVE "${TMP_H}" ${HAVE_LIST} - print_config_h CONFIG "${TMP_H}" ${CONFIG_LIST} - print_config_vars_h "${TMP_H}" ${VAR_LIST} - echo "#endif /* AOM_CONFIG_H */" >> ${TMP_H} - mkdir -p `dirname "$1"` - cmp "$1" ${TMP_H} >/dev/null 2>&1 || mv ${TMP_H} "$1" -} - -process_common_cmdline() { - for opt in "$@"; do - optval="${opt#*=}" - case "$opt" in - --child) - enable_feature child - ;; - --log*) - logging="$optval" - if ! disabled logging ; then - enabled logging || logfile="$logging" - else - logfile=/dev/null - fi - ;; - --target=*) - toolchain="${toolchain:-${optval}}" - ;; - --force-target=*) - toolchain="${toolchain:-${optval}}" - enable_feature force_toolchain - ;; - --cpu=*) - tune_cpu="$optval" - ;; - --extra-cflags=*) - extra_cflags="${optval}" - ;; - --extra-cxxflags=*) - extra_cxxflags="${optval}" - ;; - --enable-?*|--disable-?*) - eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'` - if is_in ${option} ${ARCH_EXT_LIST}; then - [ $action = "disable" ] && RTCD_OPTIONS="${RTCD_OPTIONS}--disable-${option} " - elif [ $action = "disable" ] && ! disabled $option ; then - is_in ${option} ${CMDLINE_SELECT} || die_unknown $opt - log_echo " disabling $option" - elif [ $action = "enable" ] && ! enabled $option ; then - is_in ${option} ${CMDLINE_SELECT} || die_unknown $opt - log_echo " enabling $option" - fi - ${action}_feature $option - ;; - --require-?*) - eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'` - if is_in ${option} ${ARCH_EXT_LIST}; then - RTCD_OPTIONS="${RTCD_OPTIONS}${opt} " - else - die_unknown $opt - fi - ;; - --force-enable-?*|--force-disable-?*) - eval `echo "$opt" | sed 's/--force-/action=/;s/-/ option=/;s/-/_/g'` - ${action}_feature $option - ;; - --libc=*) - [ -d "${optval}" ] || die "Not a directory: ${optval}" - disable_feature builtin_libc - alt_libc="${optval}" - ;; - --as=*) - [ "${optval}" = yasm ] || [ "${optval}" = nasm ] \ - || [ "${optval}" = auto ] \ - || die "Must be yasm, nasm or auto: ${optval}" - alt_as="${optval}" - ;; - --size-limit=*) - w="${optval%%x*}" - h="${optval##*x}" - VAR_LIST="DECODE_WIDTH_LIMIT ${w} DECODE_HEIGHT_LIMIT ${h}" - [ ${w} -gt 0 ] && [ ${h} -gt 0 ] || die "Invalid size-limit: too small." - [ ${w} -lt 65536 ] && [ ${h} -lt 65536 ] \ - || die "Invalid size-limit: too big." - enable_feature size_limit - ;; - --prefix=*) - prefix="${optval}" - ;; - --libdir=*) - libdir="${optval}" - ;; - --sdk-path=*) - [ -d "${optval}" ] || die "Not a directory: ${optval}" - sdk_path="${optval}" - ;; - --libc|--as|--prefix|--libdir|--sdk-path) - die "Option ${opt} requires argument" - ;; - --help|-h) - show_help - ;; - *) - die_unknown $opt - ;; - esac - done -} - -process_cmdline() { - for opt do - optval="${opt#*=}" - case "$opt" in - *) - process_common_cmdline $opt - ;; - esac - done -} - -post_process_common_cmdline() { - prefix="${prefix:-/usr/local}" - prefix="${prefix%/}" - libdir="${libdir:-${prefix}/lib}" - libdir="${libdir%/}" - if [ "${libdir#${prefix}}" = "${libdir}" ]; then - die "Libdir ${libdir} must be a subdirectory of ${prefix}" - fi -} - -post_process_cmdline() { - true; -} - -setup_gnu_toolchain() { - CC=${CC:-${CROSS}gcc} - CXX=${CXX:-${CROSS}g++} - AR=${AR:-${CROSS}ar} - LD=${LD:-${CROSS}${link_with_cc:-ld}} - AS=${AS:-${CROSS}as} - STRIP=${STRIP:-${CROSS}strip} - NM=${NM:-${CROSS}nm} - AS_SFX=.s - EXE_SFX= -} - -# Reliably find the newest available Darwin SDKs. (Older versions of -# xcrun don't support --show-sdk-path.) -show_darwin_sdk_path() { - xcrun --sdk $1 --show-sdk-path 2>/dev/null || - xcodebuild -sdk $1 -version Path 2>/dev/null -} - -# Print the major version number of the Darwin SDK specified by $1. -show_darwin_sdk_major_version() { - xcrun --sdk $1 --show-sdk-version 2>/dev/null | cut -d. -f1 -} - -# Print the Xcode version. -show_xcode_version() { - xcodebuild -version | head -n1 | cut -d' ' -f2 -} - -# Fails when Xcode version is less than 6.3. -check_xcode_minimum_version() { - xcode_major=$(show_xcode_version | cut -f1 -d.) - xcode_minor=$(show_xcode_version | cut -f2 -d.) - xcode_min_major=6 - xcode_min_minor=3 - if [ ${xcode_major} -lt ${xcode_min_major} ]; then - return 1 - fi - if [ ${xcode_major} -eq ${xcode_min_major} ] \ - && [ ${xcode_minor} -lt ${xcode_min_minor} ]; then - return 1 - fi -} - -process_common_toolchain() { - case "$toolchain" in - *-vs*) ;; - *) add_cflags_only -std=c99 ;; - esac - - if [ -z "$toolchain" ]; then - gcctarget="${CHOST:-$(gcc -dumpmachine 2> /dev/null)}" - - # detect tgt_isa - case "$gcctarget" in - aarch64*) - tgt_isa=arm64 - ;; - armv7*-hardfloat* | armv7*-gnueabihf | arm-*-gnueabihf) - tgt_isa=armv7 - float_abi=hard - ;; - armv7*) - tgt_isa=armv7 - float_abi=softfp - ;; - *x86_64*|*amd64*) - tgt_isa=x86_64 - ;; - *i[3456]86*) - tgt_isa=x86 - ;; - *sparc*) - tgt_isa=sparc - ;; - esac - - # detect tgt_os - case "$gcctarget" in - *darwin10*) - tgt_isa=x86_64 - tgt_os=darwin10 - ;; - *darwin11*) - tgt_isa=x86_64 - tgt_os=darwin11 - ;; - *darwin12*) - tgt_isa=x86_64 - tgt_os=darwin12 - ;; - *darwin13*) - tgt_isa=x86_64 - tgt_os=darwin13 - ;; - *darwin14*) - tgt_isa=x86_64 - tgt_os=darwin14 - ;; - *darwin15*) - tgt_isa=x86_64 - tgt_os=darwin15 - ;; - *darwin16*) - tgt_isa=x86_64 - tgt_os=darwin16 - ;; - x86_64*mingw32*) - tgt_os=win64 - ;; - *mingw32*|*cygwin*) - [ -z "$tgt_isa" ] && tgt_isa=x86 - tgt_os=win32 - ;; - *linux*|*bsd*) - tgt_os=linux - ;; - *solaris2.10) - tgt_os=solaris - ;; - *os2*) - tgt_os=os2 - ;; - esac - - if [ -n "$tgt_isa" ] && [ -n "$tgt_os" ]; then - toolchain=${tgt_isa}-${tgt_os}-gcc - fi - fi - - toolchain=${toolchain:-generic-gnu} - - is_in ${toolchain} ${all_platforms} || enabled force_toolchain \ - || die "Unrecognized toolchain '${toolchain}'" - - enabled child || log_echo "Configuring for target '${toolchain}'" - - # - # Set up toolchain variables - # - tgt_isa=$(echo ${toolchain} | awk 'BEGIN{FS="-"}{print $1}') - tgt_os=$(echo ${toolchain} | awk 'BEGIN{FS="-"}{print $2}') - tgt_cc=$(echo ${toolchain} | awk 'BEGIN{FS="-"}{print $3}') - - # Mark the specific ISA requested as enabled - soft_enable ${tgt_isa} - enable_feature ${tgt_os} - enable_feature ${tgt_cc} - - # Enable the architecture family - case ${tgt_isa} in - arm*) - enable_feature arm - ;; - mips*) - enable_feature mips - ;; - esac - - # PIC is probably what we want when building shared libs - enabled shared && soft_enable pic - - # Minimum iOS version for all target platforms (darwin and iphonesimulator). - # Shared library framework builds are only possible on iOS 8 and later. - if enabled shared; then - IOS_VERSION_OPTIONS="--enable-shared" - IOS_VERSION_MIN="8.0" - else - IOS_VERSION_OPTIONS="" - IOS_VERSION_MIN="6.0" - fi - - # Handle darwin variants. Newer SDKs allow targeting older - # platforms, so use the newest one available. - case ${toolchain} in - arm*-darwin*) - add_cflags "-miphoneos-version-min=${IOS_VERSION_MIN}" - iphoneos_sdk_dir="$(show_darwin_sdk_path iphoneos)" - if [ -d "${iphoneos_sdk_dir}" ]; then - add_cflags "-isysroot ${iphoneos_sdk_dir}" - add_ldflags "-isysroot ${iphoneos_sdk_dir}" - fi - ;; - x86*-darwin*) - osx_sdk_dir="$(show_darwin_sdk_path macosx)" - if [ -d "${osx_sdk_dir}" ]; then - add_cflags "-isysroot ${osx_sdk_dir}" - add_ldflags "-isysroot ${osx_sdk_dir}" - fi - ;; - esac - - case ${toolchain} in - *-darwin8-*) - add_cflags "-mmacosx-version-min=10.4" - add_ldflags "-mmacosx-version-min=10.4" - ;; - *-darwin9-*) - add_cflags "-mmacosx-version-min=10.5" - add_ldflags "-mmacosx-version-min=10.5" - ;; - *-darwin10-*) - add_cflags "-mmacosx-version-min=10.6" - add_ldflags "-mmacosx-version-min=10.6" - ;; - *-darwin11-*) - add_cflags "-mmacosx-version-min=10.7" - add_ldflags "-mmacosx-version-min=10.7" - ;; - *-darwin12-*) - add_cflags "-mmacosx-version-min=10.8" - add_ldflags "-mmacosx-version-min=10.8" - ;; - *-darwin13-*) - add_cflags "-mmacosx-version-min=10.9" - add_ldflags "-mmacosx-version-min=10.9" - ;; - *-darwin14-*) - add_cflags "-mmacosx-version-min=10.10" - add_ldflags "-mmacosx-version-min=10.10" - ;; - *-darwin15-*) - add_cflags "-mmacosx-version-min=10.11" - add_ldflags "-mmacosx-version-min=10.11" - ;; - *-darwin16-*) - add_cflags "-mmacosx-version-min=10.12" - add_ldflags "-mmacosx-version-min=10.12" - ;; - *-iphonesimulator-*) - add_cflags "-miphoneos-version-min=${IOS_VERSION_MIN}" - add_ldflags "-miphoneos-version-min=${IOS_VERSION_MIN}" - iossim_sdk_dir="$(show_darwin_sdk_path iphonesimulator)" - if [ -d "${iossim_sdk_dir}" ]; then - add_cflags "-isysroot ${iossim_sdk_dir}" - add_ldflags "-isysroot ${iossim_sdk_dir}" - fi - ;; - esac - - # Handle Solaris variants. Solaris 10 needs -lposix4 - case ${toolchain} in - sparc-solaris-*) - add_extralibs -lposix4 - ;; - *-solaris-*) - add_extralibs -lposix4 - ;; - esac - - # Process ARM architecture variants - case ${toolchain} in - arm*) - # on arm, isa versions are supersets - case ${tgt_isa} in - arm64|armv8) - soft_enable neon - ;; - armv7|armv7s) - soft_enable neon - # Only enable neon_asm when neon is also enabled. - enabled neon && soft_enable neon_asm - # If someone tries to force it through, die. - if disabled neon && enabled neon_asm; then - die "Disabling neon while keeping neon-asm is not supported" - fi - esac - - asm_conversion_cmd="cat" - - case ${tgt_cc} in - gcc) - link_with_cc=gcc - setup_gnu_toolchain - arch_int=${tgt_isa##armv} - arch_int=${arch_int%%te} - check_add_asflags --defsym ARCHITECTURE=${arch_int} - tune_cflags="-mtune=" - if [ ${tgt_isa} = "armv7" ] || [ ${tgt_isa} = "armv7s" ]; then - if [ -z "${float_abi}" ]; then - check_cpp <<EOF && float_abi=hard || float_abi=softfp -#ifndef __ARM_PCS_VFP -#error "not hardfp" -#endif -EOF - fi - check_add_cflags -march=armv7-a -mfloat-abi=${float_abi} - check_add_asflags -march=armv7-a -mfloat-abi=${float_abi} - - if enabled neon || enabled neon_asm; then - check_add_cflags -mfpu=neon #-ftree-vectorize - check_add_asflags -mfpu=neon - fi - elif [ ${tgt_isa} = "arm64" ] || [ ${tgt_isa} = "armv8" ]; then - check_add_cflags -march=armv8-a - check_add_asflags -march=armv8-a - else - check_add_cflags -march=${tgt_isa} - check_add_asflags -march=${tgt_isa} - fi - - enabled debug && add_asflags -g - asm_conversion_cmd="${source_path}/build/make/ads2gas.pl" - if enabled thumb; then - asm_conversion_cmd="$asm_conversion_cmd -thumb" - check_add_cflags -mthumb - check_add_asflags -mthumb -mimplicit-it=always - fi - ;; - vs*) - asm_conversion_cmd="${source_path}/build/make/ads2armasm_ms.pl" - AS_SFX=.s - msvs_arch_dir=arm-msvs - disable_feature multithread - disable_feature unit_tests - vs_version=${tgt_cc##vs} - # MSVC 2013 doesn't allow doing plain .exe projects for ARM, - # only "AppContainerApplication" which requires an AppxManifest. - # Therefore disable the examples, just build the library. - disable_feature examples - ;; - rvct) - CC=armcc - AR=armar - AS=armasm - LD="${source_path}/build/make/armlink_adapter.sh" - STRIP=arm-none-linux-gnueabi-strip - NM=arm-none-linux-gnueabi-nm - tune_cflags="--cpu=" - tune_asflags="--cpu=" - if [ -z "${tune_cpu}" ]; then - if [ ${tgt_isa} = "armv7" ]; then - if enabled neon || enabled neon_asm - then - check_add_cflags --fpu=softvfp+vfpv3 - check_add_asflags --fpu=softvfp+vfpv3 - fi - check_add_cflags --cpu=Cortex-A8 - check_add_asflags --cpu=Cortex-A8 - else - check_add_cflags --cpu=${tgt_isa##armv} - check_add_asflags --cpu=${tgt_isa##armv} - fi - fi - arch_int=${tgt_isa##armv} - arch_int=${arch_int%%te} - check_add_asflags --pd "\"ARCHITECTURE SETA ${arch_int}\"" - enabled debug && add_asflags -g - add_cflags --gnu - add_cflags --enum_is_int - add_cflags --wchar32 - ;; - esac - - case ${tgt_os} in - none*) - disable_feature multithread - disable_feature os_support - ;; - - android*) - if [ -z "${sdk_path}" ]; then - die "Must specify --sdk-path for Android builds." - fi - - SDK_PATH=${sdk_path} - COMPILER_LOCATION=`find "${SDK_PATH}" \ - -name "arm-linux-androideabi-gcc*" -print -quit` - TOOLCHAIN_PATH=${COMPILER_LOCATION%/*}/arm-linux-androideabi- - CC=${TOOLCHAIN_PATH}gcc - CXX=${TOOLCHAIN_PATH}g++ - AR=${TOOLCHAIN_PATH}ar - LD=${TOOLCHAIN_PATH}gcc - AS=${TOOLCHAIN_PATH}as - STRIP=${TOOLCHAIN_PATH}strip - NM=${TOOLCHAIN_PATH}nm - - if [ -z "${alt_libc}" ]; then - alt_libc=`find "${SDK_PATH}" -name arch-arm -print | \ - awk '{n = split($0,a,"/"); \ - split(a[n-1],b,"-"); \ - print $0 " " b[2]}' | \ - sort -g -k 2 | \ - awk '{ print $1 }' | tail -1` - fi - - if [ -d "${alt_libc}" ]; then - add_cflags "--sysroot=${alt_libc}" - add_ldflags "--sysroot=${alt_libc}" - fi - - # linker flag that routes around a CPU bug in some - # Cortex-A8 implementations (NDK Dev Guide) - add_ldflags "-Wl,--fix-cortex-a8" - - enable_feature pic - soft_enable realtime_only - if [ ${tgt_isa} = "armv7" ]; then - soft_enable runtime_cpu_detect - fi - if enabled runtime_cpu_detect; then - add_cflags "-I${SDK_PATH}/sources/android/cpufeatures" - fi - ;; - - darwin*) - XCRUN_FIND="xcrun --sdk iphoneos --find" - CXX="$(${XCRUN_FIND} clang++)" - CC="$(${XCRUN_FIND} clang)" - AR="$(${XCRUN_FIND} ar)" - AS="$(${XCRUN_FIND} as)" - STRIP="$(${XCRUN_FIND} strip)" - NM="$(${XCRUN_FIND} nm)" - RANLIB="$(${XCRUN_FIND} ranlib)" - AS_SFX=.s - LD="${CXX:-$(${XCRUN_FIND} ld)}" - - # ASFLAGS is written here instead of using check_add_asflags - # because we need to overwrite all of ASFLAGS and purge the - # options that were put in above - ASFLAGS="-arch ${tgt_isa} -g" - - add_cflags -arch ${tgt_isa} - add_ldflags -arch ${tgt_isa} - - alt_libc="$(show_darwin_sdk_path iphoneos)" - if [ -d "${alt_libc}" ]; then - add_cflags -isysroot ${alt_libc} - fi - - if [ "${LD}" = "${CXX}" ]; then - add_ldflags -miphoneos-version-min="${IOS_VERSION_MIN}" - else - add_ldflags -ios_version_min "${IOS_VERSION_MIN}" - fi - - for d in lib usr/lib usr/lib/system; do - try_dir="${alt_libc}/${d}" - [ -d "${try_dir}" ] && add_ldflags -L"${try_dir}" - done - - case ${tgt_isa} in - armv7|armv7s|armv8|arm64) - if enabled neon && ! check_xcode_minimum_version; then - soft_disable neon - log_echo " neon disabled: upgrade Xcode (need v6.3+)." - if enabled neon_asm; then - soft_disable neon_asm - log_echo " neon_asm disabled: upgrade Xcode (need v6.3+)." - fi - fi - ;; - esac - - asm_conversion_cmd="${source_path}/build/make/ads2gas_apple.pl" - - if [ "$(show_darwin_sdk_major_version iphoneos)" -gt 8 ]; then - check_add_cflags -fembed-bitcode - check_add_asflags -fembed-bitcode - check_add_ldflags -fembed-bitcode - fi - ;; - - linux*) - enable_feature linux - if enabled rvct; then - # Check if we have CodeSourcery GCC in PATH. Needed for - # libraries - which arm-none-linux-gnueabi-gcc 2>&- || \ - die "Couldn't find CodeSourcery GCC from PATH" - - # Use armcc as a linker to enable translation of - # some gcc specific options such as -lm and -lpthread. - LD="armcc --translate_gcc" - - # create configuration file (uses path to CodeSourcery GCC) - armcc --arm_linux_configure --arm_linux_config_file=arm_linux.cfg - - add_cflags --arm_linux_paths --arm_linux_config_file=arm_linux.cfg - add_asflags --no_hide_all --apcs=/interwork - add_ldflags --arm_linux_paths --arm_linux_config_file=arm_linux.cfg - enabled pic && add_cflags --apcs=/fpic - enabled pic && add_asflags --apcs=/fpic - enabled shared && add_cflags --shared - fi - ;; - esac - ;; - mips*) - link_with_cc=gcc - setup_gnu_toolchain - tune_cflags="-mtune=" - if enabled dspr2; then - check_add_cflags -mips32r2 -mdspr2 - fi - - if enabled runtime_cpu_detect; then - disable_feature runtime_cpu_detect - fi - - if [ -n "${tune_cpu}" ]; then - case ${tune_cpu} in - p5600) - check_add_cflags -mips32r5 -mload-store-pairs - check_add_cflags -msched-weight -mhard-float -mfp64 - check_add_asflags -mips32r5 -mhard-float -mfp64 - check_add_ldflags -mfp64 - ;; - i6400|p6600) - check_add_cflags -mips64r6 -mabi=64 -msched-weight - check_add_cflags -mload-store-pairs -mhard-float -mfp64 - check_add_asflags -mips64r6 -mabi=64 -mhard-float -mfp64 - check_add_ldflags -mips64r6 -mabi=64 -mfp64 - ;; - esac - - if enabled msa; then - add_cflags -mmsa - add_asflags -mmsa - add_ldflags -mmsa - fi - fi - - check_add_cflags -march=${tgt_isa} - check_add_asflags -march=${tgt_isa} - check_add_asflags -KPIC - ;; - x86*) - case ${tgt_os} in - win*) - enabled gcc && add_cflags -fno-common - ;; - solaris*) - CC=${CC:-${CROSS}gcc} - CXX=${CXX:-${CROSS}g++} - LD=${LD:-${CROSS}gcc} - CROSS=${CROSS-g} - ;; - os2) - disable_feature pic - AS=${AS:-nasm} - add_ldflags -Zhigh-mem - ;; - esac - - AS="${alt_as:-${AS:-auto}}" - case ${tgt_cc} in - icc*) - CC=${CC:-icc} - LD=${LD:-icc} - setup_gnu_toolchain - add_cflags -use-msasm # remove -use-msasm too? - # add -no-intel-extensions to suppress warning #10237 - # refer to http://software.intel.com/en-us/forums/topic/280199 - add_ldflags -i-static -no-intel-extensions - enabled x86_64 && add_cflags -ipo -static -O3 -no-prec-div - enabled x86_64 && AR=xiar - case ${tune_cpu} in - atom*) - tune_cflags="-x" - tune_cpu="SSE3_ATOM" - ;; - *) - tune_cflags="-march=" - ;; - esac - ;; - gcc*) - link_with_cc=gcc - tune_cflags="-march=" - setup_gnu_toolchain - #for 32 bit x86 builds, -O3 did not turn on this flag - enabled optimizations && disabled gprof && check_add_cflags -fomit-frame-pointer - ;; - vs*) - # When building with Microsoft Visual Studio the assembler is - # invoked directly. Checking at configure time is unnecessary. - # Skip the check by setting AS arbitrarily - AS=msvs - msvs_arch_dir=x86-msvs - vc_version=${tgt_cc##vs} - ;; - esac - - bits=32 - enabled x86_64 && bits=64 - check_cpp <<EOF && bits=x32 -#if !defined(__ILP32__) || !defined(__x86_64__) -#error "not x32" -#endif -EOF - case ${tgt_cc} in - gcc*) - add_cflags -m${bits} - add_ldflags -m${bits} - ;; - esac - - soft_enable runtime_cpu_detect - # We can't use 'check_cflags' until the compiler is configured and CC is - # populated. - for ext in ${ARCH_EXT_LIST_X86}; do - # disable higher order extensions to simplify asm dependencies - if [ "$disable_exts" = "yes" ]; then - if ! disabled $ext; then - RTCD_OPTIONS="${RTCD_OPTIONS}--disable-${ext} " - disable_feature $ext - fi - elif disabled $ext; then - disable_exts="yes" - else - # use the shortened version for the flag: sse4_1 -> sse4 - check_gcc_machine_option ${ext%_*} $ext - fi - done - - if enabled external_build; then - log_echo " skipping assembler detection" - else - case "${AS}" in - auto|"") - which nasm >/dev/null 2>&1 && AS=nasm - which yasm >/dev/null 2>&1 && AS=yasm - if [ "${AS}" = nasm ] ; then - # Apple ships version 0.98 of nasm through at least Xcode 6. Revisit - # this check if they start shipping a compatible version. - apple=`nasm -v | grep "Apple"` - [ -n "${apple}" ] \ - && echo "Unsupported version of nasm: ${apple}" \ - && AS="" - fi - [ "${AS}" = auto ] || [ -z "${AS}" ] \ - && die "Neither yasm nor nasm have been found." \ - "See the prerequisites section in the README for more info." - ;; - esac - log_echo " using $AS" - fi - [ "${AS##*/}" = nasm ] && add_asflags -Ox - AS_SFX=.asm - case ${tgt_os} in - win32) - add_asflags -f win32 - enabled debug && add_asflags -g cv8 - EXE_SFX=.exe - ;; - win64) - add_asflags -f x64 - enabled debug && add_asflags -g cv8 - EXE_SFX=.exe - ;; - linux*|solaris*|android*) - add_asflags -f elf${bits} - enabled debug && [ "${AS}" = yasm ] && add_asflags -g dwarf2 - enabled debug && [ "${AS}" = nasm ] && add_asflags -g - [ "${AS##*/}" = nasm ] && check_asm_align - ;; - darwin*) - add_asflags -f macho${bits} - enabled x86 && darwin_arch="-arch i386" || darwin_arch="-arch x86_64" - add_cflags ${darwin_arch} - add_ldflags ${darwin_arch} - # -mdynamic-no-pic is still a bit of voodoo -- it was required at - # one time, but does not seem to be now, and it breaks some of the - # code that still relies on inline assembly. - # enabled icc && ! enabled pic && add_cflags -fno-pic -mdynamic-no-pic - enabled icc && ! enabled pic && add_cflags -fno-pic - ;; - iphonesimulator) - add_asflags -f macho${bits} - enabled x86 && sim_arch="-arch i386" || sim_arch="-arch x86_64" - add_cflags ${sim_arch} - add_ldflags ${sim_arch} - - if [ "$(show_darwin_sdk_major_version iphonesimulator)" -gt 8 ]; then - # yasm v1.3.0 doesn't know what -fembed-bitcode means, so turning it - # on is pointless (unless building a C-only lib). Warn the user, but - # do nothing here. - log "Warning: Bitcode embed disabled for simulator targets." - fi - ;; - os2) - add_asflags -f aout - enabled debug && add_asflags -g - EXE_SFX=.exe - ;; - *) - log "Warning: Unknown os $tgt_os while setting up $AS flags" - ;; - esac - ;; - *-gcc|generic-gnu) - link_with_cc=gcc - enable_feature gcc - setup_gnu_toolchain - ;; - esac - - # Try to enable CPU specific tuning - if [ -n "${tune_cpu}" ]; then - if [ -n "${tune_cflags}" ]; then - check_add_cflags ${tune_cflags}${tune_cpu} || \ - die "Requested CPU '${tune_cpu}' not supported by compiler" - fi - if [ -n "${tune_asflags}" ]; then - check_add_asflags ${tune_asflags}${tune_cpu} || \ - die "Requested CPU '${tune_cpu}' not supported by assembler" - fi - if [ -z "${tune_cflags}${tune_asflags}" ]; then - log_echo "Warning: CPU tuning not supported by this toolchain" - fi - fi - - if enabled debug; then - check_add_cflags -g && check_add_ldflags -g - else - check_add_cflags -DNDEBUG - fi - - enabled gprof && check_add_cflags -pg && check_add_ldflags -pg - enabled gcov && - check_add_cflags -fprofile-arcs -ftest-coverage && - check_add_ldflags -fprofile-arcs -ftest-coverage - - if enabled optimizations; then - if enabled rvct; then - enabled small && check_add_cflags -Ospace || check_add_cflags -Otime - else - enabled small && check_add_cflags -O2 || check_add_cflags -O3 - fi - fi - - # Position Independent Code (PIC) support, for building relocatable - # shared objects - enabled gcc && enabled pic && check_add_cflags -fPIC - - # Work around longjmp interception on glibc >= 2.11, to improve binary - # compatibility. See http://code.google.com/p/webm/issues/detail?id=166 - enabled linux && check_add_cflags -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0 - - # Check for strip utility variant - ${STRIP} -V 2>/dev/null | grep GNU >/dev/null && enable_feature gnu_strip - - # Try to determine target endianness - check_cc <<EOF -unsigned int e = 'O'<<24 | '2'<<16 | 'B'<<8 | 'E'; -EOF - [ -f "${TMP_O}" ] && od -A n -t x1 "${TMP_O}" | tr -d '\n' | - grep '4f *32 *42 *45' >/dev/null 2>&1 && enable_feature big_endian - - # Try to find which inline keywords are supported - check_cc <<EOF && INLINE="inline" -static inline function() {} -EOF - - # Almost every platform uses pthreads. - if enabled multithread; then - case ${toolchain} in - *-win*-vs*) - ;; - *-android-gcc) - ;; - *) - check_header pthread.h && add_extralibs -lpthread - ;; - esac - fi - - # only for MIPS platforms - case ${toolchain} in - mips*) - if enabled big_endian; then - if enabled dspr2; then - echo "dspr2 optimizations are available only for little endian platforms" - disable_feature dspr2 - fi - if enabled msa; then - echo "msa optimizations are available only for little endian platforms" - disable_feature msa - fi - fi - ;; - esac - - # glibc needs these - if enabled linux || [ "$toolchain" = "generic-gnu" ]; then - add_cflags -D_LARGEFILE_SOURCE - add_cflags -D_FILE_OFFSET_BITS=64 - fi -} - -process_toolchain() { - process_common_toolchain -} - -print_config_mk() { - saved_prefix="${prefix}" - prefix=$1 - makefile=$2 - shift 2 - for cfg; do - if enabled $cfg; then - upname="`toupper $cfg`" - echo "${prefix}_${upname}=yes" >> $makefile - fi - done - prefix="${saved_prefix}" -} - -print_config_h() { - saved_prefix="${prefix}" - prefix=$1 - header=$2 - shift 2 - for cfg; do - upname="`toupper $cfg`" - if enabled $cfg; then - echo "#define ${prefix}_${upname} 1" >> $header - else - echo "#define ${prefix}_${upname} 0" >> $header - fi - done - prefix="${saved_prefix}" -} - -print_config_vars_h() { - header=$1 - shift - while [ $# -gt 0 ]; do - upname="`toupper $1`" - echo "#define ${upname} $2" >> $header - shift 2 - done -} - -print_webm_license() { - saved_prefix="${prefix}" - destination=$1 - prefix="$2" - suffix="$3" - shift 3 - cat <<EOF > ${destination} -${prefix} Copyright (c) 2016, Alliance for Open Media. All rights reserved.${suffix} -${prefix} ${suffix} -${prefix} This source code is subject to the terms of the BSD 2 Clause License and${suffix} -${prefix} the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License${suffix} -${prefix} was not distributed with this source code in the LICENSE file, you can${suffix} -${prefix} obtain it at www.aomedia.org/license/software. If the Alliance for Open${suffix} -${prefix} Media Patent License 1.0 was not distributed with this source code in the${suffix} -${prefix} PATENTS file, you can obtain it at www.aomedia.org/license/patent.${suffix} -EOF - prefix="${saved_prefix}" -} - -process_targets() { - true; -} - -process_detect() { - true; -} - -enable_feature logging -logfile="config.log" -self=$0 -process() { - cmdline_args="$@" - process_cmdline "$@" - if enabled child; then - echo "# ${self} $@" >> ${logfile} - else - echo "# ${self} $@" > ${logfile} - fi - post_process_common_cmdline - post_process_cmdline - process_toolchain - process_detect - process_targets - - OOT_INSTALLS="${OOT_INSTALLS}" - if enabled source_path_used; then - # Prepare the PWD for building. - for f in ${OOT_INSTALLS}; do - install -D "${source_path}/$f" "$f" - done - fi - cp "${source_path}/build/make/Makefile" . - - clean_temp_files - true -} diff --git a/third_party/aom/build/make/gen_asm_deps.sh b/third_party/aom/build/make/gen_asm_deps.sh deleted file mode 100755 index c867cc2bf..000000000 --- a/third_party/aom/build/make/gen_asm_deps.sh +++ /dev/null @@ -1,65 +0,0 @@ -#!/bin/sh -## -## 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. -## - - -self=$0 -show_help() { - echo "usage: $self [options] <srcfile>" - echo - echo "Generate Makefile dependency information from assembly code source" - echo - exit 1 -} -die_unknown(){ - echo "Unknown option \"$1\"." - echo "See $0 --help for available options." - exit 1 -} -for opt do - optval="${opt#*=}" - case "$opt" in - --build-pfx=*) pfx="${optval}" - ;; - --depfile=*) out="${optval}" - ;; - -I*) raw_inc_paths="${raw_inc_paths} ${opt}" - inc_path="${inc_path} ${opt#-I}" - ;; - -h|--help) show_help - ;; - *) [ -f "$opt" ] && srcfile="$opt" - ;; - esac -done - -[ -n "$srcfile" ] || show_help -sfx=${sfx:-asm} -includes=$(LC_ALL=C egrep -i "include +\"?[a-z0-9_/]+\.${sfx}" $srcfile | - perl -p -e "s;.*?([a-z0-9_/]+.${sfx}).*;\1;") -#" restore editor state -for inc in ${includes}; do - found_inc_path= - for idir in ${inc_path}; do - [ -f "${idir}/${inc}" ] && found_inc_path="${idir}" && break - done - if [ -f `dirname $srcfile`/$inc ]; then - # Handle include files in the same directory as the source - $self --build-pfx=$pfx --depfile=$out ${raw_inc_paths} `dirname $srcfile`/$inc - elif [ -n "${found_inc_path}" ]; then - # Handle include files on the include path - $self --build-pfx=$pfx --depfile=$out ${raw_inc_paths} "${found_inc_path}/$inc" - else - # Handle generated includes in the build root (which may not exist yet) - echo ${out} ${out%d}o: "${pfx}${inc}" - fi -done -echo ${out} ${out%d}o: $srcfile diff --git a/third_party/aom/build/make/gen_msvs_def.sh b/third_party/aom/build/make/gen_msvs_def.sh deleted file mode 100755 index dbb2674ac..000000000 --- a/third_party/aom/build/make/gen_msvs_def.sh +++ /dev/null @@ -1,82 +0,0 @@ -#!/bin/bash -## 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. -## - -self=$0 -self_basename=${self##*/} -EOL=$'\n' - -show_help() { - cat <<EOF -Usage: ${self_basename} [options] file1 [file2 ...] - -This script generates a MSVC module definition file containing a list of symbols -to export from a DLL. Source files are technically bash scripts (and thus may -use #comment syntax) but in general, take the form of a list of symbols: - - <kind> symbol1 [symbol2, symbol3, ...] - -where <kind> is either 'text' or 'data' - - -Options: - --help Print this message - --out=filename Write output to a file [stdout] - --name=project_name Name of the library (required) -EOF - exit 1 -} - -die() { - echo "${self_basename}: $@" - exit 1 -} - -die_unknown(){ - echo "Unknown option \"$1\"." - echo "See ${self_basename} --help for available options." - exit 1 -} - -text() { - for sym in "$@"; do - echo " $sym" >> ${outfile} - done -} - -data() { - for sym in "$@"; do - printf " %-40s DATA\n" "$sym" >> ${outfile} - done -} - -# Process command line -for opt in "$@"; do - optval="${opt#*=}" - case "$opt" in - --help|-h) show_help - ;; - --out=*) outfile="$optval" - ;; - --name=*) name="${optval}" - ;; - -*) die_unknown $opt - ;; - *) file_list[${#file_list[@]}]="$opt" - esac -done -outfile=${outfile:-/dev/stdout} -[ -n "$name" ] || die "Library name (--name) must be specified!" - -echo "LIBRARY ${name}" > ${outfile} -echo "EXPORTS" >> ${outfile} -for f in "${file_list[@]}"; do - . $f -done diff --git a/third_party/aom/build/make/gen_msvs_sln.sh b/third_party/aom/build/make/gen_msvs_sln.sh deleted file mode 100755 index 268a81706..000000000 --- a/third_party/aom/build/make/gen_msvs_sln.sh +++ /dev/null @@ -1,257 +0,0 @@ -#!/bin/bash -## 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. -## - - -self=$0 -self_basename=${self##*/} -EOL=$'\n' -EOLDOS=$'\r' - -show_help() { - cat <<EOF -Usage: ${self_basename} [options] file1 [file2 ...] - -This script generates a Visual Studio solution file from a list of project -files. - -Options: - --help Print this message - --out=outfile Redirect output to a file - --ver=version Version (12,14,15) of visual studio to generate for - --target=isa-os-cc Target specifier -EOF - exit 1 -} - -die() { - echo "${self_basename}: $@" >&2 - [ -f "${outfile}" ] && rm -f ${outfile}{,.mk} - exit 1 -} - -die_unknown(){ - echo "Unknown option \"$1\"." >&2 - echo "See ${self_basename} --help for available options." >&2 - [ -f "${outfile}" ] && rm -f ${outfile}{,.mk} - exit 1 -} - -indent1=$'\t' -indent="" -indent_push() { - indent="${indent}${indent1}" -} -indent_pop() { - indent="${indent%${indent1}}" -} - -parse_project() { - local file=$1 - local name=`grep RootNamespace "$file" | sed 's,.*<.*>\(.*\)</.*>.*,\1,'` - local guid=`grep ProjectGuid "$file" | sed 's,.*<.*>\(.*\)</.*>.*,\1,'` - - # save the project GUID to a varaible, normalizing to the basename of the - # vcxproj file without the extension - local var - var=${file##*/} - var=${var%%.${sfx}} - eval "${var}_file=\"$1\"" - eval "${var}_name=$name" - eval "${var}_guid=$guid" - - cur_config_list=`grep -B1 'Label="Configuration"' $file | - grep Condition | cut -d\' -f4` - new_config_list=$(for i in $config_list $cur_config_list; do - echo $i - done | sort | uniq) - if [ "$config_list" != "" ] && [ "$config_list" != "$new_config_list" ]; then - mixed_platforms=1 - fi - config_list="$new_config_list" - eval "${var}_config_list=\"$cur_config_list\"" - proj_list="${proj_list} ${var}" -} - -process_project() { - eval "local file=\${$1_file}" - eval "local name=\${$1_name}" - eval "local guid=\${$1_guid}" - - # save the project GUID to a varaible, normalizing to the basename of the - # vcproj file without the extension - local var - var=${file##*/} - var=${var%%.${sfx}} - eval "${var}_guid=$guid" - - echo "Project(\"{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}\") = \"$name\", \"$file\", \"$guid\"" - echo "EndProject" -} - -process_global() { - echo "Global" - indent_push - - # - # Solution Configuration Platforms - # - echo "${indent}GlobalSection(SolutionConfigurationPlatforms) = preSolution" - indent_push - IFS_bak=${IFS} - IFS=$'\r'$'\n' - if [ "$mixed_platforms" != "" ]; then - config_list=" -Release|Mixed Platforms -Debug|Mixed Platforms" - fi - for config in ${config_list}; do - echo "${indent}$config = $config" - done - IFS=${IFS_bak} - indent_pop - echo "${indent}EndGlobalSection" - - # - # Project Configuration Platforms - # - echo "${indent}GlobalSection(ProjectConfigurationPlatforms) = postSolution" - indent_push - for proj in ${proj_list}; do - eval "local proj_guid=\${${proj}_guid}" - eval "local proj_config_list=\${${proj}_config_list}" - IFS=$'\r'$'\n' - for config in ${proj_config_list}; do - if [ "$mixed_platforms" != "" ]; then - local c=${config%%|*} - echo "${indent}${proj_guid}.${c}|Mixed Platforms.ActiveCfg = ${config}" - echo "${indent}${proj_guid}.${c}|Mixed Platforms.Build.0 = ${config}" - else - echo "${indent}${proj_guid}.${config}.ActiveCfg = ${config}" - echo "${indent}${proj_guid}.${config}.Build.0 = ${config}" - fi - - done - IFS=${IFS_bak} - done - indent_pop - echo "${indent}EndGlobalSection" - - # - # Solution Properties - # - echo "${indent}GlobalSection(SolutionProperties) = preSolution" - indent_push - echo "${indent}HideSolutionNode = FALSE" - indent_pop - echo "${indent}EndGlobalSection" - - indent_pop - echo "EndGlobal" -} - -process_makefile() { - IFS_bak=${IFS} - IFS=$'\r'$'\n' - local TAB=$'\t' - cat <<EOF -MSBUILD_TOOL := msbuild.exe -found_devenv := \$(shell which \$(MSBUILD_TOOL) >/dev/null 2>&1 && echo yes) -.nodevenv.once: -${TAB}@echo " * \$(MSBUILD_TOOL) not found in path." -${TAB}@echo " * " -${TAB}@echo " * You will have to build all configurations manually using the" -${TAB}@echo " * Visual Studio IDE. To allow make to build them automatically," -${TAB}@echo " * add the Common7/IDE directory of your Visual Studio" -${TAB}@echo " * installation to your path, eg:" -${TAB}@echo " * C:\Program Files\Microsoft Visual Studio 12.0\Common7\IDE" -${TAB}@echo " * " -${TAB}@touch \$@ -CLEAN-OBJS += \$(if \$(found_devenv),,.nodevenv.once) - -EOF - - for sln_config in ${config_list}; do - local config=${sln_config%%|*} - local platform=${sln_config##*|} - local nows_sln_config=`echo $sln_config | sed -e 's/[^a-zA-Z0-9]/_/g'` - cat <<EOF -BUILD_TARGETS += \$(if \$(NO_LAUNCH_DEVENV),,$nows_sln_config) -clean:: -${TAB}rm -rf "$platform"/"$config" -.PHONY: $nows_sln_config -ifneq (\$(found_devenv),) -$nows_sln_config: $outfile -${TAB}\$(MSBUILD_TOOL) $outfile -m -t:Build \\ -${TAB}${TAB}-p:Configuration="$config" -p:Platform="$platform" -else -$nows_sln_config: $outfile .nodevenv.once -${TAB}@echo " * Skipping build of $sln_config (\$(MSBUILD_TOOL) not in path)." -${TAB}@echo " * " -endif - -EOF - done - IFS=${IFS_bak} -} - -# Process command line -outfile=/dev/stdout -for opt in "$@"; do - optval="${opt#*=}" - case "$opt" in - --help|-h) show_help - ;; - --out=*) outfile="${optval}"; mkoutfile="${optval}".mk - ;; - --dep=*) eval "${optval%%:*}_deps=\"\${${optval%%:*}_deps} ${optval##*:}\"" - ;; - --ver=*) vs_ver="$optval" - case $optval in - 12|14|15) - ;; - *) die Unrecognized Visual Studio Version in $opt - ;; - esac - ;; - --target=*) target="${optval}" - ;; - -*) die_unknown $opt - ;; - *) file_list[${#file_list[@]}]="$opt" - esac -done -outfile=${outfile:-/dev/stdout} -mkoutfile=${mkoutfile:-/dev/stdout} -case "${vs_ver:-12}" in - 12) sln_vers="12.00" - sln_vers_str="Visual Studio 2013" - ;; - 14) sln_vers="12.00" - sln_vers_str="Visual Studio 2015" - ;; - 15) sln_vers="12.00" - sln_vers_str="Visual Studio 2017" - ;; -esac -sfx=vcxproj - -for f in "${file_list[@]}"; do - parse_project $f -done -cat >${outfile} <<EOF -Microsoft Visual Studio Solution File, Format Version $sln_vers${EOLDOS} -# $sln_vers_str${EOLDOS} -EOF -for proj in ${proj_list}; do - process_project $proj >>${outfile} -done -process_global >>${outfile} -process_makefile >${mkoutfile} diff --git a/third_party/aom/build/make/gen_msvs_vcxproj.sh b/third_party/aom/build/make/gen_msvs_vcxproj.sh deleted file mode 100755 index a119b07aa..000000000 --- a/third_party/aom/build/make/gen_msvs_vcxproj.sh +++ /dev/null @@ -1,477 +0,0 @@ -#!/bin/bash -## 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. -## - -self=$0 -self_basename=${self##*/} -self_dirname=$(dirname "$0") - -. "$self_dirname/msvs_common.sh"|| exit 127 - -show_help() { - cat <<EOF -Usage: ${self_basename} --name=projname [options] file1 [file2 ...] - -This script generates a Visual Studio project file from a list of source -code files. - -Options: - --help Print this message - --exe Generate a project for building an Application - --lib Generate a project for creating a static library - --dll Generate a project for creating a dll - --static-crt Use the static C runtime (/MT) - --enable-werror Treat warnings as errors (/WX) - --target=isa-os-cc Target specifier (required) - --out=filename Write output to a file [stdout] - --name=project_name Name of the project (required) - --proj-guid=GUID GUID to use for the project - --module-def=filename File containing export definitions (for DLLs) - --ver=version Version (12,14,15) of visual studio to generate for - --src-path-bare=dir Path to root of source tree - -Ipath/to/include Additional include directories - -DFLAG[=value] Preprocessor macros to define - -Lpath/to/lib Additional library search paths - -llibname Library to link against -EOF - exit 1 -} - -tag_content() { - local tag=$1 - local content=$2 - shift - shift - if [ $# -ne 0 ]; then - echo "${indent}<${tag}" - indent_push - tag_attributes "$@" - echo "${indent}>${content}</${tag}>" - indent_pop - else - echo "${indent}<${tag}>${content}</${tag}>" - fi -} - -generate_filter() { - local name=$1 - local pats=$2 - local file_list_sz - local i - local f - local saveIFS="$IFS" - local pack - echo "generating filter '$name' from ${#file_list[@]} files" >&2 - IFS=* - - file_list_sz=${#file_list[@]} - for i in ${!file_list[@]}; do - f=${file_list[i]} - for pat in ${pats//;/$IFS}; do - if [ "${f##*.}" == "$pat" ]; then - unset file_list[i] - - objf=$(echo ${f%.*}.obj \ - | sed -e "s,$src_path_bare,," \ - -e 's/^[\./]\+//g' -e 's,[:/ ],_,g') - - if ([ "$pat" == "asm" ] || [ "$pat" == "s" ]) && $asm_use_custom_step; then - # Avoid object file name collisions, i.e. aom_config.c and - # aom_config.asm produce the same object file without - # this additional suffix. - objf=${objf%.obj}_asm.obj - open_tag CustomBuild \ - Include="$f" - for plat in "${platforms[@]}"; do - for cfg in Debug Release; do - tag_content Message "Assembling %(Filename)%(Extension)" \ - Condition="'\$(Configuration)|\$(Platform)'=='$cfg|$plat'" - tag_content Command "$(eval echo \$asm_${cfg}_cmdline) -o \$(IntDir)$objf" \ - Condition="'\$(Configuration)|\$(Platform)'=='$cfg|$plat'" - tag_content Outputs "\$(IntDir)$objf" \ - Condition="'\$(Configuration)|\$(Platform)'=='$cfg|$plat'" - done - done - close_tag CustomBuild - elif [ "$pat" == "c" ] || \ - [ "$pat" == "cc" ] || [ "$pat" == "cpp" ]; then - open_tag ClCompile \ - Include="$f" - # Separate file names with Condition? - tag_content ObjectFileName "\$(IntDir)$objf" - # Check for AVX and turn it on to avoid warnings. - if [[ $f =~ avx.?\.c$ ]]; then - tag_content AdditionalOptions "/arch:AVX" - fi - close_tag ClCompile - elif [ "$pat" == "h" ] ; then - tag ClInclude \ - Include="$f" - elif [ "$pat" == "vcxproj" ] ; then - open_tag ProjectReference \ - Include="$f" - depguid=`grep ProjectGuid "$f" | sed 's,.*<.*>\(.*\)</.*>.*,\1,'` - tag_content Project "$depguid" - tag_content ReferenceOutputAssembly false - close_tag ProjectReference - else - tag None \ - Include="$f" - fi - - break - fi - done - done - - IFS="$saveIFS" -} - -# Process command line -unset target -for opt in "$@"; do - optval="${opt#*=}" - case "$opt" in - --help|-h) show_help - ;; - --target=*) target="${optval}" - ;; - --out=*) outfile="$optval" - ;; - --name=*) name="${optval}" - ;; - --proj-guid=*) guid="${optval}" - ;; - --module-def=*) module_def="${optval}" - ;; - --exe) proj_kind="exe" - ;; - --dll) proj_kind="dll" - ;; - --lib) proj_kind="lib" - ;; - --src-path-bare=*) - src_path_bare=$(fix_path "$optval") - src_path_bare=${src_path_bare%/} - ;; - --static-crt) use_static_runtime=true - ;; - --enable-werror) werror=true - ;; - --ver=*) - vs_ver="$optval" - case "$optval" in - 12|14|15) - ;; - *) die Unrecognized Visual Studio Version in $opt - ;; - esac - ;; - -I*) - opt=${opt##-I} - opt=$(fix_path "$opt") - opt="${opt%/}" - incs="${incs}${incs:+;}"${opt}"" - yasmincs="${yasmincs} -I"${opt}"" - ;; - -D*) defines="${defines}${defines:+;}${opt##-D}" - ;; - -L*) # fudge . to $(OutDir) - if [ "${opt##-L}" == "." ]; then - libdirs="${libdirs}${libdirs:+;}"\$(OutDir)"" - else - # Also try directories for this platform/configuration - opt=${opt##-L} - opt=$(fix_path "$opt") - libdirs="${libdirs}${libdirs:+;}"${opt}"" - libdirs="${libdirs}${libdirs:+;}"${opt}/\$(PlatformName)/\$(Configuration)"" - libdirs="${libdirs}${libdirs:+;}"${opt}/\$(PlatformName)"" - fi - ;; - -l*) libs="${libs}${libs:+ }${opt##-l}.lib" - ;; - -*) die_unknown $opt - ;; - *) - # The paths in file_list are fixed outside of the loop. - file_list[${#file_list[@]}]="$opt" - case "$opt" in - *.asm|*.s) uses_asm=true - ;; - esac - ;; - esac -done - -# Make one call to fix_path for file_list to improve performance. -fix_file_list file_list - -outfile=${outfile:-/dev/stdout} -guid=${guid:-`generate_uuid`} -asm_use_custom_step=false -uses_asm=${uses_asm:-false} -case "${vs_ver:-12}" in - 12|14|15) - asm_use_custom_step=$uses_asm - ;; -esac - -[ -n "$name" ] || die "Project name (--name) must be specified!" -[ -n "$target" ] || die "Target (--target) must be specified!" - -if ${use_static_runtime:-false}; then - release_runtime=MultiThreaded - debug_runtime=MultiThreadedDebug - lib_sfx=mt -else - release_runtime=MultiThreadedDLL - debug_runtime=MultiThreadedDebugDLL - lib_sfx=md -fi - -# Calculate debug lib names: If a lib ends in ${lib_sfx}.lib, then rename -# it to ${lib_sfx}d.lib. This precludes linking to release libs from a -# debug exe, so this may need to be refactored later. -for lib in ${libs}; do - if [ "$lib" != "${lib%${lib_sfx}.lib}" ]; then - lib=${lib%.lib}d.lib - fi - debug_libs="${debug_libs}${debug_libs:+ }${lib}" -done -debug_libs=${debug_libs// /;} -libs=${libs// /;} - - -# List of all platforms supported for this target -case "$target" in - x86_64*) - platforms[0]="x64" - asm_Debug_cmdline="yasm -Xvc -g cv8 -f win64 ${yasmincs} "%(FullPath)"" - asm_Release_cmdline="yasm -Xvc -f win64 ${yasmincs} "%(FullPath)"" - ;; - x86*) - platforms[0]="Win32" - asm_Debug_cmdline="yasm -Xvc -g cv8 -f win32 ${yasmincs} "%(FullPath)"" - asm_Release_cmdline="yasm -Xvc -f win32 ${yasmincs} "%(FullPath)"" - ;; - arm*) - platforms[0]="ARM" - asm_Debug_cmdline="armasm -nologo -oldit "%(FullPath)"" - asm_Release_cmdline="armasm -nologo -oldit "%(FullPath)"" - ;; - *) die "Unsupported target $target!" - ;; -esac - -generate_vcxproj() { - echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>" - open_tag Project \ - DefaultTargets="Build" \ - ToolsVersion="4.0" \ - xmlns="http://schemas.microsoft.com/developer/msbuild/2003" \ - - open_tag ItemGroup \ - Label="ProjectConfigurations" - for plat in "${platforms[@]}"; do - for config in Debug Release; do - open_tag ProjectConfiguration \ - Include="$config|$plat" - tag_content Configuration $config - tag_content Platform $plat - close_tag ProjectConfiguration - done - done - close_tag ItemGroup - - open_tag PropertyGroup \ - Label="Globals" - tag_content ProjectGuid "{${guid}}" - tag_content RootNamespace ${name} - tag_content Keyword ManagedCProj - if [ "${platforms[0]}" = "ARM" ]; then - tag_content AppContainerApplication true - # The application type can be one of "Windows Store", - # "Windows Phone" or "Windows Phone Silverlight". The - # actual value doesn't matter from the libaom point of view, - # since a static library built for one works on the others. - # The PlatformToolset field needs to be set in sync with this; - # for Windows Store and Windows Phone Silverlight it should be - # v120 while it should be v120_wp81 if the type is Windows Phone. - tag_content ApplicationType "Windows Store" - tag_content ApplicationTypeRevision 8.1 - fi - close_tag PropertyGroup - - tag Import \ - Project="\$(VCTargetsPath)\\Microsoft.Cpp.Default.props" - - for plat in "${platforms[@]}"; do - for config in Release Debug; do - open_tag PropertyGroup \ - Condition="'\$(Configuration)|\$(Platform)'=='$config|$plat'" \ - Label="Configuration" - if [ "$proj_kind" = "exe" ]; then - tag_content ConfigurationType Application - elif [ "$proj_kind" = "dll" ]; then - tag_content ConfigurationType DynamicLibrary - else - tag_content ConfigurationType StaticLibrary - fi - if [ "$vs_ver" = "12" ]; then - # Setting a PlatformToolset indicating windows phone isn't - # enough to build code for arm with MSVC 2013, one strictly - # has to enable AppContainerApplication as well. - tag_content PlatformToolset v120 - fi - if [ "$vs_ver" = "14" ]; then - tag_content PlatformToolset v140 - fi - if [ "$vs_ver" = "15" ]; then - tag_content PlatformToolset v141 - fi - tag_content CharacterSet Unicode - if [ "$config" = "Release" ]; then - tag_content WholeProgramOptimization true - fi - close_tag PropertyGroup - done - done - - tag Import \ - Project="\$(VCTargetsPath)\\Microsoft.Cpp.props" - - open_tag ImportGroup \ - Label="PropertySheets" - tag Import \ - Project="\$(UserRootDir)\\Microsoft.Cpp.\$(Platform).user.props" \ - Condition="exists('\$(UserRootDir)\\Microsoft.Cpp.\$(Platform).user.props')" \ - Label="LocalAppDataPlatform" - close_tag ImportGroup - - tag PropertyGroup \ - Label="UserMacros" - - for plat in "${platforms[@]}"; do - plat_no_ws=`echo $plat | sed 's/[^A-Za-z0-9_]/_/g'` - for config in Debug Release; do - open_tag PropertyGroup \ - Condition="'\$(Configuration)|\$(Platform)'=='$config|$plat'" - tag_content OutDir "\$(SolutionDir)$plat_no_ws\\\$(Configuration)\\" - tag_content IntDir "$plat_no_ws\\\$(Configuration)\\${name}\\" - if [ "$proj_kind" == "lib" ]; then - if [ "$config" == "Debug" ]; then - config_suffix=d - else - config_suffix="" - fi - tag_content TargetName "${name}${lib_sfx}${config_suffix}" - fi - close_tag PropertyGroup - done - done - - for plat in "${platforms[@]}"; do - for config in Debug Release; do - open_tag ItemDefinitionGroup \ - Condition="'\$(Configuration)|\$(Platform)'=='$config|$plat'" - if [ "$name" == "aom" ]; then - hostplat=$plat - if [ "$hostplat" == "ARM" ]; then - hostplat=Win32 - fi - fi - open_tag ClCompile - if [ "$config" = "Debug" ]; then - opt=Disabled - runtime=$debug_runtime - curlibs=$debug_libs - debug=_DEBUG - else - opt=MaxSpeed - runtime=$release_runtime - curlibs=$libs - tag_content FavorSizeOrSpeed Speed - debug=NDEBUG - fi - extradefines=";$defines" - tag_content Optimization $opt - tag_content AdditionalIncludeDirectories "$incs;%(AdditionalIncludeDirectories)" - tag_content PreprocessorDefinitions "WIN32;$debug;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE$extradefines;%(PreprocessorDefinitions)" - tag_content RuntimeLibrary $runtime - tag_content WarningLevel Level3 - if ${werror:-false}; then - tag_content TreatWarningAsError true - fi - # We need to override the defaults for these settings - # if AppContainerApplication is set. - tag_content CompileAsWinRT false - tag_content PrecompiledHeader NotUsing - tag_content SDLCheck false - close_tag ClCompile - case "$proj_kind" in - exe) - open_tag Link - tag_content GenerateDebugInformation true - # Console is the default normally, but if - # AppContainerApplication is set, we need to override it. - tag_content SubSystem Console - close_tag Link - ;; - dll) - open_tag Link - tag_content GenerateDebugInformation true - tag_content ModuleDefinitionFile $module_def - close_tag Link - ;; - lib) - ;; - esac - close_tag ItemDefinitionGroup - done - - done - - open_tag ItemGroup - generate_filter "Source Files" "c;cc;cpp;def;odl;idl;hpj;bat;asm;asmx;s" - close_tag ItemGroup - open_tag ItemGroup - generate_filter "Header Files" "h;hm;inl;inc;xsd" - close_tag ItemGroup - open_tag ItemGroup - generate_filter "Build Files" "mk" - close_tag ItemGroup - open_tag ItemGroup - generate_filter "References" "vcxproj" - close_tag ItemGroup - - tag Import \ - Project="\$(VCTargetsPath)\\Microsoft.Cpp.targets" - - open_tag ImportGroup \ - Label="ExtensionTargets" - close_tag ImportGroup - - close_tag Project - - # This must be done from within the {} subshell - echo "Ignored files list (${#file_list[@]} items) is:" >&2 - for f in "${file_list[@]}"; do - echo " $f" >&2 - done -} - -# This regexp doesn't catch most of the strings in the vcxproj format, -# since they're like <tag>path</tag> instead of <tag attr="path" /> -# as previously. It still seems to work ok despite this. -generate_vcxproj | - sed -e '/"/s;\([^ "]\)/;\1\\;g' | - sed -e '/xmlns/s;\\;/;g' > ${outfile} - -exit diff --git a/third_party/aom/build/make/iosbuild.sh b/third_party/aom/build/make/iosbuild.sh index ca8214b62..75f0b1b08 100755 --- a/third_party/aom/build/make/iosbuild.sh +++ b/third_party/aom/build/make/iosbuild.sh @@ -56,6 +56,7 @@ build_target() { mkdir "${target}" cd "${target}" + # TODO(tomfinegan@google.com): switch to cmake. eval "${LIBAOM_SOURCE_DIR}/configure" --target="${target}" \ ${CONFIGURE_ARGS} ${EXTRA_CONFIGURE_ARGS} ${target_specific_flags} \ ${devnull} diff --git a/third_party/aom/build/make/msvs_common.sh b/third_party/aom/build/make/msvs_common.sh deleted file mode 100644 index 2df27df8d..000000000 --- a/third_party/aom/build/make/msvs_common.sh +++ /dev/null @@ -1,114 +0,0 @@ -#!/bin/bash -## 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 [ "$(uname -o 2>/dev/null)" = "Cygwin" ] \ - && cygpath --help >/dev/null 2>&1; then - FIXPATH='cygpath -m' -else - FIXPATH='echo_path' -fi - -die() { - echo "${self_basename}: $@" >&2 - exit 1 -} - -die_unknown(){ - echo "Unknown option \"$1\"." >&2 - echo "See ${self_basename} --help for available options." >&2 - exit 1 -} - -echo_path() { - for path; do - echo "$path" - done -} - -# Output one, possibly changed based on the system, path per line. -fix_path() { - $FIXPATH "$@" -} - -# Corrects the paths in file_list in one pass for efficiency. -# $1 is the name of the array to be modified. -fix_file_list() { - declare -n array_ref=$1 - files=$(fix_path "${array_ref[@]}") - local IFS=$'\n' - array_ref=($files) -} - -generate_uuid() { - local hex="0123456789ABCDEF" - local i - local uuid="" - local j - #93995380-89BD-4b04-88EB-625FBE52EBFB - for ((i=0; i<32; i++)); do - (( j = $RANDOM % 16 )) - uuid="${uuid}${hex:$j:1}" - done - echo "${uuid:0:8}-${uuid:8:4}-${uuid:12:4}-${uuid:16:4}-${uuid:20:12}" -} - -indent1=" " -indent="" -indent_push() { - indent="${indent}${indent1}" -} -indent_pop() { - indent="${indent%${indent1}}" -} - -tag_attributes() { - for opt in "$@"; do - optval="${opt#*=}" - [ -n "${optval}" ] || - die "Missing attribute value in '$opt' while generating $tag tag" - echo "${indent}${opt%%=*}=\"${optval}\"" - done -} - -open_tag() { - local tag=$1 - shift - if [ $# -ne 0 ]; then - echo "${indent}<${tag}" - indent_push - tag_attributes "$@" - echo "${indent}>" - else - echo "${indent}<${tag}>" - indent_push - fi -} - -close_tag() { - local tag=$1 - indent_pop - echo "${indent}</${tag}>" -} - -tag() { - local tag=$1 - shift - if [ $# -ne 0 ]; then - echo "${indent}<${tag}" - indent_push - tag_attributes "$@" - indent_pop - echo "${indent}/>" - else - echo "${indent}<${tag}/>" - fi -} - diff --git a/third_party/aom/build/make/rtcd.pl b/third_party/aom/build/make/rtcd.pl index 7add5a036..8d8be25c0 100755 --- a/third_party/aom/build/make/rtcd.pl +++ b/third_party/aom/build/make/rtcd.pl @@ -1,5 +1,14 @@ #!/usr/bin/env perl - +## +## 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. +## no strict 'refs'; use warnings; use Getopt::Long; @@ -205,6 +214,7 @@ sub filter { sub common_top() { my $include_guard = uc($opts{sym})."_H_"; print <<EOF; +// This file is generated. Do not edit. #ifndef ${include_guard} #define ${include_guard} @@ -279,15 +289,12 @@ sub arm() { # Assign the helper variable for each enabled extension foreach my $opt (@ALL_ARCHS) { my $opt_uc = uc $opt; - # Enable neon assembly based on HAVE_NEON logic instead of adding new - # HAVE_NEON_ASM logic - if ($opt eq 'neon_asm') { $opt_uc = 'NEON' } eval "\$have_${opt}=\"flags & HAS_${opt_uc}\""; } common_top; print <<EOF; -#include "aom_config.h" +#include "config/aom_config.h" #ifdef RTCD_C #include "aom_ports/arm.h" @@ -310,10 +317,17 @@ EOF sub mips() { determine_indirection("c", @ALL_ARCHS); + + # Assign the helper variable for each enabled extension + foreach my $opt (@ALL_ARCHS) { + my $opt_uc = uc $opt; + eval "\$have_${opt}=\"flags & HAS_${opt_uc}\""; + } + common_top; print <<EOF; -#include "aom_config.h" +#include "config/aom_config.h" #ifdef RTCD_C static void setup_rtcd_internal(void) @@ -333,11 +347,44 @@ EOF common_bottom; } +sub ppc() { + determine_indirection("c", @ALL_ARCHS); + + # Assign the helper variable for each enabled extension + foreach my $opt (@ALL_ARCHS) { + my $opt_uc = uc $opt; + eval "\$have_${opt}=\"flags & HAS_${opt_uc}\""; + } + + common_top; + + print <<EOF; +#include "config/aom_config.h" + +#ifdef RTCD_C +#include "aom_ports/ppc.h" +static void setup_rtcd_internal(void) +{ + int flags = ppc_simd_caps(); + + (void)flags; + +EOF + + set_function_pointers("c", @ALL_ARCHS); + + print <<EOF; +} +#endif +EOF + common_bottom; +} + sub unoptimized() { determine_indirection "c"; common_top; print <<EOF; -#include "aom_config.h" +#include "config/aom_config.h" #ifdef RTCD_C static void setup_rtcd_internal(void) @@ -359,10 +406,10 @@ EOF &require("c"); if ($opts{arch} eq 'x86') { - @ALL_ARCHS = filter(qw/mmx sse sse2 sse3 ssse3 sse4_1 avx avx2/); + @ALL_ARCHS = filter(qw/mmx sse sse2 sse3 ssse3 sse4_1 sse4_2 avx avx2/); x86; } elsif ($opts{arch} eq 'x86_64') { - @ALL_ARCHS = filter(qw/mmx sse sse2 sse3 ssse3 sse4_1 avx avx2/); + @ALL_ARCHS = filter(qw/mmx sse sse2 sse3 ssse3 sse4_1 sse4_2 avx avx2/); @REQUIRES = filter(keys %required ? keys %required : qw/mmx sse sse2/); &require(@REQUIRES); x86; @@ -383,12 +430,14 @@ if ($opts{arch} eq 'x86') { close CONFIG_FILE; mips; } elsif ($opts{arch} =~ /armv7\w?/) { - @ALL_ARCHS = filter(qw/neon_asm neon/); - &require(@REQUIRES); + @ALL_ARCHS = filter(qw/neon/); arm; } elsif ($opts{arch} eq 'armv8' || $opts{arch} eq 'arm64' ) { @ALL_ARCHS = filter(qw/neon/); arm; +} elsif ($opts{arch} eq 'ppc') { + @ALL_ARCHS = filter(qw/vsx/); + ppc; } else { unoptimized; } diff --git a/third_party/aom/build/make/thumb.pm b/third_party/aom/build/make/thumb.pm index 8248694e9..0a6629d78 100644 --- a/third_party/aom/build/make/thumb.pm +++ b/third_party/aom/build/make/thumb.pm @@ -55,13 +55,6 @@ sub FixThumbInstructions($$) # "addne r0, r0, r2". s/^(\s*)((ldr|str)(ne)?[bhd]?)(\s+)(\w+),(\s*\w+,)?\s*\[(\w+)\],\s*(\w+)/$1$2$5$6,$7 [$8]\n$1add$4$5$8, $8, $9/g; - # Convert a conditional addition to the pc register into a series of - # instructions. This converts "addlt pc, pc, r3, lsl #2" into - # "itttt lt", "movlt.n r12, pc", "addlt.w r12, #12", - # "addlt.w r12, r12, r3, lsl #2", "movlt.n pc, r12". - # This assumes that r12 is free at this point. - s/^(\s*)addlt(\s+)pc,\s*pc,\s*(\w+),\s*lsl\s*#(\d+)/$1itttt$2lt\n$1movlt.n$2r12, pc\n$1addlt.w$2r12, #12\n$1addlt.w$2r12, r12, $3, lsl #($4-$branch_shift_offset)\n$1movlt.n$2pc, r12/g; - # Convert "mov pc, lr" into "bx lr", since the former only works # for switching from arm to thumb (and only in armv7), but not # from thumb to arm. diff --git a/third_party/aom/build/make/version.sh b/third_party/aom/build/make/version.sh deleted file mode 100755 index 2a7090e4d..000000000 --- a/third_party/aom/build/make/version.sh +++ /dev/null @@ -1,78 +0,0 @@ -#!/bin/sh -## 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. -## - - - -for opt in "$@"; do - optval="${opt#*=}" - case "$opt" in - --bare) bare=true ;; - *) break ;; - esac - shift -done -source_path=${1:-.} -out_file=${2} -id=${3:-VERSION_STRING} - -git_version_id="" -if [ -e "${source_path}/.git" ]; then - # Source Path is a git working copy. Check for local modifications. - # Note that git submodules may have a file as .git, not a directory. - export GIT_DIR="${source_path}/.git" - git_version_id=$(git describe --match=v[0-9]* 2>/dev/null) -fi - -changelog_version="" -for p in "${source_path}" "${source_path}/.."; do - if [ -z "$git_version_id" -a -f "${p}/CHANGELOG" ]; then - changelog_version=$(grep -m 1 " v[0-9]" "${p}/CHANGELOG" \ - | awk '{print $2}') - changelog_version="${changelog_version}" - break - fi -done -version_str="${changelog_version}${git_version_id}" -bare_version=${version_str#v} -major_version=${bare_version%%.*} -bare_version=${bare_version#*.} -minor_version=${bare_version%%.*} -bare_version=${bare_version#*.} -patch_version=${bare_version%%-*} -bare_version=${bare_version#${patch_version}} -extra_version=${bare_version##-} - -#since they'll be used as integers below make sure they are or force to 0 -for v in major_version minor_version patch_version; do - if eval echo \$$v |grep -E -q '[^[:digit:]]'; then - eval $v=0 - fi -done - -if [ ${bare} ]; then - echo "${changelog_version}${git_version_id}" > $$.tmp -else - cat<<EOF>$$.tmp -#define VERSION_MAJOR $major_version -#define VERSION_MINOR $minor_version -#define VERSION_PATCH $patch_version -#define VERSION_EXTRA "$extra_version" -#define VERSION_PACKED ((VERSION_MAJOR<<16)|(VERSION_MINOR<<8)|(VERSION_PATCH)) -#define ${id}_NOSP "${version_str}" -#define ${id} " ${version_str}" -EOF -fi -if [ -n "$out_file" ]; then -diff $$.tmp ${out_file} >/dev/null 2>&1 || cat $$.tmp > ${out_file} -else -cat $$.tmp -fi -rm $$.tmp |