ninja-to-soong
is a project to generate Soong
files (Android.bp
) for the Android build system.
ninja-to-soong
is licensed under the terms opf the Apache 2.0 license
ninja-to-soong
generates Ninja files using either:ninja-to-soong
generatesSoong
files using Ninja files.
Project | Ninja Generator | Targets |
---|---|---|
clvk | CMake |
libclvk.so |
clspv | CMake |
clvk dependencies |
llvm-project | CMake |
clvk & clspv dependencies |
SPIRV-Tools | CMake |
clvk dependencies |
SPIRV-Headers | CMake |
clspv & SPIRV-Tools dependencies |
angle (WIP) | GN |
libEGL_angle.so , libGLESv2_angle.so , libGLESv1_CM_angle.so |
mesa (WIP) | meson |
libEGL_mesa.so , libGLESv2_mesa.so , libGLESv1_CM_mesa.so , libintel_mesa.so , libgallium_dri.so , libglapi.so , pps-producer |
ninja-to-soong
depends on the following:
<ninja-to-soong> $ cargo run --release -- --aosp-path <path> <project1> <project2>
--aosp-path <path>
: Path to Android tree (required for most project)--clean-tmp
: Remove the temporary directory before running--copy-to-aosp
: Copy generated Soong files into the Android tree--skip-build
: Skip build step--skip-gen-ninja
: Skip generation of Ninja files-h
,--help
: Display the help and exit
N2S_ANGLE_PATH
: Path to angle sources (default:<aosp-path>/external/angle
)N2S_MESA_PATH
: Path to mesa sources (default:<aosp-path>/external/mesa
)N2S_NDK
: Android NDK (default:android-ndk-r27c
)N2S_NDK_PATH
: Path to Android NDK (default: temporary directory)N2S_TMP_PATH
: Path used byninja-to-soong
to store its temporary directories (default:std::env::temp_dir()
)
ninja-to-soong
uses github actions to check that changes do not bring regression. It checks that the generated files match their reference (located in the tests
folder).
Each project in the tests
folder contains the following files:
Android.bp
: the reference file to generatecheckout.sh
: a script to checkout the repository in the CIgen-ninja.sh
: a script to generateNinja
files
Modification to checkout.sh
& gen-ninja.sh
trigger the generation of Ninja
files in the CI, otherwise it uses the cached files from a previous CI run.
If you want more information take a look at the github action script