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