wavefnd / wavefnd/Wave

Add an AArch64 Android compiler and runtime target contract

Open
#417 0 comments 0 reactions 0 assignees View on GitHub
enhancement help wanted os support platform-specific feature
Dominant language
Rust
Stars
53
Forks
16
Avg merge
4h 22m
Merged PRs (30d)
46

Description

## Goal

Add `aarch64-linux-android` as Wave's first Android target, initially for command-line/native library use with the Android NDK.

## Scope

- Register the exact target and Android target-attribute identity.
- Define NDK sysroot discovery and an explicit `--sysroot` override.
- Select the correct Clang/LLD driver, API-level suffix, startup objects, bionic libraries, and dynamic loader contract.
- Validate the Android AArch64 C ABI against an NDK-built fixture.
- Support object and shared-library emission before claiming executable/runtime support.
- Add emulator/device execution only when CI can provide a reliable bounded environment.
- Keep browser/WebAssembly work in #349 and #373.

## Completion criteria

- [ ] NDK object and shared-library builds succeed for a documented API level.
- [ ] ELF metadata and undefined/imported symbols are validated.
- [ ] Missing NDK/API configuration yields a structured diagnostic.
- [ ] C ABI fixture links with the NDK toolchain.
- [ ] Documentation states exactly which Android artifact modes are supported.

Contributor guide

Open the contributing guide

Research direction

No files, tests, or entry points are named. Start by locating target registration and target-attribute handling, then trace existing native target contracts and NDK sysroot configuration. Done means documented API-level object and shared-library builds, validated ELF metadata and C ABI linkage, structured configuration diagnostics, and explicit supported artifact modes.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, rust
Domain
compilers, mobile-dev
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.