Mobile/Build/Fennec: Difference between revisions

From MozillaWiki
< Mobile‎ | Build
Jump to navigation Jump to search
(added note saying that you have to be logged in scratchbox)
(Redirected page to Mobile/Get Involved)
 
(16 intermediate revisions by 7 users not shown)
Line 1: Line 1:
==Building Fennec and XULRunner==
#REDIRECT [[Mobile/Get_Involved]]
 
== Building [[Fennec]] ==
 
 
 
Look here for the Android build instructions
 
[[https://wiki.mozilla.org/Mobile/Fennec/Android
]]
 
 
=== Install and run Scratchbox (Maemo only) ===
If you want to cross-compile Fennec and XULRunner for Maemo, you should first [[Mobile/Build/cs2007q3|set up scratchbox]].  Scratchbox is a cross-compilation environment that you will run before compiling Fennec.
If you want to cross-compile Fennec and XULRunner for Maemo, you should first [[Mobile/Build/cs2007q3|set up scratchbox]].  Scratchbox is a cross-compilation environment that you will run before compiling Fennec.


Line 7: Line 19:
'''NOTE 2:''' When you are logged in to scratchbox, you are chroot'ed. This means that /scratchbox/users/YOUR_NAME/home/YOUR_NAME matches to your home directory inside of scratchbox which is /home/YOUR_NAME
'''NOTE 2:''' When you are logged in to scratchbox, you are chroot'ed. This means that /scratchbox/users/YOUR_NAME/home/YOUR_NAME matches to your home directory inside of scratchbox which is /home/YOUR_NAME


===Pulling the code from hg===
=== Install build dependencies (non-Maemo) ===
 
If you are ''not'' building for Maemo/Scratchbox, follow the [https://developer.mozilla.org/En/Simple_Firefox_build "Installing build tools" instructions] for your platform.
 
=== Pull the code from Mercurial ===
<pre>
<pre>
hg clone http://hg.mozilla.org/mozilla-central
hg clone http://hg.mozilla.org/mozilla-central
cd mozilla-central
 
hg clone http://hg.mozilla.org/mobile-browser mobile
</pre>
</pre>


===Creating a mozconfig===
=== Create a mozconfig ===
Here's an example mozconfig for building in scratchbox. The LDFLAGS, with-arm-kuser, and disable-tests options should be removed if you're building outside of scratchbox (for x86).
 
Create a file named "mozconfig" in the mozilla-central directory.  Here's an example mozconfig. The LDFLAGS, with-arm-kuser, and with-maemo-version options should be removed if you're building outside of scratchbox (for x86).


<pre>
<pre>
# cs2007q3 gcc 4.2 is busted, we think, and doesn't
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../objdir
# look in the expected places. --dougt.
ac_add_options --enable-application=mobile
# $PWD/... was added due to bug 463076
export LDFLAGS="-Wl,-rpath-link,$PWD/dist/bin/:/usr/lib:/lib"


# Options for client.mk.
# For improved compile speeds, all optional.
mk_add_options MOZ_BUILD_PROJECTS="xulrunner mobile"
#mk_add_options MOZ_MAKE_FLAGS=-j4
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../mobilebase
#export CCACHE_HARDLINK=1
#ac_add_options --with-ccache=ccache


# Global options
# Make a debug build, optional.
#export MOZ_DEBUG_SYMBOLS=1
#ac_add_options --enable-debug
#ac_add_options --enable-debug
#ac_add_options --disable-optimize
#ac_add_options --disable-optimize


# XULRunner options
# Needed on Win32 to fix problem with Windows Vista SDK
ac_add_app_options xulrunner --enable-application=xulrunner
#ac_add_options --disable-accessibility
ac_add_app_options xulrunner --disable-javaxpcom
 
####################################################
# SCRATCHBOX ONLY: Remove everything below this line
# if you are not building in Scratchbox for Maemo.
 
ac_add_options --with-maemo-version=5


# Enabling --with-arm-kuser implies Linux on ARM and enables kernel
# Enabling --with-arm-kuser implies Linux on ARM and enables kernel
# optimizations for that platform
# optimizations for that platform
ac_add_app_options xulrunner --with-arm-kuser
ac_add_options --with-arm-kuser


# Disabling tests due to bug 454881
# cs2007q3 gcc 4.2 is busted, we think, and doesn't
ac_add_options --disable-tests
# look in the expected places. --dougt.
 
# $PWD/... was added due to bug 463076
# mobile options
export LDFLAGS="-Wl,-rpath-link,$PWD/dist/bin/:/usr/lib:/lib"
ac_add_app_options mobile --enable-application=mobile
ac_add_app_options mobile --with-libxul-sdk=../xulrunner/dist
</pre>
</pre>


===libIDL===
See [https://developer.mozilla.org/en/Configuring_Build_Options Configuring Build Options] for more information about customizing your build settings.
libIDL is required.


*I think the [[Mobile/Build/cs2007q3|latest scratchbox instructions]] include a step to obtain libIDL, so building it yourself shouldn't be necessary. If that's wrong, there are instructions for building libIDL in scratchbox [https://wiki.mozilla.org/index.php?title=Mobile/Build/Maemo_Build_Instructions&oldid=117369#Building_libIDL here]. If you follow those steps you must also set the PKG_CONFIG_PATH environment variable. [[User:GavinSharp|GavinSharp]]
=== Build ===
 
In the mozilla-central directory:
===Start the build===
<pre>
<pre>
make -f client.mk build
make -f client.mk build
</pre>
</pre>
The build will appear in ../objdir (or whatever MOZ_OBJDIR is set to in your mozconfig).


== Running Fennec on Maemo ==
== Running Fennec ==
If you did the above in a [[Mobile/Build/cs2007q3|Maemo Scratchbox]] for the CHINOOK_ARMEL target, you can run the build on the N800/N810 device.


Create a Fennec tarball:
=== Desktop ===


<code><pre>
cd ../objdir/dist/bin
cd ../mobilebase/mobile/
./fennec
make package
</pre></code>


You'll now have a tarball in mobilebase/mobile/dist/ named fennec-0.3.en-US.linux-arm.tar.bz2. Copy it to your device (you'll probably want to run bunzip2 on it first, since Maemo doesn't include it).
You may want to add the $MOZ_OBJDIR/dist/bin directory to your shell's $PATH so you can just type "fennec" anywhere.


Extract and launch from a command line (X Terminal) on the device:
=== Maemo ===


<code><pre>
If you did the above in a [[Mobile/Build/cs2007q3|Maemo Scratchbox]] for the CHINOOK_ARMEL target, you can run the build on the N800/N810 device.
$ tar xf fennec-0.3.en-US.linux-arm.tar
$ cd fennec
$ ./fennec
</pre></code>


==Building Fennec with the Gecko SDK==
Create a Fennec tarball:


===Download SDK===
cd ../objdir
First download the appropriate Gecko SDK from [ftp://ftp.mozilla.org/pub/xulrunner/nightly/latest-trunk/ ftp.mozilla.org]
make package


===Get the source===
You'll now have a tarball in objdir/dist/ named fennec-1.1b2pre.en-US.linux-arm.tar.bz2.  (you'll probably want to run bunzip2 on it first, since Maemo doesn't include it):
Follow the steps from [[#Pulling the code from hg]]


===Creating a mozconfig===
cd dist
<pre>
bunzip2 fennec-*.tar.bz2
# Options for client.mk.
mk_add_options MOZ_BUILD_PROJECTS="xulrunner mobile"
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../mobilebase


ac_add_options  --enable-application=mobile
Connect your N900 to your computer in USB Mass Storage mode and copy the tarball to it, then unmount it and disconnect (note: you must actually disconnect the USB cable; also, be sure to close an open terminal on your N900 if you have one). The file will appear in ~/MyDocs. You can drag it in the file manager, or run something like this command:
ac_add_options  --with-libxul-sdk=<path to the SDK you downloaded and extracted>
</pre>


Note: if you are building for x86 ubuntu, you might want to add "ac_add_options --disable-dbus" to your mozconfig, or obtain the necessary dbus libraries.
cp fennec-*.tar "/media/Nokia N900"
umount "/media/Nokia N900"


===Build===
Extract and launch from a command line (X Terminal) on the device:
<pre>
make -f client.mk build
</pre>


<b>Note</b>: At this point, you should be able to run and/or debug fennec, as your downloaded Gecko SDK is properly found by your app. However, since you're not using a xulrunner objdir, the package-related features will not work unless you inform the Mozilla build system of this SDK, by adding the following line to your mozconfig file :
# Run this outside of the MyDocs directory, which is mounted noexec:
tar xvf MyDocs/fennec-*.tar
./fennec/fennec


<pre>
== Building Win32 ==
ac_add_options  --with-system-libxul
</pre>


==Building Win32==
Start by setting up your system with the needed SDKs.  This means Visual Studio 2008 and the Vista SDK.
Start by setting up your system with the needed SDKs.  This means Visual Studio 2008 and the Vista SDK.  You can install the Windows Mobile 6 SDK also, but it's not needed for the Win32-only build.


Check out the hg repo listed above.  Create a .mozconfig file in the mozilla-central directoryThis looks similar to the above, but with some ARM/Linux specific lines removed:
Check out the source and create a mozconfig following the instructions aboveBe sure to add or uncomment this line:


<pre>
ac_add_options --disable-accessibility
# Options for client.mk.
mk_add_options MOZ_BUILD_PROJECTS="xulrunner mobile"
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../mobilebase
 
# XULRunner options
ac_add_app_options xulrunner --enable-application=xulrunner
ac_add_app_options xulrunner --disable-javaxpcom
 
# mobile options
ac_add_app_options mobile --enable-application=mobile
ac_add_app_options mobile --with-libxul-sdk=../xulrunner/dist
 
# Global options -- uncomment these lines for debug version
#ac_add_options --enable-debug
#ac_add_options --disable-optimize
 
# needed to fix problem with Vista SDK
ac_add_options --disable-accessibility
</pre>


Then use the commands
Then use the commands


<pre>
configure
configure
make -f client.mk build
make -f client.mk build
</pre>


Don't panic if configure fails; the make will rerun it with the right options to allow this to work.
Don't panic if configure fails; the make will rerun it with the right options to allow this to work.

Latest revision as of 20:43, 1 August 2017

Building Fennec

Look here for the Android build instructions

[[https://wiki.mozilla.org/Mobile/Fennec/Android ]]


Install and run Scratchbox (Maemo only)

If you want to cross-compile Fennec and XULRunner for Maemo, you should first set up scratchbox. Scratchbox is a cross-compilation environment that you will run before compiling Fennec.

NOTE: All the following instructions assume that you are logged in to scratchbox by typing this:

/scratchbox/login

NOTE 2: When you are logged in to scratchbox, you are chroot'ed. This means that /scratchbox/users/YOUR_NAME/home/YOUR_NAME matches to your home directory inside of scratchbox which is /home/YOUR_NAME

Install build dependencies (non-Maemo)

If you are not building for Maemo/Scratchbox, follow the "Installing build tools" instructions for your platform.

Pull the code from Mercurial

hg clone http://hg.mozilla.org/mozilla-central

Create a mozconfig

Create a file named "mozconfig" in the mozilla-central directory. Here's an example mozconfig. The LDFLAGS, with-arm-kuser, and with-maemo-version options should be removed if you're building outside of scratchbox (for x86).

mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../objdir
ac_add_options --enable-application=mobile

# For improved compile speeds, all optional.
#mk_add_options MOZ_MAKE_FLAGS=-j4
#export CCACHE_HARDLINK=1
#ac_add_options --with-ccache=ccache

# Make a debug build, optional.
#export MOZ_DEBUG_SYMBOLS=1
#ac_add_options --enable-debug
#ac_add_options --disable-optimize

# Needed on Win32 to fix problem with Windows Vista SDK
#ac_add_options --disable-accessibility

####################################################
# SCRATCHBOX ONLY: Remove everything below this line
# if you are not building in Scratchbox for Maemo. 

ac_add_options --with-maemo-version=5

# Enabling --with-arm-kuser implies Linux on ARM and enables kernel
# optimizations for that platform
ac_add_options --with-arm-kuser

# cs2007q3 gcc 4.2 is busted, we think, and doesn't
# look in the expected places. --dougt.
# $PWD/... was added due to bug 463076
export LDFLAGS="-Wl,-rpath-link,$PWD/dist/bin/:/usr/lib:/lib"

See Configuring Build Options for more information about customizing your build settings.

Build

In the mozilla-central directory:

make -f client.mk build

The build will appear in ../objdir (or whatever MOZ_OBJDIR is set to in your mozconfig).

Running Fennec

Desktop

cd ../objdir/dist/bin
./fennec

You may want to add the $MOZ_OBJDIR/dist/bin directory to your shell's $PATH so you can just type "fennec" anywhere.

Maemo

If you did the above in a Maemo Scratchbox for the CHINOOK_ARMEL target, you can run the build on the N800/N810 device.

Create a Fennec tarball:

cd ../objdir
make package

You'll now have a tarball in objdir/dist/ named fennec-1.1b2pre.en-US.linux-arm.tar.bz2. (you'll probably want to run bunzip2 on it first, since Maemo doesn't include it):

cd dist
bunzip2 fennec-*.tar.bz2

Connect your N900 to your computer in USB Mass Storage mode and copy the tarball to it, then unmount it and disconnect (note: you must actually disconnect the USB cable; also, be sure to close an open terminal on your N900 if you have one). The file will appear in ~/MyDocs. You can drag it in the file manager, or run something like this command:

cp fennec-*.tar "/media/Nokia N900"
umount "/media/Nokia N900"

Extract and launch from a command line (X Terminal) on the device:

# Run this outside of the MyDocs directory, which is mounted noexec:
tar xvf MyDocs/fennec-*.tar 
./fennec/fennec

Building Win32

Start by setting up your system with the needed SDKs. This means Visual Studio 2008 and the Vista SDK.

Check out the source and create a mozconfig following the instructions above. Be sure to add or uncomment this line:

ac_add_options --disable-accessibility

Then use the commands

configure
make -f client.mk build

Don't panic if configure fails; the make will rerun it with the right options to allow this to work.