From 8b7080ce229da0f26c093720fa153292c8ecfe51 Mon Sep 17 00:00:00 2001 From: r-a-sattarov Date: Tue, 5 Aug 2025 10:49:08 +0300 Subject: [PATCH] Added e2k architecture definition Signed-off-by: r-a-sattarov --- buildSrc/src/main/java/gradlebuild/JniPlugin.java | 2 ++ buildSrc/src/main/java/gradlebuild/NcursesPlugin.java | 6 +++++- .../java/net/rubygrapefruit/platform/SystemInfo.java | 2 +- .../platform/internal/MutableSystemInfo.java | 3 +++ .../net/rubygrapefruit/platform/internal/Platform.java | 9 +++++++++ 5 files changed, 20 insertions(+), 2 deletions(-) diff --git a/buildSrc/src/main/java/gradlebuild/JniPlugin.java b/buildSrc/src/main/java/gradlebuild/JniPlugin.java index 20acc446c..effd7d7d2 100644 --- a/buildSrc/src/main/java/gradlebuild/JniPlugin.java +++ b/buildSrc/src/main/java/gradlebuild/JniPlugin.java @@ -253,6 +253,7 @@ void createPlatforms(PlatformContainer platformContainer) { addPlatform(platformContainer, "osx_aarch64", "osx", "aarch64"); addPlatform(platformContainer, "linux_amd64", "linux", "amd64"); addPlatform(platformContainer, "linux_aarch64", "linux", "aarch64"); + addPlatform(platformContainer, "linux_e2k", "linux", "e2k"); addPlatform(platformContainer, "windows_i386", "windows", "i386"); addPlatform(platformContainer, "windows_amd64", "windows", "amd64"); addPlatform(platformContainer, "windows_i386_min", "windows", "i386"); @@ -264,6 +265,7 @@ void createPlatforms(PlatformContainer platformContainer) { // The core Gradle toolchain for gcc only targets x86 and x86_64 out of the box. // https://github.com/gradle/gradle/blob/36614ee523e5906ddfa1fed9a5dc00a5addac1b0/subprojects/platform-native/src/main/java/org/gradle/nativeplatform/toolchain/internal/gcc/AbstractGccCompatibleToolChain.java toolChain.target("linux_aarch64"); + toolChain.target("linux_e2k"); }); toolChainRegistry.create("clang", Clang.class, toolChain -> { // The core Gradle toolchain for Clang only targets x86 and x86_64 out of the box. diff --git a/buildSrc/src/main/java/gradlebuild/NcursesPlugin.java b/buildSrc/src/main/java/gradlebuild/NcursesPlugin.java index ec219d83e..1c775c4a4 100644 --- a/buildSrc/src/main/java/gradlebuild/NcursesPlugin.java +++ b/buildSrc/src/main/java/gradlebuild/NcursesPlugin.java @@ -30,7 +30,7 @@ public class NcursesPlugin extends RuleSource { if (!os.isLinux()) { builder.add(NCURSES_5); } else { - for (String d : ImmutableList.of("/lib", "/lib64", "/lib/x86_64-linux-gnu", "/lib/aarch64-linux-gnu", "/usr/lib")) { + for (String d : ImmutableList.of("/lib", "/lib64", "/lib/x86_64-linux-gnu", "/lib/aarch64-linux-gnu", "/lib/e2k-linux-gnu", "/usr/lib")) { File libDir = new File(d); if (new File(libDir, "libncurses.so.6").isFile() || new File(libDir, "libncursesw.so.6").isFile()) { builder.add(new NcursesVersion("6")); @@ -52,6 +52,8 @@ public class NcursesPlugin extends RuleSource { addPlatform(platformContainer, "linux_amd64_ncurses6", "linux", "amd64"); addPlatform(platformContainer, "linux_aarch64_ncurses5", "linux", "aarch64"); addPlatform(platformContainer, "linux_aarch64_ncurses6", "linux", "aarch64"); + addPlatform(platformContainer, "linux_e2k_ncurses5", "linux", "e2k"); + addPlatform(platformContainer, "linux_e2k_ncurses6", "linux", "e2k"); } @Mutate void configureBinaries(@Each NativeBinarySpecInternal binarySpec, Collection ncursesVersions) { @@ -80,6 +82,8 @@ private boolean isNcursesVersion(NativePlatform targetPlatform, NcursesVersion n // https://github.com/gradle/gradle/blob/36614ee523e5906ddfa1fed9a5dc00a5addac1b0/subprojects/platform-native/src/main/java/org/gradle/nativeplatform/toolchain/internal/gcc/AbstractGccCompatibleToolChain.java toolChain.target("linux_aarch64_ncurses5"); toolChain.target("linux_aarch64_ncurses6"); + toolChain.target("linux_e2k_ncurses5"); + toolChain.target("linux_e2k_ncurses6"); }); } diff --git a/native-platform/src/main/java/net/rubygrapefruit/platform/SystemInfo.java b/native-platform/src/main/java/net/rubygrapefruit/platform/SystemInfo.java index 20a9b71b2..cac13f601 100644 --- a/native-platform/src/main/java/net/rubygrapefruit/platform/SystemInfo.java +++ b/native-platform/src/main/java/net/rubygrapefruit/platform/SystemInfo.java @@ -21,7 +21,7 @@ */ @ThreadSafe public interface SystemInfo extends NativeIntegration { - enum Architecture { i386, amd64, aarch64 } + enum Architecture { i386, amd64, aarch64, e2k } /** * Returns the name of the kernel for the current operating system. diff --git a/native-platform/src/main/java/net/rubygrapefruit/platform/internal/MutableSystemInfo.java b/native-platform/src/main/java/net/rubygrapefruit/platform/internal/MutableSystemInfo.java index 460b32c54..06d1664ed 100644 --- a/native-platform/src/main/java/net/rubygrapefruit/platform/internal/MutableSystemInfo.java +++ b/native-platform/src/main/java/net/rubygrapefruit/platform/internal/MutableSystemInfo.java @@ -62,6 +62,9 @@ public Architecture getArchitecture() { if (machineArchitecture.equals("aarch64") || machineArchitecture.equals("arm64")) { return Architecture.aarch64; } + if (machineArchitecture.equals("e2k")) { + return Architecture.e2k; + } throw new NativeException(String.format("Cannot determine architecture from kernel architecture name '%s'.", machineArchitecture)); } diff --git a/native-platform/src/main/java/net/rubygrapefruit/platform/internal/Platform.java b/native-platform/src/main/java/net/rubygrapefruit/platform/internal/Platform.java index 81c1db76c..ff1509678 100644 --- a/native-platform/src/main/java/net/rubygrapefruit/platform/internal/Platform.java +++ b/native-platform/src/main/java/net/rubygrapefruit/platform/internal/Platform.java @@ -62,6 +62,8 @@ public static Platform current() { platform = new Linux32Bit(); } else if (arch.equals("aarch64")) { platform = new LinuxAarch64(); + } else if (arch.equals("e2k")) { + platform = new LinuxE2K(); } } else if (osName.contains("os x") || osName.contains("darwin")) { if (arch.equals("i386")) { @@ -306,6 +308,13 @@ public String getId() { } } + private static class LinuxE2K extends Linux { + @Override + public String getId() { + return "linux-e2k"; + } + } + private abstract static class FreeBSD extends Unix { @Override public List getLibraryVariants() {