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.