I need to recompile an older version of Clang (3.9.1) for compatibility with an older software product (UE4.14.3) on a newer system (UB20.04, without libm *_finite library support; see ⚙ D74712 Remove *_finite library support, following upstream).
The binary 3.9.1 provided by LLVM Download Page works except for the fact it assumes *_finite library support;
LLVM Download Page contains a large number of binaries, but no documentation regarding their exact compilation. What was the exact procedure (set of commands/script) used to generate their contents? I wish to replicate their generation after applying the relevant Clang source patch.
I don’t have an answer for your question, but recently I had to rebuild all the Clangs in order to enable assertions, and do it in a period-correct fashion to make sure old crashed still reproduce. I guess that release builds were done with a similar process. I posted details here (scroll to the right to see CMake invocation line)
Testing:
I tested the compiled clang++-3.9 in my environment and it works fine. I performed a number of successful compilations using various parameter combinations but could not replicate the exact output of [cfe-dev] 3.9.1 -final has been tagged;
For reference, I am yet to resolve the original libm obsolete *_finite function support issue as the functions are referenced in a UE4.14.3 precompiled third party PhysX library (compilation script not readily available). It appears however that they can be compiled without the -ffast-math flag (e.g. UE4.17+) which should theoretically resolve the issue.