使用 GN 建置 V8
V8 是在 GN 的協助下建置的。GN 是一種元建置系統,它會為許多其他建置系統產生建置檔案。因此,建置方式取決於您使用的「後端」建置系統和編譯器。
以下說明假設您已 簽出 V8,而且您已 安裝建置相依性。
您可以在 Chromium 文件 或 GN 自有的文件 中找到有關 GN 的更多資訊。
從原始碼建置 V8 包含三個步驟
- 產生建置檔案
- 編譯
- 執行測試
建置 V8 有兩種工作流程
- 使用稱為
gm
的輔助腳本的便利工作流程,它巧妙地結合了所有三個步驟 - 原始工作流程,您手動針對每個步驟在較低層級執行個別指令
使用 gm
建置 V8(便利工作流程) #
gm
是便利的多合一腳本,它會產生建置檔案、觸發建置,並選擇性地執行測試。它可以在 V8 簽出的 tools/dev/gm.py
中找到。我們建議在您的 shell 設定中加入別名
alias gm=/path/to/v8/tools/dev/gm.py
然後,您可以使用 gm
為已知設定建置 V8,例如 x64.release
gm x64.release
若要在建置後立即執行測試,請執行
gm x64.release.check
gm
會輸出它執行的所有指令,讓您在必要時輕鬆追蹤和重新執行它們。
gm
可讓您使用單一指令建置必要的二進位檔和執行特定測試
gm x64.debug mjsunit/foo cctest/test-bar/*
建置 V8:原始手動工作流程 #
步驟 1:產生建置檔案 #
有數種產生建置檔案的方法
- 原始手動工作流程包括直接使用
gn
。 - 稱為
v8gen
的輔助腳本簡化了常見設定的流程。
使用 gn
產生建置檔案 #
使用 gn
為目錄 out/foo
產生建置檔案
gn args out/foo
這會開啟一個編輯器視窗,用於指定 gn
參數。或者,您可以在命令列上傳遞參數
gn gen out/foo --args='is_debug=false target_cpu="x64" v8_target_cpu="arm64" use_goma=true'
這會產生建置檔案,以使用 goma
編譯模式在發布模式下使用 arm64 模擬器編譯 V8。
如要查看所有可用的 gn
參數概觀,請執行
gn args out/foo --list
使用 v8gen
產生建置檔案 #
V8 儲存庫包含一個 v8gen
便利指令碼,可更輕鬆地為常見設定產生建置檔案。我們建議在您的 shell 設定中新增一個別名
alias v8gen=/path/to/v8/tools/dev/v8gen.py
呼叫 v8gen --help
以取得更多資訊。
列出可用的設定(或主控端的機器人)
v8gen list
v8gen list -m client.v8
在資料夾 foo
中像 client.v8
瀑布中的特定機器人一樣建置
v8gen -b 'V8 Linux64 - debug builder' -m client.v8 foo
步驟 2:編譯 V8 #
如要建置所有 V8(假設 gn
已產生到 x64.release
資料夾),請執行
ninja -C out/x64.release
如要建置特定目標(例如 d8
),請將它們附加到命令
ninja -C out/x64.release d8
步驟 3:執行測試 #
您可以將輸出目錄傳遞給測試驅動程式。其他相關旗標會從建置中推斷出來
tools/run-tests.py --outdir out/foo
您也可以測試您最近編譯的建置(在 out.gn
中)
tools/run-tests.py --gn
建置問題?在 v8.dev/bug 提交錯誤,或在 v8-users@googlegroups.com 上尋求協助。