NDK r25 has removed GNU Assembler (GAS). Removal of GAS introduced a number of build issues.
The most prominent is:
/usr/bin/as: unrecognized option '-EL'
Some options to solve this:
1. Disable building custom assembly and suffer performance penalty
2. Hand rewrite the custom assembly to be LLVM compatible
3. Wait for upstream to write LLVM compatible assembly (openssl, openssl-1.1)
4. Bring back GAS from NDK r23c
In this commit, GAS is brought back as a separate toolchain instead of following NDK r23c file hierarchy.
We pass "--gcc-toolchain=GAS_TOOLCHAIN_DIR" to NDK r25 clang to detect.
Packages only have to add "termux_step_gnu_as_23c" to build.sh to enable GAS.
In the future, we expect packages should follow option 3 more than option 4 as that is a last resort.
This commit also bumps revision for packages that rely (or previously rely) on "-fno-integrated-as":
hors, libffi, libgcrypt, libpixman, openssl, openssl-1.1
Co-authored-by: Henrik Grimler <grimler@termux.dev>
Co-authored-by: Chongyun Lee <45286352+licy183@users.noreply.github.com>
Changes made:-
- OpenSSL has been updates to 3.0.1
- `openssl-1.1` package has been added for packages still needing the
legacy version.
Any package that still needs legacy openssl-1.1 needs some extra CFLAGS,
CXXFLAGS, LDFLAGS and CPPFLAGS
CFLAGS="-I$TERMUX_PREFIX/include/openssl-1.1 $CFLAGS"
CXXFLAGS="-I$TERMUX_PREFIX/include/openssl-1.1 $CXXFLAGS"
CPPFLAGS="-I$TERMUX_PREFIX/include/openssl-1.1 $CPPFLAGS"
LDFLAGS="-L$TERMUX_PREFIX/lib/openssl-1.1 $LDFLAGS"
Additionally if the package by itself adds `-I$prefix/include` or
similar, it needs to be patched not to do so in order to prevent it from
using OpenSSL 3 headers
Similarly for LDFLAGS, make sure that package doesn't add
`-L$prefix/lib` and `-Wl,-rpath=$prefix/lib` before OpenSSL 1.1 LDFLAGS
nentioned above or else it will cause compilation errors