[Builtin] [ARM] Update CMake to support the build of armv6m
Summary:
Setting -DCOMPILER_RT_TEST_TARGET_TRIPLE=armv6m-none-eabi will enable the build of builtin functions ARMv6m.
Currently, only those asms that support armv6m are added.
TODO:All asm sin ARM_EABI_Sources are ported for thumb1 so Thumb1_EABI_Sources will be deprecated.
Reviewers: rengolin, compnerd
Reviewed By: compnerd
Subscribers: aemerson, mgorny, llvm-commits
Differential Revision: https://reviews.llvm.org/D28463
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@292504 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/cmake/base-config-ix.cmake b/cmake/base-config-ix.cmake
index 71d1499..6f9f151 100644
--- a/cmake/base-config-ix.cmake
+++ b/cmake/base-config-ix.cmake
@@ -172,6 +172,7 @@
else()
test_target_arch(arm "" "-march=armv7-a" "-mfloat-abi=soft")
test_target_arch(armhf "" "-march=armv7-a" "-mfloat-abi=hard")
+ test_target_arch(armv6m "" "-march=armv6m" "-mfloat-abi=soft")
endif()
elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "aarch32")
test_target_arch(aarch32 "" "-march=armv8-a")
diff --git a/cmake/builtin-config-ix.cmake b/cmake/builtin-config-ix.cmake
index 8cb4ca1..dc2ec16 100644
--- a/cmake/builtin-config-ix.cmake
+++ b/cmake/builtin-config-ix.cmake
@@ -24,7 +24,7 @@
set(ARM64 aarch64)
-set(ARM32 arm armhf)
+set(ARM32 arm armhf armv6m)
set(X86 i386 i686)
set(X86_64 x86_64)
set(MIPS32 mips mipsel)
diff --git a/lib/builtins/CMakeLists.txt b/lib/builtins/CMakeLists.txt
index 3cf7861..775dafe 100644
--- a/lib/builtins/CMakeLists.txt
+++ b/lib/builtins/CMakeLists.txt
@@ -302,6 +302,12 @@
arm/umodsi3.S
${GENERIC_SOURCES})
+set(thumb1_SOURCES
+ arm/divsi3.S
+ arm/udivsi3.S
+ arm/comparesf2.S
+ ${GENERIC_SOURCES})
+
set(arm_EABI_SOURCES
arm/aeabi_cdcmp.S
arm/aeabi_cdcmpeq_check_nan.c
@@ -320,6 +326,20 @@
arm/aeabi_memset.S
arm/aeabi_uidivmod.S
arm/aeabi_uldivmod.S)
+
+set(thumb1_EABI_SOURCES
+ arm/aeabi_cdcmpeq_check_nan.c
+ arm/aeabi_cfcmpeq_check_nan.c
+ arm/aeabi_div0.c
+ arm/aeabi_drsub.c
+ arm/aeabi_fcmp.S
+ arm/aeabi_frsub.c
+ arm/aeabi_idivmod.S
+ arm/aeabi_memcmp.S
+ arm/aeabi_memcpy.S
+ arm/aeabi_memmove.S
+ arm/aeabi_uidivmod.S)
+
set(arm_Thumb1_JT_SOURCES
arm/switch16.S
arm/switch32.S
@@ -401,6 +421,10 @@
${arm_SOURCES}
${arm_EABI_SOURCES}
${arm_Thumb1_SOURCES})
+
+ set(thumb1_SOURCES
+ ${thumb1_SOURCES}
+ ${thumb1_EABI_SOURCES})
endif()
set(aarch64_SOURCES
@@ -431,7 +455,7 @@
set(arm64_SOURCES ${aarch64_SOURCES})
# macho_embedded archs
-set(armv6m_SOURCES ${GENERIC_SOURCES})
+set(armv6m_SOURCES ${thumb1_SOURCES})
set(armv7m_SOURCES ${arm_SOURCES})
set(armv7em_SOURCES ${arm_SOURCES})