-
Notifications
You must be signed in to change notification settings - Fork 112
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
Boost MP fails to compile with GCC 12 on PowerPC 64 little endian (ppc64le) #419
Comments
I should mention that this issue actually block any update of CGAL on Fedora 36, even if that is only on the secondary architecture ppc64le. |
Are you able to test to see if #421 fixes this? Also if you're able, could you please file a gcc bug report - I don't believe toolchains should be shipping with headers which aren't #include-able. It breaks the whole reason for having |
I am trying. I have to inject that patch in the Fedora build system, for build of
I do not think that it is a bug of gcc. The C++ reference web site, https://en.cppreference.com/w/cpp/preprocessor/include, warns about that case:
In this particular case, |
What is particularly unfortunate is that the |
This will not help the situation now, but as things progress, Multirpecision is intended to go standalone in 1.79 as Math also went standalone a few months ago. Maybe as progress continues, the build system can/could reduce its dependencies for Boost.Math and Boost.Multiprecision as it goes forward...? Might help later --- but not for this particular issue. |
seems it's actually a gcc bug per recent discussion on Fedora devel mailing list - https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104239 |
Thanks again, Dan (@sharkcz). It seems I misread the error message and it was not really about @jzmaddock @ckormanyos: Let's put the PR #421 on hold for a while, until the issue is fixed in gcc. Then I will re-trigger a build of CGAL-5.4-beta1 and see if the issue is actually already fixed. |
I think it is about |
IMO there are/were 2 issues, first is about how the header files can or cannot be included, which got fixed in GCC. Then there is the warning/error on ppc64le about the use of -DNO_WARN_X86_INTRINSICS. It can be added to the compiler/preprocessor flags and the build then runs. But it still fails due
Probably the ppc64le implementation of the x86 intrinsics is missing some bits. |
Indeed. I triggered a new build, using
I will now try the PR #421... |
@jzmaddock It took me some time but I eventually managed to confirm that PR #421 fixes the build issue on ppc64le. I have submitted a pull-request to Fedora |
At Fedora, the patch was merged yesterday, and then a new build of Boost-1.76 (plus that patch) was produced, and I have managed to compile CGAL-5.4 on top of that. On the side of Fedora, everything works, now. I expected this PR to be merged into |
Sorry, I meant PR #421. |
Done. |
…c64le). - See boostorg/multiprecision#419 - Looks like fixed in Boost 1.79 (but CF using 1.78).
…pc64le). - See boostorg/multiprecision#419 - Looks like fixed in Boost 1.79 (but CF using 1.78).
This bug is a duplicate of CGAL/cgal#6271. You can reply to either of them, and I will coordinate the status of both bugs.
Issue Details
The next version of Linux Fedora will be Fedora 36. On Jan 19th, 2022, the Fedora Release Engineering team has started a mass-rebuild of all Fedora package, to check if they all compile using the new GCC compiler version 12 and glibc version 2.35.
And the package CGAL-5.4-0.2.beta1.fc36 does not compile with the new toolchain. The error comes from internals of Boost Multiprecision, and the failure is only on the Fedora secondary architecture PowerPC64le.
Here is the failing task: Koji task #81462801. Here is the failing build log: https://kojipkgs.fedoraproject.org//work/tasks/2947/81462947/build.log
Possible Fix
The error is that
/usr/include/boost/multiprecision/cpp_int/intel_intrinsics.hpp
from Boost Multiprecision, version 1.76, test the presence of x86 intrinsics with:and GCC version 12 has added the file
/usr/lib/gcc/ppc64le-redhat-linux/12/include/immintrin.h
.There seems to be two options:
boost/multiprecision/cpp_int/intel_intrinsics.hpp
should defineNO_WARN_X86_INTRINSICS
,boost/multiprecision/cpp_int/intel_intrinsics.hpp
should explicitly test against PPC64.The text was updated successfully, but these errors were encountered: