New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

initial support for ppc64 targets #6417

Merged
merged 21 commits into from Jan 5, 2019

Conversation

Projects
None yet
4 participants
@q66
Copy link
Contributor

q66 commented Dec 31, 2018

This adds enough stuff so that Void can be bootstrapped (from source, including cross) for all new targets.

This supports:

  • ppc64le (little endian elfv2 glibc)
  • ppc64le-musl (little endian musl)
  • ppc64-musl (big endian musl)

ELFv1 targets are not supported, musl uses ELFv2 on all endians by default. The cross toolchains for both musl targets are tested. The cross toolchain for glibc is not, as I am myself running the glibc system and don't have another Linux installation to test with. did some initial testing on another system, added fixes

Still pondering tuning the big endian binaries for POWER8+ (it should work without causing compatibility issues on older POWER as long as still targeting it) edit: now always tuning for power9 and supporting ppc970 (POWER4/G5) and newer on big endian and POWER8 and newer on little endian, also always compiling with altivec and musl always uses 64 bit long doubles as is expected for it

I have plenty of other fixes lined up for various packages, but first the initial plumbing needs to be out of the way.

May/probably will conflict with #6108, so depending on which one makes it in first, either this or the other PR will have to be rebased again.

@q66

This comment has been minimized.

Copy link
Contributor

q66 commented Jan 1, 2019

Okay, I think I will switch tunes for all targets. LE targets will add -mtune=power9 (AFAIK, does not make an actual difference on GCC 8 but will be useful for later), -mcpu=powerpc64le stays (so that it works on POWER8 and newer CPUs). BE targets will follow the same settings as Adelie Linux and have -mcpu=970 -mtune=power9 to allow for G5 and newer compatibility while still tuning for POWER9. Additionally, all musl targets will add -mlong-double-64 so that it does not have to be added in individual packages that break on it, and all targets will get -maltivec as that is always available.

@q66 q66 force-pushed the void-ppc64:initial-support branch from 8554daa to 87f1aad Jan 1, 2019

@q66

This comment has been minimized.

Copy link
Contributor

q66 commented Jan 1, 2019

Updated all the tunes/CPU requirements.

@q66 q66 force-pushed the void-ppc64:initial-support branch 2 times, most recently from 409ebfd to cc3cdfc Jan 3, 2019

@q66

This comment has been minimized.

Copy link
Contributor

q66 commented Jan 3, 2019

fixes for ppc64le glibc cross-toolchain

@q66 q66 force-pushed the void-ppc64:initial-support branch 2 times, most recently from dc1967d to a0e6887 Jan 3, 2019

q66 added some commits Dec 26, 2018

common: add ppc64 build profiles and other ppc64 bits
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]
gcc: add ppc64 support
--enable-vtable-verify causes ICEs on ppc64, so disable that,
also add arch specific bits everywhere else

the new patch is a backport from current gcc9/8.x tree, fixing
errors about "__float128 is not supported on this target" when
c++ math library on ppc64 and possibly other platforms (manifests
for example when building the bullet physics library)

we also need a patch for ppc64 musl, otherwise it will fail in
decimal float stuff, that one is taken from alpine linux

also serial-configure is broken for some cross targets, so
disable it

[ci skip]

@q66 q66 force-pushed the void-ppc64:initial-support branch from a0e6887 to a165ac0 Jan 5, 2019

@q66

This comment has been minimized.

Copy link
Contributor

q66 commented Jan 5, 2019

rebased

@Gottox

This comment has been minimized.

Copy link
Member

Gottox commented Jan 5, 2019

I think we're good to go here. I'm merging this first and later #6108. 👍

@Gottox Gottox merged commit ebe37e1 into void-linux:master Jan 5, 2019

@q66 q66 deleted the void-ppc64:initial-support branch Jan 6, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment