Files
LookingGlass/cmake/OptimizeForNative.cmake
Geoffrey McRae 57f18d7e80 [client] windows: add native clang-cl build
Build the Windows client against the MSVC ABI while retaining clang
language support. Use vcpkg for ANGLE and libsamplerate, and build
MsQuic with its bundled static OpenSSL.
2026-11-06 14:40:25 +11:00

50 lines
1.8 KiB
CMake

set(OPTIMIZE_FOR_NATIVE AUTO CACHE STRING "Build with -march=native")
set_property(CACHE OPTIMIZE_FOR_NATIVE PROPERTY STRINGS AUTO ON OFF)
set(OPTIMIZE_FOR_NATIVE_ARCH "none")
if(MSVC AND CMAKE_C_COMPILER_ID STREQUAL "Clang")
set(OPTIMIZE_FOR_NATIVE_PREFIX "/clang:-march=")
elseif(MSVC)
set(OPTIMIZE_FOR_NATIVE_PREFIX "")
else()
set(OPTIMIZE_FOR_NATIVE_PREFIX "-march=")
endif()
if(NOT OPTIMIZE_FOR_NATIVE_PREFIX)
if(OPTIMIZE_FOR_NATIVE STREQUAL "ON" OR
NOT OPTIMIZE_FOR_NATIVE MATCHES "^(AUTO|OFF)$")
message(WARNING
"OPTIMIZE_FOR_NATIVE is not supported by ${CMAKE_C_COMPILER_ID}")
endif()
elseif(OPTIMIZE_FOR_NATIVE STREQUAL "ON" OR
(OPTIMIZE_FOR_NATIVE STREQUAL "AUTO" AND OPTIMIZE_FOR_NATIVE_DEFAULT))
CHECK_C_COMPILER_FLAG("${OPTIMIZE_FOR_NATIVE_PREFIX}native"
COMPILER_SUPPORTS_MARCH_NATIVE)
if(COMPILER_SUPPORTS_MARCH_NATIVE)
set(OPTIMIZE_FOR_NATIVE_ARCH "native")
set(OPTIMIZE_FOR_NATIVE_ON ON)
endif()
elseif(OPTIMIZE_FOR_NATIVE STREQUAL "AUTO" OR OPTIMIZE_FOR_NATIVE STREQUAL "OFF")
CHECK_C_COMPILER_FLAG("${OPTIMIZE_FOR_NATIVE_PREFIX}x86-64-v2"
COMPILER_SUPPORTS_MARCH_X86_64_V2)
if(COMPILER_SUPPORTS_MARCH_X86_64_V2)
set(OPTIMIZE_FOR_NATIVE_ARCH "x86-64-v2")
else()
CHECK_C_COMPILER_FLAG("${OPTIMIZE_FOR_NATIVE_PREFIX}nehalem"
COMPILER_SUPPORTS_MARCH_NEHALEM)
if(COMPILER_SUPPORTS_MARCH_NEHALEM)
set(OPTIMIZE_FOR_NATIVE_ARCH "nehalem")
endif()
endif()
else()
set(OPTIMIZE_FOR_NATIVE_ARCH "${OPTIMIZE_FOR_NATIVE}")
set(OPTIMIZE_FOR_NATIVE_ON ON)
endif()
if(NOT OPTIMIZE_FOR_NATIVE_ARCH STREQUAL "none")
add_compile_options(
"${OPTIMIZE_FOR_NATIVE_PREFIX}${OPTIMIZE_FOR_NATIVE_ARCH}")
endif()
add_feature_info(OPTIMIZE_FOR_NATIVE OPTIMIZE_FOR_NATIVE_ON "Optimized for ${OPTIMIZE_FOR_NATIVE_ARCH}")