##  Copyright (c) 2017 The WebM project authors. All Rights Reserved.
##
##  Use of this source code is governed by a BSD-style license
##  that can be found in the LICENSE file in the root of the source
##  tree. An additional intellectual property rights grant can be found
##  in the file PATENTS.  All contributing project authors may
##  be found in the AUTHORS file in the root of the source tree.
if (NOT LIBWEBM_BUILD_X86_64_MINGW_GCC_CMAKE_)
set(LIBWEBM_BUILD_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 googletest CMake usage for mingw cross compiles.
set(LIBWEBM_DISABLE_GTEST_CMAKE 1)

endif ()  # LIBWEBM_BUILD_X86_64_MINGW_GCC_CMAKE_
