| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | # - 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()
 |