Fix armel build (#47771)
authorGleb Balykov <g.balykov@samsung.com>
Fri, 5 Feb 2021 00:05:37 +0000 (03:05 +0300)
committerGitHub <noreply@github.com>
Fri, 5 Feb 2021 00:05:37 +0000 (16:05 -0800)
eng/native/configurecompiler.cmake
src/coreclr/clrdefinitions.cmake
src/coreclr/gcinfo/CMakeLists.txt
src/coreclr/jit/CMakeLists.txt

index 2d19d97..87090b8 100644 (file)
@@ -283,7 +283,11 @@ elseif (CLR_CMAKE_TARGET_ARCH_ARM64)
     add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_ARCH>>>:TARGET_64BIT>)
 elseif (CLR_CMAKE_TARGET_ARCH_ARM)
     set(ARCH_SOURCES_DIR arm)
-    set(ARCH_TARGET_NAME arm)
+    if (ARM_SOFTFP)
+      set(ARCH_TARGET_NAME armel)
+    else ()
+      set(ARCH_TARGET_NAME arm)
+    endif ()
     add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_ARCH>>>:TARGET_ARM>)
 elseif (CLR_CMAKE_TARGET_ARCH_I386)
     set(ARCH_TARGET_NAME x86)
index d258094..99a4d61 100644 (file)
@@ -240,7 +240,7 @@ function(set_target_definitions_to_custom_os_and_arch)
     if (TARGETDETAILS_ARCH STREQUAL "x64")
       target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE UNIX_AMD64_ABI)
       target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE FEATURE_MULTIREG_RETURN)
-    elseif (TARGETDETAILS_ARCH STREQUAL "arm")
+    elseif ((TARGETDETAILS_ARCH STREQUAL "arm") OR (TARGETDETAILS_ARCH STREQUAL "armel"))
       target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE UNIX_ARM_ABI)
     elseif (TARGETDETAILS_ARCH STREQUAL "x86")
       target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE UNIX_X86_ABI)
@@ -262,10 +262,14 @@ function(set_target_definitions_to_custom_os_and_arch)
     target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE TARGET_64BIT)
     target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE TARGET_ARM64)
     target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE FEATURE_MULTIREG_RETURN)
-  elseif(TARGETDETAILS_ARCH STREQUAL "arm")
+  elseif((TARGETDETAILS_ARCH STREQUAL "arm") OR (TARGETDETAILS_ARCH STREQUAL "armel"))
     target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE TARGET_ARM)
   endif()
 
+  if (TARGETDETAILS_ARCH STREQUAL "armel")
+    target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE ARM_SOFTFP)
+  endif()
+
   if (NOT (TARGETDETAILS_ARCH STREQUAL "x86") OR (TARGETDETAILS_OS MATCHES "^unix"))
     target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE FEATURE_EH_FUNCLETS)
   endif (NOT (TARGETDETAILS_ARCH STREQUAL "x86") OR (TARGETDETAILS_OS MATCHES "^unix"))
index 895ad0c..abdcd53 100644 (file)
@@ -79,14 +79,15 @@ if (CLR_CMAKE_BUILD_SUBSET_ALLJITS AND NOT CLR_CROSS_COMPONENTS_BUILD)
     create_gcinfo_lib(TARGET gcinfo_win_x64 OS win ARCH x64)
   endif (CLR_CMAKE_TARGET_ARCH_ARM64 OR CLR_CMAKE_TARGET_ARCH_AMD64)
 
+  create_gcinfo_lib(TARGET gcinfo_unix_armel OS unix ARCH armel)
   create_gcinfo_lib(TARGET gcinfo_unix_arm OS unix ARCH arm)
   create_gcinfo_lib(TARGET gcinfo_win_arm OS win ARCH arm)
   create_gcinfo_lib(TARGET gcinfo_win_x86 OS win ARCH x86)
 else()
   create_gcinfo_lib(TARGET gcinfo_${TARGET_OS_NAME}_${ARCH_TARGET_NAME} OS ${TARGET_OS_NAME} ARCH ${ARCH_TARGET_NAME})
 
-  if (CLR_CMAKE_HOST_ARCH_I386 AND NOT ((TARGET_OS_NAME STREQUAL unix) AND (ARCH_TARGET_NAME STREQUAL "arm")))
+  if (CLR_CMAKE_HOST_ARCH_I386 AND NOT ((TARGET_OS_NAME STREQUAL unix) AND (ARCH_TARGET_NAME STREQUAL "armel")))
     # On x86, build gcinfo for RyuJIT/ARM32 cross-compiling altjit for ARM_SOFTFP (armel).
-    create_gcinfo_lib(TARGET gcinfo_unix_arm OS unix ARCH arm)
+    create_gcinfo_lib(TARGET gcinfo_unix_armel OS unix ARCH armel)
   endif()
 endif (CLR_CMAKE_BUILD_SUBSET_ALLJITS AND NOT CLR_CROSS_COMPONENTS_BUILD)
index 8cc12dd..fe148cd 100644 (file)
@@ -28,7 +28,7 @@ function(create_standalone_jit)
 
   if(TARGETDETAILS_ARCH STREQUAL "x64")
     set(JIT_ARCH_SOURCES ${JIT_AMD64_SOURCES})
-  elseif(TARGETDETAILS_ARCH STREQUAL "arm")
+  elseif((TARGETDETAILS_ARCH STREQUAL "arm") OR (TARGETDETAILS_ARCH STREQUAL "armel"))
     set(JIT_ARCH_SOURCES ${JIT_ARM_SOURCES})
   elseif(TARGETDETAILS_ARCH STREQUAL "x86")
     set(JIT_ARCH_SOURCES ${JIT_I386_SOURCES})
@@ -480,13 +480,6 @@ create_standalone_jit(TARGET clrjit OS ${TARGET_OS_NAME} ARCH ${ARCH_TARGET_NAME
 # Enable profile guided optimization
 add_pgo(clrjit)
 
-
-if (CLR_CMAKE_HOST_ARCH_I386)
-     # On x86, build RyuJIT/ARM32 cross-compiling altjit for ARM_SOFTFP (armel).
-  create_standalone_jit(TARGET clrjit_unix_armel_${ARCH_HOST_NAME} OS unix ARCH arm)
-  target_compile_definitions(clrjit_unix_armel_${ARCH_HOST_NAME} PRIVATE ARM_SOFTFP)
-endif ()
-
 if (CLR_CMAKE_BUILD_SUBSET_ALLJITS AND NOT CLR_CROSS_COMPONENTS_BUILD)
   if (CLR_CMAKE_TARGET_ARCH_ARM64 OR CLR_CMAKE_TARGET_ARCH_AMD64)
     create_standalone_jit(TARGET clrjit_unix_arm64_${ARCH_HOST_NAME} OS unix ARCH arm64)
@@ -496,6 +489,7 @@ if (CLR_CMAKE_BUILD_SUBSET_ALLJITS AND NOT CLR_CROSS_COMPONENTS_BUILD)
     create_standalone_jit(TARGET clrjit_win_x64_${ARCH_HOST_NAME} OS win ARCH x64)
   endif (CLR_CMAKE_TARGET_ARCH_ARM64 OR CLR_CMAKE_TARGET_ARCH_AMD64)
 
+  create_standalone_jit(TARGET clrjit_unix_armel_${ARCH_HOST_NAME} OS unix ARCH armel)
   create_standalone_jit(TARGET clrjit_unix_arm_${ARCH_HOST_NAME} OS unix ARCH arm)
   create_standalone_jit(TARGET clrjit_win_arm_${ARCH_HOST_NAME} OS win ARCH arm)
   create_standalone_jit(TARGET clrjit_win_x86_${ARCH_HOST_NAME} OS win ARCH x86)