include(CheckSymbolExists) function(detect_current_arch) if (WIN32) check_symbol_exists("_M_X64" "" ARCH_X64) if (NOT ARCH_X64) check_symbol_exists("_M_AMD64" "" ARCH_X64) endif (NOT ARCH_X64) check_symbol_exists("_M_IX86" "" ARCH_X86) check_symbol_exists("_M_ARM" "" ARCH_ARM) check_symbol_exists("_M_ARM64" "" ARCH_ARM64) else (WIN32) check_symbol_exists("__i386__" "" ARCH_X86) check_symbol_exists("__x86_64__" "" ARCH_X64) check_symbol_exists("__arm__" "" ARCH_ARM) check_symbol_exists("__aarch64__" "" ARCH_ARM64) check_symbol_exists("__mips__" "" ARCH_MIPS) endif (WIN32) endfunction(detect_current_arch) # # Target CPU set(TARGET_CPU "" CACHE STRING "Target CPU, used as --target_cpu argument") set(TARGET_CPU_LIST x86 x64 arm arm64 mipsel) if (TARGET_CPU STREQUAL "") detect_current_arch() if (ARCH_X64) set(TARGET_CPU "x64") elseif (ARCH_X86) set(TARGET_CPU "x86") elseif (ARCH_ARM64) set(TARGET_CPU "arm64") elseif (ARCH_ARM) set(TARGET_CPU "arm") elseif (ARCH_MIPS) set(TARGET_CPU "mipsel") else () set(TARGET_CPU ${CMAKE_SYSTEM_PROCESSOR}) endif (ARCH_X64) endif (TARGET_CPU STREQUAL "") if (NOT ${TARGET_CPU} IN_LIST TARGET_CPU_LIST) message(FATAL_ERROR "Unknown value '${TARGET_CPU}' for variable TARGET_CPU, options are: ${TARGET_CPU_LIST}") endif (NOT ${TARGET_CPU} IN_LIST TARGET_CPU_LIST) if (UNIX) if (ARCH_X86) set(LIBWEBRTC_REQUIRED_CXX_FLAGS "-m32") endif (ARCH_X86) set(LIBWEBRTC_REQUIRED_CXX_FLAGS "${LIBWEBRTC_REQUIRED_CXX_FLAGS} -std=gnu++0x") list(APPEND LIBWEBRTC_DEFINITIONS WEBRTC_POSIX _GLIBCXX_USE_CXX11_ABI=0 _CRT_SECURE_NO_WARNINGS) elseif (WIN32) set(LIBWEBRTC_REQUIRED_C_FLAGS_DEBUG "/MTd") set(LIBWEBRTC_REQUIRED_C_FLAGS_RELEASE "/MT") set(LIBWEBRTC_REQUIRED_CXX_FLAGS_DEBUG "/MTd") set(LIBWEBRTC_REQUIRED_CXX_FLAGS_RELEASE "/MT") list(APPEND LIBWEBRTC_DEFINITIONS WEBRTC_WIN NOMINMAX _CRT_SECURE_NO_WARNINGS) endif(UNIX)