this will rewrite total paths to be relative to CCACHE_BASEDIR before caching,
helps prevent cache misses due to changed wrksrc with build systems like cmake
that use total paths in their Makefiles
This adds the build profiles for ppc64 targets as well as
modifications in other parts of the infra.
These targets are supported:
- ppc64le (glibc little endian elfv2)
- ppc64le-musl (musl little endian)
- ppc64-musl (musl big endian)
ELFv1 targets are explicitly not supported at this point.
Big endian musl supports ppc 970 or newer, while little endian
targets are set to a generic powerpc64le which effectively means
POWER8 and newer. Tuning is always set for POWER9, which is the
most likely target hardware. We also make sure AltiVec is always
on, because it is supported on all hardware we target.
[ci skip]
Thanks to @chneukirchen for finding the correct solution:
gcc sets -mno-shared by default when compiling non-PIC, and because
we are overriding the builtin specs, this internal rule set for gnu/mips
does not trigger:
gcc/config/mips/gnu-user.h:/* Default to -mno-shared for non-PIC. */
gcc/config/mips/gnu-user.h: " %{mshared|mno-shared|fpic|fPIC|fpie|fPIE:;:-mno-shared}"
So that we now use a specific specs file just for mips that sets -mshared for PIC.
This fixes building packages with hardening enabled for MIPS.
I just booted a full PIE base-system successfully on my CI20 Creator.
For now we set -fPIE again in C{,XX}FLAGS to fix the build in attr/acl/coreutils, etc.
glibc is a wonderful library. Tidy and clean. To keep it that clean
it does such useful things as sorting the CFLAGS alphabeticly.
Unfortunately this breaks command line arguments that contain parameters
such as `-include /foo/bar`. This commit works around this flaw by
removing the space and using -include/foo/bar instead.
This reverts commit c46b43df61.
lynx was complaining about missing " in the CFLAGS. apparently this is an error in the lynx
build system, not in the CFLAGS.
Note that -fPIE defines __PIC__ and __PIE__, so passing this on to
pure cpp(1)/gcc -E executions is relevant.
Found the hard way due to ccache breaking on i686 with precompiled
headers which used the non-PIC definitions in cpuid.h since header
precompilation doesn't read cc1_options.