mozilla构建
宋畅
2023-12-01
这是我参照mozilla网站做的一些笔记:
mozilla的编译
一。下载源代码
需要gnu 的make工具和cvs
cvs 客户端的设置是: :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot
1.选择一个项目去下载
browser --- firefox
mail -- Thunderbird 新闻和邮件客户端
suite -- SeaMonkey 大杂烩:浏览器,邮件客户端,网页编辑器和其他程序。
minimo -- 专门用于small device上的客户端
composer -- html的编辑器
calendar --- Sunbird 日程安排程序
xulrunner --- 下一代的XUL程序启动程序
camino --- Macintosh上的native浏览器
tamarin --- Adobe捐献的Ecmascript虚拟机
all --- 以上所有的程序模块
2. 取出源代码
1)Mozilla推荐你使用Tinderbox去看看现在你要的模块是不是可以用的,不要下载一个编译不了的程序。
2)创建一个目录,取得client.mk文件。
mkdir ff
cd ff
cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/client.mk
如果你不是从头下载源代码,而是有了已经设置好的.mozconfig文件的话,可以用另外的方法取出源代码,这里就不说了,详细情况见mozilla的网站。
3)取特定分支的源代码
cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -r BRANCH mozilla/client.mk
其中BRANCH是特定的分支。
4)现在开始取出源代码
cd mozilla
make -f client.mk checkout MOZ_CO_PROJECT=option,option
如果你已经有一个定制好的.mozconfig文件,你就不用提供MOZ_CO_PROJECT。如果没有,就得写出来。我要firefox,就写MOZ_CO_PROJECT=browser
更具体的,如要取出某一个分支的代码,某个时间的源代码等,看mozilla网站的介绍。
我在make的时候碰到一个问题,说是文件是unix格式的,需要转化成dos格式的,我使用msys的unix2dos就搞定了这个client.mk文件,再执行上面的make命令,就开始取源代码了。这个过程的时间有点长,需要等一下,代码很多啊。
二。设置构建选项
1.使用.mozconfig配置文件
虽然可以在目录行中手工调用configure目录,但是这不是推荐的方式,推荐的方式是在你的源代码目录中放一个上面多次提到的.mozconfig文件(mozilla/.mozconfig),不放在源代码目录中的话,也可以放在你的HOME目录中(~/.mozconfig):
echo "# My first mozilla config" > .mozconfig
这个文件中包含两种类型的选项类型:1)选项前有mk_add_options的;2)选项前有ac_add_options的。 这些选项在你调用configure或者make -f client.mk的时候会自动被使用。
2. 使用objdir构建
推荐使用objdir进行构建mozilla,这样你的源代码和目标文件可以在你的目录系统中分开,互不干扰,用同一个源代码目录编译出多个多个应用程序。
用使用这个功能把下面行的内容加入到.mozconfig中去:
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-@CONFIG_GUESS@
3.选择一个应用程序进行编译
1)Mozilla Suite (SeaMonkey) :
ac_add_options --enable-application=suite
# Use the following to checkout SeaMonkey from CVS:
mk_add_options MOZ_CO_PROJECT=suite
2)Browser (Firefox)
在.mozconfig中包含默认的配置文件就可以了:
. $topsrcdir/browser/config/mozconfig
注意:不要进行文件内容的拷贝,要防止可能的变化。以下的都类似。
3)Mail (Thunderbird)
. $topsrcdir/mail/config/mozconfig
4)Standalone Calendar (Sunbird)
. $topsrcdir/calendar/sunbird/config/mozconfig
5)XULRunner
. $topsrcdir/xulrunner/config/mozconfig
4.设置构建选项
构建选项色选择取决于你要构建什么程序以及怎么使用这个程序,比如,就是一般的使用就选择没有额外调试信息的release版本,如果是程序开发人员想hack代码的话就可以使用带调试信息的程序。
Mozilla suite的构建选项可以使用一个Mozilla Build Configurator的网络工具来构造,对于其他的程序,你还得手工编辑生成的文件才可以。
如果你不了解这些选项的作用或者也不想连接,那么你就一个选项也别设置!!!
1)优化选项
ac_add_options --enable-optimize
ac_add_options --enable-optimize=-O2
ac_add_options --disable-debug
ac_add_options --disable-optimize
ac_add_options --enable-debug
2)图形界面工具箱
ac_add_options --enable-default-toolkit=gtk2|gtk|xlib|qt|cairo-gtk2|cairo-windows|windows|mac|cocoa|cairo-cocoa|os2|beos|photon
对于Windows/OS2/BeOS/Photon,不用设置
ac_add_options --enable-xft
是一种字体渲染技术,默认gtk2的时候使用。推荐跟gtk2搭配
ac_add_options --enable-freetype2
使用freetype进行字体渲染,跟xft不相容的。不要设置冲突了。
3)静态构建
ac_add_options --enable-static --disable-shared
这个选项构建一个大的exe程序,所有的组件都静态连接进程序了。注意:--enable-static需要搭配--disable-libxul的,还有推荐--disable-tests跟--enable-static搭配。
ac_add_options --disable-static --enable-shared
这是默认的选项。
4)扩展
ac_add_options --enable-extensions=default|all|ext1,ext2,-skipext3
程序有许多扩展插件的,建议不要设置,保持默认,让程序去处理。
5)测试
ac_add_options --disable-tests
默认是打开的,使用这个选项可以加快构建速度,减少磁盘空间占用。
6)其他选项
ac_add_options --disable-crypto
默认开启。在一些国家,使用或者出口加密模块是非法的,需要你来配置是不是使用。
在1.7及其主要分支,这个选项默认是关闭的。
ac_add_options --disable-javaxpcom (No Java)
XULRunner默认构建是包括Java-XPCOM bridge的,它需要安装JDK的。
5. .mozconfig文件例子
针对Firefox的优化静态构建
. $topsrcdir/browser/config/mozconfig
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/ff-opt-static
ac_add_options --enable-optimize
ac_add_options --disable-debug
ac_add_options --enable-static
ac_add_options --disable-shared
ac_add_options --disable-libxul
ac_add_options --disable-tests
三。构建程序
make -f client.mk build