<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">