Правила побудови

Система збірки Android (Soong) підтримує Rust за допомогою кількох модулів:

Тип модуляОпис
rust_binaryСтворює бінарний файл Rust.
rust_libraryСтворює бібліотеку Rust і надає варіанти rlib та dylib.
rust_ffiСтворює бібліотеку Rust C, яку використовують модулі cc, і надає як статичні, так і спільні варіанти.
rust_proc_macroСтворює бібліотеку proc-macro Rust. Вони аналогічні плагінам компілятора.
rust_testСтворює бінарний файл тесту Rust, який використовує стандартну систему тестування Rust.
rust_fuzzСтворює бінарний файл Rust fuzz, використовуючи libfuzzer.
rust_protobufГенерує вихідний код і створює бібліотеку Rust, яка надає інтерфейс для певного protobuf.
rust_bindgenГенерує вихідний код і створює бібліотеку Rust, яка містить прив’язки Rust до бібліотек C.

Далі ми розглянемо rust_binary і rust_library.

Спікер може згадати додаткові деталі:

  • Cargo не оптимізований для багатомовних репозиторіїв, а також завантажує пакети з інтернету.

  • Для сумісності та продуктивності, Android повинен мати крейти в межах дерева. Він також повинен взаємодіяти з кодом C/C++/Java. Soong заповнює цю прогалину.

  • Soong має багато спільного з Bazel, який є варіантом Blaze з відкритим вихідним кодом (використовується в google3).

  • Існує план переходу Android, ChromeOS та Fuchsia на Bazel.

  • Вивчення Bazel-подібних правил збірки корисно для всіх розробників Rust OS.

  • Цікавий факт: Дані із "Зоряного шляху" - це Android типу Soong