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.