diff options
Diffstat (limited to 'libcxx/cmake/Modules')
-rw-r--r-- | libcxx/cmake/Modules/GetTriple.cmake | 53 | ||||
-rw-r--r-- | libcxx/cmake/Modules/MacroEnsureOutOfSourceBuild.cmake | 18 |
2 files changed, 71 insertions, 0 deletions
diff --git a/libcxx/cmake/Modules/GetTriple.cmake b/libcxx/cmake/Modules/GetTriple.cmake new file mode 100644 index 00000000000..c555931ded5 --- /dev/null +++ b/libcxx/cmake/Modules/GetTriple.cmake @@ -0,0 +1,53 @@ +# Define functions to get the host and target triple. + +function(get_host_triple out out_arch out_vendor out_os) + # Get the architecture. + set(arch ${CMAKE_HOST_SYSTEM_PROCESSOR}) + if (arch STREQUAL "x86") + set(arch "i686") + endif() + # Get the vendor. + if (${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Darwin") + set(vendor "apple") + else() + set(vendor "pc") + endif() + # Get os. + if (${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Windows") + set(os "win32") + else() + string(TOLOWER ${CMAKE_HOST_SYSTEM_NAME} os) + endif() + set(triple "${arch}-${vendor}-${os}") + set(${out} ${triple} PARENT_SCOPE) + set(${out_arch} ${arch} PARENT_SCOPE) + set(${out_vendor} ${vendor} PARENT_SCOPE) + set(${out_os} ${os} PARENT_SCOPE) + message(STATUS "Host triple: ${triple}") +endfunction() + +function(get_target_triple out out_arch out_vendor out_os) + # Get the architecture. + set(arch ${CMAKE_SYSTEM_PROCESSOR}) + if (arch STREQUAL "x86") + set(arch "i686") + endif() + # Get the vendor. + if (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") + set(vendor "apple") + else() + set(vendor "pc") + endif() + # Get os. + if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + set(os "win32") + else() + string(TOLOWER ${CMAKE_SYSTEM_NAME} os) + endif() + set(triple "${arch}-${vendor}-${os}") + set(${out} ${triple} PARENT_SCOPE) + set(${out_arch} ${arch} PARENT_SCOPE) + set(${out_vendor} ${vendor} PARENT_SCOPE) + set(${out_os} ${os} PARENT_SCOPE) + message(STATUS "Target triple: ${triple}") +endfunction() diff --git a/libcxx/cmake/Modules/MacroEnsureOutOfSourceBuild.cmake b/libcxx/cmake/Modules/MacroEnsureOutOfSourceBuild.cmake new file mode 100644 index 00000000000..a0669365bf9 --- /dev/null +++ b/libcxx/cmake/Modules/MacroEnsureOutOfSourceBuild.cmake @@ -0,0 +1,18 @@ +# MACRO_ENSURE_OUT_OF_SOURCE_BUILD(<errorMessage>) + +macro( MACRO_ENSURE_OUT_OF_SOURCE_BUILD _errorMessage ) + +string( COMPARE EQUAL "${CMAKE_SOURCE_DIR}" "${CMAKE_BINARY_DIR}" _insource ) +if( _insource ) + message( SEND_ERROR "${_errorMessage}" ) + message( FATAL_ERROR + "In-source builds are not allowed. + CMake would overwrite the makefiles distributed with Compiler-RT. + Please create a directory and run cmake from there, passing the path + to this source directory as the last argument. + This process created the file `CMakeCache.txt' and the directory `CMakeFiles'. + Please delete them." + ) +endif( _insource ) + +endmacro( MACRO_ENSURE_OUT_OF_SOURCE_BUILD ) |