[PATCH] D26131: [compiler-rt] Add support for Fuchsia

Petr Hosek via llvm-commits llvm-commits at lists.llvm.org
Sun Oct 30 16:43:32 PDT 2016


phosek created this revision.
phosek added a reviewer: samsonov.
phosek added a subscriber: llvm-commits.
phosek set the repository for this revision to rL LLVM.
Herald added subscribers: mgorny, dberris.

Fuchsia is a new operating system which uses compiler-rt builtins, this change adds support for cross-compiling compiler-rt builtins for Fuchsia.


Repository:
  rL LLVM

https://reviews.llvm.org/D26131

Files:
  cmake/base-config-ix.cmake


Index: cmake/base-config-ix.cmake
===================================================================
--- cmake/base-config-ix.cmake
+++ cmake/base-config-ix.cmake
@@ -40,6 +40,19 @@
     set(COMPILER_RT_TEST_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang.exe)
     set(COMPILER_RT_TEST_CXX_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang++.exe)
   endif()
+elseif(FUCHSIA)
+  execute_process(
+    COMMAND ${LLVM_CONFIG_PATH} "--version"
+    RESULT_VARIABLE HAD_ERROR
+    OUTPUT_VARIABLE CONFIG_OUTPUT)
+  if (HAD_ERROR)
+    message(FATAL_ERROR "llvm-config failed with status ${HAD_ERROR}")
+  endif()
+  string(REGEX MATCH "[0-9]+\\.[0-9]+(\\.[0-9]+)?" CLANG_VERSION
+         ${CONFIG_OUTPUT})
+  set(COMPILER_RT_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
+  set(COMPILER_RT_EXEC_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/bin)
+  set(COMPILER_RT_INSTALL_PATH ${CMAKE_INSTALL_PREFIX}/lib/clang/${CLANG_VERSION})
 else()
     # Take output dir and install path from the user.
   set(COMPILER_RT_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE PATH
@@ -126,6 +139,12 @@
     # Examine compiler output to determine target architecture.
     detect_target_arch()
     set(COMPILER_RT_OS_SUFFIX "-android")
+  elseif(FUCHSIA)
+    # Test the target architectures supported by the compiler.
+    test_target_arch(arm "" "--target=arm-fuchsia" "-march=armv7-a" "-mfloat-abi=soft")
+    test_target_arch(armhf "" "--target=arm-fuchsia" "-march=armv7-a" "-mfloat-abi=hard")
+    test_target_arch(x86_64 "" "--target=x86_64-fuchsia")
+    test_target_arch(aarch64 "" "--target=aarch64-fuchsia")
   elseif(NOT APPLE) # Supported archs for Apple platforms are generated later
     if("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "i[2-6]86|x86|amd64")
       if(NOT MSVC)


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D26131.76345.patch
Type: text/x-patch
Size: 1751 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161030/abefa323/attachment.bin>


More information about the llvm-commits mailing list