From 6b7b045b2b90cff8099879d768a37a3725b33c0f Mon Sep 17 00:00:00 2001 From: Zhao Yang Date: Mon, 8 Apr 2024 10:13:14 +0800 Subject: [PATCH] Add support for Linux aarch64 - add gcc target for linux-aarch64 - for linux, build only current architecture --- build.gradle | 6 +++++- openjdk-uber/build.gradle | 2 +- openjdk/build.gradle | 11 +++++++++-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index 9d90d6a51..2fb5e1efd 100644 --- a/build.gradle +++ b/build.gradle @@ -62,7 +62,11 @@ subprojects { } } } - gcc(Gcc) + gcc(Gcc) { + target("linux_aarch64") { + cppCompiler.executable = "/usr/bin/gcc" + } + } } } } diff --git a/openjdk-uber/build.gradle b/openjdk-uber/build.gradle index cc6851fdc..0f54c775d 100644 --- a/openjdk-uber/build.gradle +++ b/openjdk-uber/build.gradle @@ -3,7 +3,7 @@ description = 'Conscrypt: OpenJdk UberJAR' ext { buildUberJar = Boolean.parseBoolean(System.getProperty('org.conscrypt.openjdk.buildUberJar', 'false')) uberJarClassifiers = (System.getProperty('org.conscrypt.openjdk.uberJarClassifiers', - 'osx-x86_64,osx-aarch_64,linux-x86_64,windows-x86_64')).split(',') + 'osx-x86_64,osx-aarch_64,linux-x86_64,linux-aarch_64,windows-x86_64')).split(',') classesDir = "${buildDir}/classes" resourcesDir = "${buildDir}/resources" sourcesDir = "${buildDir}/sources" diff --git a/openjdk/build.gradle b/openjdk/build.gradle index cda93c34d..2c8f21ad6 100644 --- a/openjdk/build.gradle +++ b/openjdk/build.gradle @@ -22,6 +22,7 @@ description = 'Conscrypt: OpenJdk' enum NativeBuildInfo { WINDOWS_X86_64("windows", "x86_64"), LINUX_X86_64("linux", "x86_64"), + LINUX_AARCH64("linux", "aarch_64"), MAC_X86_64("osx", "x86_64") { String libDir() { "build.x86" @@ -116,8 +117,14 @@ ext { jniSourceDir = "$rootDir/common/src/jni" assert file("$jniSourceDir").exists() - // Decide which targets we should build and test - nativeBuilds = NativeBuildInfo.findAll("${osdetector.os}") + // Decide which targets we should build and test: + // - if osx, build both x86 and aarch64 + // - if linux, build current architecture because it doesn't support cross-compilation + if ("${osdetector.os}" == "osx") { + nativeBuilds = NativeBuildInfo.findAll("${osdetector.os}") + } else { + nativeBuilds = [NativeBuildInfo.find("${osdetector.os}", "${osdetector.arch}")] + } buildToTest = NativeBuildInfo.find("${osdetector.os}", "${osdetector.arch}") assert !nativeBuilds.isEmpty() : "No native builds selected."