<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/63410>63410</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            llvm runtimes: cross-compilation for aarch64-none-elf fails 
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          nicolas-j-roussin
      </td>
    </tr>
</table>

<pre>
    My host architecture is x86_64-apple-darwin20.6.0. The llvm-project repo is pointing to llvmorg-16.0.6.

I have successfully configured/built/installed Clang and LLD by using the following commands:

```
cmake -G Ninja 
 -S path-to-llvm-project/llvm
    -B some-path/build/clang
 -DCMAKE_BUILD_TYPE=Release
    -DCMAKE_INSTALL_PREFIX=toolchain-path
 -DLLVM_TARGETS_TO_BUILD=aarch64-none-elf
 -DLLVM_DEFAULT_TARGET_TRIPLE=aarch64-none-elf
 -DLLVM_ENABLE_PROJECTS=clang;lld
    -DLLVM_BUILD_TESTS=OFF
 -DLLVM_INCLUDE_TESTS=OFF
    -DLLVM_BUILD_DOCS=OFF
 -DLLVM_INCLUDE_DOCS=OFF
    -DLLVM_INSTALL_TOOLCHAIN_ONLY=ON

ninja -C some-path/build/clang clang lld
ninja -C some-path/build/clang install
```

I am trying to cross-compile compiler-rt for aarch64-none-elf through the following commands:

```
cmake -G Ninja
    -S path-to-llvm-project/runtimes
    -B some-path/build/runtimes
    -DCMAKE_BUILD_TYPE=Release
 -DCMAKE_TOOLCHAIN_FILE=somewhere/toolchain-file.cmake
 -DCMAKE_INSTALL_PREFIX=toolchain-path/lib/clang/16
 -DLLVM_ENABLE_RUNTIMES=compiler-rt
    -DCOMPILER_RT_BUILD_BUILTINS=ON
 -DCOMPILER_RT_DISABLE_AARCH64_FMV=OFF
 -DCOMPILER_RT_BUILD_CRT=OFF
 -DCOMPILER_RT_CRT_USE_EH_FRAME_REGISTRY=OFF
 -DCOMPILER_RT_BUILD_SANITIZERS=OFF
    -DCOMPILER_RT_BUILD_XRAY=OFF
 -DCOMPILER_RT_BUILD_LIBFUZZER=OFF
    -DCOMPILER_RT_BUILD_PROFILE=OFF
 -DCOMPILER_RT_BUILD_MEMPROF=OFF
 -DCOMPILER_RT_BUILD_XRAY_NO_PREINIT=OFF
 -DCOMPILER_RT_BUILD_ORC=OFF
    -DCOMPILER_RT_BUILD_GWP_ASAN=OFF
 -DCOMPILER_RT_ENABLE_CET=OFF
 -DCOMPILER_RT_SCUDO_STANDALONE_SYSROOT_PATH=OFF
 -DCOMPILER_RT_SCUDO_STANDALONE_BUILD_SHARED=OFF
 -DCOMPILER_RT_BUILD_SCUDO_STANDALONE_WITH_LLVM_LIBC=OFF
 -DCOMPILER_RT_USE_LLVM_UNWINDER=ON
 -DCOMPILER_RT_USE_BUILTINS_LIBRARY=ON
    -DCOMPILER_RT_USE_LIBCXX=ON
 -DCOMPILER_RT_BAREMETAL_BUILD=ON
 -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON

ninja -C some-path/build/runtimes compiler-rt
ninja -C some-path/build/runtimes install-compiler-rt
```

But unfortunately I get the following error:

```
CMake Error at /Users/nick/Documents/workspace/nrj/tool/llvm-project/llvm/cmake/modules/HandleLLVMOptions.cmake:150 (MESSAGE):
  Unable to determine platform
Call Stack (most recent call first):
  CMakeLists.txt:157 (include)
```

It looks like the problem arises from the following lines (from 131 to 152):

```
if(WIN32)
  set(LLVM_HAVE_LINK_VERSION_SCRIPT 0)
 if(CYGWIN)
    set(LLVM_ON_WIN32 0)
    set(LLVM_ON_UNIX 1)
 else(CYGWIN)
    set(LLVM_ON_WIN32 1)
    set(LLVM_ON_UNIX 0)
 endif(CYGWIN)
else(WIN32)
  if(FUCHSIA OR UNIX)
 set(LLVM_ON_WIN32 0)
    set(LLVM_ON_UNIX 1)
    if(APPLE OR ${CMAKE_SYSTEM_NAME} MATCHES "AIX")
 set(LLVM_HAVE_LINK_VERSION_SCRIPT 0)
    else()
 set(LLVM_HAVE_LINK_VERSION_SCRIPT 1)
    endif()
  else(FUCHSIA OR UNIX)
    MESSAGE(SEND_ERROR "Unable to determine platform")
 endif(FUCHSIA OR UNIX)
endif(WIN32)
```

As far as I understood, because the target OS is none, the error "Unable to determine platform" is thrown and consequently the compiler-rt build fails. A possible fix would be to replace `MESSAGE(SEND_ERROR "Unable to determine platform")` with `set(LLVM_HAVE_LINK_VERSION_SCRIPT 0)`. Is that a reasonable fix? If not, what is the proper way to cross-compile compiler-rt for \<arch\>-none-elf? 

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysWF1zqrwW_jV4s0YHsdr2wgvko3JeBAdwt903TISg2Y3Ek4TX3X9_JhFba612zz4zHVrIs571vZIUCUFWNcZjYzgxhm4HNXLN-LgmBaNIdH91OWuEIHVnycrX8ewV1kxIQLxYE4kL2XAMRMDvu1E-uumi7Zbibon4jtSW2Rv1zB5kawyU_rvpbjn7hQsJHG-ZktkyUktSr0AyDWB81e0rkVHPMF3DtPfPANboXwyiKQosRNVQ-goFqyuyajguDctfNoRKw_JJLSSiFJfgUFSvANUlhKELy1dohNazxlAxStlOvRVss0F1KYyBfazOGJntj34tNugFQ_cBIlL_QrD_CN0Utkiuu5J1j10zLF-9tiAA6E5AsA3uKnBrqbK4UPYdqFxnZv_j5ZNFELp59jz3jIGbYIqRwEdELSqI0swOw3yeeH7wZAxcyRgt1ojUex0HzjD8McszO3nwsjTP4j27MXCRStzopluzGncxrT4KuJ5vL8KsFcyzJJiH3lUpL7InoZfPk_g_npOlxsDd-zeYUFoeu6DRrZ9eqpGx738kCyInXLjeGcAphRs7Fxk-rb8THKKYxXHoTO0gyuMofFbg6LgUap3yrvN1DmH_fPPzGxJtlZ4ttkPBow1I_tq2RsGZEN2CbbaEYmh_8y6XUDEOp6kBueasWa3_D8V-FLYvy503tSQbLK6W_Bng9cI_QN7z5Ae6IJWG3RpzbFj-ewdUhOKe9uFE_lrXWD4ly7e-tPz-6GyFJ4soC2aervD3NHzwKJ7Ng9BL8iRr_VLPLIjSo-I6wblBqtltO3Gmo5vcn_04KevPrE6SXcA4SZYvUi_3prmf2DMvT7yHIM2S56u8qR0FWfDTS850zmf0U2JfpwyDib_4-dNLvsM4T-I2w5dJZ95MQa_ilIV5FKvEB1FwKWZ7fJw43zHz4XGe26kdXeBrS8bxLilNnYUb52lmR64dxpGXp89pEsdZPrez6Z_Itdmb2onnXk_yqfRjkE1zXehhMHEuyKui0rhF9BhE7j6n56taQQ-1r2gTOzkesJ8jq7mDifP09DXpxE68mZfZ4dt-9lVPfdzI_ny6H8YVfGr074m1U777SfzsxJ80Epq6Ylw2NZKYvkIAKyxPZjjmnPHLA9yZqQHuKSAgCYblLwTmwrD8mhQvhuW7rGg2uJbq047xF7FFhRqiNf_VjtL2DHN6pLH8_WC1_A0rG4oVwRTVJcWqIOKtJKwW7fAd2P2hCYZ1N_PS1H7wDOv-zWyARY2WFKudrcQS8w2pMWwpkhXj7cnJQZRCKlHxokg26rzJcYFrCYVaqQgX8iOn9jskQoqe_C21AbdKltQFbUqswBf2WwmUsRcBlLxgHfMtZ0uKN4A4EVhAxdnmJBeU1FgoDXqtP-grf_pD69issypJZVh3j0E0sN6MAhBYGtad7qyp_UP1QfRP_sNL0iCO8tRJgnkG5jteczjPD49BdETygSaOcq3kWOwTYhEFT9B_B2Aq8PeZ-9eYj1TjujxndKvwNBwa6i-caRrYECeg2N6X_9ZLaBXY83noKXrDujFuJ_uTQvqcZt4sj-yZZ9y6MLMzZ-qlYFiWrWywzprxnZwBHML7ZxQfDT_E8ehjy_pluADgrQ3vUi9ycy9JtNfWxU489vWg9islh_WPiTzbbLaACnFAAgJo6hJzIRkrDcuBJS5QI_YNKBFX8y9O1T1RHW0VQC3oGfgN25WcOgnvan0NLFgt8H8bXEv6qnmOj9F6eEOFCBU9sGHLhCCKuyK_YccaWsJSK-J4S1GBwRiZfxHRkQk7IteK5dslNDJ7ECiHkAQEHCPB9ooq8tsY-BBUUDOpYrRTEO27nmJbzGGHXq9fI4yhYwwcdZfQf3nvV72B3156O-V4UN4P7lEHj_uju1vr9qbf73fW40FZFuV9iUrzHhV3pjka3i2RObxdVsOb5e1d1SFjy7QG5sgy-8P-sG_2SlwOittqNFyOcB-blnFj4g0itKe2mh7jqw4RosHj0eCmb3YoWmIq9P8nLKvGO9CLKpxDt8PHerdaNith3JhUbwFvLJJIijUA3u4fA_tDKJDauM7fpHRFQKfhdLyWcqvvTpZvWP6KyHWz7BVs8747nuyZ2kS1R2oX_hcAAP__9Dgkzg">