Add basic armv7 linux support to the cmake build.

Requires new cmake toolchain file  armv7-linux-gcc.cmake:
$ cmake path/to/aom -DCMAKE_TOOLCHAIN_FILE=path/to/aom/build/cmake/toolchains/armv7-linux-gcc.cmake

Above requires arm-linux-gnueabihf-gcc toolchain is installed and its
bin dir added to PATH.

BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76

Change-Id: Id2d0022fd5b4615fef7ea0ef38980cbdfd957c0e
This commit is contained in:
Tom Finegan 2017-03-28 18:00:09 -07:00
Родитель c538d6815e
Коммит f47266d965
2 изменённых файлов: 44 добавлений и 0 удалений

Просмотреть файл

@ -97,6 +97,10 @@ 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")
if (NOT AS_EXECUTABLE)
message(FATAL_ERROR "Assembler missing for ${AOM_TARGET_CPU}-Linux.")
endif ()
endif ()
if (NOT AS_EXECUTABLE)
message(FATAL_ERROR

Просмотреть файл

@ -0,0 +1,40 @@
##
## 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_)
set(AOM_BUILD_CMAKE_TOOLCHAINS_ARMV7_LINUX_GCC_CMAKE_ 1)
set(CMAKE_SYSTEM_NAME "Linux")
# TODO(tomfinegan): Allow control of compiler prefix (aka $CROSS).
set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++)
set(AS_EXECUTABLE arm-linux-gnueabihf-as)
# TODO(tomfinegan): Handle soft float.
set(CMAKE_C_COMPILER_ARG1 "-march=armv7-a -mfloat-abi=hard -mfpu=neon")
set(CMAKE_CXX_COMPILER_ARG1 "-march=armv7-a -mfloat-abi=hard -mfpu=neon")
set(AOM_AS_FLAGS
--defsym ARCHITECTURE=7 -march=armv7-a -mfloat-abi=hard -mfpu=neon)
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 BOOL "")
endif () # AOM_BUILD_CMAKE_TOOLCHAINS_ARMV7_LINUX_GCC_CMAKE_