| #===--------------------------------------------------------------------===// | |
| # | |
| # 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() |