Project

General

Profile

Howto build

Fetch sources

Check out the ZRouter source code with git or by fetching the latest ZRouter sources (as zip)

For this tutorial we expect you check out / unpack the sources to /projects/ZRouter/zrouter.

For now you also need our patched FreeBSD sources. We work on getting this patches back to official FreeBSD-HEAD, so one day this step will be obsolete.

Get it via Mercurial or by fetching ZRouter's patched FreeBSD sources

For this tutorial we expect you check out / unpack the modified FreeBSD sources to /projects/ZRouter/FreeBSD.

Build

For this tutorial we expect you want to build a firmware for a device from vendor D-Link, the model is DIR-320 (see Supported devices).

Watch out for the host having settings in /etc/make.conf or /etc/src.conf that might influence the ZRouter build. It is recommended to set __MAKE_CONF and SRCCONF to /dev/null in order to make the build process ignore any host settings.

As root do:

cd /projects/ZRouter/zrouter
env __MAKE_CONF=/dev/null SRCCONF=/dev/null make FREEBSD_SRC_TREE=/projects/ZRouter/FreeBSD/head TARGET_PAIR=D-Link/DIR-320

Customize the build

You can create the file Makefile.local.opts in your ZRouter's home with predefined variables, so you can skip to specify them with every make run:

e.g. /projects/ZRouter/zrouter/Makefile.local.opts

FREEBSD_SRC_TREE=/projects/ZRouter/FreeBSD/head

# override default /usr/obj
OBJ_DIR=/projects/ZRouter/obj

TARGET_PAIR=D-Link/DIR-320

Now just run make.
If you want to have ability to override that variable, assign it with ?=,
this will allow you to set variable at make(1) command line.

For example, very useful to have TARGET_PAIR override-able, then you
will be able build image for different devices by call make(1) with
additional variable TARGET_PAIR=other/device. So place into
Makefile.local.opts following line:

TARGET_PAIR?=D-Link/DIR-320

and now if you run make(1) w/o variables you will have image for D-Link DIR-320.
But if you run make TARGET_PAIR?=D-Link/DIR-620, you will have image for DIR-620.