Helix採用了Ribosome工具。這是一組用Python語言寫的構建工具,它提供接口從CVS庫獲取代碼,並編譯程序。Ribosome包含兩個主要工具:
- build 用於解析目標之間的依賴,獲取源代碼,並運行命令以正確的次序編譯源代碼
- umake 一個跨平臺的Makefile產生器,它可以獨立於build使用,在build中會調用umake。
要使用build工具,首先需要設置環境變量BUILD_ROOT爲build目錄,Build系統命令都位於build/bin子目錄下,所以需要將build/bin加入PATH環境變量。
7. 設置BUILD_ROOT. (假設目錄爲$HOME/helix/build)
export BUILD_ROOT=$HOME/helix/build
export PATH=$BUILD_ROOT/bin:$PATH
8. 設置SYSTEM_ID環境變量
因爲Helix支持多種平臺,SYSTEM_ID用來告訴構建系統您所構建的目標平臺,您可以進入$BUILD_ROOT/umakecf下查看cf文件,
ads12-arm.cf
aix-4.2-powerpc.cf
aix-4.3-powerpc.cf
android-1.0-arm.eabi-generic.cf
android-cupcake-arm.eabi.cf
...
wince-500-ppc.cf
win.cf
win-msvc.cf
win-nmake.cf
win-versioning.cf
wsdl.cf
使用編輯器打開cf文件,可以看到裏面主要定義了編譯器、編譯選項及宏定義,去掉.cf後綴,就是所要設置的SYSTEM_ID了。因爲我是在Moto Linux平臺上做移植,所以SYSTEM_ID爲linux-2.2-libc6-armv5te-cross-gcc3.3-iwmmxt-softfloat。(注:雖然從名字上看是使用於linux2.2內核的,實際上和linux內核版本沒有很大關係,Moto linux是2.4版本的內核)
export SYSTEM_ID=linux-2.2-libc6-armv5te-cross-gcc3.3-iwmmxt-softfloat
9. 創建.buildrc文件
在HOME目錄下創建.buildrc文件,至少需要包括如下幾行(請注意將myusername替換爲您的帳號):
AddMultiCVS("helix",":ext:[email protected]:/cvsroot/")
AddBIFPath("common", "[helix]/common/build/BIF")
AddBIFPath("client", "[helix]/client/build/BIF")
如果是restricted類型的帳號,擁有更多的權限,可以下載更多的源代碼,還要添加如下兩行:
AddBIFPath("common-restricted", "[helix]/common-restricted/build/BIF")
AddBIFPath("client-restricted", "[helix]/client-restricted/build/BIF")
10. 創建一個新的目錄來存放Helix代碼樹,您可以在任意位置創建此目錄.
mkdir $HOME/helix/src cd $HOME/helix/src
11. 運行build腳本,這個腳本是使用Python語言編寫的,以菜單的形式提供build選項。
build.py
Updating [common] BIF files...
cvs server: Updating common/build/BIF
U common/build/BIF/helix.bif
Build System Menu
-> Current Directory: ~/source/helix
[0] Set BIF branch (helix)
[1] Set Target(s) (splay_mp3)
[2] Set Profile (default)
[3] run: build
[4] Toggle make depend & makefiles (-e -n)
[5] Toggle release (-trelease)
[6] Toggle 'make clean' (-c)
[7] Toggle clobber (Dangerous!) (-C)
[8] Toggle halt-on-error (-p green)
[9] Toggle verbose mode (-v)
[10] Toggle static build (-tnodll)
[11] Checkout source for selected target now
[12] Set Tag/Branch/Timestamp
[13] Help Page (full help in build/doc/index.html)
[Q] Quit
Enter selection or flags:
出現選單後,即可選擇3開始編譯程序了,不過先彆着急,還是先了解一下各選項的含義再動手,請參考下一篇文章:Helix移植(三)編譯目標程序