Update aom to commit id e87fb2378f01103d5d6e477a4ef6892dc714e614

This commit is contained in:
trav90 2018-10-18 21:53:44 -05:00 • committed by Roy Tam
commit 992c6637e3
429 changed files with 76047 additions and 40937 deletions

View file

@ -10,6 +10,4 @@
*/
#include "aom/aom_codec.h"
static const char* const cfg = "${AOM_CMAKE_CONFIG}";
static const char* const aom_git_hash = "${AOM_GIT_HASH}";
const char *aom_codec_build_config(void) {return cfg;}
const char *aom_codec_git_hash(void) {return aom_git_hash;}

View file

@ -8,170 +8,208 @@
## 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(RESTRICT "" CACHE STRING "Sets RESTRICT value for current target.")
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_X86 0 CACHE NUMBER "Enables X86 architecture.")
set(ARCH_X86_64 0 CACHE NUMBER "Enables X86_64 architecture.")
set(HAVE_EDSP 0 CACHE NUMBER "Enables EDSP optimizations.")
# ARM optimization flags.
set(HAVE_NEON 0 CACHE NUMBER "Enables NEON intrinsics optimizations.")
set(HAVE_NEON_ASM 0 CACHE NUMBER "Enables NEON assembly optimizations.")
set(HAVE_MIPS32 0 CACHE NUMBER "Enables MIPS32 optimizations.")
# MIPS optimization flags.
set(HAVE_DSPR2 0 CACHE NUMBER "Enables DSPR2 optimizations.")
set(HAVE_MSA 0 CACHE NUMBER "Enables MSA optimizations.")
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.")
# x86/x86_64 optimization flags.
set(HAVE_AVX 0 CACHE NUMBER "Enables AVX optimizations.")
set(HAVE_AVX2 0 CACHE NUMBER "Enables AVX2 optimizations.")
set(HAVE_MMX 0 CACHE NUMBER "Enables MMX optimizations. ")
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_SSSE3 0 CACHE NUMBER "Enables SSSE3 optimizations.")
set(HAVE_SSE4_1 0 CACHE NUMBER "Enables SSE 4.1 optimizations.")
set(HAVE_AVX 0 CACHE NUMBER "Enables AVX optimizations.")
set(HAVE_AVX2 0 CACHE NUMBER "Enables AVX2 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.")
set(CONFIG_DEPENDENCY_TRACKING 1 CACHE NUMBER "Internal flag.")
set(CONFIG_EXTERNAL_BUILD 0 CACHE NUMBER "Internal flag.")
set(CONFIG_INSTALL_BINS 0 CACHE NUMBER "Internal flag.")
set(CONFIG_INSTALL_LIBS 0 CACHE NUMBER "Internal flag.")
set(CONFIG_INSTALL_SRCS 0 CACHE NUMBER "Internal flag.")
set(CONFIG_DEBUG 0 CACHE NUMBER "Internal flag.")
set(CONFIG_GPROF 0 CACHE NUMBER "Internal flag.")
set(CONFIG_GCOV 0 CACHE NUMBER "Internal flag.")
set(CONFIG_RVCT 0 CACHE NUMBER "Internal flag.")
set(CONFIG_GCC 0 CACHE NUMBER "Internal flag.")
set(CONFIG_MSVS 0 CACHE NUMBER "Internal flag.")
set(CONFIG_PIC 0 CACHE NUMBER "Internal flag.")
set(CONFIG_BIG_ENDIAN 0 CACHE NUMBER "Internal flag.")
set(CONFIG_CODEC_SRCS 0 CACHE NUMBER "Internal flag.")
set(CONFIG_DEBUG_LIBS 0 CACHE NUMBER "Internal flag.")
set(CONFIG_RUNTIME_CPU_DETECT 1 CACHE NUMBER "Internal flag.")
set(CONFIG_POSTPROC 1 CACHE NUMBER "Internal flag.")
set(CONFIG_MULTITHREAD 1 CACHE NUMBER "Internal flag.")
set(CONFIG_INTERNAL_STATS 0 CACHE NUMBER "Internal flag.")
set(CONFIG_AV1_ENCODER 1 CACHE NUMBER "Enable AV1 encoder.")
set(CONFIG_AV1_DECODER 1 CACHE NUMBER "Enable AV1 decoder.")
# 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_STATIC_MSVCRT 0 CACHE NUMBER "Internal flag.")
set(CONFIG_SPATIAL_RESAMPLING 1 CACHE NUMBER "Internal flag.")
set(CONFIG_REALTIME_ONLY 0 CACHE NUMBER "Internal flag.")
set(CONFIG_ONTHEFLY_BITPACKING 0 CACHE NUMBER "Internal flag.")
set(CONFIG_ERROR_CONCEALMENT 0 CACHE NUMBER "Internal flag.")
set(CONFIG_SHARED 0 CACHE NUMBER "Internal flag.")
set(CONFIG_STATIC 1 CACHE NUMBER "Internal flag.")
set(CONFIG_SMALL 0 CACHE NUMBER "Internal flag.")
set(CONFIG_POSTPROC_VISUALIZER 0 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.")
set(CONFIG_GCC 0 CACHE NUMBER "Building with GCC (detected).")
set(CONFIG_GCOV 0 CACHE NUMBER "Enable gcov support.")
set(CONFIG_GPROF 0 CACHE NUMBER "Enable gprof support.")
set(CONFIG_LIBYUV 1 CACHE NUMBER "Enables libyuv scaling/conversion support.")
set(CONFIG_MSVS 0 CACHE NUMBER "Building with MS Visual Studio (detected).")
set(CONFIG_MULTITHREAD 1 CACHE NUMBER "Multithread support.")
set(CONFIG_OS_SUPPORT 0 CACHE NUMBER "Internal flag.")
set(CONFIG_UNIT_TESTS 1 CACHE NUMBER "Internal flag.")
set(CONFIG_PIC 0 CACHE NUMBER "Build with PIC enabled.")
set(CONFIG_RUNTIME_CPU_DETECT 1 CACHE NUMBER "Runtime CPU detection support.")
set(CONFIG_SHARED 0 CACHE NUMBER "Build shared libs.")
set(CONFIG_STATIC 1 CACHE NUMBER "Build static libs.")
set(CONFIG_WEBM_IO 1 CACHE NUMBER "Enables WebM support.")
set(CONFIG_LIBYUV 1 CACHE NUMBER "Enables libyuv scaling and conversion 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.")
# 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_INSPECTION 0 CACHE NUMBER "Enables bitstream inspection.")
set(CONFIG_DECODE_PERF_TESTS 0 CACHE NUMBER "Internal flag.")
set(CONFIG_ENCODE_PERF_TESTS 0 CACHE NUMBER "Internal flag.")
set(CONFIG_COEFFICIENT_RANGE_CHECKING 0 CACHE NUMBER "Internal flag.")
set(CONFIG_LOWBITDEPTH 1 CACHE NUMBER "Internal flag.")
set(CONFIG_HIGHBITDEPTH 1 CACHE NUMBER "Internal flag.")
set(CONFIG_EXPERIMENTAL 0 CACHE NUMBER "Internal flag.")
set(CONFIG_SIZE_LIMIT 0 CACHE NUMBER "Internal flag.")
set(CONFIG_COLORSPACE_HEADERS 0 CACHE NUMBER "Internal flag.")
set(CONFIG_FP_MB_STATS 0 CACHE NUMBER "Internal flag.")
set(CONFIG_CDEF 1 CACHE NUMBER "Internal flag.")
set(CONFIG_VAR_TX 1 CACHE NUMBER "Internal flag.")
set(CONFIG_RECT_TX 1 CACHE NUMBER "Internal flag.")
set(CONFIG_RECT_TX_EXT 0 CACHE NUMBER "Internal flag.")
set(CONFIG_TPL_MV 0 CACHE NUMBER "Internal flag.")
set(CONFIG_DUAL_FILTER 1 CACHE NUMBER "Internal flag.")
set(CONFIG_CONVOLVE_ROUND 0 CACHE NUMBER "Internal flag.")
set(CONFIG_COMPOUND_ROUND 0 CACHE NUMBER "Internal flag.")
set(CONFIG_EXT_TX 1 CACHE NUMBER "Internal flag.")
set(CONFIG_DPCM_INTRA 0 CACHE NUMBER "Internal flag.")
set(CONFIG_TX64X64 0 CACHE NUMBER "Internal flag.")
set(CONFIG_EXT_INTRA 1 CACHE NUMBER "Internal flag.")
set(CONFIG_INTRA_INTERP 0 CACHE NUMBER "Internal flag.")
set(CONFIG_FILTER_INTRA 0 CACHE NUMBER "Internal flag.")
set(CONFIG_INTRA_EDGE 0 CACHE NUMBER "Internal flag.")
set(CONFIG_INTRABC 0 CACHE NUMBER "Internal flag.")
set(CONFIG_EXT_INTER 1 CACHE NUMBER "Internal flag.")
set(CONFIG_INTERINTRA 1 CACHE NUMBER "Internal flag.")
set(CONFIG_WEDGE 1 CACHE NUMBER "Internal flag.")
set(CONFIG_COMPOUND_SEGMENT 1 CACHE NUMBER "Internal flag.")
set(CONFIG_EXT_REFS 1 CACHE NUMBER "Internal flag.")
set(CONFIG_SPEED_REFS 0 CACHE NUMBER "Internal flag.")
set(CONFIG_GLOBAL_MOTION 1 CACHE NUMBER "Internal flag.")
set(CONFIG_NEW_QUANT 0 CACHE NUMBER "Internal flag.")
set(CONFIG_SUPERTX 0 CACHE NUMBER "Internal flag.")
set(CONFIG_ANS 0 CACHE NUMBER "Internal flag.")
set(CONFIG_LOOP_RESTORATION 0 CACHE NUMBER "Internal flag.")
set(CONFIG_EXT_PARTITION 0 CACHE NUMBER "Internal flag.")
set(CONFIG_EXT_PARTITION_TYPES 0 CACHE NUMBER "Internal flag.")
set(CONFIG_UNPOISON_PARTITION_CTX 0 CACHE NUMBER "Internal flag.")
set(CONFIG_EXT_TILE 0 CACHE NUMBER "Internal flag.")
set(CONFIG_MOTION_VAR 1 CACHE NUMBER "Internal flag.")
set(CONFIG_NCOBMC 0 CACHE NUMBER "Internal flag.")
set(CONFIG_WARPED_MOTION 1 CACHE NUMBER "Internal flag.")
set(CONFIG_Q_ADAPT_PROBS 0 CACHE NUMBER "Internal flag.")
set(CONFIG_BITSTREAM_DEBUG 0 CACHE NUMBER "Internal flag.")
set(CONFIG_ALT_INTRA 1 CACHE NUMBER "Internal flag.")
set(CONFIG_PALETTE 1 CACHE NUMBER "Internal flag.")
set(CONFIG_PALETTE_DELTA_ENCODING 0 CACHE NUMBER "Internal flag.")
set(CONFIG_RAWBITS 0 CACHE NUMBER "Internal flag.")
set(CONFIG_EC_SMALLMUL 1 CACHE NUMBER "Internal flag.")
set(CONFIG_PVQ 0 CACHE NUMBER "Internal flag.")
set(CONFIG_CFL 0 CACHE NUMBER "Internal flag.")
set(CONFIG_XIPHRC 0 CACHE NUMBER "Internal flag.")
set(CONFIG_CB4X4 1 CACHE NUMBER "Internal flag.")
set(CONFIG_CHROMA_2X2 0 CACHE NUMBER "Internal flag.")
set(CONFIG_CHROMA_SUB8X8 1 CACHE NUMBER "Internal flag.")
set(CONFIG_FRAME_SIZE 0 CACHE NUMBER "Internal flag.")
set(CONFIG_DELTA_Q 1 CACHE NUMBER "Internal flag.")
set(CONFIG_EXT_DELTA_Q 1 CACHE NUMBER "Internal flag.")
set(CONFIG_ADAPT_SCAN 0 CACHE NUMBER "Internal flag.")
set(CONFIG_FILTER_7BIT 1 CACHE NUMBER "Internal flag.")
set(CONFIG_PARALLEL_DEBLOCKING 1 CACHE NUMBER "Internal flag.")
set(CONFIG_LOOPFILTERING_ACROSS_TILES 1 CACHE NUMBER "Internal flag.")
set(CONFIG_TEMPMV_SIGNALING 1 CACHE NUMBER "Internal flag.")
set(CONFIG_RD_DEBUG 0 CACHE NUMBER "Internal flag.")
set(CONFIG_REFERENCE_BUFFER 1 CACHE NUMBER "Internal flag.")
set(CONFIG_COEF_INTERLEAVE 0 CACHE NUMBER "Internal flag.")
set(CONFIG_ENTROPY_STATS 0 CACHE NUMBER "Internal flag.")
set(CONFIG_MASKED_TX 0 CACHE NUMBER "Internal flag.")
set(CONFIG_DEPENDENT_HORZTILES 0 CACHE NUMBER "Internal flag.")
set(CONFIG_DAALA_DIST 0 CACHE NUMBER "Internal flag.")
set(CONFIG_TRIPRED 0 CACHE NUMBER "Internal flag.")
set(CONFIG_PALETTE_THROUGHPUT 1 CACHE NUMBER "Internal flag.")
set(CONFIG_REF_ADAPT 0 CACHE NUMBER "Internal flag.")
set(CONFIG_LV_MAP 0 CACHE NUMBER "Internal flag.")
set(CONFIG_TXK_SEL 0 CACHE NUMBER "Internal flag.")
set(CONFIG_MV_COMPRESS 1 CACHE NUMBER "Internal flag.")
set(CONFIG_FRAME_SUPERRES 0 CACHE NUMBER "Internal flag.")
set(CONFIG_NEW_MULTISYMBOL 0 CACHE NUMBER "Internal flag.")
set(CONFIG_COMPOUND_SINGLEREF 0 CACHE NUMBER "Internal flag.")
set(CONFIG_AOM_QM 0 CACHE NUMBER "Internal flag.")
set(CONFIG_ONE_SIDED_COMPOUND 1 CACHE NUMBER "Internal flag.")
set(CONFIG_EXT_COMP_REFS 0 CACHE NUMBER "Internal flag.")
set(CONFIG_SMOOTH_HV 1 CACHE NUMBER "Internal flag.")
set(CONFIG_VAR_REFS 0 CACHE NUMBER "Internal flag.")
set(CONFIG_RECT_INTRA_PRED 0 CACHE NUMBER "Internal flag.")
set(CONFIG_LGT 0 CACHE NUMBER "Internal flag.")
set(CONFIG_SBL_SYMBOL 0 CACHE NUMBER "Internal flag.")
set(CONFIG_NCOBMC_ADAPT_WEIGHT 0 CACHE NUMBER "Internal flag.")
set(CONFIG_BGSPRITE 0 CACHE NUMBER "Internal flag.")
set(CONFIG_VAR_TX_NO_TX_MODE 0 CACHE NUMBER "Internal flag.")
set(CONFIG_ANALYZER 0 CACHE NUMBER "Internal flag.")
set(CONFIG_DCT_ONLY 0 CACHE NUMBER "Internal flag.")
set(CONFIG_DAALA_DCT4 0 CACHE NUMBER "Internal flag.")
set(CONFIG_DAALA_DCT8 0 CACHE NUMBER "Internal flag.")
set(CONFIG_GF_GROUPS 0 CACHE NUMBER "Internal flag.")
set(CONFIG_MRC_TX 0 CACHE NUMBER "Internal flag.")
set(CONFIG_INTER_STATS_ONLY 0 CACHE NUMBER "Internal flag.")
set(CONFIG_DIST_8X8 0 CACHE NUMBER "Internal flag.")
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_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.")
# 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_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.")

View file

@ -33,9 +33,11 @@ endforeach()
string(STRIP "${AOM_CMAKE_CONFIG}" AOM_CMAKE_CONFIG)
include("${AOM_ROOT}/build/cmake/aom_config_defaults.cmake")
include("${AOM_ROOT}/build/cmake/aom_experiment_deps.cmake")
include("${AOM_ROOT}/build/cmake/aom_optimization.cmake")
include("${AOM_ROOT}/build/cmake/compiler_flags.cmake")
include("${AOM_ROOT}/build/cmake/compiler_tests.cmake")
include("${AOM_ROOT}/build/cmake/util.cmake")
# Build a list of all configurable variables.
get_cmake_property(cmake_cache_vars CACHE_VARIABLES)
@ -45,6 +47,24 @@ foreach (var ${cmake_cache_vars})
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 ()
# Detect target CPU.
if (NOT AOM_TARGET_CPU)
if ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "AMD64" OR
@ -83,17 +103,28 @@ string(STRIP "${AOM_CMAKE_CONFIG}" AOM_CMAKE_CONFIG)
message("--- aom_configure: Detected CPU: ${AOM_TARGET_CPU}")
set(AOM_TARGET_SYSTEM ${CMAKE_SYSTEM_NAME})
if (BUILD_SHARED_LIBS)
set(CONFIG_PIC 1)
set(CONFIG_SHARED 1)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
if ("${CMAKE_BUILD_TYPE}" MATCHES "Deb")
set(CONFIG_DEBUG 1)
endif ()
if ("${AOM_TARGET_SYSTEM}" STREQUAL "Linux" AND
"${AOM_TARGET_CPU}" MATCHES "^armv7")
set(AOM_AS_FLAGS ${AOM_AS_FLAGS} --defsym PIC=1)
else ()
set(AOM_AS_FLAGS ${AOM_AS_FLAGS} -DPIC)
if (NOT MSVC)
if (BUILD_SHARED_LIBS)
set(CONFIG_PIC 1)
set(CONFIG_SHARED 1)
set(CONFIG_STATIC 0)
endif ()
if (CONFIG_PIC)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
if ("${AOM_TARGET_SYSTEM}" STREQUAL "Linux" AND
"${AOM_TARGET_CPU}" MATCHES "^armv7")
set(AOM_AS_FLAGS ${AOM_AS_FLAGS} --defsym PIC=1)
else ()
set(AOM_AS_FLAGS ${AOM_AS_FLAGS} -DPIC)
endif ()
endif ()
else ()
set(CONFIG_MSVS 1)
endif ()
if (NOT "${AOM_SUPPORTED_CPU_TARGETS}" MATCHES "${AOM_TARGET_CPU}")
@ -112,8 +143,9 @@ if ("${AOM_TARGET_CPU}" STREQUAL "x86" OR "${AOM_TARGET_CPU}" STREQUAL "x86_64")
endif ()
if (NOT AS_EXECUTABLE)
message(FATAL_ERROR "Unable to find yasm. To build without optimizations, "
"add -DAOM_TARGET_CPU=generic to your cmake command line.")
message(FATAL_ERROR "Unable to find assembler. 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})
@ -134,26 +166,71 @@ elseif ("${AOM_TARGET_CPU}" MATCHES "arm")
string(STRIP "${AOM_AS_FLAGS}" AOM_AS_FLAGS)
endif ()
if (CONFIG_ANALYZER)
find_package(wxWidgets REQUIRED adv base core)
include(${wxWidgets_USE_FILE})
endif ()
if (NOT MSVC AND CMAKE_C_COMPILER_ID MATCHES "GNU\|Clang")
set(CONFIG_GCC 1)
endif ()
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 ()
if (CONFIG_GPROF)
message("--- Testing for CONFIG_GPROF support.")
require_compiler_flag("-pg" YES)
endif ()
if ("${AOM_TARGET_SYSTEM}" MATCHES "Darwin\|Linux\|Windows")
set(CONFIG_OS_SUPPORT 1)
endif ()
################################################################################
# Fix CONFIG_* dependencies. This must be done before including cpu.cmake to
# ensure RTCD_CONFIG_* are properly set.
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)
aom_check_source_compiles("unistd_check" "#include <unistd.h>" HAVE_UNISTD_H)
if (NOT MSVC)
aom_push_var(CMAKE_REQUIRED_LIBRARIES "m")
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)
aom_pop_var(CMAKE_REQUIRED_LIBRARIES)
endif()
include("${AOM_ROOT}/build/cmake/cpu.cmake")
if (ENABLE_CCACHE)
find_program(CCACHE "ccache")
if (NOT "${CCACHE}" STREQUAL "")
set(CMAKE_C_COMPILER_LAUNCHER "${CCACHE}")
set(CMAKE_CXX_COMPILER_LAUNCHER "${CCACHE}")
else ()
message("--- Cannot find ccache, ENABLE_CCACHE ignored.")
endif ()
set_compiler_launcher(ENABLE_CCACHE ccache)
endif ()
if (ENABLE_DISTCC)
find_program(DISTCC "distcc")
if (NOT "${DISTCC}" STREQUAL "")
set(CMAKE_C_COMPILER_LAUNCHER "${DISTCC}")
set(CMAKE_CXX_COMPILER_LAUNCHER "${DISTCC}")
else ()
message("--- Cannot find distcc, ENABLE_DISTCC ignored.")
endif ()
set_compiler_launcher(ENABLE_DISTCC distcc)
endif ()
if (ENABLE_GOMA)
set_compiler_launcher(ENABLE_GOMA gomacc)
endif ()
if (NOT CONFIG_AV1_DECODER AND NOT CONFIG_AV1_ENCODER)
@ -175,8 +252,10 @@ else ()
add_compiler_flag_if_supported("-Wextra")
add_compiler_flag_if_supported("-Wfloat-conversion")
add_compiler_flag_if_supported("-Wimplicit-function-declaration")
add_compiler_flag_if_supported("-Wlogical-op")
add_compiler_flag_if_supported("-Wpointer-arith")
add_compiler_flag_if_supported("-Wsign-compare")
add_compiler_flag_if_supported("-Wstack-usage=320000")
add_compiler_flag_if_supported("-Wstring-conversion")
add_compiler_flag_if_supported("-Wtype-limits")
add_compiler_flag_if_supported("-Wuninitialized")
@ -199,10 +278,6 @@ else ()
# to the existing configure/make build system.
add_compiler_flag_if_supported("-Wno-unused-function")
if (CMAKE_C_COMPILER_ID MATCHES "GNU\|Clang")
set(CONFIG_GCC 1)
endif ()
if ("${CMAKE_BUILD_TYPE}" MATCHES "Rel")
add_compiler_flag_if_supported("-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0")
endif ()
@ -210,86 +285,6 @@ else ()
add_compiler_flag_if_supported("-D_FILE_OFFSET_BITS=64")
endif ()
if ("${AOM_TARGET_SYSTEM}" MATCHES "Darwin\|Linux\|Windows")
set(CONFIG_OS_SUPPORT 1)
endif ()
# 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)
aom_check_source_compiles("unistd_check" "#include <unistd.h>" HAVE_UNISTD_H)
if (CONFIG_ANALYZER)
find_package(wxWidgets REQUIRED adv base core)
include(${wxWidgets_USE_FILE})
if (NOT CONFIG_INSPECTION)
set(CONFIG_INSPECTION 1)
message(WARNING
"--- Enabled CONFIG_INSPECTION, required for CONFIG_ANALYZER.")
endif ()
endif ()
if (CONFIG_VAR_TX_NO_TX_MODE AND NOT CONFIG_VAR_TX)
message(WARNING
"--- CONFIG_VAR_TX_NO_TX_MODE requires CONFIG_VAR_TX, disabling.")
set(CONFIG_VAR_TX_NO_TX_MODE 0)
endif()
if (CONFIG_DAALA_DCT4)
if (NOT CONFIG_DCT_ONLY)
message(WARNING
"--- Enabled CONFIG_DCT_ONLY, needed for CONFIG_DAALA_DCT4.")
set(CONFIG_DCT_ONLY 1)
endif()
endif()
if (CONFIG_DAALA_DCT4 OR CONFIG_DAALA_DCT8)
if (HAVE_MMX)
message(WARNING
"--- Disabled HAVE_MMX, incompatible with CONFIG_DAALA_DCTx.")
set(HAVE_MMX 0)
endif()
if (CONFIG_RECT_TX)
message(WARNING
"--- Disabled CONFIG_RECT_TX, incompatible with CONFIG_DAALA_DCTx.")
set(CONFIG_RECT_TX 0)
endif()
if (CONFIG_VAR_TX)
message(WARNING
"--- Disabled CONFIG_VAR_TX, incompatible with CONFIG_DAALA_DCTx.")
set(CONFIG_VAR_TX 0)
endif()
if (CONFIG_LGT)
message(WARNING
"--- Disabled CONFIG_LGT, incompatible with CONFIG_DAALA_DCTx.")
set(CONFIG_LGT 0)
endif()
if (NOT CONFIG_LOWBITDEPTH)
message(WARNING
"--- Enabled CONFIG_LOWBITDEPTH, needed for CONFIG_DAALA_DCTx.")
set(CONFIG_LOWBITDEPTH 1)
endif()
endif()
if (NOT MSVC)
aom_push_var(CMAKE_REQUIRED_LIBRARIES "m")
aom_check_c_compiles("fenv_check"
"#define _GNU_SOURCE
#include <fenv.h>
void unused(void) {
(void)feenableexcept(FE_DIVBYZERO | FE_INVALID);
}" HAVE_FEXCEPT)
aom_pop_var(CMAKE_REQUIRED_LIBRARIES)
endif()
set(AOM_LIB_LINK_TYPE PUBLIC)
if (EMSCRIPTEN)
# Avoid CMake generation time errors resulting from collisions with the form
@ -311,19 +306,8 @@ configure_file("${aom_config_h_template}" "${AOM_CONFIG_DIR}/aom_config.h")
# Read the current git hash.
find_package(Git)
set(AOM_GIT_DESCRIPTION)
set(AOM_GIT_HASH)
if (GIT_FOUND)
# TODO(tomfinegan): Add build rule so users don't have to re-run cmake to
# create accurately versioned cmake builds.
execute_process(COMMAND ${GIT_EXECUTABLE}
--git-dir=${AOM_ROOT}/.git rev-parse HEAD
OUTPUT_VARIABLE AOM_GIT_HASH)
execute_process(COMMAND ${GIT_EXECUTABLE} --git-dir=${AOM_ROOT}/.git describe
OUTPUT_VARIABLE AOM_GIT_DESCRIPTION ERROR_QUIET)
# Consume the newline at the end of the git output.
string(STRIP "${AOM_GIT_HASH}" AOM_GIT_HASH)
string(STRIP "${AOM_GIT_DESCRIPTION}" AOM_GIT_DESCRIPTION)
if (NOT GIT_FOUND)
message("--- Git missing, version will be read from CHANGELOG.")
endif ()
configure_file("${AOM_ROOT}/build/cmake/aom_config.c.cmake"
@ -367,64 +351,26 @@ foreach(NUM RANGE ${AOM_RTCD_CUSTOM_COMMAND_COUNT})
OUTPUT_FILE ${AOM_RTCD_HEADER_FILE})
endforeach()
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}
DEPENDS ${config}
COMMENT "Generating ${output}"
WORKING_DIRECTORY ${AOM_CONFIG_DIR}
VERBATIM)
set_property(SOURCE ${source} PROPERTY OBJECT_DEPENDS ${output})
set_property(SOURCE ${output} PROPERTY GENERATED)
endfunction ()
# Generate aom_version.h.
if ("${AOM_GIT_DESCRIPTION}" STREQUAL "")
set(AOM_GIT_DESCRIPTION "${AOM_ROOT}/CHANGELOG")
endif ()
execute_process(
COMMAND ${PERL_EXECUTABLE} "${AOM_ROOT}/build/cmake/aom_version.pl"
--version_data=${AOM_GIT_DESCRIPTION}
--version_filename=${AOM_CONFIG_DIR}/aom_version.h)
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")
# Generate aom.pc (pkg-config file).
if (NOT MSVC)
# Extract the version string from aom_version.h
file(STRINGS "${AOM_CONFIG_DIR}/aom_version.h" aom_version
REGEX "VERSION_STRING_NOSP")
string(REPLACE "#define VERSION_STRING_NOSP \"v" "" aom_version
"${aom_version}")
string(REPLACE "\"" "" aom_version "${aom_version}")
# Write pkg-config info.
set(prefix "${CMAKE_INSTALL_PREFIX}")
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}" "Name: ${pkg_name}\n")
file(APPEND "${pkgconfig_file}" "Description: AV1 codec library.\n")
file(APPEND "${pkgconfig_file}" "Version: ${aom_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)
file(APPEND "${pkgconfig_file}" "Libs.private: -lm -lpthread\n")
else ()
file(APPEND "${pkgconfig_file}" "Libs.private: -lm\n")
endif ()
file(APPEND "${pkgconfig_file}" "Cflags: -I${prefix}/include\n")
# 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_

View file

@ -0,0 +1,139 @@
##
## 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_)
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 ()
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_CHROMA_2X2)
change_config_and_warn(CONFIG_CHROMA_SUB8X8 0 CONFIG_CHROMA_2X2)
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_

View file

@ -238,4 +238,27 @@ function (test_nasm)
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)
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}
DEPENDS ${config}
COMMENT "Generating ${output}"
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_

View file

@ -13,53 +13,93 @@ set(AOM_BUILD_CMAKE_COMPILER_FLAGS_CMAKE_ 1)
include(CheckCCompilerFlag)
include(CheckCXXCompilerFlag)
include("${AOM_ROOT}/build/cmake/compiler_tests.cmake")
# Strings used to cache failed C/CXX flags.
# Strings used to cache flags.
set(AOM_C_FLAGS)
set(AOM_CXX_FLAGS)
set(AOM_EXE_LINKER_FLAGS)
set(AOM_FAILED_C_FLAGS)
set(AOM_FAILED_CXX_FLAGS)
# Checks C compiler for support of $c_flag. Adds $c_flag to $CMAKE_C_FLAGS when
# the compile test passes. Caches $c_flag in $AOM_FAILED_C_FLAGS when the test
# fails.
function (add_c_flag_if_supported c_flag)
unset(C_FLAG_FOUND CACHE)
string(FIND "${CMAKE_C_FLAGS}" "${c_flag}" C_FLAG_FOUND)
unset(C_FLAG_FAILED CACHE)
string(FIND "${AOM_FAILED_C_FLAGS}" "${c_flag}" C_FLAG_FAILED)
if (${C_FLAG_FOUND} EQUAL -1 AND ${C_FLAG_FAILED} EQUAL -1)
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)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${c_flag}" CACHE STRING "" FORCE)
else ()
set(AOM_FAILED_C_FLAGS "${AOM_FAILED_C_FLAGS} ${c_flag}" CACHE STRING ""
FORCE)
endif ()
# Sets variable named by $out_is_present to YES in the caller's scope when $flag
# is found in the string variable named by $flag_cache. Sets the var to NO
# otherwise.
function(is_flag_present flag_cache flag out_is_present)
string(FIND "${${flag_cache}}" "${flag}" flag_pos)
if (${flag_pos} EQUAL -1)
set(${out_is_present} NO PARENT_SCOPE)
else ()
set(${out_is_present} YES PARENT_SCOPE)
endif ()
endfunction ()
# Checks C++ compiler for support of $cxx_flag. Adds $cxx_flag to
# $CMAKE_CXX_FLAGS when the compile test passes. Caches $c_flag in
# $AOM_FAILED_CXX_FLAGS when the test fails.
function (add_cxx_flag_if_supported cxx_flag)
unset(CXX_FLAG_FOUND CACHE)
string(FIND "${CMAKE_CXX_FLAGS}" "${cxx_flag}" CXX_FLAG_FOUND)
unset(CXX_FLAG_FAILED CACHE)
string(FIND "${AOM_FAILED_CXX_FLAGS}" "${cxx_flag}" CXX_FLAG_FAILED)
# Appends $flag to $flags. Ignores scope via use of FORCE with set() call.
function (append_flag flags flag)
string(FIND "${${flags}}" "${flag}" found)
if (${found} EQUAL -1)
set(${flags} "${${flags}} ${flag}" CACHE STRING "" FORCE)
endif ()
endfunction ()
if (${CXX_FLAG_FOUND} EQUAL -1 AND ${CXX_FLAG_FAILED} EQUAL -1)
unset(CXX_FLAG_SUPPORTED CACHE)
message("Checking CXX compiler flag support for: " ${cxx_flag})
check_cxx_compiler_flag("${cxx_flag}" CXX_FLAG_SUPPORTED)
if (CXX_FLAG_SUPPORTED)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${cxx_flag}" CACHE STRING ""
FORCE)
else()
set(AOM_FAILED_CXX_FLAGS "${AOM_FAILED_CXX_FLAGS} ${cxx_flag}" CACHE
STRING "" FORCE)
endif ()
# 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)
return()
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 ()
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})
append_flag(AOM_C_FLAGS "${c_flag}")
foreach (config ${AOM_C_CONFIGS})
unset(C_FLAG_FOUND)
append_flag("${config}" "${c_flag}")
endforeach ()
else ()
append_flag(AOM_FAILED_C_FLAGS "${c_flag}")
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)
return()
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 ()
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})
append_flag(AOM_CXX_FLAGS "${cxx_flag}")
foreach (config ${AOM_CXX_CONFIGS})
unset(CXX_FLAG_FOUND)
append_flag("${config}" "${cxx_flag}")
endforeach ()
else ()
append_flag(AOM_FAILED_CXX_FLAGS "${cxx_flag}")
endif ()
endfunction ()
@ -73,47 +113,78 @@ 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)
unset(C_FLAG_FOUND CACHE)
string(FIND "${CMAKE_C_FLAGS}" "${c_flag}" C_FLAG_FOUND)
if (DEBUG_CMAKE_DISABLE_COMPILER_TESTS)
return()
endif ()
if (${C_FLAG_FOUND} EQUAL -1)
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)
message(FATAL_ERROR
"${PROJECT_NAME} requires support for C flag: ${c_flag}.")
endif ()
if (update_c_flags)
set(CMAKE_C_FLAGS "${c_flag} ${CMAKE_C_FLAGS}" CACHE STRING "" FORCE)
endif ()
is_flag_present(AOM_C_FLAGS "${c_flag}" flag_ok)
if (${flag_ok})
return ()
endif ()
if (NOT "${AOM_EXE_LINKER_FLAGS}" STREQUAL "")
aom_push_var(CMAKE_EXE_LINKER_FLAGS "${AOM_EXE_LINKER_FLAGS}")
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)
message(FATAL_ERROR
"${PROJECT_NAME} requires support for C flag: ${c_flag}.")
endif ()
if (NOT "${AOM_EXE_LINKER_FLAGS}" STREQUAL "")
aom_pop_var(CMAKE_EXE_LINKER_FLAGS)
endif ()
append_flag(AOM_C_FLAGS "${c_flag}")
if (update_c_flags)
foreach (config ${AOM_C_CONFIGS})
set(${config} "${${config}} ${c_flag}" CACHE STRING "" FORCE)
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)
unset(CXX_FLAG_FOUND CACHE)
string(FIND "${CMAKE_CXX_FLAGS}" "${cxx_flag}" CXX_FLAG_FOUND)
if (DEBUG_CMAKE_DISABLE_COMPILER_TESTS)
return()
endif ()
if (${CXX_FLAG_FOUND} EQUAL -1)
unset(HAVE_CXX_FLAG CACHE)
message("Checking CXX compiler flag support for: " ${cxx_flag})
check_cxx_compiler_flag("${cxx_flag}" HAVE_CXX_FLAG)
if (NOT HAVE_CXX_FLAG)
message(FATAL_ERROR
"${PROJECT_NAME} requires support for CXX flag: ${cxx_flag}.")
endif ()
if (update_cxx_flags)
set(CMAKE_CXX_FLAGS "${cxx_flag} ${CMAKE_CXX_FLAGS}" CACHE STRING ""
FORCE)
endif ()
is_flag_present(AOM_CXX_FLAGS "${cxx_flag}" flag_ok)
if (${flag_ok})
return ()
endif ()
if (NOT "${AOM_EXE_LINKER_FLAGS}" STREQUAL "")
aom_push_var(CMAKE_EXE_LINKER_FLAGS "${AOM_EXE_LINKER_FLAGS}")
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)
message(FATAL_ERROR
"${PROJECT_NAME} requires support for C flag: ${cxx_flag}.")
endif ()
if (NOT "${AOM_EXE_LINKER_FLAGS}" STREQUAL "")
aom_pop_var(CMAKE_EXE_LINKER_FLAGS)
endif ()
append_flag(AOM_CXX_FLAGS "${cxx_flag}")
if (update_cxx_flags)
foreach (config ${AOM_CXX_CONFIGS})
set(${config} "${${config}} ${cxx_flag}" CACHE STRING "" FORCE)
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_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 ()
@ -137,7 +208,7 @@ 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_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 ()
@ -145,25 +216,29 @@ endfunction ()
# Adds $preproc_def to C compiler command line (as -D$preproc_def) if not
# already present.
function (add_c_preproc_definition preproc_def)
unset(PREPROC_DEF_FOUND CACHE)
string(FIND "${CMAKE_C_FLAGS}" "${preproc_def}" PREPROC_DEF_FOUND)
if (${PREPROC_DEF_FOUND} EQUAL -1)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D${preproc_def}" CACHE STRING ""
FORCE)
set(preproc_def "-D${preproc_def}")
is_flag_present(AOM_C_FLAGS "${preproc_def}" flag_cached)
if (${flag_cached})
return ()
endif ()
foreach (config ${AOM_C_CONFIGS})
set(${config} "${${config}} ${preproc_def}" CACHE STRING "" FORCE)
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)
unset(PREPROC_DEF_FOUND CACHE)
string(FIND "${CMAKE_CXX_FLAGS}" "${preproc_def}" PREPROC_DEF_FOUND)
if (${PREPROC_DEF_FOUND} EQUAL -1)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D${preproc_def}" CACHE STRING ""
FORCE)
set(preproc_def "-D${preproc_def}")
is_flag_present(AOM_CXX_FLAGS "${preproc_def}" flag_cached)
if (${flag_cached})
return ()
endif ()
foreach (config ${AOM_CXX_CONFIGS})
set(${config} "${${config}} ${preproc_def}" CACHE STRING "" FORCE)
endforeach ()
endfunction ()
# Adds $preproc_def to C and CXX compiler command line (as -D$preproc_def) if
@ -175,32 +250,35 @@ endfunction ()
# Adds $flag to assembler command line.
function (append_as_flag flag)
unset(AS_FLAG_FOUND CACHE)
string(FIND "${AOM_AS_FLAGS}" "${flag}" AS_FLAG_FOUND)
if (${AS_FLAG_FOUND} EQUAL -1)
set(AOM_AS_FLAGS "${AOM_AS_FLAGS} ${flag}" CACHE STRING "" FORCE)
is_flag_present(AOM_AS_FLAGS "${flag}" flag_cached)
if (${flag_cached})
return ()
endif ()
append_flag(AOM_AS_FLAGS "${flag}")
endfunction ()
# Adds $flag to the C compiler command line.
function (append_c_flag flag)
unset(C_FLAG_FOUND CACHE)
string(FIND "${CMAKE_C_FLAGS}" "${flag}" C_FLAG_FOUND)
if (${C_FLAG_FOUND} EQUAL -1)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${flag}" CACHE STRING "" FORCE)
is_flag_present(AOM_C_FLAGS "${flag}" flag_cached)
if (${flag_cached})
return ()
endif ()
foreach (config ${AOM_C_CONFIGS})
append_flag(${config} "${flag}")
endforeach ()
endfunction ()
# Adds $flag to the CXX compiler command line.
function (append_cxx_flag flag)
unset(CXX_FLAG_FOUND CACHE)
string(FIND "${CMAKE_CXX_FLAGS}" "${flag}" CXX_FLAG_FOUND)
if (${CXX_FLAG_FOUND} EQUAL -1)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}" CACHE STRING "" FORCE)
is_flag_present(AOM_CXX_FLAGS "${flag}" flag_cached)
if (${flag_cached})
return ()
endif ()
foreach (config ${AOM_CXX_CONFIGS})
append_flag(${config} "${flag}")
endforeach ()
endfunction ()
# Adds $flag to the C and CXX compiler command lines.
@ -209,30 +287,29 @@ function (append_compiler_flag flag)
append_cxx_flag(${flag})
endfunction ()
# Adds $flag to the executable linker command line.
# Adds $flag to the executable linker command line when not present.
function (append_exe_linker_flag flag)
unset(LINKER_FLAG_FOUND CACHE)
string(FIND "${CMAKE_EXE_LINKER_FLAGS}" "${flag}" LINKER_FLAG_FOUND)
if (${LINKER_FLAG_FOUND} EQUAL -1)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${flag}" CACHE STRING
"" FORCE)
is_flag_present(AOM_EXE_LINKER_FLAGS "${flag}" flag_cached)
if (${flag_cached})
return()
endif ()
append_flag(AOM_EXE_LINKER_FLAGS "${flag}")
foreach (config ${AOM_EXE_LINKER_CONFIGS})
append_flag(${config} "${flag}")
endforeach ()
endfunction ()
# Adds $flag to the link flags for $target.
function (append_link_flag_to_target target flags)
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)
unset(link_flag_found)
string(FIND "${target_link_flags}" "${flags}" link_flag_found)
if (NOT ${link_flag_found} EQUAL -1)
is_flag_present(target_link_flags "${flag}" flag_found)
if (${flag_found})
return()
endif ()
set(target_link_flags "${target_link_flags} ${flags}")
else ()
set(target_link_flags "${flags}")
@ -241,4 +318,55 @@ function (append_link_flag_to_target target flags)
set_target_properties(${target} PROPERTIES LINK_FLAGS ${target_link_flags})
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)
return()
endif ()
append_exe_linker_flag(${flag})
unset(c_passed)
aom_check_c_compiles("LINKER_FLAG_C_TEST(${flag})" "" c_passed)
unset(cxx_passed)
aom_check_cxx_compiles("LINKER_FLAG_CXX_TEST(${flag})" "" cxx_passed)
if (NOT c_passed OR NOT cxx_passed)
message(FATAL_ERROR "Linker flag test for ${flag} failed.")
endif ()
endfunction ()
# Appends flags in $AOM_EXTRA_<TYPE>_FLAGS variables to the flags used at build
# time.
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)
is_flag_present(AOM_EXE_LINKER_FLAGS "${AOM_EXTRA_EXE_LINKER_FLAGS}"
extra_present)
if (NOT ${extra_present})
require_linker_flag("${AOM_EXTRA_EXE_LINKER_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})
append_flag(AOM_AS_FLAGS "${AOM_EXTRA_AS_FLAGS}")
endif ()
endif ()
if (AOM_EXTRA_C_FLAGS)
is_flag_present(AOM_C_FLAGS "${AOM_EXTRA_C_FLAGS}" extra_present)
if (NOT ${extra_present})
require_c_flag("${AOM_EXTRA_C_FLAGS}" YES)
endif ()
endif ()
if (AOM_EXTRA_CXX_FLAGS)
is_flag_present(AOM_CXX_FLAGS "${AOM_EXTRA_CXX_FLAGS}" extra_present)
if (NOT ${extra_present})
require_cxx_flag("${AOM_EXTRA_CXX_FLAGS}" YES)
endif ()
endif ()
endfunction ()
endif () # AOM_BUILD_CMAKE_COMPILER_FLAGS_CMAKE_

View file

@ -14,6 +14,34 @@ 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 ...
# 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
# 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
# configuration(s).
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})
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 ()
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 ()
# The basic main() function used in all compile tests.
set(AOM_C_MAIN "\nint main(void) { return 0; }")
set(AOM_CXX_MAIN "\nint main() { return 0; }")
@ -25,8 +53,8 @@ set(AOM_CXX_PASSED_TESTS)
set(AOM_CXX_FAILED_TESTS)
function(aom_push_var var new_value)
set(SAVED_${var} ${var} PARENT_SCOPE)
set(${var} ${new_value} PARENT_SCOPE)
set(SAVED_${var} ${${var}} PARENT_SCOPE)
set(${var} "${${var}} ${new_value}" PARENT_SCOPE)
endfunction ()
function(aom_pop_var var)
@ -40,6 +68,10 @@ endfunction ()
# 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)
return()
endif ()
unset(C_TEST_PASSED CACHE)
unset(C_TEST_FAILED CACHE)
string(FIND "${AOM_C_PASSED_TESTS}" "${test_name}" C_TEST_PASSED)
@ -71,6 +103,10 @@ endfunction ()
# 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)
return()
endif ()
unset(CXX_TEST_PASSED CACHE)
unset(CXX_TEST_FAILED CACHE)
string(FIND "${AOM_CXX_PASSED_TESTS}" "${test_name}" CXX_TEST_PASSED)
@ -100,9 +136,9 @@ 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.
# 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)

View file

@ -17,8 +17,8 @@ function (listify_string in_string out_string)
set(${out_string} "${${out_string}}" PARENT_SCOPE)
endfunction ()
set(REQUIRED_ARGS "AOM_ROOT" "AOM_CONFIG_DIR" "AOM_DIST_DIR" "AOM_DIST_EXAMPLES"
"AOM_DIST_APPS" "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 "")
@ -30,15 +30,27 @@ if (ENABLE_DOCS)
file(INSTALL "${AOM_CONFIG_DIR}/docs" DESTINATION "${AOM_DIST_DIR}")
endif ()
listify_string("${AOM_DIST_EXAMPLES}" "AOM_DIST_EXAMPLES")
foreach (example ${AOM_DIST_EXAMPLES})
file(INSTALL "${example}" DESTINATION "${AOM_DIST_DIR}/bin/examples")
endforeach ()
if (AOM_DIST_EXAMPLES)
listify_string("${AOM_DIST_EXAMPLES}" "AOM_DIST_EXAMPLES")
foreach (example ${AOM_DIST_EXAMPLES})
if (NOT "${example}" MATCHES "aomdec\|aomenc")
file(INSTALL "${example}" DESTINATION "${AOM_DIST_DIR}/bin/examples")
endif ()
endforeach ()
endif ()
listify_string("${AOM_DIST_APPS}" "AOM_DIST_APPS")
foreach (app ${AOM_DIST_APPS})
file(INSTALL "${app}" DESTINATION "${AOM_DIST_DIR}/bin")
endforeach ()
if (AOM_DIST_TOOLS)
foreach (tool ${AOM_DIST_TOOLS})
file(INSTALL "${tool}" DESTINATION "${AOM_DIST_DIR}/bin/tools")
endforeach ()
endif ()
if (AOM_DIST_APPS)
listify_string("${AOM_DIST_APPS}" "AOM_DIST_APPS")
foreach (app ${AOM_DIST_APPS})
file(INSTALL "${app}" DESTINATION "${AOM_DIST_DIR}/bin")
endforeach ()
endif ()
listify_string("${AOM_DIST_INCLUDES}" "AOM_DIST_INCLUDES")
foreach (inc ${AOM_DIST_INCLUDES})

View file

@ -0,0 +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.
##
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")
foreach (arg ${REQUIRED_ARGS})
if ("${${arg}}" STREQUAL "")
message(FATAL_ERROR "${arg} must not be empty.")
endif ()
endforeach ()
include("${AOM_ROOT}/build/cmake/util.cmake")
extract_version_string("${AOM_CONFIG_DIR}/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)
set(package_version "${aom_version}")
else ()
string(SUBSTRING "${aom_version}" 0 ${dash_pos} package_version)
endif ()
# Write pkg-config info.
set(prefix "${CMAKE_INSTALL_PREFIX}")
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}" "Name: ${pkg_name}\n")
file(APPEND "${pkgconfig_file}"
"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)
file(APPEND "${pkgconfig_file}" "Libs.private: -lm -lpthread\n")
else ()
file(APPEND "${pkgconfig_file}" "Libs.private: -lm\n")
endif ()
file(APPEND "${pkgconfig_file}" "Cflags: -I${prefix}/include\n")

View file

@ -0,0 +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_SANITIZERS_CMAKE_)
set(AOM_BUILD_CMAKE_SANITIZERS_CMAKE_ 1)
if (MSVC OR NOT SANITIZE)
return ()
endif ()
include("${AOM_ROOT}/build/cmake/compiler_flags.cmake")
string(TOLOWER ${SANITIZE} SANITIZE)
# Require the sanitizer requested.
require_linker_flag("-fsanitize=${SANITIZE}")
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_

View file

@ -66,6 +66,10 @@ set(CMAKE_CXX_COMPILER_ARG1 "-EL ${MIPS_CXXFLAGS}")
set(CMAKE_SYSTEM_PROCESSOR "mips32")
# No runtime cpu detect for mips32-linux-gcc.
set(CONFIG_RUNTIME_CPU_DETECT 0 CACHE NUMBER "")
if (CONFIG_RUNTIME_CPU_DETECT)
message("--- CONFIG_RUNTIME_CPU_DETECT not supported for mips32 targets.")
endif ()
set(CONFIG_RUNTIME_CPU_DETECT 0 CACHE NUMBER "" FORCE)
endif () # AOM_BUILD_CMAKE_TOOLCHAINS_MIPS32_LINUX_GCC_CMAKE_

View file

@ -43,6 +43,10 @@ set(CMAKE_CXX_COMPILER_ARG1 "-EL ${MIPS_CXXFLAGS}")
set(CMAKE_SYSTEM_PROCESSOR "mips64")
# No runtime cpu detect for mips64-linux-gcc.
set(CONFIG_RUNTIME_CPU_DETECT 0 CACHE NUMBER "")
if (CONFIG_RUNTIME_CPU_DETECT)
message("--- CONFIG_RUNTIME_CPU_DETECT not supported for mips64 targets.")
endif ()
set(CONFIG_RUNTIME_CPU_DETECT 0 CACHE NUMBER "" FORCE)
endif () # AOM_BUILD_CMAKE_TOOLCHAINS_MIPS64_LINUX_GCC_CMAKE_

View file

@ -8,7 +8,12 @@
## 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_)
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_

View file

@ -0,0 +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_MINGW_GCC_CMAKE_)
set(AOM_BUILD_CMAKE_TOOLCHAINS_X86_MINGW_GCC_CMAKE_ 1)
set(CMAKE_SYSTEM_PROCESSOR "x86")
set(CMAKE_SYSTEM_NAME "Windows")
set(CMAKE_C_COMPILER_ARG1 "-m32")
set(CMAKE_CXX_COMPILER_ARG1 "-m32")
if ("${CROSS}" STREQUAL "")
set(CROSS i686-w64-mingw32-)
endif ()
set(CMAKE_C_COMPILER ${CROSS}gcc)
set(CMAKE_CXX_COMPILER ${CROSS}g++)
# Disable the use of the gtest's CMake support.
set(AOM_DISABLE_GTEST_CMAKE 1)
endif () # AOM_BUILD_CMAKE_TOOLCHAINS_X86_MINGW_GCC_CMAKE_

View file

@ -0,0 +1,27 @@
##
## 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_)
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 "")
set(CROSS x86_64-w64-mingw32-)
endif ()
set(CMAKE_C_COMPILER ${CROSS}gcc)
set(CMAKE_CXX_COMPILER ${CROSS}g++)
# 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_

View file

@ -11,9 +11,12 @@
if (NOT 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}"
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"
@ -21,10 +24,61 @@ function (create_dummy_source_file basename extension out_file_path)
set(${out_file_path} ${dummy_source_file} PARENT_SCOPE)
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)
create_dummy_source_file("${target_name}" "${extension}" "dummy_source_file")
target_sources(${target_name} PRIVATE ${dummy_source_file})
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)
set(${feature} ${value} PARENT_SCOPE)
if (${value} EQUAL 1)
set(verb "Enabled")
set(reason "required for")
else ()
set(verb "Disabled")
set(reason "incompatible with")
endif ()
set(warning_message "${verb} ${feature}, ${reason} ${cause}.")
message(WARNING "--- ${warning_message}")
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)
file(STRINGS "${version_file}" aom_version REGEX "VERSION_STRING_NOSP")
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)
string(SUBSTRING "${aom_version}" 1 -1 aom_version)
endif ()
set("${version_string_out_var}" "${aom_version}" PARENT_SCOPE)
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)
find_program(launcher_path "${launcher_name}")
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 ()
message(WARNING
"--- Cannot find ${launcher_name}, ${launcher_flag} ignored.")
endif ()
endfunction ()
endif() # AOM_BUILD_CMAKE_UTIL_CMAKE_

View file

@ -0,0 +1,55 @@
##
## 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")
foreach (arg ${REQUIRED_ARGS})
if ("${${arg}}" STREQUAL "")
message(FATAL_ERROR "${arg} must not be empty.")
endif ()
endforeach ()
include("${AOM_ROOT}/build/cmake/util.cmake")
# Generate the version string for this run.
unset(aom_version)
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)
string(SUBSTRING "${aom_version}" 1 -1 aom_version)
endif ()
endif ()
if ("${aom_version}" STREQUAL "")
set(aom_version "${AOM_ROOT}/CHANGELOG")
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 (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 ()

View file

@ -14,6 +14,7 @@ use warnings;
use 5.010;
use Getopt::Long;
my $git_desc;
my $version_data;
my $version_filename;
GetOptions('version_data=s' => \$version_data,
@ -27,6 +28,7 @@ if (!defined $version_data || length($version_data) == 0 ||
# Determine if $version_data is a filename or a git tag/description.
my $version_string;
chomp($version_data);
if (-r $version_data) {
# $version_data is the path to the CHANGELOG. Parse the most recent version.
my $changelog_filename = $version_data;
@ -45,6 +47,7 @@ if (-r $version_data) {
# tagName OR tagName-commitsSinceTag-shortCommitHash
# In either case we want the first element of the array returned by split.
$version_string = (split("-", $version_data))[0];
$git_desc = $version_data;
}
if (substr($version_string, 0, 1) eq "v") {
@ -80,7 +83,19 @@ my $lic_block = << "EOF";
EOF
select $version_file;
print << "EOF";
if (length($git_desc)) {
print << "EOF";
$lic_block
#define VERSION_MAJOR $version_major
#define VERSION_MINOR $version_minor
#define VERSION_PATCH $version_patch
#define VERSION_EXTRA \"$version_extra\"
#define VERSION_PACKED $version_packed
#define VERSION_STRING_NOSP \"$git_desc\"
#define VERSION_STRING \" $git_desc\"
EOF
} else {
print << "EOF";
$lic_block
#define VERSION_MAJOR $version_major
#define VERSION_MINOR $version_minor
@ -90,4 +105,5 @@ $lic_block
#define VERSION_STRING_NOSP \"v$version_string\"
#define VERSION_STRING \" v$version_string\"
EOF
}
close($version_file);