Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dotnet/runtime.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/eng
diff options
context:
space:
mode:
authorAdeel Mujahid <3840695+am11@users.noreply.github.com>2022-08-05 02:08:01 +0300
committerGitHub <noreply@github.com>2022-08-05 02:08:01 +0300
commit56095347ca1bacbc7a95e468f03f02ea808b9d9b (patch)
tree5859fdac22bdf82fa1876bf051ce175e0a766d41 /eng
parentfda46bec93b80b3cbaddbeec825fb78e9559243a (diff)
Add initial riscv64 port (#73385)
Diffstat (limited to 'eng')
-rwxr-xr-xeng/build.sh6
-rwxr-xr-xeng/native/build-commons.sh6
-rw-r--r--eng/native/configurecompiler.cmake20
-rw-r--r--eng/native/configureplatform.cmake33
-rw-r--r--eng/native/functions.cmake6
-rw-r--r--eng/native/init-os-and-arch.sh4
-rw-r--r--eng/native/tryrun.cmake4
7 files changed, 55 insertions, 24 deletions
diff --git a/eng/build.sh b/eng/build.sh
index 91ea9dbd478..84a4fd746c9 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, armv6, armel, arm64, loongarch64, s390x, ppc64le or wasm."
+ echo " --arch (-a) Target platform: x86, x64, arm, armv6, armel, arm64, loongarch64, riscv64, s390x, ppc64le 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|armv6|armel|arm64|loongarch64|s390x|ppc64le|wasm)
+ x64|x86|arm|armv6|armel|arm64|loongarch64|riscv64|s390x|ppc64le|wasm)
arch=$passedArch
;;
*)
echo "Unsupported target architecture '$2'."
- echo "The allowed values are x86, x64, arm, armv6, armel, arm64, loongarch64, s390x, ppc64le and wasm."
+ echo "The allowed values are x86, x64, arm, armv6, armel, arm64, loongarch64, riscv64, s390x, ppc64le and wasm."
exit 1
;;
esac
diff --git a/eng/native/build-commons.sh b/eng/native/build-commons.sh
index 3f05aef7f53..4199828f297 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, -armv6, -armel, -arm64, -loongarch64, -s390x, -ppc64le, x64, x86, -wasm"
+ echo "BuildArch can be: -arm, -armv6, -armel, -arm64, -loongarch64, -riscv64, -s390x, -ppc64le, 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)"
@@ -384,6 +384,10 @@ while :; do
__TargetArch=loongarch64
;;
+ riscv64|-riscv64)
+ __TargetArch=riscv64
+ ;;
+
s390x|-s390x)
__TargetArch=s390x
;;
diff --git a/eng/native/configurecompiler.cmake b/eng/native/configurecompiler.cmake
index 551a2dc7f2a..0642fccae90 100644
--- a/eng/native/configurecompiler.cmake
+++ b/eng/native/configurecompiler.cmake
@@ -227,6 +227,9 @@ elseif (CLR_CMAKE_HOST_ARCH_ARM64)
elseif (CLR_CMAKE_HOST_ARCH_LOONGARCH64)
set(ARCH_HOST_NAME loongarch64)
add_definitions(-DHOST_LOONGARCH64 -DHOST_64BIT)
+elseif (CLR_CMAKE_HOST_ARCH_RISCV64)
+ set(ARCH_HOST_NAME riscv64)
+ add_definitions(-DHOST_RISCV64 -DHOST_64BIT)
elseif (CLR_CMAKE_HOST_ARCH_S390X)
set(ARCH_HOST_NAME s390x)
add_definitions(-DHOST_S390X -DHOST_64BIT -DBIGENDIAN)
@@ -238,7 +241,7 @@ elseif (CLR_CMAKE_HOST_ARCH_MIPS64)
add_definitions(-DHOST_MIPS64 -DHOST_64BIT=1)
elseif (CLR_CMAKE_HOST_ARCH_POWERPC64)
set(ARCH_HOST_NAME ppc64le)
- add_definitions(-DHOST_POWERPC64 -DHOST_64BIT)
+ add_definitions(-DHOST_POWERPC64 -DHOST_64BIT)
else ()
clr_unknown_arch()
endif ()
@@ -248,13 +251,15 @@ if (CLR_CMAKE_HOST_UNIX)
if(CLR_CMAKE_HOST_UNIX_AMD64)
message("Detected Linux x86_64")
elseif(CLR_CMAKE_HOST_UNIX_ARM)
- message("Detected Linux ARM")
+ message("Detected Linux arm")
elseif(CLR_CMAKE_HOST_UNIX_ARMV6)
- message("Detected Linux ARMv6")
+ message("Detected Linux armv6")
elseif(CLR_CMAKE_HOST_UNIX_ARM64)
- message("Detected Linux ARM64")
+ message("Detected Linux arm64")
elseif(CLR_CMAKE_HOST_UNIX_LOONGARCH64)
- message("Detected Linux LOONGARCH64")
+ message("Detected Linux loongarch64")
+ elseif(CLR_CMAKE_HOST_UNIX_RISCV64)
+ message("Detected Linux riscv64")
elseif(CLR_CMAKE_HOST_UNIX_X86)
message("Detected Linux i686")
elseif(CLR_CMAKE_HOST_UNIX_S390X)
@@ -332,6 +337,11 @@ elseif (CLR_CMAKE_TARGET_ARCH_LOONGARCH64)
set(ARCH_SOURCES_DIR loongarch64)
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_ARCH>>>:TARGET_LOONGARCH64>)
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_ARCH>>>:TARGET_64BIT>)
+elseif (CLR_CMAKE_TARGET_ARCH_RISCV64)
+ set(ARCH_TARGET_NAME riscv64)
+ set(ARCH_SOURCES_DIR riscv64)
+ add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_ARCH>>>:TARGET_RISCV64>)
+ add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_ARCH>>>:TARGET_64BIT>)
elseif (CLR_CMAKE_TARGET_ARCH_S390X)
set(ARCH_TARGET_NAME s390x)
set(ARCH_SOURCES_DIR s390x)
diff --git a/eng/native/configureplatform.cmake b/eng/native/configureplatform.cmake
index 315aa480c69..c7a38c3eee8 100644
--- a/eng/native/configureplatform.cmake
+++ b/eng/native/configureplatform.cmake
@@ -45,8 +45,10 @@ if(CLR_CMAKE_HOST_OS STREQUAL Linux)
set(CLR_CMAKE_HOST_UNIX_ARMV6 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)
+ elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL loongarch64)
set(CLR_CMAKE_HOST_UNIX_LOONGARCH64 1)
+ elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL riscv64)
+ set(CLR_CMAKE_HOST_UNIX_RISCV64 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)
@@ -243,6 +245,9 @@ elseif(CLR_CMAKE_HOST_UNIX_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_RISCV64)
+ set(CLR_CMAKE_HOST_ARCH_RISCV64 1)
+ set(CLR_CMAKE_HOST_ARCH "riscv64")
elseif(CLR_CMAKE_HOST_UNIX_AMD64)
set(CLR_CMAKE_HOST_ARCH_AMD64 1)
set(CLR_CMAKE_HOST_ARCH "x64")
@@ -292,29 +297,31 @@ endif()
# Set target architecture variables
if (CLR_CMAKE_TARGET_ARCH STREQUAL x64)
set(CLR_CMAKE_TARGET_ARCH_AMD64 1)
- elseif(CLR_CMAKE_TARGET_ARCH STREQUAL x86)
+elseif(CLR_CMAKE_TARGET_ARCH STREQUAL x86)
set(CLR_CMAKE_TARGET_ARCH_I386 1)
- elseif(CLR_CMAKE_TARGET_ARCH STREQUAL arm64)
+elseif(CLR_CMAKE_TARGET_ARCH STREQUAL arm64)
set(CLR_CMAKE_TARGET_ARCH_ARM64 1)
- elseif(CLR_CMAKE_TARGET_ARCH STREQUAL loongarch64)
+elseif(CLR_CMAKE_TARGET_ARCH STREQUAL loongarch64)
set(CLR_CMAKE_TARGET_ARCH_LOONGARCH64 1)
- elseif(CLR_CMAKE_TARGET_ARCH STREQUAL arm)
+elseif(CLR_CMAKE_TARGET_ARCH STREQUAL riscv64)
+ set(CLR_CMAKE_TARGET_ARCH_RISCV64 1)
+elseif(CLR_CMAKE_TARGET_ARCH STREQUAL arm)
set(CLR_CMAKE_TARGET_ARCH_ARM 1)
- elseif(CLR_CMAKE_TARGET_ARCH STREQUAL armv6)
+elseif(CLR_CMAKE_TARGET_ARCH STREQUAL armv6)
set(CLR_CMAKE_TARGET_ARCH_ARMV6 1)
- elseif(CLR_CMAKE_TARGET_ARCH STREQUAL armel)
+elseif(CLR_CMAKE_TARGET_ARCH STREQUAL armel)
set(CLR_CMAKE_TARGET_ARCH_ARM 1)
set(CLR_CMAKE_TARGET_ARCH_ARMV7L 1)
set(ARM_SOFTFP 1)
- elseif(CLR_CMAKE_TARGET_ARCH STREQUAL s390x)
+elseif(CLR_CMAKE_TARGET_ARCH STREQUAL s390x)
set(CLR_CMAKE_TARGET_ARCH_S390X 1)
- elseif(CLR_CMAKE_TARGET_ARCH STREQUAL ppc64le)
+elseif(CLR_CMAKE_TARGET_ARCH STREQUAL ppc64le)
set(CLR_CMAKE_TARGET_ARCH_POWERPC64 1)
- elseif(CLR_CMAKE_TARGET_ARCH STREQUAL wasm)
+elseif(CLR_CMAKE_TARGET_ARCH STREQUAL wasm)
set(CLR_CMAKE_TARGET_ARCH_WASM 1)
- elseif(CLR_CMAKE_TARGET_ARCH STREQUAL mips64)
+elseif(CLR_CMAKE_TARGET_ARCH STREQUAL mips64)
set(CLR_CMAKE_TARGET_ARCH_MIPS64 1)
- else()
+else()
clr_unknown_arch()
endif()
@@ -416,6 +423,8 @@ if(CLR_CMAKE_TARGET_UNIX)
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 riscv64)
+ set(CLR_CMAKE_TARGET_UNIX_RISCV64 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 8c497259ad2..efb36de6e48 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, ARMV6, ARM64, LOONGARCH64 and ARM are supported. Found: ${CMAKE_SYSTEM_PROCESSOR}")
+ message(FATAL_ERROR "'${CMAKE_SYSTEM_PROCESSOR}' is an unsupported architecture.")
endif()
endfunction()
@@ -167,6 +167,10 @@ function(find_unwind_libs UnwindLibs)
find_library(UNWIND_ARCH NAMES unwind-loongarch64)
endif()
+ if(CLR_CMAKE_HOST_ARCH_RISCV64)
+ find_library(UNWIND_ARCH NAMES unwind-riscv64)
+ 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 ded32e3f755..887bb3b72f7 100644
--- a/eng/native/init-os-and-arch.sh
+++ b/eng/native/init-os-and-arch.sh
@@ -41,6 +41,10 @@ case "$CPUName" in
arch=loongarch64
;;
+ riscv64)
+ arch=riscv64
+ ;;
+
amd64|x86_64)
arch=x64
;;
diff --git a/eng/native/tryrun.cmake b/eng/native/tryrun.cmake
index c491422ae7b..5c5344bd801 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|armv6|arm64|loongarch64|s390x|ppc64le|x86)$" OR FREEBSD OR ILLUMOS)
+elseif(TARGET_ARCH_NAME MATCHES "^(armel|arm|armv6|arm64|loongarch64|riscv64|s390x|ppc64le|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)
@@ -149,6 +149,6 @@ else()
message(FATAL_ERROR "Arch is ${TARGET_ARCH_NAME}. Only armel, arm, armv6, arm64, loongarch64, s390x, ppc64le and x86 are supported!")
endif()
-if(TARGET_ARCH_NAME STREQUAL "x86" OR TARGET_ARCH_NAME STREQUAL "s390x" OR TARGET_ARCH_NAME STREQUAL "armv6" OR TARGET_ARCH_NAME STREQUAL "loongarch64" OR TARGET_ARCH_NAME STREQUAL "ppc64le")
+if(TARGET_ARCH_NAME MATCHES "^(x86|s390x|armv6|loongarch64|riscv64|ppc64le)$")
set_cache_value(HAVE_FUNCTIONAL_PTHREAD_ROBUST_MUTEXES_EXITCODE 0)
endif()