It is widely expected that libsecp256k1, which requires only C89 and <stdint.h>, can be built with any toolchain that meets those requirements, including old and ancient ones.
This PR introduces a CI job that builds on Debian Wheezy, which could serve as a baseline for such expectations.
Wheezy is the earliest Debian release that ships all Autotools components with supported versions (Autoconf>=2.60, Automake>=1.11.2). This allows us to reuse our testing script with minimal adjustments.
The exact compiler version, GCC 4.4, was chosen to be able to catch issues like this one.
This PR also raises the following questions:
There are some warnings that are excluded from errors:https://github.com/bitcoin-core/secp256k1/blob/5362c070b7682840e4f258a31cc4ef606c39a02f/.github/workflows/ci.yml#L307 Do we want to improve code hygiene and fix them?
This branch exposes an example issue with compatibility with retro Linux systems:https://github.com/bitcoin-core/secp256k1/blob/5362c070b7682840e4f258a31cc4ef606c39a02f/.github/workflows/ci.yml#L303-L305 Do we want to fix it?
The test script runs
make testvectorsonly if not cross-compiling. But it seems it should run fine even when cross-compiling as it uses Python scripts.