Your Search Results

    Building Mozilla XForms

    Getting started

    Things to know first:

    • The xforms extension has a dependency on the schema-validation extension, so you need to build both (that's done automatically)
    • Mozilla switched from CVS to Mercurial starting with Firefox 3.5. During CVS times, the Mozilla repository contained both extensions. Since the switch to Mercurial, the extensions live in separate repositories.

    Before you can start building the xforms extension, you should check your Mozilla build environment by doing a regular Firefox build. Have a look at the Build Instructions for detailed information for your platform. The following table gives you an overview of which version you want to build:

    Firefox version Gecko/Toolkit version source code notes status

    Firefox 2.0

    Gecko 1.8.1 CVS, branch MOZILLA_1_8_BRANCH not developed any more
    last release: 0.8.5ff2
    Firefox 3.0 Gecko 1.9.0 CVS, branch HEAD not developed any more
    last release: 0.8.5ff3
    Firefox 3.5 Gecko 1.9.1 xforms/schema-validation code does not build with Firefox 3.5 any more not supported
    Firefox 3.6 Gecko 1.9.2 xforms/schema-validation code does not build with Firefox 3.6 any more not developed any more
    last release: 0.8.6
    Firefox 4 Gecko 2.0 Mercurial, repositories
    • mozilla-central
    • xforms
    • schema-validation
    mostly works
    upcoming 0.8.7 release

    If you have your first working Firefox build, you can go on with building the xforms extension.

    Firefox 3.5 and up: get the source code

    If you want to build XForms for Firefox up to 3.0, you already have the required source code, it's part of your CVS checkout. Skip to the next section.

    Starting with Firefox 3.5, you need to do two more Mercurial checkouts:

    cd extensions
    hg clone
    hg clone

    That's it, you now have everything you need to get started.

    Configure your build: the .mozconfig file

    Mozilla uses a file called .mozconfig in your home directory to store the build configuration. For xforms, you will need to add the following line:

    ac_add_options --enable-extensions="default,xforms"
    # if you're using a Mozilla source before 2010-11-06 (e.g. an old Firefox 3.6 release) use this instead (see bug 601570 for details):
    ac_add_options --enable-extensions="default,xforms,schema-validation"

    A complete .mozconfig file for a release build might look like that:

    . $topsrcdir/browser/config/mozconfig
    mk_add_options MOZ_CO_PROJECT=browser
    mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-@CONFIG_GUESS@
    #mk_add_options AUTOCONF=autoconf2.13 # possibly needed
    #mk_add_options MOZ_MAKE_FLAGS=-jn # (optional) replace n with the number of parallel build processes (e.g. 2 on a dual core processor)
    ac_add_options --enable-extensions="default,xforms"
    ac_add_options --disable-debug
    ac_add_options --enable-optimize
    ac_add_options --disable-tests

    For a debug build, you could use this configuration:

    . $topsrcdir/browser/config/mozconfig
    mk_add_options MOZ_CO_PROJECT=browser
    mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-@CONFIG_GUESS@
    ac_add_options --enable-extensions="default,xforms"
    ac_add_options --enable-debug
    ac_add_options --disable-optimize
    ac_add_options --disable-tests


    Now that you have everything ready, you can rebuild Mozilla with the same command you used before to build Firefox without xforms. Switch to the root of your source directory and start the build with

    make -f build

    After the build finishes, you'll have a xforms.xpi in obj-*/dist/xpi-stage/xforms.xpi. Congratulations, you've successfully built your first Mozilla XForms extension!

    The built XPI file will only install on a nightly snapshot from the same day or your self-built Firefox version. If you are sure that older or newer Firefox versions are compatible with your extension, you can unzip the XPI file (it's a regular ZIP file), edit the install.rdf and change the minVersion and maxVersion entries. The following scheme usually works (replace {GeckoVersion} with the used Gecko/Toolkit version):


    For example, for the Firefox 3.5 version of the extension, it might look like that:


    Then zip the files again (or use an editor like vim that can edit files inside a ZIP archive).

    Document Tags and Contributors

    Contributors to this page: Sheppy, Imphil
    Last updated by: Sheppy,
    Hide Sidebar