]> git.proxmox.com Git - ceph.git/blob - ceph/src/civetweb/cmake/DetermineTargetArchitecture.cmake
buildsys: switch source download to quincy
[ceph.git] / ceph / src / civetweb / cmake / DetermineTargetArchitecture.cmake
1 # - Determines the target architecture of the compilation
2 #
3 # This function checks the architecture that will be built by the compiler
4 # and sets a variable to the architecture
5 #
6 # determine_target_architecture(<OUTPUT_VAR>)
7 #
8 # - Example
9 #
10 # include(DetermineTargetArchitecture)
11 # determine_target_architecture(PROJECT_NAME_ARCHITECTURE)
12
13 if(__determine_target_architecture)
14 return()
15 endif()
16 set(__determine_target_architecture INCLUDED)
17
18 function(determine_target_architecture FLAG)
19 if (MSVC)
20 if("${MSVC_C_ARCHITECTURE_ID}" STREQUAL "X86")
21 set(ARCH "i686")
22 elseif("${MSVC_C_ARCHITECTURE_ID}" STREQUAL "x64")
23 set(ARCH "x86_64")
24 elseif("${MSVC_C_ARCHITECTURE_ID}" STREQUAL "ARM")
25 set(ARCH "arm")
26 else()
27 message(FATAL_ERROR "Failed to determine the MSVC target architecture: ${MSVC_C_ARCHITECTURE_ID}")
28 endif()
29 else()
30 execute_process(
31 COMMAND ${CMAKE_C_COMPILER} -dumpmachine
32 RESULT_VARIABLE RESULT
33 OUTPUT_VARIABLE ARCH
34 ERROR_QUIET
35 )
36 if (RESULT)
37 message(FATAL_ERROR "Failed to determine target architecture triplet: ${RESULT}")
38 endif()
39 string(REGEX MATCH "([^-]+).*" ARCH_MATCH ${ARCH})
40 if (NOT CMAKE_MATCH_1 OR NOT ARCH_MATCH)
41 message(FATAL_ERROR "Failed to match the target architecture triplet: ${ARCH}")
42 endif()
43 set(ARCH ${CMAKE_MATCH_1})
44 endif()
45 message(STATUS "Target architecture - ${ARCH}")
46 set(FLAG ${ARCH} PARENT_SCOPE)
47 endfunction()