Expand cmake assembler support.
- Stop acting as if Yasm is the only assembler.
- Kill generation and report error when yasm is not found for x86
and x86_64 (remove the generic fallback).
- Use $AOM_AS_FLAGS to pass assembler specific flags.
- Add include guard in aom_optimization.cmake.
BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76
Change-Id: Ic68d6c81071c24a8ceb6806d04ab8959be97d876
diff --git a/build/cmake/aom_configure.cmake b/build/cmake/aom_configure.cmake
index 31f826e..1a0bad4 100644
--- a/build/cmake/aom_configure.cmake
+++ b/build/cmake/aom_configure.cmake
@@ -27,6 +27,7 @@
string(STRIP "${AOM_CMAKE_CONFIG}" AOM_CMAKE_CONFIG)
include("${AOM_ROOT}/build/cmake/aom_config_defaults.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")
@@ -80,11 +81,16 @@
endif ()
if ("${AOM_TARGET_CPU}" STREQUAL "x86" OR "${AOM_TARGET_CPU}" STREQUAL "x86_64")
- find_program(YASM_EXECUTABLE yasm $ENV{YASM_PATH})
- if (NOT YASM_EXECUTABLE)
- message(WARNING "Unable to find yasm, using generic as target CPU.")
- set(AOM_TARGET_CPU "generic")
+ # TODO(tomfinegan): Support nasm at least as well as the existing build
+ # system.
+ find_program(AS_EXECUTABLE yasm $ENV{YASM_PATH})
+ 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.")
endif ()
+ get_asm_obj_format("objformat")
+ set(AOM_AS_FLAGS -f ${objformat} ${AOM_AS_FLAGS})
+ string(STRIP "${AOM_AS_FLAGS}" AOM_AS_FLAGS)
endif ()
include("${AOM_ROOT}/build/cmake/targets/${AOM_TARGET_CPU}.cmake")
diff --git a/build/cmake/aom_optimization.cmake b/build/cmake/aom_optimization.cmake
index 72abd5d..b2c6498 100644
--- a/build/cmake/aom_optimization.cmake
+++ b/build/cmake/aom_optimization.cmake
@@ -8,6 +8,8 @@
## 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_)
+set(AOM_BUILD_CMAKE_AOM_OPTIMIZATION_CMAKE_ 1)
# 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).
@@ -112,15 +114,12 @@
# consumers of the AOM cmake build.
add_library(${lib_name} STATIC ${${asm_sources}})
- get_asm_obj_format("objformat")
-
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 ${YASM_EXECUTABLE}
+ COMMAND ${AS_EXECUTABLE}
ARGS ${AOM_AS_FLAGS}
- -f ${objformat}
-I${AOM_ROOT} -I${AOM_CONFIG_DIR}
-o "${asm_object}" "${asm_source}"
DEPENDS "${asm_source}"
@@ -148,3 +147,5 @@
list(APPEND AOM_LIB_TARGETS ${lib_name})
set(AOM_LIB_TARGETS ${AOM_LIB_TARGETS} PARENT_SCOPE)
endfunction ()
+
+endif () # AOM_BUILD_CMAKE_AOM_OPTIMIZATION_CMAKE_