blob: 8ad725f34175ccd055228b5d76f626f4dbcb23da [file] [edit]
#===--------------------------------------------------------------------===//
#
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for details.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#
#===--------------------------------------------------------------------===//
# Map a target triple to the corresponding CMake system name.
#
# Usage:
# get_triple_cmake_system_name(<triple> <out_var>)
#
# Sets <out_var> to the CMake-style system name
# (e.g. "x86_64-pc-linux-gnu" -> Linux, "arm64-apple-macos" ->
# "Darwin"). A triple with an OS cmake does not recognize maps to
# "Generic".
#
# The OS/environment -> system name data is derived from
# llvm/include/llvm/TargetParser/TripleName.def
get_filename_component(_gtcsn_llvm_dir "${CMAKE_CURRENT_LIST_DIR}/../../llvm"
ABSOLUTE)
set(_gtcsn_script "${_gtcsn_llvm_dir}/utils/get_triple_system_name.py")
function(get_triple_cmake_system_name triple out_var)
execute_process(
COMMAND "${Python3_EXECUTABLE}" "${_gtcsn_script}" "--triple" "${triple}"
OUTPUT_VARIABLE _name
OUTPUT_STRIP_TRAILING_WHITESPACE
RESULT_VARIABLE _result)
if(NOT _result EQUAL 0)
message(FATAL_ERROR "Failed to derive CMake system name for '${triple}'")
endif()
if(_name)
set(${out_var} "${_name}" PARENT_SCOPE)
else()
set(${out_var} "${CMAKE_HOST_SYSTEM_NAME}" PARENT_SCOPE)
endif()
endfunction()