mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 08:54:53 +00:00
Improve s390x CPU support (#25056)
TODO list, copied from the documentation: - [x] compiler/platform.nim Add os/cpu properties. - [x] lib/system.nim Add os/cpu to the documentation for system.hostOS and system.hostCPU. - [x] ~~compiler/options.nim Add special os/cpu property checks in isDefined.~~ seems unnecessary; isn't dont for most CPUs - [x] compiler/installer.ini Add os/cpu to Project.Platforms field. - [x] lib/system/platforms.nim Add os/cpu. - [x] ~~std/private/osseps.nim Add os specializations.~~ - [x] ~~lib/pure/distros.nim Add os, package handler.~~ - [x] ~~tools/niminst/makefile.nimf Add os/cpu compiler/linker flags.~~ already done in https://github.com/nim-lang/Nim/pull/20943 - [x] tools/niminst/buildsh.nimf Add os/cpu compiler/linker flags. For csource: - [x] have compiler/platform.nim updated - [x] have compiler/installer.ini updated - [x] have tools/niminst/buildsh.nimf updated - [x] have tools/niminst/makefile.nimf updated - [ ] be backported to the Nim version used by the csources - [ ] the new csources must be pushed - [ ] the new csources revision must be updated in config/build_config.txt Additionally: - [x] check relation to https://github.com/nim-lang/Nim/pull/20943 Possible future work: - Porting Nim to s390x-specific operating systems, notably z/OS Co-authored-by: ringabout <43030857+ringabout@users.noreply.github.com>
This commit is contained in:
@@ -6,7 +6,7 @@ Name: "Nim"
|
||||
Version: "$version"
|
||||
Platforms: """
|
||||
windows: i386;amd64
|
||||
linux: i386;hppa;ia64;alpha;amd64;powerpc64;arm;sparc;sparc64;m68k;mips;mipsel;mips64;mips64el;powerpc;powerpc64el;arm64;riscv32;riscv64;loongarch64
|
||||
linux: i386;hppa;ia64;alpha;amd64;powerpc64;arm;sparc;sparc64;s390x;m68k;mips;mipsel;mips64;mips64el;powerpc;powerpc64el;arm64;riscv32;riscv64;loongarch64
|
||||
macosx: i386;amd64;powerpc64;arm64
|
||||
solaris: i386;amd64;sparc;sparc64
|
||||
freebsd: i386;amd64;powerpc64;arm;arm64;riscv64;sparc64;mips;mipsel;mips64;mips64el;powerpc;powerpc64el
|
||||
|
||||
@@ -210,8 +210,8 @@ type
|
||||
cpuNone, cpuI386, cpuM68k, cpuAlpha, cpuPowerpc, cpuPowerpc64,
|
||||
cpuPowerpc64el, cpuSparc, cpuVm, cpuHppa, cpuIa64, cpuAmd64, cpuMips,
|
||||
cpuMipsel, cpuArm, cpuArm64, cpuJS, cpuNimVM, cpuAVR, cpuMSP430,
|
||||
cpuSparc64, cpuMips64, cpuMips64el, cpuRiscV32, cpuRiscV64, cpuEsp, cpuWasm32,
|
||||
cpuE2k, cpuLoongArch64
|
||||
cpuSparc64, cpuS390x, cpuMips64, cpuMips64el, cpuRiscV32, cpuRiscV64,
|
||||
cpuEsp, cpuWasm32, cpuE2k, cpuLoongArch64
|
||||
|
||||
type
|
||||
TInfoCPU* = tuple[name: string, intSize: int, endian: Endianness,
|
||||
@@ -241,6 +241,7 @@ const
|
||||
(name: "avr", intSize: 16, endian: littleEndian, floatSize: 32, bit: 16),
|
||||
(name: "msp430", intSize: 16, endian: littleEndian, floatSize: 32, bit: 16),
|
||||
(name: "sparc64", intSize: 64, endian: bigEndian, floatSize: 64, bit: 64),
|
||||
(name: "s390x", intSize: 64, endian: bigEndian, floatSize: 64, bit: 64),
|
||||
(name: "mips64", intSize: 64, endian: bigEndian, floatSize: 64, bit: 64),
|
||||
(name: "mips64el", intSize: 64, endian: littleEndian, floatSize: 64, bit: 64),
|
||||
(name: "riscv32", intSize: 32, endian: littleEndian, floatSize: 64, bit: 32),
|
||||
|
||||
@@ -1069,7 +1069,8 @@ const
|
||||
## Possible values:
|
||||
## `"i386"`, `"alpha"`, `"powerpc"`, `"powerpc64"`, `"powerpc64el"`,
|
||||
## `"sparc"`, `"amd64"`, `"mips"`, `"mipsel"`, `"arm"`, `"arm64"`,
|
||||
## `"mips64"`, `"mips64el"`, `"riscv32"`, `"riscv64"`, `"loongarch64"`.
|
||||
## `"mips64"`, `"mips64el"`, `"riscv32"`, `"riscv64"`, `"loongarch64"`,
|
||||
## `"s390x"`.
|
||||
|
||||
seqShallowFlag = low(int)
|
||||
strlitFlag = 1 shl (sizeof(int)*8 - 2) # later versions of the codegen \
|
||||
|
||||
@@ -78,7 +78,7 @@ _nim() {
|
||||
'--opt\:-[optimization mode]:x:(none speed size)'
|
||||
'--debugger\:native[use native debugger (gdb)]'
|
||||
'--app\:-[generate this type of app (lib=dynamic)]:x:(console gui lib staticlib)'
|
||||
'--cpu\:-[target architecture]:x:(alpha amd64 arm arm64 avr e2k esp hppa i386 ia64 js loongarch64 m68k mips mipsel mips64 mips64el msp430 nimvm powerpc powerpc64 powerpc64el riscv32 riscv64 sparc sparc64 vm wasm32)'
|
||||
'--cpu\:-[target architecture]:x:(alpha amd64 arm arm64 avr e2k esp hppa i386 ia64 js loongarch64 m68k mips mipsel mips64 mips64el msp430 nimvm powerpc powerpc64 powerpc64el riscv32 riscv64 sparc sparc64 s390x vm wasm32)'
|
||||
'--gc\:-[memory management algorithm to use (default\: refc)]:x:(refc arc orc markAndSweep boehm go regions none)'
|
||||
'--os\:-[operating system to compile for]:x:(AIX Amiga Android Any Atari DOS DragonFly FreeBSD FreeRTOS Genode Haiku iOS Irix JS Linux MacOS MacOSX MorphOS NetBSD Netware NimVM NintendoSwitch OS2 OpenBSD PalmOS Standalone QNX SkyOS Solaris VxWorks Windows)'
|
||||
'--panics\:-[turn panics into process termination (default\: off)]:x:(off on)'
|
||||
|
||||
@@ -183,6 +183,8 @@ case $ucpu in
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
*s390x* )
|
||||
mycpu="s390x" ;;
|
||||
*ppc64le* )
|
||||
mycpu="powerpc64el" ;;
|
||||
*ppc64* )
|
||||
|
||||
Reference in New Issue
Block a user