Merge branch 'main' into 'main'

removed hotfix, as this has been integrated into cargo-ndk already

See merge request veilid/veilid!269
This commit is contained in:
Christien Rioux 2024-04-20 15:14:33 +00:00
commit a0de48771e
11 changed files with 122 additions and 131 deletions

View File

@ -22,11 +22,11 @@ welcome!
Running the setup script requires: Running the setup script requires:
* Rust - Rust
#### Optionally, to build for Android: #### Optionally, to build for Android:
* Android SDK and NDK - Android SDK and NDK
You may decide to use Android Studio [here](https://developer.android.com/studio) You may decide to use Android Studio [here](https://developer.android.com/studio)
to maintain your Android dependencies. If so, use the dependency manager to maintain your Android dependencies. If so, use the dependency manager
@ -35,11 +35,11 @@ method is highly recommended as you may run into path problems with the 'flutter
command line without it. If you do so, you may skip to command line without it. If you do so, you may skip to
[Run Veilid setup script](#Run Veilid setup script). [Run Veilid setup script](#Run Veilid setup script).
* build-tools;33.0.1 - build-tools;34.0.0
* ndk;25.1.8937393 - ndk;26.3.11579264
* cmake;3.22.1 - cmake;3.22.1
* platform-tools - platform-tools
* platforms;android-33 - platforms;android-34
#### Setup Dependencies using the CLI #### Setup Dependencies using the CLI
@ -56,9 +56,9 @@ the command line to install the requisite package versions:
```shell ```shell
sdkmanager --install "platform-tools" sdkmanager --install "platform-tools"
sdkmanager --install "platforms;android-33" sdkmanager --install "platforms;android-34"
sdkmanager --install "build-tools;33.0.1" sdkmanager --install "build-tools;34.0.0"
sdkmanager --install "ndk;25.1.8937393" sdkmanager --install "ndk;26.3.11579264"
sdkmanager --install "cmake;3.22.1" sdkmanager --install "cmake;3.22.1"
``` ```
@ -66,7 +66,7 @@ Export environment variables and add the Android SDK platform-tools directory to
your path. See [instructions here](https://developer.android.com/tools/variables). your path. See [instructions here](https://developer.android.com/tools/variables).
```shell ```shell
cat << EOF >> ~/.profile cat << EOF >> ~/.profile
export ANDROID_HOME=<path to sdk> export ANDROID_HOME=<path to sdk>
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools
EOF EOF
@ -97,23 +97,23 @@ Development of Veilid on MacOS is possible on both Intel and ARM hardware.
Development requires: Development requires:
* Xcode, preferably latest version - Xcode, preferably latest version
* Homebrew [here](https://brew.sh) - Homebrew [here](https://brew.sh)
* Rust - Rust
#### Optionally, to build for Android: #### Optionally, to build for Android:
* Android Studio - Android Studio
* Android SDK and NDK - Android SDK and NDK
You will need to use Android Studio [here](https://developer.android.com/studio) You will need to use Android Studio [here](https://developer.android.com/studio)
to maintain your Android dependencies. Use the SDK Manager in the IDE to install the following packages (use package details view to select version): to maintain your Android dependencies. Use the SDK Manager in the IDE to install the following packages (use package details view to select version):
* Android SDK Build Tools (33.0.1) - Android SDK Build Tools (34.0.0)
* NDK (Side-by-side) (25.1.8937393) - NDK (Side-by-side) (26.3.11579264)
* Cmake (3.22.1) - Cmake (3.22.1)
* Android SDK 33 - Android SDK 34
* Android SDK Command Line Tools (latest) (7.0/latest) - Android SDK Command Line Tools (latest) (7.0/latest)
#### Setup command line environment #### Setup command line environment

View File

@ -68,7 +68,7 @@ deps-android:
RUN mkdir /Android; mkdir /Android/Sdk RUN mkdir /Android; mkdir /Android/Sdk
RUN curl -o /Android/cmdline-tools.zip https://dl.google.com/android/repository/commandlinetools-linux-9123335_latest.zip RUN curl -o /Android/cmdline-tools.zip https://dl.google.com/android/repository/commandlinetools-linux-9123335_latest.zip
RUN cd /Android; unzip /Android/cmdline-tools.zip RUN cd /Android; unzip /Android/cmdline-tools.zip
RUN yes | /Android/cmdline-tools/bin/sdkmanager --sdk_root=/Android/Sdk build-tools\;33.0.1 ndk\;25.1.8937393 cmake\;3.22.1 platform-tools platforms\;android-33 cmdline-tools\;latest RUN yes | /Android/cmdline-tools/bin/sdkmanager --sdk_root=/Android/Sdk build-tools\;34.0.0 ndk\;26.3.11579264 cmake\;3.22.1 platform-tools platforms\;android-34 cmdline-tools\;latest
RUN rm -rf /Android/cmdline-tools RUN rm -rf /Android/cmdline-tools
RUN apt-get clean RUN apt-get clean
@ -155,7 +155,7 @@ build-linux-arm64:
build-android: build-android:
FROM +code-android FROM +code-android
WORKDIR /veilid/veilid-core WORKDIR /veilid/veilid-core
ENV PATH=$PATH:/Android/Sdk/ndk/25.1.8937393/toolchains/llvm/prebuilt/linux-x86_64/bin/ ENV PATH=$PATH:/Android/Sdk/ndk/26.3.11579264/toolchains/llvm/prebuilt/linux-x86_64/bin/
RUN cargo build --target aarch64-linux-android --release RUN cargo build --target aarch64-linux-android --release
RUN cargo build --target armv7-linux-androideabi --release RUN cargo build --target armv7-linux-androideabi --release
RUN cargo build --target i686-linux-android --release RUN cargo build --target i686-linux-android --release
@ -261,4 +261,4 @@ package-linux-arm64:
package-linux: package-linux:
BUILD +package-linux-amd64 BUILD +package-linux-amd64
BUILD +package-linux-arm64 BUILD +package-linux-arm64

View File

@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
set -eo pipefail set -eo pipefail
if [ $(id -u) -eq 0 ]; then if [ $(id -u) -eq 0 ]; then
echo "Don't run this as root" echo "Don't run this as root"
exit exit
fi fi
@ -27,40 +27,45 @@ elif [ ! -z "$(command -v dnf)" ]; then
sudo dnf groupinstall -y 'Development Tools' sudo dnf groupinstall -y 'Development Tools'
fi fi
# Install Rust # Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y -c clippy --profile default curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y -c clippy --profile default
source "$HOME/.cargo/env" source "$HOME/.cargo/env"
#ask if they want to install optional android sdk (and install if yes) #ask if they want to install optional android sdk (and install if yes)
while true; do while true; do
read -p "Do you want to install Android SDK (optional) Y/N) " response read -p "Do you want to install Android SDK (optional) Y/N) " response
case $response in case $response in
[yY] ) echo Installing Android SDK...; [yY])
# Install Android SDK echo Installing Android SDK...
mkdir $HOME/Android; mkdir $HOME/Android/Sdk # Install Android SDK
curl -o $HOME/Android/cmdline-tools.zip https://dl.google.com/android/repository/commandlinetools-linux-9123335_latest.zip mkdir $HOME/Android
cd $HOME/Android; unzip $HOME/Android/cmdline-tools.zip mkdir $HOME/Android/Sdk
$HOME/Android/cmdline-tools/bin/sdkmanager --sdk_root=$HOME/Android/Sdk build-tools\;33.0.1 ndk\;25.1.8937393 cmake\;3.22.1 platform-tools platforms\;android-33 cmdline-tools\;latest emulator curl -o $HOME/Android/cmdline-tools.zip https://dl.google.com/android/repository/commandlinetools-linux-9123335_latest.zip
cd $HOME cd $HOME/Android
rm -rf $HOME/Android/cmdline-tools $HOME/Android/cmdline-tools.zip unzip $HOME/Android/cmdline-tools.zip
$HOME/Android/cmdline-tools/bin/sdkmanager --sdk_root=$HOME/Android/Sdk build-tools\;34.0.0 ndk\;26.3.11579264 cmake\;3.22.1 platform-tools platforms\;android-34 cmdline-tools\;latest emulator
cd $HOME
rm -rf $HOME/Android/cmdline-tools $HOME/Android/cmdline-tools.zip
# Add environment variables # Add environment variables
cat >> $HOME/.profile <<END cat >>$HOME/.profile <<END
source "\$HOME/.cargo/env" source "\$HOME/.cargo/env"
export PATH=\$PATH:\$HOME/Android/Sdk/ndk/25.1.8937393/toolchains/llvm/prebuilt/linux-x86_64/bin:\$HOME/Android/Sdk/platform-tools:\$HOME/Android/Sdk/cmdline-tools/latest/bin export PATH=\$PATH:\$HOME/Android/Sdk/ndk/26.3.11579264/toolchains/llvm/prebuilt/linux-x86_64/bin:\$HOME/Android/Sdk/platform-tools:\$HOME/Android/Sdk/cmdline-tools/latest/bin
export ANDROID_HOME=\$HOME/Android/Sdk export ANDROID_HOME=\$HOME/Android/Sdk
END END
break ;; break
[nN] ) echo Skipping Android SDK; ;;
cat >> $HOME/.profile <<END [nN])
echo Skipping Android SDK
cat >>$HOME/.profile <<END
source "\$HOME/.cargo/env" source "\$HOME/.cargo/env"
END END
break;; break
;;
* ) echo invalid response;; *) echo invalid response ;;
esac esac
done done
echo Complete! Exit and reopen the shell and continue with ./setup_linux.sh echo Complete! Exit and reopen the shell and continue with ./setup_linux.sh

View File

@ -1,14 +1,14 @@
#!/bin/bash #!/bin/bash
set -eo pipefail set -eo pipefail
if [ $(id -u) -eq 0 ]; then if [ $(id -u) -eq 0 ]; then
echo "Don't run this as root" echo "Don't run this as root"
exit exit
fi fi
SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" SCRIPTDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
if [[ "$(uname)" != "Linux" ]]; then if [[ "$(uname)" != "Linux" ]]; then
echo Not running Linux echo Not running Linux
exit 1 exit 1
fi fi
@ -22,7 +22,8 @@ while true; do
read -p "Did you install Android SDK? Y/N " response read -p "Did you install Android SDK? Y/N " response
case $response in case $response in
[yY] ) echo Checking android setup...; [yY])
echo Checking android setup...
# ensure ANDROID_HOME is defined and exists # ensure ANDROID_HOME is defined and exists
if [ -d "$ANDROID_HOME" ]; then if [ -d "$ANDROID_HOME" ]; then
@ -34,16 +35,16 @@ while true; do
# ensure Android Command Line Tools exist # ensure Android Command Line Tools exist
if [ -d "$ANDROID_HOME/cmdline-tools/latest/bin" ]; then if [ -d "$ANDROID_HOME/cmdline-tools/latest/bin" ]; then
echo '[X] Android command line tools are installed' echo '[X] Android command line tools are installed'
else else
echo 'Android command line tools are not installed' echo 'Android command line tools are not installed'
exit 1 exit 1
fi fi
# ensure ndk is installed # ensure ndk is installed
ANDROID_NDK_HOME="$ANDROID_HOME/ndk/25.1.8937393" ANDROID_NDK_HOME="$ANDROID_HOME/ndk/26.3.11579264"
if [ -f "$ANDROID_NDK_HOME/ndk-build" ]; then if [ -f "$ANDROID_NDK_HOME/ndk-build" ]; then
echo '[X] Android NDK is installed at the location $ANDROID_NDK_HOME' echo '[X] Android NDK is installed at the location $ANDROID_NDK_HOME'
else else
echo 'Android NDK is not installed at the location $ANDROID_NDK_HOME' echo 'Android NDK is not installed at the location $ANDROID_NDK_HOME'
exit 1 exit 1
@ -51,7 +52,7 @@ while true; do
# ensure cmake is installed # ensure cmake is installed
if [ -d "$ANDROID_HOME/cmake" ]; then if [ -d "$ANDROID_HOME/cmake" ]; then
echo '[X] Android SDK CMake is installed' echo '[X] Android SDK CMake is installed'
else else
echo 'Android SDK CMake is not installed' echo 'Android SDK CMake is not installed'
exit 1 exit 1
@ -59,28 +60,31 @@ while true; do
# ensure emulator is installed # ensure emulator is installed
if [ -d "$ANDROID_HOME/emulator" ]; then if [ -d "$ANDROID_HOME/emulator" ]; then
echo '[X] Android SDK emulator is installed' echo '[X] Android SDK emulator is installed'
else else
echo 'Android SDK emulator is not installed' echo 'Android SDK emulator is not installed'
exit 1 exit 1
fi fi
# ensure adb is installed # ensure adb is installed
if command -v adb &> /dev/null; then if command -v adb &>/dev/null; then
echo '[X] adb is available in the path' echo '[X] adb is available in the path'
else else
echo 'adb is not available in the path' echo 'adb is not available in the path'
exit 1 exit 1
fi fi
break;; break
[nN] ) echo Skipping Android SDK config check...; ;;
break;; [nN])
* ) echo invalid response;; echo Skipping Android SDK config check...
break
;;
*) echo invalid response ;;
esac esac
done done
# ensure rustup is installed # ensure rustup is installed
if command -v rustup &> /dev/null; then if command -v rustup &>/dev/null; then
echo '[X] rustup is available in the path' echo '[X] rustup is available in the path'
else else
echo 'rustup is not available in the path' echo 'rustup is not available in the path'
@ -88,7 +92,7 @@ else
fi fi
# ensure cargo is installed # ensure cargo is installed
if command -v cargo &> /dev/null; then if command -v cargo &>/dev/null; then
echo '[X] cargo is available in the path' echo '[X] cargo is available in the path'
else else
echo 'cargo is not available in the path' echo 'cargo is not available in the path'
@ -96,7 +100,7 @@ else
fi fi
# ensure pip3 is installed # ensure pip3 is installed
if command -v pip3 &> /dev/null; then if command -v pip3 &>/dev/null; then
echo '[X] pip3 is available in the path' echo '[X] pip3 is available in the path'
else else
echo 'pip3 is not available in the path' echo 'pip3 is not available in the path'
@ -117,14 +121,18 @@ while true; do
read -p "Will you be modifying the capnproto schema? Y/N (say N if unsure)" response read -p "Will you be modifying the capnproto schema? Y/N (say N if unsure)" response
case $response in case $response in
[yY] ) echo Installing capnproto...; [yY])
echo Installing capnproto...
# Install capnproto using the same mechanism as our earthly build # Install capnproto using the same mechanism as our earthly build
$SCRIPTDIR/../scripts/earthly/install_capnproto.sh $SCRIPTDIR/../scripts/earthly/install_capnproto.sh
break;; break
[nN] ) echo Skipping capnproto installation...; ;;
break;; [nN])
* ) echo invalid response;; echo Skipping capnproto installation...
break
;;
*) echo invalid response ;;
esac esac
done done

View File

@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
set -eo pipefail set -eo pipefail
SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" SCRIPTDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
if [ ! "$(uname)" == "Darwin" ]; then if [ ! "$(uname)" == "Darwin" ]; then
echo Not running on MacOS echo Not running on MacOS
@ -12,7 +12,8 @@ while true; do
read -p "Did you install Android SDK? Y/N " response read -p "Did you install Android SDK? Y/N " response
case $response in case $response in
[yY] ) echo Checking android setup...; [yY])
echo Checking android setup...
# ensure ANDROID_HOME is defined and exists # ensure ANDROID_HOME is defined and exists
if [ -d "$ANDROID_HOME" ]; then if [ -d "$ANDROID_HOME" ]; then
echo '[X] $ANDROID_HOME is defined and exists' echo '[X] $ANDROID_HOME is defined and exists'
@ -23,17 +24,17 @@ while true; do
# ensure Android Command Line Tools exist # ensure Android Command Line Tools exist
if [ -d "$ANDROID_HOME/cmdline-tools/latest/bin" ]; then if [ -d "$ANDROID_HOME/cmdline-tools/latest/bin" ]; then
echo '[X] Android command line tools are installed' echo '[X] Android command line tools are installed'
else else
echo 'Android command line tools are not installed' echo 'Android command line tools are not installed'
exit 1 exit 1
fi fi
# ensure Android SDK packages are installed # ensure Android SDK packages are installed
$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager build-tools\;33.0.1 ndk\;25.1.8937393 cmake\;3.22.1 platform-tools platforms\;android-33 $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager build-tools\;34.0.0 ndk\;26.3.11579264 cmake\;3.22.1 platform-tools platforms\;android-34
# ensure ANDROID_NDK_HOME is defined and exists # ensure ANDROID_NDK_HOME is defined and exists
ANDROID_NDK_HOME="$ANDROID_HOME/ndk/25.1.8937393" ANDROID_NDK_HOME="$ANDROID_HOME/ndk/26.3.11579264"
if [ -d "$ANDROID_NDK_HOME" ]; then if [ -d "$ANDROID_NDK_HOME" ]; then
echo '[X] Android NDK is defined and exists' echo '[X] Android NDK is defined and exists'
else else
@ -43,7 +44,7 @@ while true; do
# ensure ndk is installed # ensure ndk is installed
if [ -f "$ANDROID_NDK_HOME/ndk-build" ]; then if [ -f "$ANDROID_NDK_HOME/ndk-build" ]; then
echo '[X] Android NDK is installed at the location $ANDROID_NDK_HOME' echo '[X] Android NDK is installed at the location $ANDROID_NDK_HOME'
else else
echo 'Android NDK is not installed at the location $ANDROID_NDK_HOME' echo 'Android NDK is not installed at the location $ANDROID_NDK_HOME'
exit 1 exit 1
@ -51,7 +52,7 @@ while true; do
# ensure cmake is installed # ensure cmake is installed
if [ -d "$ANDROID_HOME/cmake" ]; then if [ -d "$ANDROID_HOME/cmake" ]; then
echo '[X] Android SDK CMake is installed' echo '[X] Android SDK CMake is installed'
else else
echo 'Android SDK CMake is not installed' echo 'Android SDK CMake is not installed'
exit 1 exit 1
@ -59,29 +60,32 @@ while true; do
# ensure emulator is installed # ensure emulator is installed
if [ -d "$ANDROID_HOME/emulator" ]; then if [ -d "$ANDROID_HOME/emulator" ]; then
echo '[X] Android SDK emulator is installed' echo '[X] Android SDK emulator is installed'
else else
echo 'Android SDK emulator is not installed' echo 'Android SDK emulator is not installed'
exit 1 exit 1
fi fi
# ensure adb is installed # ensure adb is installed
if command -v adb &> /dev/null; then if command -v adb &>/dev/null; then
echo '[X] adb is available in the path' echo '[X] adb is available in the path'
else else
echo 'adb is not available in the path' echo 'adb is not available in the path'
exit 1 exit 1
fi fi
break;; break
[nN] ) echo Skipping Android SDK config check...; ;;
break;; [nN])
echo Skipping Android SDK config check...
break
;;
* ) echo invalid response;; *) echo invalid response ;;
esac esac
done done
# ensure brew is installed # ensure brew is installed
if command -v brew &> /dev/null; then if command -v brew &>/dev/null; then
echo '[X] brew is available in the path' echo '[X] brew is available in the path'
else else
echo 'brew is not available in the path' echo 'brew is not available in the path'
@ -89,7 +93,7 @@ else
fi fi
# ensure xcode is installed # ensure xcode is installed
if command -v xcode-select &> /dev/null; then if command -v xcode-select &>/dev/null; then
echo '[X] XCode is available in the path' echo '[X] XCode is available in the path'
else else
echo 'XCode is not available in the path' echo 'XCode is not available in the path'
@ -97,7 +101,7 @@ else
fi fi
# ensure rustup is installed # ensure rustup is installed
if command -v rustup &> /dev/null; then if command -v rustup &>/dev/null; then
echo '[X] rustup is available in the path' echo '[X] rustup is available in the path'
else else
echo 'rustup is not available in the path' echo 'rustup is not available in the path'
@ -105,7 +109,7 @@ else
fi fi
# ensure cargo is installed # ensure cargo is installed
if command -v cargo &> /dev/null; then if command -v cargo &>/dev/null; then
echo '[X] cargo is available in the path' echo '[X] cargo is available in the path'
else else
echo 'cargo is not available in the path' echo 'cargo is not available in the path'
@ -113,7 +117,7 @@ else
fi fi
# ensure pip3 is installed # ensure pip3 is installed
if command -v pip3 &> /dev/null; then if command -v pip3 &>/dev/null; then
echo '[X] pip3 is available in the path' echo '[X] pip3 is available in the path'
else else
echo 'pip3 is not available in the path' echo 'pip3 is not available in the path'
@ -130,9 +134,9 @@ else
fi fi
# ensure we have command line tools # ensure we have command line tools
xcode-select --install 2> /dev/null || true xcode-select --install 2>/dev/null || true
until [ -d /Library/Developer/CommandLineTools/usr/bin ]; do until [ -d /Library/Developer/CommandLineTools/usr/bin ]; do
sleep 5; sleep 5
done done
# install packages # install packages
@ -155,7 +159,7 @@ cargo install wasm-bindgen-cli wasm-pack cargo-edit
# install pip packages # install pip packages
pip3 install --upgrade bumpversion pip3 install --upgrade bumpversion
if command -v pod &> /dev/null; then if command -v pod &>/dev/null; then
echo '[X] CocoaPods is available in the path' echo '[X] CocoaPods is available in the path'
else else
echo 'CocoaPods is not available in the path, installing it now' echo 'CocoaPods is not available in the path, installing it now'

View File

@ -1,8 +1,8 @@
[target.aarch64-linux-android] [target.aarch64-linux-android]
linker = "/Android/Sdk/ndk/25.1.8937393/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android33-clang" linker = "/Android/Sdk/ndk/26.3.11579264/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android34-clang"
[target.armv7-linux-androideabi] [target.armv7-linux-androideabi]
linker = "/Android/Sdk/ndk/25.1.8937393/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi33-clang" linker = "/Android/Sdk/ndk/26.3.11579264/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi33-clang"
[target.x86_64-linux-android] [target.x86_64-linux-android]
linker = "/Android/Sdk/ndk/25.1.8937393/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android33-clang" linker = "/Android/Sdk/ndk/26.3.11579264/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android34-clang"
[target.i686-linux-android] [target.i686-linux-android]
linker = "/Android/Sdk/ndk/25.1.8937393/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android33-clang" linker = "/Android/Sdk/ndk/26.3.11579264/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android34-clang"

View File

@ -1,10 +1,9 @@
use glob::glob;
use sha2::{Digest, Sha256}; use sha2::{Digest, Sha256};
use std::fs::OpenOptions; use std::fs::OpenOptions;
use std::io::BufRead; use std::io::BufRead;
use std::io::Write; use std::io::Write;
use std::{ use std::{
env, io, io,
path::Path, path::Path,
process::{Command, Stdio}, process::{Command, Stdio},
}; };
@ -126,28 +125,6 @@ fn do_capnp_build() {
append_hash("proto/veilid.capnp", "proto/veilid_capnp.rs"); append_hash("proto/veilid.capnp", "proto/veilid_capnp.rs");
} }
// Fix for missing __extenddftf2 on Android x86_64 Emulator
fn fix_android_emulator() {
let target_os = env::var("CARGO_CFG_TARGET_OS").unwrap();
let target_arch = env::var("CARGO_CFG_TARGET_ARCH").unwrap();
if target_arch == "x86_64" && target_os == "android" {
let missing_library = "clang_rt.builtins-x86_64-android";
let android_home = env::var("ANDROID_HOME")
.or(env::var("ANDROID_SDK_ROOT"))
.expect("ANDROID_HOME or ANDROID_SDK_ROOT not set");
let lib_path = glob(&format!(
"{android_home}/ndk/25.1.8937393/**/lib{missing_library}.a"
))
.expect("failed to glob")
.next()
.expect("Need libclang_rt.builtins-x86_64-android.a")
.unwrap();
let lib_dir = lib_path.parent().unwrap();
println!("cargo:rustc-link-search={}", lib_dir.display());
println!("cargo:rustc-link-lib=static={missing_library}");
}
}
fn main() { fn main() {
if std::env::var("DOCS_RS").is_ok() if std::env::var("DOCS_RS").is_ok()
|| std::env::var("CARGO_CFG_DOC").is_ok() || std::env::var("CARGO_CFG_DOC").is_ok()
@ -160,6 +137,4 @@ fn main() {
println!("cargo:warning=rebuilding proto/veilid_capnp.rs because it has changed from the last generation of proto/veilid.capnp"); println!("cargo:warning=rebuilding proto/veilid_capnp.rs because it has changed from the last generation of proto/veilid.capnp");
do_capnp_build(); do_capnp_build();
} }
fix_android_emulator();
} }

View File

@ -3,13 +3,13 @@ plugins {
} }
android { android {
compileSdkVersion 33 compileSdkVersion 34
buildToolsVersion "33.0.1" buildToolsVersion "34.0.0"
defaultConfig { defaultConfig {
applicationId "com.veilid.veilid_core_android_tests" applicationId "com.veilid.veilid_core_android_tests"
minSdkVersion 24 minSdkVersion 24
targetSdkVersion 33 targetSdkVersion 34
versionCode 1 versionCode 1
versionName "1.0" versionName "1.0"
@ -38,7 +38,7 @@ android {
sourceCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8
} }
ndkVersion '25.1.8937393' ndkVersion '26.3.11579264'
// Required to copy libc++_shared.so // Required to copy libc++_shared.so
externalNativeBuild { externalNativeBuild {
@ -82,5 +82,4 @@ afterEvaluate {
def buildType = "${variant.buildType.name.capitalize()}" def buildType = "${variant.buildType.name.capitalize()}"
tasks["generate${productFlavor}${buildType}Assets"].dependsOn(tasks["cargoBuild"]) tasks["generate${productFlavor}${buildType}Assets"].dependsOn(tasks["cargoBuild"])
} }
} }

View File

@ -63,7 +63,7 @@ android {
} }
} }
ndkVersion '25.1.8937393' ndkVersion '26.3.11579264'
// Required to copy libc++_shared.so // Required to copy libc++_shared.so
externalNativeBuild { externalNativeBuild {
@ -99,4 +99,4 @@ afterEvaluate {
def buildType = "${variant.buildType.name.capitalize()}" def buildType = "${variant.buildType.name.capitalize()}"
tasks["generate${productFlavor}${buildType}Assets"].dependsOn(tasks["cargoBuild"]) tasks["generate${productFlavor}${buildType}Assets"].dependsOn(tasks["cargoBuild"])
} }
} }

View File

@ -27,7 +27,7 @@ apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android { android {
compileSdkVersion flutter.compileSdkVersion compileSdkVersion flutter.compileSdkVersion
ndkVersion '25.1.8937393' ndkVersion '26.3.11579264'
compileOptions { compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8
@ -71,4 +71,4 @@ flutter {
dependencies { dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
} }

View File

@ -4,7 +4,7 @@ plugins {
android { android {
compileSdkVersion 33 compileSdkVersion 33
buildToolsVersion "33.0.1" buildToolsVersion "34.0.0"
defaultConfig { defaultConfig {
applicationId "com.veilid.veilid_tools_android_tests" applicationId "com.veilid.veilid_tools_android_tests"
@ -38,7 +38,7 @@ android {
sourceCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8
} }
ndkVersion '25.1.8937393' ndkVersion '26.3.11579264'
// Required to copy libc++_shared.so // Required to copy libc++_shared.so
externalNativeBuild { externalNativeBuild {
@ -82,4 +82,4 @@ afterEvaluate {
def buildType = "${variant.buildType.name.capitalize()}" def buildType = "${variant.buildType.name.capitalize()}"
tasks["generate${productFlavor}${buildType}Assets"].dependsOn(tasks["cargoBuild"]) tasks["generate${productFlavor}${buildType}Assets"].dependsOn(tasks["cargoBuild"])
} }
} }