This is a fork of the BIRD internet routing daemon which provides the following additional function used by Calico:
- Support for routing using IP-in-IP
To build bird
:
- on your platform for your platform, run
./build.sh
. - on
amd64
for all platforms, runARCH=all ./build.sh
. - on
amd64
for a specific other platform, runARCH=<targetarch> ./build.sh
.
bird
can be built for one platform - your local one, by default - or for all supported platforms.
When you run the build script - build.sh
- it tries to determine what platforms you want to build it for by looking at the environment variable ARCH
.
- If
ARCH
is unset, it will determine it from the local platform usinguname -m
. - If
ARCH
is set to a supported platform, it will try to build from your local platform for that platform. - If
ARCH
is set toall
, it will try to build for all supported architectures from your local platform.
As of this writing, the supported architectures are as follows. Multiple entries on each line are aliases:
amd64
/x86_64
arm64
/aarch64
ppc64le
/ppc64el
/powerpc64le
The build works as follows.
If you are building natively, it builds an alpine-linux-based build image from Dockerfile
. It then runs a container bind-mounting the source directory as /code
, builds the binaries statically linked, and saves them to ./dist/<arch>/
.
If you are cross-building, it builds a debian-linux-based build image from Dockerfile-all
. It then runs a container bind-mounting the source directory /code
, builds the binaries statically linked for each architecture, and saves themt to ./dist/<arch>/
.
In the list of architectures above, the first name in the alias as the one used for dist/<arch>
, no matter what architecture you entered. Thus if you use ARCH=x86_64 ./build.sh
, the binaries will be under dist/amd64/
. If you use ARCH=all
, it will create for each.