diff --git a/build.gradle b/build.gradle index f7936e2d..bf2b2a4a 100755 --- a/build.gradle +++ b/build.gradle @@ -107,6 +107,14 @@ model { architecture "amd64" operatingSystem "linux" } + linux_s390x { + architecture "s390x" + operatingSystem "linux" + } + linux_s390 { + architecture "s390" + operatingSystem "linux" + } windows_i386 { architecture "i386" operatingSystem "windows" @@ -258,7 +266,7 @@ mainPom.scopeMappings.mappings.clear() mainPom.withXml { provider -> def node = provider.asNode() def deps = node.appendNode('dependencies') - ['osx-i386', 'osx-amd64', 'linux-amd64', 'linux-i386', + ['osx-i386', 'osx-amd64', 'linux-amd64', 'linux-i386', 'linux-s390x', 'linux-s390', 'windows-amd64', 'windows-i386', 'freebsd-i386', 'freebsd-amd64'].each { platform -> def dep = deps.appendNode('dependency') dep.appendNode('groupId', project.group) diff --git a/src/main/java/net/rubygrapefruit/platform/SystemInfo.java b/src/main/java/net/rubygrapefruit/platform/SystemInfo.java index 393ecc53..93c559ec 100644 --- a/src/main/java/net/rubygrapefruit/platform/SystemInfo.java +++ b/src/main/java/net/rubygrapefruit/platform/SystemInfo.java @@ -21,7 +21,7 @@ */ @ThreadSafe public interface SystemInfo extends NativeIntegration { - enum Architecture { i386, amd64 } + enum Architecture { i386, amd64, s390, s390x } /** * Returns the name of the kernel for the current operating system. diff --git a/src/main/java/net/rubygrapefruit/platform/internal/MutableSystemInfo.java b/src/main/java/net/rubygrapefruit/platform/internal/MutableSystemInfo.java index 2c1e51e9..2d49f178 100755 --- a/src/main/java/net/rubygrapefruit/platform/internal/MutableSystemInfo.java +++ b/src/main/java/net/rubygrapefruit/platform/internal/MutableSystemInfo.java @@ -44,6 +44,12 @@ public Architecture getArchitecture() { if (machineArchitecture.equals("i386") || machineArchitecture.equals("x86") || machineArchitecture.equals("i686")) { return Architecture.i386; } + if (machineArchitecture.equals("s390x")) { + return Architecture.s390x; + } + if (machineArchitecture.equals("s390")) { + return Architecture.s390; + } throw new NativeException(String.format("Cannot determine architecture from kernel architecture name '%s'.", machineArchitecture)); } diff --git a/src/main/java/net/rubygrapefruit/platform/internal/Platform.java b/src/main/java/net/rubygrapefruit/platform/internal/Platform.java index 75a53d66..6247b048 100755 --- a/src/main/java/net/rubygrapefruit/platform/internal/Platform.java +++ b/src/main/java/net/rubygrapefruit/platform/internal/Platform.java @@ -41,6 +41,10 @@ public static Platform current() { platform = new Linux64Bit(); } else if (arch.equals("i386") || arch.equals("x86")) { platform = new Linux32Bit(); + } else if (arch.equals("s390x")) { + platform = new LinuxZ64Bit(); + } else if (arch.equals("s390")) { + platform = new LinuxZ32Bit(); } } else if (osName.contains("os x") || osName.contains("darwin")) { if (arch.equals("i386")) { @@ -251,6 +255,20 @@ public String getId() { } } + private static class LinuxZ32Bit extends Linux { + @Override + public String getId() { + return "linux-s390"; + } + } + + private static class LinuxZ64Bit extends Linux { + @Override + public String getId() { + return "linux-s390x"; + } + } + private static class FreeBSD32Bit extends Unix { @Override public String getId() {