mirror of
https://github.com/civetweb/civetweb
synced 2025-03-28 21:13:27 +00:00
48 lines
1.4 KiB
CMake
48 lines
1.4 KiB
CMake
![]() |
# - Determines the target architecture of the compilation
|
||
|
#
|
||
|
# This function checks the architecture that will be built by the compiler
|
||
|
# and sets a variable to the architecture
|
||
|
#
|
||
|
# determine_target_architecture(<OUTPUT_VAR>)
|
||
|
#
|
||
|
# - Example
|
||
|
#
|
||
|
# include(DetermineTargetArchitecture)
|
||
|
# determine_target_architecture(PROJECT_NAME_ARCHITECTURE)
|
||
|
|
||
|
if(__determine_target_architecture)
|
||
|
return()
|
||
|
endif()
|
||
|
set(__determine_target_architecture INCLUDED)
|
||
|
|
||
|
function(determine_target_architecture FLAG)
|
||
|
if (MSVC)
|
||
|
if("${MSVC_C_ARCHITECTURE_ID}" STREQUAL "X86")
|
||
|
set(ARCH "i686")
|
||
|
elseif("${MSVC_C_ARCHITECTURE_ID}" STREQUAL "x64")
|
||
|
set(ARCH "x86_64")
|
||
|
elseif("${MSVC_C_ARCHITECTURE_ID}" STREQUAL "ARM")
|
||
|
set(ARCH "arm")
|
||
|
else()
|
||
|
message(FATAL_ERROR "Failed to determine the MSVC target architecture: ${MSVC_C_ARCHITECTURE_ID}")
|
||
|
endif()
|
||
|
else()
|
||
|
execute_process(
|
||
|
COMMAND ${CMAKE_C_COMPILER} -dumpmachine
|
||
|
RESULT_VARIABLE RESULT
|
||
|
OUTPUT_VARIABLE ARCH
|
||
|
ERROR_QUIET
|
||
|
)
|
||
|
if (RESULT)
|
||
|
message(FATAL_ERROR "Failed to determine target architecture triplet: ${RESULT}")
|
||
|
endif()
|
||
|
string(REGEX MATCH "([^-]+).*" ARCH_MATCH ${ARCH})
|
||
|
if (NOT CMAKE_MATCH_1 OR NOT ARCH_MATCH)
|
||
|
message(FATAL_ERROR "Failed to match the target architecture triplet: ${ARCH}")
|
||
|
endif()
|
||
|
set(ARCH ${CMAKE_MATCH_1})
|
||
|
endif()
|
||
|
message(STATUS "Target architecture - ${ARCH}")
|
||
|
set(FLAG ${ARCH} PARENT_SCOPE)
|
||
|
endfunction()
|