Google opracowuje system kompilacji
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,
Soong przeplata się z większym projektem
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
biblioteka cc {
...
srcs: ["ogólny.cpp"],
łuk: {
ramię: {
srcs: ["arm.cpp"],
},
x86:{
srcs: ["x86.cpp"],
},
},
}
Źródło: opennet.ru