Commit 1ba9bd89 authored by Tom Finegan's avatar Tom Finegan

Add MSVC win32 support to the cmake build.

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

Change-Id: I3179fe9ec45ff1aab06cc8828d2bb34c141cca55
parent 0b3c9052
......@@ -403,12 +403,12 @@ set(AOM_DSP_INTRIN_SSSE3
set(AOM_DSP_ASM_SSSE3
"${AOM_ROOT}/aom_dsp/x86/aom_subpixel_8t_ssse3.asm"
"${AOM_ROOT}/aom_dsp/x86/aom_subpixel_bilinear_ssse3.asm"
"${AOM_ROOT}/aom_dsp/x86/fwd_txfm_ssse3_x86_64.asm"
"${AOM_ROOT}/aom_dsp/x86/intrapred_ssse3.asm"
"${AOM_ROOT}/aom_dsp/x86/sad_ssse3.asm")
set(AOM_DSP_ASM_SSSE3_X86_64
"${AOM_ROOT}/aom_dsp/x86/avg_ssse3_x86_64.asm"
"${AOM_ROOT}/aom_dsp/x86/fwd_txfm_ssse3_x86_64.asm"
"${AOM_ROOT}/aom_dsp/x86/inv_txfm_ssse3_x86_64.asm"
"${AOM_ROOT}/aom_dsp/x86/quantize_ssse3_x86_64.asm"
"${AOM_ROOT}/aom_dsp/x86/ssim_opt_x86_64.asm")
......@@ -420,7 +420,7 @@ set(AOM_DSP_INTRIN_SSE4_1
"${AOM_ROOT}/aom_dsp/x86/blend_a64_hmask_sse4.c"
"${AOM_ROOT}/aom_dsp/x86/blend_a64_mask_sse4.c"
"${AOM_ROOT}/aom_dsp/x86/blend_a64_vmask_sse4.c")
set(AOM_DSP_AVX_ASM "${AOM_ROOT}/aom_dsp/x86/quantize_avx_x86_64.asm")
set(AOM_DSP_AVX_ASM_X86_64 "${AOM_ROOT}/aom_dsp/x86/quantize_avx_x86_64.asm")
set(AOM_DSP_AVX2_INTRIN
"${AOM_ROOT}/aom_dsp/x86/aom_subpixel_8t_intrin_avx2.c"
"${AOM_ROOT}/aom_dsp/x86/fwd_txfm_avx2.c"
......@@ -460,7 +460,7 @@ set(AOM_AV1_ENCODER_SSE2_INTRIN
"${AOM_ROOT}/av1/encoder/x86/highbd_block_error_intrin_sse2.c"
"${AOM_ROOT}/av1/encoder/x86/av1_quantize_sse2.c")
set(AOM_AV1_ENCODER_SSSE3_ASM
set(AOM_AV1_ENCODER_SSSE3_ASM_X86_64
"${AOM_ROOT}/av1/encoder/x86/av1_quantize_ssse3_x86_64.asm")
set(AOM_AV1_ENCODER_SSSE3_INTRIN
......@@ -817,9 +817,10 @@ endif ()
if (HAVE_SSSE3)
if ("${AOM_TARGET_CPU}" STREQUAL "x86_64")
list(APPEND AOM_DSP_ASM_SSSE3 ${AOM_DSP_ASM_SSSE3_X86_64})
add_asm_library("aom_av1_encoder_ssse3"
"AOM_AV1_ENCODER_SSSE3_ASM_X86_64" "aom")
endif ()
add_asm_library("aom_dsp_ssse3" "AOM_DSP_ASM_SSSE3" "aom")
add_asm_library("aom_av1_encoder_ssse3" "AOM_AV1_ENCODER_SSSE3_ASM" "aom")
require_flag_nomsvc("-mssse3" NO)
add_intrinsics_object_library("-mssse3" "ssse3" "aom_dsp"
"AOM_DSP_INTRIN_SSSE3")
......@@ -842,8 +843,8 @@ if (HAVE_SSE4_1)
endif ()
endif ()
if (HAVE_AVX)
add_asm_library("aom_dsp_avx" "AOM_DSP_AVX_ASM" "aom")
if (HAVE_AVX AND "${AOM_TARGET_CPU}" STREQUAL "x86_64")
add_asm_library("aom_dsp_avx" "AOM_DSP_AVX_ASM_X86_64" "aom")
endif ()
if (HAVE_AVX2)
require_flag_nomsvc("-mavx2" NO)
......
......@@ -16,11 +16,19 @@ include("${AOM_ROOT}/build/cmake/compiler_tests.cmake")
# Detect target CPU.
if (NOT AOM_TARGET_CPU)
# TODO(tomfinegan): This will not work for a cross compile. Target CPU and
# system will have to come from a toolchain file or the cmake command line.
set(AOM_TARGET_CPU ${CMAKE_SYSTEM_PROCESSOR})
if (AOM_TARGET_CPU STREQUAL "AMD64")
set(AOM_TARGET_CPU "x86_64")
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)
set(AOM_TARGET_CPU "x86_64")
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 ()
endif ()
set(AOM_TARGET_SYSTEM ${CMAKE_SYSTEM_NAME})
if (NOT EXISTS "${AOM_ROOT}/build/cmake/targets/${AOM_TARGET_CPU}.cmake")
......
......@@ -78,6 +78,12 @@ function (get_asm_obj_format out_format)
else ()
message(FATAL_ERROR "Unknown obj format: ${AOM_TARGET_SYSTEM}")
endif ()
elseif ("${AOM_TARGET_CPU}" STREQUAL "x86")
if ("${AOM_TARGET_SYSTEM}" STREQUAL "Windows")
set(objformat "win32")
else ()
message(FATAL_ERROR "Unknown obj format: ${AOM_TARGET_SYSTEM}")
endif ()
else ()
message(FATAL_ERROR
"Unknown obj format: ${AOM_TARGET_CPU}-${AOM_TARGET_SYSTEM}")
......@@ -132,4 +138,8 @@ function (add_asm_library lib_name asm_sources dependent_target)
target_sources(${lib_name} PUBLIC ${dummy_c_file})
target_link_libraries(${dependent_target} PRIVATE ${lib_name})
# 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 ()
##
## 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.
##
ARCH_X86=${RTCD_ARCH_X86}
HAVE_MMX=${RTCD_HAVE_MMX}
HAVE_SSE=${RTCD_HAVE_SSE}
HAVE_SSE2=${RTCD_HAVE_SSE2}
HAVE_SSE3=${RTCD_HAVE_SSE3}
HAVE_SSSE3=${RTCD_HAVE_SSSE3}
HAVE_SSE4_1=${RTCD_HAVE_SSE4_1}
HAVE_AVX=${RTCD_HAVE_AVX}
HAVE_AVX2=${RTCD_HAVE_AVX2}
CONFIG_AV1=${RTCD_CONFIG_AV1}
CONFIG_AV1_DECODER=${RTCD_CONFIG_AV1_DECODER}
CONFIG_AV1_ENCODER=${RTCD_CONFIG_AV1_ENCODER}
CONFIG_INSTALL_BINS=${RTCD_CONFIG_INSTALL_BINS}
CONFIG_INSTALL_LIBS=${RTCD_CONFIG_INSTALL_LIBS}
CONFIG_GCC=${RTCD_CONFIG_GCC}
CONFIG_MULTITHREAD=${RTCD_CONFIG_MULTITHREAD}
CONFIG_AV1_ENCODER=${RTCD_CONFIG_AV1_ENCODER}
CONFIG_AV1_DECODER=${RTCD_CONFIG_AV1_DECODER}
CONFIG_AV1=${RTCD_CONFIG_AV1}
CONFIG_ENCODERS=${RTCD_CONFIG_ENCODERS}
CONFIG_DECODERS=${RTCD_CONFIG_DECODERS}
CONFIG_SPATIAL_RESAMPLING=${RTCD_CONFIG_SPATIAL_RESAMPLING}
CONFIG_STATIC=${RTCD_CONFIG_STATIC}
CONFIG_OS_SUPPORT=${RTCD_CONFIG_OS_SUPPORT}
CONFIG_TEMPORAL_DENOISING=${RTCD_CONFIG_TEMPORAL_DENOISING}
CONFIG_RUNTIME_CPU_DETECT=${RTCD_CONFIG_RUNTIME_CPU_DETECT}
CONFIG_AOM_HIGHBITDEPTH=${RTCD_CONFIG_AOM_HIGHBITDEPTH}
CONFIG_CLPF=${RTCD_CONFIG_CLPF}
CONFIG_EXT_INTER=${RTCD_CONFIG_EXT_INTER}
CONFIG_INTERNAL_STATS=${RTCD_CONFIG_INTERNAL_STATS}
CONFIG_MOTION_VAR=${RTCD_CONFIG_MOTION_VAR}
##
## 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(AOM_ARCH "x86")
set(ARCH_X86 1)
# Assembly flavors available for the target.
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)
# RTCD versions of assembly flavor flags ("yes" means on in rtcd.pl, not 1).
set(RTCD_ARCH_X86 "yes")
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")
# TODO(tomfinegan): These must not be hard coded. They must be set based on
# the values of the externally configurable vars that omit the RTCD_ prefix.
set(RTCD_CONFIG_AV1 "yes")
set(RTCD_CONFIG_AV1_DECODER "yes")
set(RTCD_CONFIG_AV1_ENCODER "yes")
set(RTCD_CONFIG_INSTALL_BINS "yes")
set(RTCD_CONFIG_INSTALL_LIBS "yes")
set(RTCD_CONFIG_GCC "yes")
set(RTCD_CONFIG_MULTITHREAD "yes")
set(RTCD_CONFIG_AV1_ENCODER "yes")
set(RTCD_CONFIG_AV1_DECODER "yes")
set(RTCD_CONFIG_AV1 "yes")
set(RTCD_CONFIG_ENCODERS "yes")
set(RTCD_CONFIG_DECODERS "yes")
set(RTCD_CONFIG_SPATIAL_RESAMPLING "yes")
set(RTCD_CONFIG_STATIC "yes")
set(RTCD_CONFIG_OS_SUPPORT "yes")
set(RTCD_CONFIG_TEMPORAL_DENOISING "yes")
set(RTCD_CONFIG_RUNTIME_CPU_DETECT "yes")
if (CONFIG_AOM_HIGHBITDEPTH)
set(RTCD_CONFIG_AOM_HIGHBITDEPTH "yes")
endif ()
if (CONFIG_CLPF)
set(RTCD_CONFIG_CLPF "yes")
endif ()
if (CONFIG_EXT_INTER)
set(RTCD_CONFIG_EXT_INTER "yes")
endif ()
if (CONFIG_INTERNAL_STATS)
set(RTCD_CONFIG_INTERNAL_STATS "yes")
endif ()
if (CONFIG_MOTION_VAR AND HAVE_SSE4_1)
set(RTCD_CONFIG_MOTION_VAR "yes")
endif ()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment