diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml new file mode 100644 index 00000000..166234a5 --- /dev/null +++ b/.github/workflows/android.yml @@ -0,0 +1,66 @@ +name: macOS-Android + +on: + push: + +env: + DEBUG: 'napi:*' + +jobs: + build-android-aarch64: + name: Build - Android - aarch64 + runs-on: macos-latest + steps: + - uses: actions/checkout@v2 + + - name: Setup node + uses: actions/setup-node@v1 + with: + node-version: 14 + + - name: List NDK Home + run: ls -R "${ANDROID_NDK_HOME}" + + - name: Install + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + profile: minimal + override: true + + - name: Install aarch64 toolchain + run: rustup target add aarch64-linux-android + + - name: Generate Cargo.lock + uses: actions-rs/cargo@v1 + with: + command: generate-lockfile + + - name: Cache cargo registry + uses: actions/cache@v1 + with: + path: ~/.cargo/registry + key: stable-macos-android-node@14-cargo-registry-trimmed-${{ hashFiles('**/Cargo.lock') }} + + - name: Cache cargo index + uses: actions/cache@v1 + with: + path: ~/.cargo/git + key: stable-macos-android-node@14-cargo-index-trimmed-${{ hashFiles('**/Cargo.lock') }} + + - name: Cache NPM dependencies + uses: actions/cache@v1 + with: + path: node_modules + key: npm-cache-macos-android-node@14-${{ hashFiles('yarn.lock') }} + + - name: Install dependencies + run: yarn install --frozen-lockfile --registry https://registry.npmjs.org --network-timeout 300000 + + - name: 'Build TypeScript' + run: yarn build + + - name: Cross build native tests + run: | + export CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android24-clang" + yarn build:test:android diff --git a/README.md b/README.md index 183684b7..cf7eab31 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,7 @@ A minimal library for building compiled `NodeJS` add-ons in `Rust`. ![macOS/Windows/Linux x64](https://github.com/napi-rs/napi-rs/workflows/macOS/Windows/Linux%20x64/badge.svg) ![Linux-aarch64](https://github.com/napi-rs/napi-rs/workflows/Linux-aarch64/badge.svg) ![Linux-armv7](https://github.com/napi-rs/napi-rs/workflows/Linux-armv7/badge.svg) +![macOS-Android](https://github.com/napi-rs/napi-rs/workflows/macOS-Android/badge.svg) ![Windows i686](https://github.com/napi-rs/napi-rs/workflows/Windows%20i686/badge.svg) [![FreeBSD](https://api.cirrus-ci.com/github/napi-rs/napi-rs.svg)](https://cirrus-ci.com/github/napi-rs/napi-rs?branch=main) diff --git a/package.json b/package.json index b5b917be..51177fdf 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "build:bench": "yarn --cwd ./bench build", "build:test": "yarn --cwd ./test_module build", "build:test:aarch64": "yarn --cwd ./test_module build-aarch64", + "build:test:android": "yarn --cwd ./test_module build --target aarch64-linux-android", "build:test:armv7": "yarn --cwd ./test_module build-armv7", "format": "run-p format:md format:json format:yaml format:source format:rs", "format:md": "prettier --parser markdown --write './**/*.md'",