谷歌為 Android 開發 Soong 模塊化組裝系統

谷歌正在開發建構系統 ,旨在替換 Android 平台的舊建置腳本,基於 make 實用程式的使用。 宋建議使用簡單的陳述式 說明 組裝模組的規則, 給定 在擴展名為“.bp”的檔案中(藍圖)。 文件格式接近 JSON,如果可能的話,重複彙編文件的語法和語義 巴澤爾。 該程式碼是用 Go 編寫的,並根據 Apache 2.0 許可證分發。

Soong建構檔案不支援條件語句和分支表達式,而僅描述建置時所使用的專案結構、模組和相依性。 要建置的檔案使用遮罩進行描述並分組到套件中,每個套件都是具有關聯依賴項的檔案的集合。 可以定義變數。 變數和屬性是嚴格類型化的(變數的類型是在第一次賦值時動態選擇的,而屬性的類型則根據模組的類型靜態選擇)。 組裝邏輯的複雜元素被移到處理程序, 書面 在 Go 語言中。

宋與一個更大的項目交織在一起 藍圖,其中正在開發一個與 Android 無關的元彙編系統,該系統基於具有聲明性模組描述的檔案生成彙編腳本 忍者 (make 的替代品),描述需要執行來建置的命令和依賴關係。 Blueprint 沒有使用複雜的規則或特定於領域的語言來定義建立邏輯,而是使用 Go 語言中的特定項目的處理程序(Soong 本質上是一組類似的 Android 處理程序)。

這種方法允許大型異質專案(例如 Android)以高級程式語言的程式碼實現彙編邏輯的複雜元素,同時保持使用簡單的聲明性語法對與彙編組織和專案結構相關的模組進行更改的能力。 例如,在 Soong 中,編譯器標誌的選擇是由處理程序完成的 llvm.go,並且特定於硬體架構的設定的應用由處理程序執行 藝術網,但程式碼檔案的連結是在「.bp」檔案中進行的。

cc_library {
...
srcs: ["generic.cpp"],
拱門:{
手臂: {
srcs: ["arm.cpp"],
},
x86:{
srcs: ["x86.cpp"],
},
},
}

來源: opennet.ru

添加評論