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
amd64for all platforms, runARCH=all ./build.sh. - on
amd64for 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
ARCHis unset, it will determine it from the local platform usinguname -m. - If
ARCHis set to a supported platform, it will try to build from your local platform for that platform. - If
ARCHis 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_64arm64/aarch64ppc64le/ppc64el/powerpc64lemips64el
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.