The basic idea is to set up a Debian system with lots of different compilers and emulators for different architectures and configure multiple builds in different directories.
Note that there are also several docker files in the test/ subdirectory. These can be used to test other operating systems, especially older compilers which aren't supported on Debian testing anymore.
To use this, just run the simde-dev.sh script and go grab a cup of coffee lunch (it will take a while, and download a lot of packages). Once the container is ready it will drop you into a bash shell in /opt/simde; this is the build directory.
This will bind the parent directory (the root of the SIMDe checkout) to /usr/local/src/simde; any changes to either will propagate to the other, meaning you can continue using your normal development environment and just re-run ninja in the container to (re)build SIMDe.
If you would like build directories to persist across multiple invocations of simde-dev.sh, you can set the PERSISTENT_BUILD_DIR to a directory on the host filesystem and it will be mapped to /opt/simde in the container.
Once your container is finished building, just simde-reset-build.sh and it should be populated with a bunch of subdirectories which you can build with ninja. For example, ninja -C gcc-10 will build SIMDe using GCC 10. If you want to run the tests, ninja -C gcc-10 test (or cd gcc-10 && ninja test).
You can also run simde-reset-build.sh build-name to (re)generate a single build.
By default, we use Debian testing. If you would like to use Debian unstable instead, just run simde-dev.sh unstable.
Each build has an associated Meson cross file (see the cross-files/ subdirectory). We kind of abuse these by adding flags like -Wextra, -Werror, -march=..., etc., which aren't really about cross-compilation. However, you can add or remove C/C++ flags in the cross files, or if you want to add flags you can just put them in the CFLAGS/CXXFLAGS environment variables and reconfigure the build. You can also create a new cross file with your preferred configuration.