diff --git a/buildSrc/src/main/java/gradlebuild/JniPlugin.java b/buildSrc/src/main/java/gradlebuild/JniPlugin.java index 43ecad1d..d2b9b794 100644 --- a/buildSrc/src/main/java/gradlebuild/JniPlugin.java +++ b/buildSrc/src/main/java/gradlebuild/JniPlugin.java @@ -254,6 +254,7 @@ void createPlatforms(PlatformContainer platformContainer) { addPlatform(platformContainer, "linux_amd64", "linux", "amd64"); addPlatform(platformContainer, "linux_aarch64", "linux", "aarch64"); addPlatform(platformContainer, "linux_riscv64", "linux", "riscv64"); + addPlatform(platformContainer, "linux_e2k", "linux", "e2k"); addPlatform(platformContainer, "windows_i386", "windows", "i386"); addPlatform(platformContainer, "windows_amd64", "windows", "amd64"); addPlatform(platformContainer, "windows_aarch64", "windows", "aarch64"); @@ -270,6 +271,7 @@ void createToolChains(NativeToolChainRegistry toolChainRegistry) { // 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_riscv64"); + toolChain.target("linux_e2k"); }); } if (toolChainRegistry.stream().noneMatch(toolChain -> toolChain.getName().equals("clang"))) { diff --git a/buildSrc/src/main/java/gradlebuild/NcursesPlugin.java b/buildSrc/src/main/java/gradlebuild/NcursesPlugin.java index 8ab93565..5126c55d 100644 --- a/buildSrc/src/main/java/gradlebuild/NcursesPlugin.java +++ b/buildSrc/src/main/java/gradlebuild/NcursesPlugin.java @@ -30,7 +30,8 @@ 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", "/lib/riscv64-linux-gnu", "/usr/lib")) { + + for (String d : ImmutableList.of("/lib", "/lib64", "/lib/x86_64-linux-gnu", "/lib/aarch64-linux-gnu", "/lib/riscv64-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")); @@ -54,6 +55,8 @@ public class NcursesPlugin extends RuleSource { addPlatform(platformContainer, "linux_aarch64_ncurses6", "linux", "aarch64"); addPlatform(platformContainer, "linux_riscv64_ncurses5", "linux", "riscv64"); addPlatform(platformContainer, "linux_riscv64_ncurses6", "linux", "riscv64"); + addPlatform(platformContainer, "linux_e2k_ncurses5", "linux", "e2k"); + addPlatform(platformContainer, "linux_e2k_ncurses6", "linux", "e2k"); } @Mutate void configureBinaries(@Each NativeBinarySpecInternal binarySpec, Collection ncursesVersions) { @@ -84,6 +87,8 @@ private boolean isNcursesVersion(NativePlatform targetPlatform, NcursesVersion n toolChain.target("linux_aarch64_ncurses6"); toolChain.target("linux_riscv64_ncurses5"); toolChain.target("linux_riscv64_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 d8c8f7d0..8306062d 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, riscv64} + enum Architecture { i386, amd64, aarch64, riscv64, 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 b937a096..91b8068a 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 @@ -64,6 +64,9 @@ public Architecture getArchitecture() { if (machineArchitecture.equals("riscv64")) { return Architecture.riscv64; } + 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 df318402..d95c9855 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 @@ -64,6 +64,8 @@ public static Platform current() { platform = new LinuxAarch64(); } else if (arch.equals("riscv64")) { platform = new LinuxRiscv64(); + } else if (arch.equals("e2k")) { + platform = new LinuxE2K(); } } else if (osName.contains("os x") || osName.contains("darwin")) { if (arch.equals("i386")) { @@ -315,6 +317,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() {