Merge RP1A.200221.003
Change-Id: I3b81a8d530b1de4dcdbda317a4a56dad76680307
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..2185c83
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,15 @@
+FROM gcr.io/cloud-builders/gradle:5.6.2-jdk-8
+
+RUN apt-get update
+RUN apt-get install -y curl
+RUN apt-get install -y ninja-build
+RUN apt-get install -y python3-pip
+RUN pip3 install meson
+RUN curl -o ndk.zip \
+ https://dl.google.com/android/repository/android-ndk-r20b-linux-x86_64.zip
+RUN unzip ndk.zip
+RUN mv android-ndk-r20b /ndk
+
+WORKDIR /src
+ENTRYPOINT ["./gradlew"]
+CMD ["-PndkPath=/ndk", "run"]
diff --git a/README.md b/README.md
index a40c3df..7d47a9b 100644
--- a/README.md
+++ b/README.md
@@ -72,3 +72,5 @@
```
Note that dependencies currently need to be already built or ordered explicitly.
+
+To build all ports using Docker, use `scripts/build.sh`.
diff --git a/ports/curl/port.kts b/ports/curl/port.kts
index 4a47446..734fa27 100644
--- a/ports/curl/port.kts
+++ b/ports/curl/port.kts
@@ -54,4 +54,17 @@
"--with-ssl=$sslPrefix"
)
}
+
+ override fun configureEnv(
+ workingDirectory: File,
+ toolchain: Toolchain
+ ): Map<String, String> = mapOf(
+ // aarch64 still defaults to bfd which transitively checks libraries.
+ // When curl is linking one of its own libraries which depends on
+ // openssl, it doesn't pass -rpath-link to be able to find the SSL
+ // libraries and fails to build because of it.
+ //
+ // TODO: Switch to lld once we're using r21.
+ "LDFLAGS" to "-fuse-ld=gold"
+ )
}
\ No newline at end of file
diff --git a/scripts/build.sh b/scripts/build.sh
new file mode 100755
index 0000000..e7c16b6
--- /dev/null
+++ b/scripts/build.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+set -e
+docker build -t ndkports .
+docker run --rm -v $(pwd):/src ndkports
diff --git a/src/main/kotlin/com/android/ndkports/AutoconfPort.kt b/src/main/kotlin/com/android/ndkports/AutoconfPort.kt
index 053fe8d..1c009cb 100644
--- a/src/main/kotlin/com/android/ndkports/AutoconfPort.kt
+++ b/src/main/kotlin/com/android/ndkports/AutoconfPort.kt
@@ -24,6 +24,11 @@
toolchain: Toolchain
): List<String> = emptyList()
+ open fun configureEnv(
+ workingDirectory: File,
+ toolchain: Toolchain
+ ): Map<String, String> = emptyMap()
+
override fun configure(
toolchain: Toolchain,
sourceDirectory: File,
@@ -39,14 +44,14 @@
"--prefix=${installDirectory.absolutePath}"
) + configureArgs(workingDirectory, toolchain),
buildDirectory,
- additionalEnvironment = mapOf(
+ additionalEnvironment = mutableMapOf(
"AR" to toolchain.ar.absolutePath,
"CC" to toolchain.clang.absolutePath,
"CXX" to toolchain.clangxx.absolutePath,
"RANLIB" to toolchain.ranlib.absolutePath,
"STRIP" to toolchain.strip.absolutePath,
"PATH" to "${toolchain.binDir}:${System.getenv("PATH")}"
- )
+ ).apply { putAll(configureEnv(workingDirectory, toolchain)) }
)
}