From 4e27ea3bf8727f7e28e8c7937d2358c4d2c49aec Mon Sep 17 00:00:00 2001 From: Qiao Pengcheng Date: Wed, 15 Dec 2021 21:59:42 +0800 Subject: [PATCH 1/9] [LoongArch64] add all the coreclr-build-config files. (#59561) Co-authored-by: Loongson's .NET-teams --- Directory.Build.props | 1 + eng/build.sh | 6 +-- eng/common/cross/toolchain.cmake | 7 +++- eng/common/dotnet-install.sh | 3 ++ eng/common/native/CommonLibrary.psm1 | 3 +- eng/native/build-commons.sh | 6 ++- eng/native/configurecompiler.cmake | 10 +++++ eng/native/configureplatform.cmake | 9 +++++ eng/native/functions.cmake | 6 ++- eng/native/init-os-and-arch.sh | 4 ++ eng/native/tryrun.cmake | 6 +-- eng/regenerate-download-table.proj | 1 + eng/run-test.sh | 2 +- eng/targetingpacks.targets | 6 +-- src/coreclr/build-runtime.sh | 2 + src/coreclr/clrdefinitions.cmake | 12 ++++-- src/coreclr/debug/createdump/CMakeLists.txt | 13 +++++++ src/coreclr/debug/di/CMakeLists.txt | 2 +- src/coreclr/debug/ee/wks/CMakeLists.txt | 2 +- src/coreclr/dlls/mscordac/CMakeLists.txt | 3 ++ .../dlls/mscoree/coreclr/CMakeLists.txt | 2 + src/coreclr/gcinfo/CMakeLists.txt | 5 ++- src/coreclr/jit/CMakeLists.txt | 33 +++++++++++++++- src/coreclr/pal/src/CMakeLists.txt | 12 ++++++ src/coreclr/pal/src/configure.cmake | 6 ++- .../lttngprovider/CMakeLists.txt | 17 ++++++-- src/coreclr/pal/src/libunwind/CMakeLists.txt | 4 ++ .../pal/src/libunwind/src/CMakeLists.txt | 39 +++++++++++++++++++ src/coreclr/vm/CMakeLists.txt | 22 +++++++++++ 29 files changed, 215 insertions(+), 29 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index f149734c7c81f4..922763f88b2991 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -32,6 +32,7 @@ armel arm64 s390x + loongarch64 wasm x64 x64 diff --git a/eng/build.sh b/eng/build.sh index f1ef5958fdbc92..ea8e3089e95f4d 100755 --- a/eng/build.sh +++ b/eng/build.sh @@ -17,7 +17,7 @@ scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" usage() { echo "Common settings:" - echo " --arch (-a) Target platform: x86, x64, arm, armel, arm64, s390x or wasm." + echo " --arch (-a) Target platform: x86, x64, arm, armel, arm64, loongarch64, s390x or wasm." echo " [Default: Your machine's architecture.]" echo " --binaryLog (-bl) Output binary log." echo " --cross Optional argument to signify cross compilation." @@ -206,12 +206,12 @@ while [[ $# > 0 ]]; do fi passedArch="$(echo "$2" | tr "[:upper:]" "[:lower:]")" case "$passedArch" in - x64|x86|arm|armel|arm64|s390x|wasm) + x64|x86|arm|armel|arm64|loongarch64|s390x|wasm) arch=$passedArch ;; *) echo "Unsupported target architecture '$2'." - echo "The allowed values are x86, x64, arm, armel, arm64, s390x, and wasm." + echo "The allowed values are x86, x64, arm, armel, arm64, loongarch64, s390x, and wasm." exit 1 ;; esac diff --git a/eng/common/cross/toolchain.cmake b/eng/common/cross/toolchain.cmake index 6501c3a955f782..bc2d92784ea043 100644 --- a/eng/common/cross/toolchain.cmake +++ b/eng/common/cross/toolchain.cmake @@ -36,6 +36,9 @@ elseif(TARGET_ARCH_NAME STREQUAL "arm64") if("$ENV{__DistroRid}" MATCHES "tizen.*") set(TIZEN_TOOLCHAIN "aarch64-tizen-linux-gnu/9.2.0") endif() +elseif(TARGET_ARCH_NAME STREQUAL "loongarch64") + set(CMAKE_SYSTEM_PROCESSOR loongarch64) + set(TOOLCHAIN "loongarch64-linux-gnu") elseif(TARGET_ARCH_NAME STREQUAL "s390x") set(CMAKE_SYSTEM_PROCESSOR s390x) set(TOOLCHAIN "s390x-linux-gnu") @@ -49,7 +52,7 @@ elseif (ILLUMOS) set(CMAKE_SYSTEM_PROCESSOR "x86_64") set(TOOLCHAIN "x86_64-illumos") else() - message(FATAL_ERROR "Arch is ${TARGET_ARCH_NAME}. Only armel, arm, arm64, s390x and x86 are supported!") + message(FATAL_ERROR "Arch is ${TARGET_ARCH_NAME}. Only armel, arm, arm64, loongarch64, s390x and x86 are supported!") endif() if(DEFINED ENV{TOOLCHAIN}) @@ -177,7 +180,7 @@ endif() # Specify compile options -if((TARGET_ARCH_NAME MATCHES "^(arm|armel|arm64|s390x)$" AND NOT "$ENV{__DistroRid}" MATCHES "android.*") OR ILLUMOS) +if((TARGET_ARCH_NAME MATCHES "^(arm|armel|arm64|s390x|loongarch64)$" AND NOT "$ENV{__DistroRid}" MATCHES "android.*") OR ILLUMOS) set(CMAKE_C_COMPILER_TARGET ${TOOLCHAIN}) set(CMAKE_CXX_COMPILER_TARGET ${TOOLCHAIN}) set(CMAKE_ASM_COMPILER_TARGET ${TOOLCHAIN}) diff --git a/eng/common/dotnet-install.sh b/eng/common/dotnet-install.sh index fdfeea66e7d43f..5c94e98632a0a7 100755 --- a/eng/common/dotnet-install.sh +++ b/eng/common/dotnet-install.sh @@ -55,6 +55,9 @@ case $cpuname in aarch64) buildarch=arm64 ;; + loongarch64) + buildarch=loongarch64 + ;; amd64|x86_64) buildarch=x64 ;; diff --git a/eng/common/native/CommonLibrary.psm1 b/eng/common/native/CommonLibrary.psm1 index adf707c8fe7008..ca38268c44d832 100644 --- a/eng/common/native/CommonLibrary.psm1 +++ b/eng/common/native/CommonLibrary.psm1 @@ -276,7 +276,8 @@ function Get-MachineArchitecture { } if (($ProcessorArchitecture -Eq "AMD64") -Or ($ProcessorArchitecture -Eq "IA64") -Or - ($ProcessorArchitecture -Eq "ARM64")) { + ($ProcessorArchitecture -Eq "ARM64") -Or + ($ProcessorArchitecture -Eq "LOONGARCH64")) { return "x64" } return "x86" diff --git a/eng/native/build-commons.sh b/eng/native/build-commons.sh index 4aebd45649a04c..55bb5de63dea44 100755 --- a/eng/native/build-commons.sh +++ b/eng/native/build-commons.sh @@ -197,7 +197,7 @@ usage() echo "" echo "Common Options:" echo "" - echo "BuildArch can be: -arm, -armel, -arm64, -s390x, x64, x86, -wasm" + echo "BuildArch can be: -arm, -armel, -arm64, -s390x, -loongarch64, x64, x86, -wasm" echo "BuildType can be: -debug, -checked, -release" echo "-os: target OS (defaults to running OS)" echo "-bindir: output directory (defaults to $__ProjectRoot/artifacts)" @@ -394,6 +394,10 @@ while :; do __BuildArch=s390x ;; + loongarch64|-loongarch64) + __BuildArch=loongarch64 + ;; + wasm|-wasm) __BuildArch=wasm ;; diff --git a/eng/native/configurecompiler.cmake b/eng/native/configurecompiler.cmake index 5a20591cc025bb..f2ceeb6962223e 100644 --- a/eng/native/configurecompiler.cmake +++ b/eng/native/configurecompiler.cmake @@ -219,6 +219,9 @@ elseif (CLR_CMAKE_HOST_ARCH_ARM64) elseif (CLR_CMAKE_HOST_ARCH_S390X) set(ARCH_HOST_NAME s390x) add_definitions(-DHOST_S390X -DHOST_64BIT -DBIGENDIAN) +elseif (CLR_CMAKE_HOST_ARCH_LOONGARCH64) + set(ARCH_HOST_NAME loongarch64) + add_definitions(-DHOST_LOONGARCH64 -DHOST_64BIT) elseif (CLR_CMAKE_HOST_ARCH_WASM) set(ARCH_HOST_NAME wasm) add_definitions(-DHOST_WASM -DHOST_32BIT=1) @@ -241,6 +244,8 @@ if (CLR_CMAKE_HOST_UNIX) message("Detected Linux i686") elseif(CLR_CMAKE_HOST_UNIX_S390X) message("Detected Linux s390x") + elseif(CLR_CMAKE_HOST_UNIX_LOONGARCH64) + message("Detected Linux LOONGARCH64") else() clr_unknown_arch() endif() @@ -306,6 +311,11 @@ elseif (CLR_CMAKE_TARGET_ARCH_S390X) set(ARCH_SOURCES_DIR s390x) add_compile_definitions($<$>>:TARGET_S390X>) add_compile_definitions($<$>>:TARGET_64BIT>) +elseif (CLR_CMAKE_TARGET_ARCH_LOONGARCH64) + set(ARCH_TARGET_NAME loongarch64) + set(ARCH_SOURCES_DIR loongarch64) + add_compile_definitions($<$>>:TARGET_LOONGARCH64>) + add_compile_definitions($<$>>:TARGET_64BIT>) elseif (CLR_CMAKE_TARGET_ARCH_WASM) set(ARCH_TARGET_NAME wasm) set(ARCH_SOURCES_DIR wasm) diff --git a/eng/native/configureplatform.cmake b/eng/native/configureplatform.cmake index f5c8abe66991a0..cdf33430b49f11 100644 --- a/eng/native/configureplatform.cmake +++ b/eng/native/configureplatform.cmake @@ -43,6 +43,8 @@ if(CLR_CMAKE_HOST_OS STREQUAL Linux) set(CLR_CMAKE_HOST_UNIX_ARM 1) elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL aarch64 OR CMAKE_SYSTEM_PROCESSOR STREQUAL arm64) set(CLR_CMAKE_HOST_UNIX_ARM64 1) + elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL loongarch64 OR CMAKE_SYSTEM_PROCESSOR STREQUAL loongarch64) + set(CLR_CMAKE_HOST_UNIX_LOONGARCH64 1) elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL i686 OR CMAKE_SYSTEM_PROCESSOR STREQUAL x86) set(CLR_CMAKE_HOST_UNIX_X86 1) elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL s390x) @@ -218,6 +220,9 @@ if(CLR_CMAKE_HOST_UNIX_ARM) elseif(CLR_CMAKE_HOST_UNIX_ARM64) set(CLR_CMAKE_HOST_ARCH_ARM64 1) set(CLR_CMAKE_HOST_ARCH "arm64") +elseif(CLR_CMAKE_HOST_UNIX_LOONGARCH64) + set(CLR_CMAKE_HOST_ARCH_LOONGARCH64 1) + set(CLR_CMAKE_HOST_ARCH "loongarch64") elseif(CLR_CMAKE_HOST_UNIX_AMD64) set(CLR_CMAKE_HOST_ARCH_AMD64 1) set(CLR_CMAKE_HOST_ARCH "x64") @@ -268,6 +273,8 @@ if (CLR_CMAKE_TARGET_ARCH STREQUAL x64) set(CLR_CMAKE_TARGET_ARCH_I386 1) elseif(CLR_CMAKE_TARGET_ARCH STREQUAL arm64) set(CLR_CMAKE_TARGET_ARCH_ARM64 1) + elseif(CLR_CMAKE_TARGET_ARCH STREQUAL loongarch64) + set(CLR_CMAKE_TARGET_ARCH_LOONGARCH64 1) elseif(CLR_CMAKE_TARGET_ARCH STREQUAL arm) set(CLR_CMAKE_TARGET_ARCH_ARM 1) elseif(CLR_CMAKE_TARGET_ARCH STREQUAL armel) @@ -374,6 +381,8 @@ if(CLR_CMAKE_TARGET_UNIX) set(CLR_CMAKE_TARGET_UNIX_ARM 1) elseif(CLR_CMAKE_TARGET_ARCH STREQUAL arm64) set(CLR_CMAKE_TARGET_UNIX_ARM64 1) + elseif(CLR_CMAKE_TARGET_ARCH STREQUAL loongarch64) + set(CLR_CMAKE_TARGET_UNIX_LOONGARCH64 1) elseif(CLR_CMAKE_TARGET_ARCH STREQUAL x86) set(CLR_CMAKE_TARGET_UNIX_X86 1) elseif(CLR_CMAKE_TARGET_ARCH STREQUAL s390x) diff --git a/eng/native/functions.cmake b/eng/native/functions.cmake index 87b4d15734bf69..07b142e34f7cdb 100644 --- a/eng/native/functions.cmake +++ b/eng/native/functions.cmake @@ -4,7 +4,7 @@ function(clr_unknown_arch) elseif(CLR_CROSS_COMPONENTS_BUILD) message(FATAL_ERROR "Only AMD64, I386 host are supported for linux cross-architecture component. Found: ${CMAKE_SYSTEM_PROCESSOR}") else() - message(FATAL_ERROR "Only AMD64, ARM64 and ARM are supported. Found: ${CMAKE_SYSTEM_PROCESSOR}") + message(FATAL_ERROR "Only AMD64, ARM64 , LOONGARCH64, and ARM are supported. Found: ${CMAKE_SYSTEM_PROCESSOR}") endif() endfunction() @@ -94,6 +94,10 @@ function(find_unwind_libs UnwindLibs) find_library(UNWIND_ARCH NAMES unwind-aarch64) endif() + if(CLR_CMAKE_HOST_ARCH_LOONGARCH64) + find_library(UNWIND_ARCH NAMES unwind-loongarch64) + endif() + if(CLR_CMAKE_HOST_ARCH_AMD64) find_library(UNWIND_ARCH NAMES unwind-x86_64) endif() diff --git a/eng/native/init-os-and-arch.sh b/eng/native/init-os-and-arch.sh index fc4078fa3a9aa4..586534be1c8aa9 100644 --- a/eng/native/init-os-and-arch.sh +++ b/eng/native/init-os-and-arch.sh @@ -37,6 +37,10 @@ case "$CPUName" in arch=arm64 ;; + loongarch64) + arch=loongarch64 + ;; + amd64|x86_64) arch=x64 ;; diff --git a/eng/native/tryrun.cmake b/eng/native/tryrun.cmake index 96199969da69c9..e8a04c5698ad35 100644 --- a/eng/native/tryrun.cmake +++ b/eng/native/tryrun.cmake @@ -68,7 +68,7 @@ if(DARWIN) else() message(FATAL_ERROR "Arch is ${TARGET_ARCH_NAME}. Only arm64 or x64 is supported for OSX cross build!") endif() -elseif(TARGET_ARCH_NAME MATCHES "^(armel|arm|arm64|s390x|x86)$" OR FREEBSD OR ILLUMOS) +elseif(TARGET_ARCH_NAME MATCHES "^(armel|arm|arm64|loongarch64|s390x|x86)$" OR FREEBSD OR ILLUMOS) set_cache_value(FILE_OPS_CHECK_FERROR_OF_PREVIOUS_CALL_EXITCODE 1) set_cache_value(GETPWUID_R_SETS_ERRNO_EXITCODE 0) set_cache_value(HAS_POSIX_SEMAPHORES_EXITCODE 0) @@ -146,9 +146,9 @@ elseif(TARGET_ARCH_NAME MATCHES "^(armel|arm|arm64|s390x|x86)$" OR FREEBSD OR IL set_cache_value(HAVE_FUNCTIONAL_PTHREAD_ROBUST_MUTEXES_EXITCODE 0) endif() else() - message(FATAL_ERROR "Arch is ${TARGET_ARCH_NAME}. Only armel, arm, arm64, s390x and x86 are supported!") + message(FATAL_ERROR "Arch is ${TARGET_ARCH_NAME}. Only armel, arm, arm64, loongarch64, s390x and x86 are supported!") endif() -if(TARGET_ARCH_NAME STREQUAL "x86" OR TARGET_ARCH_NAME STREQUAL "s390x") +if(TARGET_ARCH_NAME STREQUAL "x86" OR TARGET_ARCH_NAME STREQUAL "s390x" OR TARGET_ARCH_NAME STREQUAL "loongarch64") set_cache_value(HAVE_FUNCTIONAL_PTHREAD_ROBUST_MUTEXES_EXITCODE 0) endif() diff --git a/eng/regenerate-download-table.proj b/eng/regenerate-download-table.proj index a6fb68a867ef89..6a5bbdffc6019d 100644 --- a/eng/regenerate-download-table.proj +++ b/eng/regenerate-download-table.proj @@ -24,6 +24,7 @@ + diff --git a/eng/run-test.sh b/eng/run-test.sh index 64474cc435af16..0475cff40cd839 100644 --- a/eng/run-test.sh +++ b/eng/run-test.sh @@ -31,7 +31,7 @@ usage() echo " default: Debug" echo " --os OS to run (FreeBSD, Linux, NetBSD, illumos or Solaris)" echo " default: detect current OS" - echo " --arch Architecture to run (x64, arm, armel, x86, arm64)" + echo " --arch Architecture to run (x64, arm, armel, x86, arm64, loongarch64)" echo " default: detect current architecture" echo echo "Execution options:" diff --git a/eng/targetingpacks.targets b/eng/targetingpacks.targets index 9dd37bef8fa1c3..4213c84e709d9c 100644 --- a/eng/targetingpacks.targets +++ b/eng/targetingpacks.targets @@ -33,7 +33,7 @@ LatestRuntimeFrameworkVersion="$(ProductVersion)" RuntimeFrameworkName="$(LocalFrameworkOverrideName)" RuntimePackNamePatterns="$(LocalFrameworkOverrideName).Runtime.**RID**" - RuntimePackRuntimeIdentifiers="linux-arm;linux-arm64;linux-musl-arm64;linux-musl-x64;linux-x64;osx-x64;rhel.6-x64;tizen.4.0.0-armel;tizen.5.0.0-armel;win-arm;win-arm64;win-x64;win-x86;linux-musl-arm;osx-arm64;maccatalyst-x64;maccatalyst-arm64" + RuntimePackRuntimeIdentifiers="linux-arm;linux-arm64;linux-musl-arm64;linux-loongarch64;linux-musl-x64;linux-x64;osx-x64;rhel.6-x64;tizen.4.0.0-armel;tizen.5.0.0-armel;win-arm;win-arm64;win-x64;win-x86;linux-musl-arm;osx-arm64;maccatalyst-x64;maccatalyst-arm64" TargetFramework="$(NetCoreAppCurrent)" TargetingPackName="$(LocalFrameworkOverrideName).Ref" TargetingPackVersion="$(ProductVersion)" @@ -43,13 +43,13 @@ RuntimeFrameworkName="$(LocalFrameworkOverrideName)" LatestRuntimeFrameworkVersion="$(ProductVersion)" RuntimePackNamePatterns="$(LocalFrameworkOverrideName).Runtime.Mono.**RID**" - RuntimePackRuntimeIdentifiers="linux-arm;linux-arm64;linux-musl-arm64;linux-musl-x64;linux-x64;osx-x64;rhel.6-x64;win-arm;win-arm64;win-x64;win-x86;linux-musl-arm;osx-arm64;maccatalyst-x64;maccatalyst-arm64;browser-wasm;ios-arm64;ios-arm;iossimulator-arm64;iossimulator-x64;iossimulator-x86;tvos-arm64;tvossimulator-arm64;tvossimulator-x64;android-arm64;android-arm;android-x64;android-x86" + RuntimePackRuntimeIdentifiers="linux-arm;linux-arm64;linux-musl-arm64;linux-loongarch64;linux-musl-x64;linux-x64;osx-x64;rhel.6-x64;win-arm;win-arm64;win-x64;win-x86;linux-musl-arm;osx-arm64;maccatalyst-x64;maccatalyst-arm64;browser-wasm;ios-arm64;ios-arm;iossimulator-arm64;iossimulator-x64;iossimulator-x86;tvos-arm64;tvossimulator-arm64;tvossimulator-x64;android-arm64;android-arm;android-x64;android-x86" RuntimePackLabels="Mono" Condition="'@(KnownRuntimePack)' == '' or !@(KnownRuntimePack->AnyHaveMetadataValue('TargetFramework', '$(NetCoreAppCurrent)'))"/> Date: Fri, 17 Dec 2021 15:50:15 +0800 Subject: [PATCH 2/9] [LoongArch64] reverse the condition within configure. (#59561) --- src/coreclr/debug/createdump/CMakeLists.txt | 8 +------- src/coreclr/pal/src/CMakeLists.txt | 13 ++++--------- src/coreclr/pal/src/configure.cmake | 7 +++---- .../src/eventprovider/lttngprovider/CMakeLists.txt | 11 +++++------ 4 files changed, 13 insertions(+), 26 deletions(-) diff --git a/src/coreclr/debug/createdump/CMakeLists.txt b/src/coreclr/debug/createdump/CMakeLists.txt index bf8d0004b4eb58..28b0c4fdfe9e71 100644 --- a/src/coreclr/debug/createdump/CMakeLists.txt +++ b/src/coreclr/debug/createdump/CMakeLists.txt @@ -81,7 +81,6 @@ else() add_dependencies(createdump pal_redefines_file) endif(CLR_CMAKE_HOST_OSX) -if(NOT CLR_CMAKE_TARGET_ARCH_LOONGARCH64) target_link_libraries(createdump corguids dbgutil @@ -89,16 +88,11 @@ if(NOT CLR_CMAKE_TARGET_ARCH_LOONGARCH64) mscordaccore dl ) -else(CLR_CMAKE_TARGET_ARCH_LOONGARCH64) +if(CLR_CMAKE_TARGET_ARCH_LOONGARCH64) target_link_libraries(createdump - corguids - dbgutil - # share the PAL in the dac module pthread rt lzma - mscordaccore - dl ) endif() diff --git a/src/coreclr/pal/src/CMakeLists.txt b/src/coreclr/pal/src/CMakeLists.txt index 20a442b541e2fb..3b6ee5c9aec131 100644 --- a/src/coreclr/pal/src/CMakeLists.txt +++ b/src/coreclr/pal/src/CMakeLists.txt @@ -299,20 +299,15 @@ endif(CLR_CMAKE_TARGET_FREEBSD) if(CLR_CMAKE_TARGET_LINUX) # On Android, we don't need to link with gcc_s, pthread and rt if(NOT CLR_CMAKE_TARGET_ANDROID) - if(NOT CLR_CMAKE_TARGET_ARCH_LOONGARCH64) target_link_libraries(coreclrpal gcc_s pthread rt ) - else() - find_library(LZMA NAMES lzma) - target_link_libraries(coreclrpal - gcc_s - pthread - rt - lzma - ) + if(CLR_CMAKE_TARGET_ARCH_LOONGARCH64) + find_library(LZMA NAMES lzma) + target_link_libraries(coreclrpal + lzma) endif() else(NOT CLR_CMAKE_TARGET_ANDROID) target_link_libraries(coreclrpal diff --git a/src/coreclr/pal/src/configure.cmake b/src/coreclr/pal/src/configure.cmake index 5928bbd9aea920..eb3940b911c787 100644 --- a/src/coreclr/pal/src/configure.cmake +++ b/src/coreclr/pal/src/configure.cmake @@ -21,10 +21,9 @@ elseif(NOT CLR_CMAKE_TARGET_FREEBSD AND NOT CLR_CMAKE_TARGET_NETBSD) endif() if(CLR_CMAKE_TARGET_LINUX AND NOT CLR_CMAKE_TARGET_ANDROID) - if(NOT CLR_CMAKE_HOST_ARCH_LOONGARCH64) - set(CMAKE_RT_LIBS rt) - elseif() - set(CMAKE_RT_LIBS rt pthread) + set(CMAKE_RT_LIBS rt) + if(CLR_CMAKE_HOST_ARCH_LOONGARCH64) + set(CMAKE_RT_LIBS pthread) endif() elseif(CLR_CMAKE_TARGET_FREEBSD OR CLR_CMAKE_TARGET_NETBSD) set(CMAKE_RT_LIBS rt) diff --git a/src/coreclr/pal/src/eventprovider/lttngprovider/CMakeLists.txt b/src/coreclr/pal/src/eventprovider/lttngprovider/CMakeLists.txt index b35f05d1c32e0c..5462b78101e066 100644 --- a/src/coreclr/pal/src/eventprovider/lttngprovider/CMakeLists.txt +++ b/src/coreclr/pal/src/eventprovider/lttngprovider/CMakeLists.txt @@ -62,18 +62,17 @@ add_dependencies(coreclrtraceptprovider generated_eventing_headers) find_library(LTTNG NAMES lttng-ust) -if(NOT CLR_CMAKE_TARGET_ARCH_LOONGARCH64) - target_link_libraries(coreclrtraceptprovider - ${LTTNG} - ) -else() +target_link_libraries(coreclrtraceptprovider + ${LTTNG} +) + +if(CLR_CMAKE_TARGET_ARCH_LOONGARCH64) target_link_libraries(coreclrtraceptprovider lttng-ust-tracepoint urcu urcu-bp urcu-cds urcu-common - ${LTTNG} ) endif() From 296c1f182cc2245f6f221c7ccfc8283c749e44ea Mon Sep 17 00:00:00 2001 From: qiaopengcheng Date: Sat, 18 Dec 2021 08:40:49 +0800 Subject: [PATCH 3/9] [LoongArch64] add inc/switches.h from the first patch of #62886. --- src/coreclr/inc/switches.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/coreclr/inc/switches.h b/src/coreclr/inc/switches.h index 9e066527a8bde1..65cda94ed9900b 100644 --- a/src/coreclr/inc/switches.h +++ b/src/coreclr/inc/switches.h @@ -51,7 +51,7 @@ #if defined(TARGET_X86) || defined(TARGET_ARM) #define USE_LAZY_PREFERRED_RANGE 0 -#elif defined(TARGET_AMD64) || defined(TARGET_ARM64) || defined(TARGET_S390X) +#elif defined(TARGET_AMD64) || defined(TARGET_ARM64) || defined(TARGET_S390X) || defined(TARGET_LOONGARCH64) #if defined(HOST_UNIX) // In PAL we have a smechanism that reserves memory on start up that is From a4cb4d32c9ac3f9e6cf94c57281c028f89ac8b7f Mon Sep 17 00:00:00 2001 From: qiaopengcheng Date: Sat, 18 Dec 2021 15:43:16 +0800 Subject: [PATCH 4/9] [LoongArch64] move related files to corresponding PRs. --- src/coreclr/debug/createdump/CMakeLists.txt | 7 ---- src/coreclr/debug/ee/wks/CMakeLists.txt | 2 +- src/coreclr/dlls/mscordac/CMakeLists.txt | 3 -- .../dlls/mscoree/coreclr/CMakeLists.txt | 2 - src/coreclr/gcinfo/CMakeLists.txt | 5 +-- src/coreclr/jit/CMakeLists.txt | 33 +--------------- src/coreclr/pal/src/CMakeLists.txt | 7 ---- src/coreclr/pal/src/configure.cmake | 3 -- .../lttngprovider/CMakeLists.txt | 12 +----- src/coreclr/pal/src/libunwind/CMakeLists.txt | 4 -- .../pal/src/libunwind/src/CMakeLists.txt | 39 ------------------- src/coreclr/vm/CMakeLists.txt | 22 ----------- 12 files changed, 6 insertions(+), 133 deletions(-) diff --git a/src/coreclr/debug/createdump/CMakeLists.txt b/src/coreclr/debug/createdump/CMakeLists.txt index 28b0c4fdfe9e71..f0093b7cb66601 100644 --- a/src/coreclr/debug/createdump/CMakeLists.txt +++ b/src/coreclr/debug/createdump/CMakeLists.txt @@ -88,13 +88,6 @@ endif(CLR_CMAKE_HOST_OSX) mscordaccore dl ) -if(CLR_CMAKE_TARGET_ARCH_LOONGARCH64) - target_link_libraries(createdump - pthread - rt - lzma - ) -endif() add_dependencies(createdump mscordaccore) diff --git a/src/coreclr/debug/ee/wks/CMakeLists.txt b/src/coreclr/debug/ee/wks/CMakeLists.txt index f50bc8f6fb6d59..6411b64d436ff7 100644 --- a/src/coreclr/debug/ee/wks/CMakeLists.txt +++ b/src/coreclr/debug/ee/wks/CMakeLists.txt @@ -7,7 +7,7 @@ if (CLR_CMAKE_TARGET_WIN32) set(ASM_FILE ${CORDBEE_DIR}/${ARCH_SOURCES_DIR}/dbghelpers.asm) - if(CLR_CMAKE_HOST_ARCH_ARM OR CLR_CMAKE_HOST_ARCH_ARM64 OR CLR_CMAKE_HOST_ARCH_LOONGARCH64) + if(CLR_CMAKE_HOST_ARCH_ARM OR CLR_CMAKE_HOST_ARCH_ARM64) preprocess_files(ASM_FILE ${ASM_FILE}) if (CMAKE_GENERATOR MATCHES "Visual Studio") diff --git a/src/coreclr/dlls/mscordac/CMakeLists.txt b/src/coreclr/dlls/mscordac/CMakeLists.txt index f2931c43db1cb8..8d04b34e48aad7 100644 --- a/src/coreclr/dlls/mscordac/CMakeLists.txt +++ b/src/coreclr/dlls/mscordac/CMakeLists.txt @@ -49,9 +49,6 @@ else(CLR_CMAKE_HOST_WIN32) if (CLR_CMAKE_HOST_ARCH_ARM OR CLR_CMAKE_HOST_ARCH_ARM64) set(JUMP_INSTRUCTION b) - elseif (CLR_CMAKE_HOST_ARCH_LOONGARCH64) - # FIXME for LOONGARCH64 - set(JUMP_INSTRUCTION "break //TODO, b") else() set(JUMP_INSTRUCTION jmp) endif() diff --git a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt index 954ebad775be17..31c5b0151ff7f7 100644 --- a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt +++ b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt @@ -183,8 +183,6 @@ if(CLR_CMAKE_TARGET_WIN32) list(APPEND PREPROCESS_DEFINITIONS -DTARGET_AMD64) elseif (CLR_CMAKE_HOST_ARCH_ARM64) list(APPEND PREPROCESS_DEFINITIONS -DTARGET_ARM64) - elseif (CLR_CMAKE_HOST_ARCH_LOONGARCH64) - list(APPEND PREPROCESS_DEFINITIONS -DTARGET_LOONGARCH64) elseif (CLR_CMAKE_HOST_ARCH_ARM) list(APPEND PREPROCESS_DEFINITIONS -DTARGET_ARM) elseif (CLR_CMAKE_HOST_ARCH_I386) diff --git a/src/coreclr/gcinfo/CMakeLists.txt b/src/coreclr/gcinfo/CMakeLists.txt index b30acadf6e32f8..8c966bb3403b5e 100644 --- a/src/coreclr/gcinfo/CMakeLists.txt +++ b/src/coreclr/gcinfo/CMakeLists.txt @@ -69,12 +69,11 @@ if (CLR_CMAKE_TARGET_ARCH_ARM64 OR CLR_CMAKE_TARGET_ARCH_ARM) create_gcinfo_lib(TARGET gcinfo_${TARGET_OS_NAME}_${ARCH_TARGET_NAME} OS ${TARGET_OS_NAME} ARCH ${ARCH_TARGET_NAME}) endif() -if (CLR_CMAKE_TARGET_ARCH_ARM64 OR CLR_CMAKE_TARGET_ARCH_AMD64 OR CLR_CMAKE_TARGET_ARCH_LOONGARCH64) +if (CLR_CMAKE_TARGET_ARCH_ARM64 OR CLR_CMAKE_TARGET_ARCH_AMD64) create_gcinfo_lib(TARGET gcinfo_universal_arm64 OS universal ARCH arm64) create_gcinfo_lib(TARGET gcinfo_unix_x64 OS unix ARCH x64) create_gcinfo_lib(TARGET gcinfo_win_x64 OS win ARCH x64) - create_gcinfo_lib(TARGET gcinfo_unix_loongarch64 OS unix ARCH loongarch64) -endif (CLR_CMAKE_TARGET_ARCH_ARM64 OR CLR_CMAKE_TARGET_ARCH_AMD64 OR CLR_CMAKE_TARGET_ARCH_LOONGARCH64) +endif (CLR_CMAKE_TARGET_ARCH_ARM64 OR CLR_CMAKE_TARGET_ARCH_AMD64) create_gcinfo_lib(TARGET gcinfo_universal_arm OS universal ARCH arm) create_gcinfo_lib(TARGET gcinfo_win_x86 OS win ARCH x86) diff --git a/src/coreclr/jit/CMakeLists.txt b/src/coreclr/jit/CMakeLists.txt index 3c6febd86ad53f..c46cdd18a164ee 100644 --- a/src/coreclr/jit/CMakeLists.txt +++ b/src/coreclr/jit/CMakeLists.txt @@ -41,9 +41,6 @@ function(create_standalone_jit) elseif(TARGETDETAILS_ARCH STREQUAL "s390x") set(JIT_ARCH_SOURCES ${JIT_S390X_SOURCES}) set(JIT_ARCH_HEADERS ${JIT_S390X_HEADERS}) - elseif(TARGETDETAILS_ARCH STREQUAL "loongarch64") - set(JIT_ARCH_SOURCES ${JIT_LOONGARCH64_SOURCES}) - set(JIT_ARCH_HEADERS ${JIT_LOONGARCH64_HEADERS}) else() clr_unknown_arch() endif() @@ -227,17 +224,6 @@ set( JIT_S390X_SOURCES # Not supported as JIT target ) -set( JIT_LOONGARCH64_SOURCES - codegenloongarch64.cpp - emitloongarch64.cpp - lowerloongarch64.cpp - lsraloongarch64.cpp - targetloongarch64.cpp - unwindloongarch64.cpp - ##hwintrinsiclistloongarch64.cpp ###TODO:Not implemented on loongarch64 yet. - ##simdashwintrinsiclistloongarch64.cpp ###TODO:Not implemented on loongarch64 yet. -) - # We include the headers here for better experience in IDEs. set( JIT_HEADERS ../inc/corinfo.h @@ -380,15 +366,6 @@ set ( JIT_S390X_HEADERS # Not supported as JIT target ) -set( JIT_LOONGARCH64_HEADERS - emitloongarch64.h - emitfmtsloongarch64.h - instrsloongarch64.h - registerloongarch64.h -#hwintrinsiclistloongarch64.h ###TODO:Not implemented on loongarch64 yet. -#simdashwintrinsiclistloongarch64.h -) - convert_to_absolute_path(JIT_SOURCES ${JIT_SOURCES}) convert_to_absolute_path(JIT_HEADERS ${JIT_HEADERS}) convert_to_absolute_path(JIT_RESOURCES ${JIT_RESOURCES}) @@ -405,8 +382,6 @@ convert_to_absolute_path(JIT_ARM64_SOURCES ${JIT_ARM64_SOURCES}) convert_to_absolute_path(JIT_ARM64_HEADERS ${JIT_ARM64_HEADERS}) convert_to_absolute_path(JIT_S390X_SOURCES ${JIT_S390X_SOURCES}) convert_to_absolute_path(JIT_S390X_HEADERS ${JIT_S390X_HEADERS}) -convert_to_absolute_path(JIT_LOONGARCH64_SOURCES ${JIT_LOONGARCH64_SOURCES}) -convert_to_absolute_path(JIT_LOONGARCH64_HEADERS ${JIT_LOONGARCH64_HEADERS}) if(CLR_CMAKE_TARGET_ARCH_AMD64) set(JIT_ARCH_SOURCES ${JIT_AMD64_SOURCES}) @@ -423,9 +398,6 @@ elseif(CLR_CMAKE_TARGET_ARCH_ARM64) elseif(CLR_CMAKE_TARGET_ARCH_S390X) set(JIT_ARCH_SOURCES ${JIT_S390X_SOURCES}) set(JIT_ARCH_HEADERS ${JIT_S390X_HEADERS}) -elseif(CLR_CMAKE_TARGET_ARCH_LOONGARCH64) - set(JIT_ARCH_SOURCES ${JIT_LOONGARCH64_SOURCES}) - set(JIT_ARCH_HEADERS ${JIT_LOONGARCH64_HEADERS}) else() clr_unknown_arch() endif() @@ -563,12 +535,11 @@ install_clr(TARGETS clrjit DESTINATIONS . sharedFramework COMPONENT jit) # Enable profile guided optimization add_pgo(clrjit) -if (CLR_CMAKE_TARGET_ARCH_ARM64 OR CLR_CMAKE_TARGET_ARCH_AMD64 OR CLR_CMAKE_TARGET_ARCH_LOONGARCH64) +if (CLR_CMAKE_TARGET_ARCH_ARM64 OR CLR_CMAKE_TARGET_ARCH_AMD64) create_standalone_jit(TARGET clrjit_universal_arm64_${ARCH_HOST_NAME} OS universal ARCH arm64 DESTINATIONS .) create_standalone_jit(TARGET clrjit_unix_x64_${ARCH_HOST_NAME} OS unix ARCH x64 DESTINATIONS .) create_standalone_jit(TARGET clrjit_win_x64_${ARCH_HOST_NAME} OS win ARCH x64 DESTINATIONS .) - create_standalone_jit(TARGET clrjit_unix_loongarch64_${ARCH_HOST_NAME} OS unix ARCH loongarch64 DESTINATIONS .) -endif (CLR_CMAKE_TARGET_ARCH_ARM64 OR CLR_CMAKE_TARGET_ARCH_AMD64 OR CLR_CMAKE_TARGET_ARCH_LOONGARCH64) +endif (CLR_CMAKE_TARGET_ARCH_ARM64 OR CLR_CMAKE_TARGET_ARCH_AMD64) create_standalone_jit(TARGET clrjit_universal_arm_${ARCH_HOST_NAME} OS universal ARCH arm DESTINATIONS .) target_compile_definitions(clrjit_universal_arm_${ARCH_HOST_NAME} PRIVATE ARM_SOFTFP CONFIGURABLE_ARM_ABI) diff --git a/src/coreclr/pal/src/CMakeLists.txt b/src/coreclr/pal/src/CMakeLists.txt index 3b6ee5c9aec131..4f071b21046b07 100644 --- a/src/coreclr/pal/src/CMakeLists.txt +++ b/src/coreclr/pal/src/CMakeLists.txt @@ -47,8 +47,6 @@ elseif(CLR_CMAKE_HOST_ARCH_ARM) set(PAL_ARCH_SOURCES_DIR arm) elseif(CLR_CMAKE_HOST_ARCH_ARM64) set(PAL_ARCH_SOURCES_DIR arm64) -elseif(CLR_CMAKE_HOST_ARCH_LOONGARCH64) - set(PAL_ARCH_SOURCES_DIR loongarch64) elseif(CLR_CMAKE_HOST_ARCH_I386) set(PAL_ARCH_SOURCES_DIR i386) elseif(CLR_CMAKE_HOST_ARCH_S390X) @@ -304,11 +302,6 @@ if(CLR_CMAKE_TARGET_LINUX) pthread rt ) - if(CLR_CMAKE_TARGET_ARCH_LOONGARCH64) - find_library(LZMA NAMES lzma) - target_link_libraries(coreclrpal - lzma) - endif() else(NOT CLR_CMAKE_TARGET_ANDROID) target_link_libraries(coreclrpal ${ANDROID_GLOB} diff --git a/src/coreclr/pal/src/configure.cmake b/src/coreclr/pal/src/configure.cmake index eb3940b911c787..ee4a3241196eaa 100644 --- a/src/coreclr/pal/src/configure.cmake +++ b/src/coreclr/pal/src/configure.cmake @@ -22,9 +22,6 @@ endif() if(CLR_CMAKE_TARGET_LINUX AND NOT CLR_CMAKE_TARGET_ANDROID) set(CMAKE_RT_LIBS rt) - if(CLR_CMAKE_HOST_ARCH_LOONGARCH64) - set(CMAKE_RT_LIBS pthread) - endif() elseif(CLR_CMAKE_TARGET_FREEBSD OR CLR_CMAKE_TARGET_NETBSD) set(CMAKE_RT_LIBS rt) else() diff --git a/src/coreclr/pal/src/eventprovider/lttngprovider/CMakeLists.txt b/src/coreclr/pal/src/eventprovider/lttngprovider/CMakeLists.txt index 5462b78101e066..8773cd797bcfb6 100644 --- a/src/coreclr/pal/src/eventprovider/lttngprovider/CMakeLists.txt +++ b/src/coreclr/pal/src/eventprovider/lttngprovider/CMakeLists.txt @@ -63,19 +63,9 @@ add_dependencies(coreclrtraceptprovider generated_eventing_headers) find_library(LTTNG NAMES lttng-ust) target_link_libraries(coreclrtraceptprovider - ${LTTNG} + ${LTTNG} ) -if(CLR_CMAKE_TARGET_ARCH_LOONGARCH64) - target_link_libraries(coreclrtraceptprovider - lttng-ust-tracepoint - urcu - urcu-bp - urcu-cds - urcu-common - ) -endif() - set_target_properties(coreclrtraceptprovider PROPERTIES LINKER_LANGUAGE CXX) # Install the static eventprovider library diff --git a/src/coreclr/pal/src/libunwind/CMakeLists.txt b/src/coreclr/pal/src/libunwind/CMakeLists.txt index b3d461f2f7f82e..17659432fd0e4d 100644 --- a/src/coreclr/pal/src/libunwind/CMakeLists.txt +++ b/src/coreclr/pal/src/libunwind/CMakeLists.txt @@ -24,8 +24,6 @@ if(CLR_CMAKE_HOST_UNIX) set(arch x86_64) elseif(CLR_CMAKE_HOST_ARCH_ARM64) set(arch aarch64) - elseif(CLR_CMAKE_HOST_ARCH_LOONGARCH64) - set(arch loongarch64) elseif(CLR_CMAKE_HOST_ARCH_ARM) set(arch arm) elseif(CLR_CMAKE_HOST_ARCH_I386) @@ -74,8 +72,6 @@ if(CLR_CMAKE_HOST_UNIX) elseif(CLR_CMAKE_HOST_ARCH_I386) # Disable warning for a bug in the libunwind source src/x86/Gos-linux.c, but not in code that we exercise add_compile_options(-Wno-incompatible-pointer-types) - elseif(CLR_CMAKE_HOST_ARCH_LOONGARCH64) - ###TODO: maybe add options for LOONGARCH64 endif() if (CLR_CMAKE_HOST_OSX) diff --git a/src/coreclr/pal/src/libunwind/src/CMakeLists.txt b/src/coreclr/pal/src/libunwind/src/CMakeLists.txt index d18ba8bb3a9459..b6dee4f413a809 100644 --- a/src/coreclr/pal/src/libunwind/src/CMakeLists.txt +++ b/src/coreclr/pal/src/libunwind/src/CMakeLists.txt @@ -153,40 +153,6 @@ SET(libunwind_elfxx_la_SOURCES elfxx.c ) -# The list of files that go into libunwind and libunwind-loongarch: -SET(libunwind_la_SOURCES_loongarch_common - ${libunwind_la_SOURCES_common} - loongarch/is_fpreg.c - loongarch/regname.c -) - -# The list of files that go into libunwind: -SET(libunwind_la_SOURCES_loongarch - ${libunwind_la_SOURCES_loongarch_common} - ${libunwind_la_SOURCES_local} - #loongarch/Lapply_reg_state.c loongarch/Lreg_states_iterate.c - #loongarch/Lcreate_addr_space.c loongarch/Lget_proc_info.c loongarch/Lget_save_loc.c - #loongarch/Lglobal.c loongarch/Linit.c loongarch/Linit_local.c loongarch/Linit_remote.c - #loongarch/Lis_signal_frame.c loongarch/Lregs.c loongarch/Lresume.c loongarch/Lstep.c - #loongarch/getcontext.S - - loongarch/Lget_proc_info.c loongarch/Linit.c loongarch/Lis_signal_frame.c - loongarch/Lstep.c - loongarch/getcontext.S - loongarch/Lget_save_loc.c - loongarch/Linit_local.c loongarch/Lregs.c - loongarch/Lcreate_addr_space.c loongarch/Lglobal.c loongarch/Linit_remote.c loongarch/Lresume.c -) - -SET(libunwind_loongarch_la_SOURCES_loongarch - ${libunwind_la_SOURCES_loongarch_common} - ${libunwind_la_SOURCES_generic} - #loongarch/Gapply_reg_state.c loongarch/Greg_states_iterate.c - loongarch/Gcreate_addr_space.c loongarch/Gget_proc_info.c loongarch/Gget_save_loc.c - loongarch/Gglobal.c loongarch/Ginit.c loongarch/Ginit_local.c loongarch/Ginit_remote.c - loongarch/Gis_signal_frame.c loongarch/Gregs.c loongarch/Gresume.c loongarch/Gstep.c -) - # The list of files that go into libunwind and libunwind-aarch64: SET(libunwind_la_SOURCES_aarch64_common ${libunwind_la_SOURCES_common} @@ -364,11 +330,6 @@ if(CLR_CMAKE_HOST_UNIX) SET(libunwind_la_SOURCES ${libunwind_la_SOURCES_s390x}) SET(libunwind_remote_la_SOURCES ${libunwind_s390x_la_SOURCES_s390x}) SET(libunwind_elf_la_SOURCES ${libunwind_elf64_la_SOURCES}) - elseif(CLR_CMAKE_HOST_ARCH_LOONGARCH64) - SET(libunwind_la_SOURCES ${libunwind_la_SOURCES_loongarch}) - SET(libunwind_remote_la_SOURCES ${libunwind_loongarch_la_SOURCES_loongarch}) - SET(libunwind_elf_la_SOURCES ${libunwind_elf64_la_SOURCES}) - list(APPEND libunwind_setjmp_la_SOURCES loongarch/siglongjmp.S) endif() if(CLR_CMAKE_HOST_OSX) diff --git a/src/coreclr/vm/CMakeLists.txt b/src/coreclr/vm/CMakeLists.txt index 67f34099d96fc3..bbc411c324cde4 100644 --- a/src/coreclr/vm/CMakeLists.txt +++ b/src/coreclr/vm/CMakeLists.txt @@ -759,13 +759,6 @@ else(CLR_CMAKE_TARGET_WIN32) ${ARCH_SOURCES_DIR}/crthelpers.S ${ARCH_SOURCES_DIR}/pinvokestubs.S ) - elseif(CLR_CMAKE_TARGET_ARCH_LOONGARCH64) - set(VM_SOURCES_WKS_ARCH_ASM - ${ARCH_SOURCES_DIR}/asmhelpers.S - ${ARCH_SOURCES_DIR}/calldescrworkerloongarch64.S - ${ARCH_SOURCES_DIR}/crthelpers.S - ${ARCH_SOURCES_DIR}/pinvokestubs.S - ) endif() endif(CLR_CMAKE_TARGET_WIN32) @@ -868,21 +861,6 @@ elseif(CLR_CMAKE_TARGET_ARCH_ARM64) ${ARCH_SOURCES_DIR}/arm64singlestepper.cpp ) endif(CLR_CMAKE_HOST_UNIX) -elseif(CLR_CMAKE_TARGET_ARCH_LOONGARCH64) - set(VM_SOURCES_DAC_AND_WKS_ARCH - ${ARCH_SOURCES_DIR}/stubs.cpp - exceptionhandling.cpp - ) - - set(VM_HEADERS_DAC_AND_WKS_ARCH - ${ARCH_SOURCES_DIR}/virtualcallstubcpu.hpp - exceptionhandling.h - ) - - set(VM_SOURCES_WKS_ARCH - ${ARCH_SOURCES_DIR}/profiler.cpp - gcinfodecoder.cpp - ) endif() if(CLR_CMAKE_HOST_UNIX) From e8ab8e23c91309eddf71bf55225f55ec5cc87c5d Mon Sep 17 00:00:00 2001 From: qiaopengcheng Date: Mon, 20 Dec 2021 12:52:54 +0800 Subject: [PATCH 5/9] [LoongArch64] had moved debug/di/CMakeLists.txt to #62886. --- src/coreclr/debug/di/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/coreclr/debug/di/CMakeLists.txt b/src/coreclr/debug/di/CMakeLists.txt index f45a27ac7a9d5e..b0272c4d2518d8 100644 --- a/src/coreclr/debug/di/CMakeLists.txt +++ b/src/coreclr/debug/di/CMakeLists.txt @@ -67,7 +67,7 @@ if(CLR_CMAKE_HOST_WIN32) endif() elseif(CLR_CMAKE_HOST_UNIX) - if(CLR_CMAKE_TARGET_ARCH_AMD64 OR CLR_CMAKE_TARGET_ARCH_ARM64 OR CLR_CMAKE_TARGET_ARCH_ARM OR CLR_CMAKE_TARGET_ARCH_LOONGARCH64) + if(CLR_CMAKE_TARGET_ARCH_AMD64 OR CLR_CMAKE_TARGET_ARCH_ARM64 OR CLR_CMAKE_TARGET_ARCH_ARM) set(CORDBDI_SOURCES_ASM_FILE ${ARCH_SOURCES_DIR}/floatconversion.S ) From 560f0a40926f38118d95eb1ee0d47036a4428abb Mon Sep 17 00:00:00 2001 From: qiaopengcheng Date: Tue, 11 Jan 2022 09:50:08 +0800 Subject: [PATCH 6/9] [LoongArch64] revert `eng/regenerate-download-table.proj`. --- eng/regenerate-download-table.proj | 1 - 1 file changed, 1 deletion(-) diff --git a/eng/regenerate-download-table.proj b/eng/regenerate-download-table.proj index 6a5bbdffc6019d..a6fb68a867ef89 100644 --- a/eng/regenerate-download-table.proj +++ b/eng/regenerate-download-table.proj @@ -24,7 +24,6 @@ - From 21c2bf54cf4870e5519c0dbea94dbae7e6d18055 Mon Sep 17 00:00:00 2001 From: qiaopengcheng Date: Tue, 11 Jan 2022 09:54:11 +0800 Subject: [PATCH 7/9] [LoongArch64] amend the config-files for LoongArch64. --- src/coreclr/clrdefinitions.cmake | 1 + src/coreclr/dlls/mscordac/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/coreclr/clrdefinitions.cmake b/src/coreclr/clrdefinitions.cmake index ab1a5122d118fa..d5fc9f5e1ee8e5 100644 --- a/src/coreclr/clrdefinitions.cmake +++ b/src/coreclr/clrdefinitions.cmake @@ -264,6 +264,7 @@ function(set_target_definitions_to_custom_os_and_arch) elseif(TARGETDETAILS_ARCH STREQUAL "loongarch64") target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE TARGET_64BIT) target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE TARGET_LOONGARCH64) + target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE FEATURE_MULTIREG_RETURN) elseif((TARGETDETAILS_ARCH STREQUAL "arm") OR (TARGETDETAILS_ARCH STREQUAL "armel")) target_compile_definitions(${TARGETDETAILS_TARGET} PRIVATE TARGET_ARM) endif() diff --git a/src/coreclr/dlls/mscordac/CMakeLists.txt b/src/coreclr/dlls/mscordac/CMakeLists.txt index 8d04b34e48aad7..25c2532358774b 100644 --- a/src/coreclr/dlls/mscordac/CMakeLists.txt +++ b/src/coreclr/dlls/mscordac/CMakeLists.txt @@ -47,7 +47,7 @@ else(CLR_CMAKE_HOST_WIN32) set(REDEFINES_FILE_SCRIPT ${CMAKE_SOURCE_DIR}/generateredefinesfile.sh) - if (CLR_CMAKE_HOST_ARCH_ARM OR CLR_CMAKE_HOST_ARCH_ARM64) + if (CLR_CMAKE_HOST_ARCH_ARM OR CLR_CMAKE_HOST_ARCH_ARM64 OR CLR_CMAKE_HOST_ARCH_LOONGARCH64) set(JUMP_INSTRUCTION b) else() set(JUMP_INSTRUCTION jmp) From b54fceaa20356c4a988b060c6b8650e75faa31ee Mon Sep 17 00:00:00 2001 From: qiaopengcheng Date: Tue, 11 Jan 2022 10:13:28 +0800 Subject: [PATCH 8/9] [LoongArch64] amend the message info and revert `toolchain.cmake` --- eng/common/cross/toolchain.cmake | 7 ++----- eng/native/functions.cmake | 2 +- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/eng/common/cross/toolchain.cmake b/eng/common/cross/toolchain.cmake index 0c11ca16c76a2d..f7878dddd39211 100644 --- a/eng/common/cross/toolchain.cmake +++ b/eng/common/cross/toolchain.cmake @@ -47,9 +47,6 @@ elseif(TARGET_ARCH_NAME STREQUAL "arm64") if(TIZEN) set(TIZEN_TOOLCHAIN "aarch64-tizen-linux-gnu/9.2.0") endif() -elseif(TARGET_ARCH_NAME STREQUAL "loongarch64") - set(CMAKE_SYSTEM_PROCESSOR loongarch64) - set(TOOLCHAIN "loongarch64-linux-gnu") elseif(TARGET_ARCH_NAME STREQUAL "s390x") set(CMAKE_SYSTEM_PROCESSOR s390x) set(TOOLCHAIN "s390x-linux-gnu") @@ -63,7 +60,7 @@ elseif (ILLUMOS) set(CMAKE_SYSTEM_PROCESSOR "x86_64") set(TOOLCHAIN "x86_64-illumos") else() - message(FATAL_ERROR "Arch is ${TARGET_ARCH_NAME}. Only armel, arm, arm64, loongarch64, s390x and x86 are supported!") + message(FATAL_ERROR "Arch is ${TARGET_ARCH_NAME}. Only armel, arm, arm64, s390x and x86 are supported!") endif() if(DEFINED ENV{TOOLCHAIN}) @@ -197,7 +194,7 @@ endif() # Specify compile options -if((TARGET_ARCH_NAME MATCHES "^(arm|armel|arm64|s390x|loongarch64)$" AND NOT ANDROID) OR ILLUMOS) +if((TARGET_ARCH_NAME MATCHES "^(arm|armel|arm64|s390x)$" AND NOT ANDROID) OR ILLUMOS) set(CMAKE_C_COMPILER_TARGET ${TOOLCHAIN}) set(CMAKE_CXX_COMPILER_TARGET ${TOOLCHAIN}) set(CMAKE_ASM_COMPILER_TARGET ${TOOLCHAIN}) diff --git a/eng/native/functions.cmake b/eng/native/functions.cmake index 07b142e34f7cdb..4e68a9be01e8c9 100644 --- a/eng/native/functions.cmake +++ b/eng/native/functions.cmake @@ -4,7 +4,7 @@ function(clr_unknown_arch) elseif(CLR_CROSS_COMPONENTS_BUILD) message(FATAL_ERROR "Only AMD64, I386 host are supported for linux cross-architecture component. Found: ${CMAKE_SYSTEM_PROCESSOR}") else() - message(FATAL_ERROR "Only AMD64, ARM64 , LOONGARCH64, and ARM are supported. Found: ${CMAKE_SYSTEM_PROCESSOR}") + message(FATAL_ERROR "Only AMD64, ARM64, LOONGARCH64 and ARM are supported. Found: ${CMAKE_SYSTEM_PROCESSOR}") endif() endfunction() From ae9b7af14acd6a545865491437e8d8b1274e12c7 Mon Sep 17 00:00:00 2001 From: qiaopengcheng Date: Tue, 11 Jan 2022 10:50:32 +0800 Subject: [PATCH 9/9] [LoongArch64] amend the order of LoongArch64. --- Directory.Build.props | 2 +- eng/native/build-commons.sh | 10 +++++----- eng/native/configurecompiler.cmake | 20 ++++++++++---------- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index c3a369613a9ef5..7c4038bb0120ac 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -31,8 +31,8 @@ arm armel arm64 - s390x loongarch64 + s390x wasm x64 x64 diff --git a/eng/native/build-commons.sh b/eng/native/build-commons.sh index 4dda3114d28bb1..373091b13a0014 100755 --- a/eng/native/build-commons.sh +++ b/eng/native/build-commons.sh @@ -197,7 +197,7 @@ usage() echo "" echo "Common Options:" echo "" - echo "BuildArch can be: -arm, -armel, -arm64, -s390x, -loongarch64, x64, x86, -wasm" + echo "BuildArch can be: -arm, -armel, -arm64, -loongarch64, -s390x, x64, x86, -wasm" echo "BuildType can be: -debug, -checked, -release" echo "-os: target OS (defaults to running OS)" echo "-bindir: output directory (defaults to $__ProjectRoot/artifacts)" @@ -377,14 +377,14 @@ while :; do __BuildArch=x64 ;; - s390x|-s390x) - __BuildArch=s390x - ;; - loongarch64|-loongarch64) __BuildArch=loongarch64 ;; + s390x|-s390x) + __BuildArch=s390x + ;; + wasm|-wasm) __BuildArch=wasm ;; diff --git a/eng/native/configurecompiler.cmake b/eng/native/configurecompiler.cmake index f2ceeb6962223e..fad1ac58d39c88 100644 --- a/eng/native/configurecompiler.cmake +++ b/eng/native/configurecompiler.cmake @@ -216,12 +216,12 @@ elseif (CLR_CMAKE_HOST_ARCH_ARM) elseif (CLR_CMAKE_HOST_ARCH_ARM64) set(ARCH_HOST_NAME arm64) add_definitions(-DHOST_ARM64 -DHOST_64BIT) -elseif (CLR_CMAKE_HOST_ARCH_S390X) - set(ARCH_HOST_NAME s390x) - add_definitions(-DHOST_S390X -DHOST_64BIT -DBIGENDIAN) elseif (CLR_CMAKE_HOST_ARCH_LOONGARCH64) set(ARCH_HOST_NAME loongarch64) add_definitions(-DHOST_LOONGARCH64 -DHOST_64BIT) +elseif (CLR_CMAKE_HOST_ARCH_S390X) + set(ARCH_HOST_NAME s390x) + add_definitions(-DHOST_S390X -DHOST_64BIT -DBIGENDIAN) elseif (CLR_CMAKE_HOST_ARCH_WASM) set(ARCH_HOST_NAME wasm) add_definitions(-DHOST_WASM -DHOST_32BIT=1) @@ -240,12 +240,12 @@ if (CLR_CMAKE_HOST_UNIX) message("Detected Linux ARM") elseif(CLR_CMAKE_HOST_UNIX_ARM64) message("Detected Linux ARM64") + elseif(CLR_CMAKE_HOST_UNIX_LOONGARCH64) + message("Detected Linux LOONGARCH64") elseif(CLR_CMAKE_HOST_UNIX_X86) message("Detected Linux i686") elseif(CLR_CMAKE_HOST_UNIX_S390X) message("Detected Linux s390x") - elseif(CLR_CMAKE_HOST_UNIX_LOONGARCH64) - message("Detected Linux LOONGARCH64") else() clr_unknown_arch() endif() @@ -306,16 +306,16 @@ elseif (CLR_CMAKE_TARGET_ARCH_I386) set(ARCH_SOURCES_DIR i386) add_compile_definitions($<$>>:TARGET_X86>) add_compile_definitions($<$>>:TARGET_32BIT>) -elseif (CLR_CMAKE_TARGET_ARCH_S390X) - set(ARCH_TARGET_NAME s390x) - set(ARCH_SOURCES_DIR s390x) - add_compile_definitions($<$>>:TARGET_S390X>) - add_compile_definitions($<$>>:TARGET_64BIT>) elseif (CLR_CMAKE_TARGET_ARCH_LOONGARCH64) set(ARCH_TARGET_NAME loongarch64) set(ARCH_SOURCES_DIR loongarch64) add_compile_definitions($<$>>:TARGET_LOONGARCH64>) add_compile_definitions($<$>>:TARGET_64BIT>) +elseif (CLR_CMAKE_TARGET_ARCH_S390X) + set(ARCH_TARGET_NAME s390x) + set(ARCH_SOURCES_DIR s390x) + add_compile_definitions($<$>>:TARGET_S390X>) + add_compile_definitions($<$>>:TARGET_64BIT>) elseif (CLR_CMAKE_TARGET_ARCH_WASM) set(ARCH_TARGET_NAME wasm) set(ARCH_SOURCES_DIR wasm)