Google opracowuje modułowy system montażu Soonong na Androida

Google opracowuje system kompilacji Wkrótce, zaprojektowany w celu zastąpienia starych skryptów kompilacji dla platformy Android, w oparciu o wykorzystanie narzędzia make. Soong sugeruje użycie prostych deklaracji opisy zasady montażu modułów, dany w plikach z rozszerzeniem „.bp” (plany). Format pliku jest zbliżony do JSON i, jeśli to możliwe, powtarza składnię i semantykę plików zestawu Bazel. Kod napisany jest w Go i rozpowszechniany na licencji Apache 2.0.

Pliki kompilacji Soong nie obsługują instrukcji warunkowych ani wyrażeń rozgałęziających, a jedynie opisują strukturę projektu, moduły i zależności używane podczas budowania. Pliki do zbudowania są opisywane za pomocą masek i grupowane w pakiety, z których każdy jest zbiorem plików z powiązanymi zależnościami. Istnieje możliwość zdefiniowania zmiennych. Zmienne i właściwości są ściśle typowane (typ zmiennych wybierany jest dynamicznie przy pierwszym przypisaniu, a dla właściwości statycznie w zależności od typu modułu). Złożone elementy logiki asemblera przenoszone są do handlerów, pisemny w języku Go.

Soong przeplata się z większym projektem Plan, w ramach którego rozwijany jest system metaasemblera niezwiązany z Androidem, który na podstawie plików z deklaratywnymi opisami modułów generuje skrypty asemblera Ninja (zamiennik make), opisujący polecenia, które należy uruchomić, aby zbudować i zależności. Zamiast używać skomplikowanych reguł lub języka specyficznego dla domeny do definiowania logiki kompilacji, Blueprint używa procedur obsługi specyficznych dla projektu w języku Go (Soong to w zasadzie zestaw podobnych procedur obsługi dla Androida).

Takie podejście pozwala w przypadku dużych i heterogenicznych projektów, takich jak Android, zaimplementować złożone elementy logiki asemblera w kodzie w języku programowania wysokiego poziomu, zachowując jednocześnie możliwość wprowadzania zmian w modułach związanych z organizacją montażu i strukturą projektu przy użyciu prostej składni deklaratywnej . Na przykład w Soong wyboru flag kompilatora dokonuje procedura obsługi llvm.go, a zastosowanie ustawień specyficznych dla architektur sprzętowych odbywa się za pomocą procedury obsługi art.go, ale łączenie plików z kodem odbywa się w pliku „.bp”.

biblioteka cc {
...
srcs: ["ogólny.cpp"],
łuk: {
ramię: {
srcs: ["arm.cpp"],
},
x86:{
srcs: ["x86.cpp"],
},
},
}

Źródło: opennet.ru

Dodaj komentarz