mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-06 15:27:30 +09:00
Update aom to v1.0.0
Update aom to commit id d14c5bb4f336ef1842046089849dee4a301fbbf0.
This commit is contained in:
parent
bb61121b44
commit
48f6d2e034
1087 changed files with 154333 additions and 265310 deletions
|
|
@ -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.")
|
||||
|
|
|
|||
386
third_party/aom/build/cmake/aom_configure.cmake
vendored
386
third_party/aom/build/cmake/aom_configure.cmake
vendored
|
|
@ -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(AS_EXECUTABLE)
|
||||
test_nasm()
|
||||
endif()
|
||||
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(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")
|
||||
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_
|
||||
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()
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
268
third_party/aom/build/cmake/aom_optimization.cmake
vendored
268
third_party/aom/build/cmake/aom_optimization.cmake
vendored
|
|
@ -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()
|
||||
|
|
|
|||
349
third_party/aom/build/cmake/compiler_flags.cmake
vendored
349
third_party/aom/build/cmake/compiler_flags.cmake
vendored
|
|
@ -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()
|
||||
|
|
|
|||
141
third_party/aom/build/cmake/compiler_tests.cmake
vendored
141
third_party/aom/build/cmake/compiler_tests.cmake
vendored
|
|
@ -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()
|
||||
|
|
|
|||
139
third_party/aom/build/cmake/cpu.cmake
vendored
139
third_party/aom/build/cmake/cpu.cmake
vendored
|
|
@ -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)
|
||||
|
||||
if ("${AOM_TARGET_CPU}" STREQUAL "mips32")
|
||||
set(HAVE_MIPS32 1)
|
||||
elseif ("${AOM_TARGET_CPU}" STREQUAL "mips64")
|
||||
set(HAVE_MIPS64 1)
|
||||
endif ()
|
||||
|
||||
set(RTCD_ARCH_MIPS "yes")
|
||||
|
||||
if (HAVE_DSPR2)
|
||||
set(RTCD_HAVE_DSPR2 "yes")
|
||||
endif ()
|
||||
if("${AOM_TARGET_CPU}" STREQUAL "mips32")
|
||||
set(HAVE_MIPS32 1)
|
||||
set(RTCD_HAVE_MIPS32 "yes")
|
||||
elseif("${AOM_TARGET_CPU}" STREQUAL "mips64")
|
||||
set(HAVE_MIPS64 1)
|
||||
set(RTCD_HAVE_MIPS64 "yes")
|
||||
endif()
|
||||
|
||||
if (HAVE_MSA)
|
||||
# HAVE_DSPR2 is set by mips toolchain files.
|
||||
if(ENABLE_DSPR2 AND HAVE_DSPR2)
|
||||
set(RTCD_HAVE_DSPR2 "yes")
|
||||
else()
|
||||
set(HAVE_DSPR2 0)
|
||||
set(AOM_RTCD_FLAGS ${AOM_RTCD_FLAGS} --disable-dspr2)
|
||||
endif()
|
||||
|
||||
# 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()
|
||||
|
|
|
|||
77
third_party/aom/build/cmake/dist.cmake
vendored
77
third_party/aom/build/cmake/dist.cmake
vendored
|
|
@ -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()
|
||||
|
|
|
|||
81
third_party/aom/build/cmake/exports.cmake
vendored
81
third_party/aom/build/cmake/exports.cmake
vendored
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
57
third_party/aom/build/cmake/msvc_runtime.cmake
vendored
57
third_party/aom/build/cmake/msvc_runtime.cmake
vendored
|
|
@ -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()
|
||||
|
|
|
|||
61
third_party/aom/build/cmake/pkg_config.cmake
vendored
61
third_party/aom/build/cmake/pkg_config.cmake
vendored
|
|
@ -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")
|
||||
|
|
|
|||
39
third_party/aom/build/cmake/sanitizers.cmake
vendored
39
third_party/aom/build/cmake/sanitizers.cmake
vendored
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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_
|
||||
|
|
|
|||
|
|
@ -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_
|
||||
|
|
|
|||
|
|
@ -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_
|
||||
|
|
|
|||
32
third_party/aom/build/cmake/toolchains/arm64-mingw-gcc.cmake
vendored
Normal file
32
third_party/aom/build/cmake/toolchains/arm64-mingw-gcc.cmake
vendored
Normal file
|
|
@ -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)
|
||||
|
|
@ -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_
|
||||
|
|
|
|||
|
|
@ -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_
|
||||
|
|
|
|||
32
third_party/aom/build/cmake/toolchains/armv7-mingw-gcc.cmake
vendored
Normal file
32
third_party/aom/build/cmake/toolchains/armv7-mingw-gcc.cmake
vendored
Normal file
|
|
@ -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)
|
||||
|
|
@ -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_
|
||||
|
|
|
|||
|
|
@ -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_
|
||||
|
|
|
|||
|
|
@ -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_
|
||||
|
|
|
|||
|
|
@ -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_
|
||||
|
|
|
|||
29
third_party/aom/build/cmake/toolchains/ppc-linux-gcc.cmake
vendored
Normal file
29
third_party/aom/build/cmake/toolchains/ppc-linux-gcc.cmake
vendored
Normal file
|
|
@ -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 "")
|
||||
|
|
@ -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_
|
||||
|
|
|
|||
|
|
@ -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_
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -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_
|
||||
|
|
|
|||
|
|
@ -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_
|
||||
|
|
|
|||
|
|
@ -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_
|
||||
|
|
|
|||
90
third_party/aom/build/cmake/util.cmake
vendored
90
third_party/aom/build/cmake/util.cmake
vendored
|
|
@ -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()
|
||||
|
||||
|
|
|
|||
66
third_party/aom/build/cmake/version.cmake
vendored
66
third_party/aom/build/cmake/version.cmake
vendored
|
|
@ -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()
|
||||
|
|
|
|||
5
third_party/aom/build/cmake/version.pl
vendored
5
third_party/aom/build/cmake/version.pl
vendored
|
|
@ -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
|
||||
|
|
|
|||
194
third_party/aom/build/make/Android.mk
vendored
194
third_party/aom/build/make/Android.mk
vendored
|
|
@ -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
|
||||
466
third_party/aom/build/make/Makefile
vendored
466
third_party/aom/build/make/Makefile
vendored
|
|
@ -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
|
||||
39
third_party/aom/build/make/ads2armasm_ms.pl
vendored
39
third_party/aom/build/make/ads2armasm_ms.pl
vendored
|
|
@ -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;
|
||||
}
|
||||
|
||||
236
third_party/aom/build/make/ads2gas.pl
vendored
236
third_party/aom/build/make/ads2gas.pl
vendored
|
|
@ -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");
|
||||
235
third_party/aom/build/make/ads2gas_apple.pl
vendored
235
third_party/aom/build/make/ads2gas_apple.pl
vendored
|
|
@ -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;
|
||||
}
|
||||
53
third_party/aom/build/make/armlink_adapter.sh
vendored
53
third_party/aom/build/make/armlink_adapter.sh
vendored
|
|
@ -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
|
||||
1522
third_party/aom/build/make/configure.sh
vendored
1522
third_party/aom/build/make/configure.sh
vendored
File diff suppressed because it is too large
Load diff
65
third_party/aom/build/make/gen_asm_deps.sh
vendored
65
third_party/aom/build/make/gen_asm_deps.sh
vendored
|
|
@ -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
|
||||
82
third_party/aom/build/make/gen_msvs_def.sh
vendored
82
third_party/aom/build/make/gen_msvs_def.sh
vendored
|
|
@ -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
|
||||
257
third_party/aom/build/make/gen_msvs_sln.sh
vendored
257
third_party/aom/build/make/gen_msvs_sln.sh
vendored
|
|
@ -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}
|
||||
477
third_party/aom/build/make/gen_msvs_vcxproj.sh
vendored
477
third_party/aom/build/make/gen_msvs_vcxproj.sh
vendored
|
|
@ -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
|
||||
1
third_party/aom/build/make/iosbuild.sh
vendored
1
third_party/aom/build/make/iosbuild.sh
vendored
|
|
@ -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}
|
||||
|
|
|
|||
114
third_party/aom/build/make/msvs_common.sh
vendored
114
third_party/aom/build/make/msvs_common.sh
vendored
|
|
@ -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
|
||||
}
|
||||
|
||||
71
third_party/aom/build/make/rtcd.pl
vendored
71
third_party/aom/build/make/rtcd.pl
vendored
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
7
third_party/aom/build/make/thumb.pm
vendored
7
third_party/aom/build/make/thumb.pm
vendored
|
|
@ -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.
|
||||
|
|
|
|||
78
third_party/aom/build/make/version.sh
vendored
78
third_party/aom/build/make/version.sh
vendored
|
|
@ -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
|
||||
Loading…
Add table
Add a link
Reference in a new issue