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, run ./build.sh. To build for all platforms, run ARCH=all ./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
ARCHis unset, it will determine it from the local platform usinguname -m. - If
ARCHis set to a supported platform, it will assume you are running on that platform and build for it. - If
ARCHis set toall, it will try to build for all supported architectures.
As of this writing, the supported architectures are as follows. Multiple entries on each line are aliases:
amd64/x86_64arm64/aarch64ppc64le/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.