Difference between revisions of "Firefox"

From CBLFS
Jump to navigationJump to search
Line 153: Line 153:
  
 
  make -f client.mk OS_TEST=x86 install
 
  make -f client.mk OS_TEST=x86 install
 +
 +
==== ppc64 ====
 +
 +
Firefox builds fine as 32-bit, but fails to run (an unhandled exception somewhere in the javascript).
 +
The solution is to use linux32 to open a 32-bit shell where you can build it, or use linux32 to run the build script.
 +
 +
Using linux32 (which gives the kernel a 32-bit personality) will lose all the environment, so any exported variables are lost.
 +
 +
For CLFS, even under linux32 we default to the 64-bit compiler, so you will need to specify CC and CXX, either with ${BUILD32} if you have re-established it, or just with -m32.
  
 
==== Common ====
 
==== Common ====

Revision as of 06:29, 9 November 2006

Download Source: http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0/source/firefox-2.0-source.tar.bz2

Dependencies

Required

Recommended

Optional

Creating a .mozconfig

The .mozconfig file contains the options that will be used to build firefox.

The first line includes the default configuration for compiling a browser and the second line determines where the build objects are going to reside. ac_cv_visibility_pragma=no fixes build errors on 32bit non-x86 systems but won't cause any trouble on x86. Having --with-system-nss and --with-system-nspr does not mean you *HAVE* to have a system installed version of nss and nspr. It makes the build system prefer to use the system installed version of nss and nspr over the internal version. --enable-canvas enables support for the <canvas></canvas> tag. --enable-svg enables support for rendering svg files. --enable-strip causes the installed binaries to be stripped. --disable-tests prevents test programs from being built which saves a lot of disk space and time. --disable-accessibility - disables a11y support. --disable-installer prevents the installer from being built. --enable-official-branding causes the installed binaries to have the official Firefox name embedded in them. Due to license restrictions, you may not distribute binaries created using this option.

cat > .mozconfig << "EOF"
. $topsrcdir/browser/config/mozconfig
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-@CONFIG_GUESS@

ac_cv_visibility_pragma=no

ac_add_options --prefix=/opt/firefox-2.0

ac_add_options --with-system-nss
ac_add_options --with-system-nspr

ac_add_options --with-system-zlib
ac_add_options --with-system-png
ac_add_options --with-system-jpeg
ac_add_options --enable-system-cairo

ac_add_options --enable-canvas
ac_add_options --enable-svg

ac_add_options --enable-strip
ac_add_options --disable-tests 
ac_add_options --disable-accessibility
ac_add_options --disable-installer 
ac_add_options --enable-official-branding 
EOF

If you would like dual monitor support in Firefox, append your your .mozconfig with the following:

cat >> .mozconfig << "EOF"
ac_add_options --enable-xinerama
EOF

If you have OpenLDAP installed and would like to build Firefox against it. This is required to build OpenOffice2 against Firefox. Append your .mozconfig with the following:

cat >> .mozconfig << "EOF"
ac_add_options --enable-ldap
EOF

If you would like to render fonts with Pango, append your your .mozconfig with the following. This can significantly slow font rendering.

cat >> .mozconfig << "EOF"
ac_add_options --enable-pango
EOF

Non-Multilib

sed -i "s:@MOZ_GTK2_LIBS@:& -L${XORG_PREFIX}/lib -lX11 -lXrender:g" config/autoconf.mk.in

Compile the package:

make -f client.mk build

Install the package:

make -f client.mk install

If you're using a system installed NSS and NSPR then adjust the pkg-config files to point to the proper place:

ln -sfv /usr/lib/pkgconfig/nss.pc /opt/firefox-2.0/lib/pkgconfig/firefox-nss.pc &&
ln -sfv /usr/lib/pkgconfig/nspr.pc /opt/firefox-2.0/lib/pkgconfig/firefox-nspr.pc

50-firefox.sh

If you're using the Bash Startup Files create an addition for firefox with the following commands, otherwise make sure the enviornment variables are set in your profile:

cat > /etc/profile.d/50-firefox.sh << "EOF"
# Begin /etc/profile.d/50-firefox.sh

export PATH="${PATH}:/opt/firefox-2.0/bin"
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}${PKG_CONFIG_PATH+:}/opt/firefox-2.0/lib/pkgconfig"

# End /etc/profile.d/50-firefox.sh
EOF

Multilib

The order that the builds are displayed on this page isn't neccesarily the order that you install them in. If you would like a 32bit browser but still require the 64bit libraries for other packages build the 32bit version last.

Remember, Use a clean source and build directory for each build, Firefox is no exception.

50-firefox.sh

If you're using the Bash Startup Files create an addition for firefox with the following commands, otherwise make sure the enviornment variables are set in your profile:

cat > /etc/profile.d/50-firefox.sh << "EOF"
# Begin /etc/profile.d/50-firefox.sh

export PATH="${PATH}:/opt/firefox-2.0/bin"
export PKG_CONFIG_PATH32="${PKG_CONFIG_PATH32}${PKG_CONFIG_PATH32+:}/opt/firefox-2.0/lib/pkgconfig"
export PKG_CONFIG_PATHN32="${PKG_CONFIG_PATHN32}${PKG_CONFIG_PATHN32+:}/opt/firefox-2.0/lib32/pkgconfig"
export PKG_CONFIG_PATH64="${PKG_CONFIG_PATH64}${PKG_CONFIG_PATH64+:}/opt/firefox-2.0/lib64/pkgconfig"

# End /etc/profile.d/50-firefox.sh
EOF

32Bit

Use the following command to append your .mozconfig with 32bit specific flags:

cat >> .mozconfig << EOF
export CC="gcc ${BUILD32}"
export CXX="g++ ${BUILD32}"
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH32}"
export USE_ARCH=32
ac_add_options --host=$CLFS_TARGET32
ac_add_options --build=$CLFS_TARGET32
mk_add_options CONFIG_GUESS=$CLFS_TARGET32
EOF
sed -i "s:@MOZ_GTK2_LIBS@:& -L${XORG_PREFIX}/lib -lX11 -lXrender:g" config/autoconf.mk.in

x86

Compile the package:

make -f client.mk OS_TEST=x86 build

Install the package:

make -f client.mk OS_TEST=x86 install

ppc64

Firefox builds fine as 32-bit, but fails to run (an unhandled exception somewhere in the javascript). The solution is to use linux32 to open a 32-bit shell where you can build it, or use linux32 to run the build script.

Using linux32 (which gives the kernel a 32-bit personality) will lose all the environment, so any exported variables are lost.

For CLFS, even under linux32 we default to the 64-bit compiler, so you will need to specify CC and CXX, either with ${BUILD32} if you have re-established it, or just with -m32.

Common

mv -v /opt/firefox-2.0/bin/firefox-config{,-32} &&
ln -sfv /usr/bin/multiarch_wrapper /opt/firefox-2.0/bin/firefox-config

If you're using a system installed NSS and NSPR then adjust the pkg-config files to point to the proper place:

ln -sfv /usr/lib/pkgconfig/nss.pc /opt/firefox-2.0/lib/pkgconfig/firefox-nss.pc &&
ln -sfv /usr/lib/pkgconfig/nspr.pc /opt/firefox-2.0/lib/pkgconfig/firefox-nspr.pc

64Bit

Use the following command to append your .mozconfig with 64bit specific flags:

cat >> .mozconfig << EOF
ac_add_options --libdir=/opt/firefox-2.0/lib64
export CC="gcc ${BUILD64}"
export CXX="g++ ${BUILD64}"
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH64}"
export USE_ARCH=64
EOF
sed -i "s:@MOZ_GTK2_LIBS@:& -L${XORG_PREFIX}/lib64 -lX11 -lXrender:g" config/autoconf.mk.in

Compile the package:

make -f client.mk build

Install the package:

make -f client.mk install &&
mv -v /opt/firefox-2.0/bin/firefox-config{,-64} &&
ln -sfv /usr/bin/multiarch_wrapper /opt/firefox-2.0/bin/firefox-config

If you're using a system installed NSS and NSPR then adjust the pkg-config files to point to the proper place:

ln -sfv /usr/lib64/pkgconfig/nss.pc /opt/firefox-2.0/lib64/pkgconfig/firefox-nss.pc &&
ln -sfv /usr/lib64/pkgconfig/nspr.pc /opt/firefox-2.0/lib64/pkgconfig/firefox-nspr.pc

Creating the Desktop File

Since Firefox does not provide a desktop file by default below is an example one:

cat > /usr/share/applications/firefox.desktop << "EOF"
[Desktop Entry]
Encoding=UTF-8
Name=Mozilla Firefox Browser
Comment=Lightweight browser based on mozilla
Exec=/opt/firefox-2.0/bin/firefox
Icon=firefox.png
Terminal=false
Type=Application 
Categories=Application;Network;
EOF

Grab the Firefox pixmap from http://cross-lfs.org/~jciccone/firefox.png and put it in /usr/share/pixmaps.

Retrieved from "?title=Firefox&oldid=3887"