[MacPorts] #54242: clang-3.8 build fails on 10.5 PPC due to fatal error: lipo: specifed architecture in libclang_rt.10.4.a does not match its cputype -- and workaround that allows build to succeed

MacPorts noreply at macports.org
Sat Jul 15 15:22:35 UTC 2017


#54242: clang-3.8 build fails on 10.5 PPC due to fatal error: lipo: specifed
architecture in libclang_rt.10.4.a does not match its cputype -- and
workaround that allows build to succeed
------------------------+----------------------
  Reporter:  kencu      |      Owner:  jeremyhu
      Type:  defect     |     Status:  assigned
  Priority:  Normal     |  Milestone:
 Component:  ports      |    Version:
Resolution:             |   Keywords:  powerpc
      Port:  clang-3.8  |
------------------------+----------------------

Comment (by kencu):

 I've been working further on this as time allows. The cmake script that
 manages the building of libclang_rt.10.4.a looks at the supported arches
 to test
 {{{
 -- OSX 10.4 supported arches: i386;x86_64;ppc;ppc64
 }}}
 and then tries to run a test-compile with each using the build system.
 This build of clang-3.8 on 10.5 PPC is bootstrapping with gcc6 (no other
 choice). So with this gcc6 macports configuration, all the x86 code fails
 to build, and the system tries to build the ppc and ppc64 code. But all
 these test compiles fail to build as well for some reason (Cmake error log
 attached), so I guess it defaults to i386 and x86_64. And herein comes the
 "lucky" quirk - when gcc6 on ppc gets asked to build -arch i386, it says
 it can't and then builds it -arch ppc instead. So that is how we wind up
 getting code out.

 The supplied object files that make libclang_rt.10.4.a are close to
 correct, but they don't actually include the proper ppc ASM code from the
 ppc folder -- the system builds the i386 folder instead, as it is
 confused.

 With that, it's perhaps surprising that in the end, this produces a build
 system that passes 487/500 tests in the test-suite. (10 of those the
 broken exceptions on ppc).

 To fix this issue, the easiest thing to do would be to skip the tricky and
 multi-arch cmake build tricks used in compiler_rt and just write up a
 cmake build file by hand. This turned out to be trivial (attached), but I
 need to make sure I have all the proper objects included and none of the
 not-needed ones, and this is not so trivial. Any help there appreciated.

 Alternatively, it is likely possible to see why all the gcc ppc cmake
 build tests are failing, and fix that. No doubt this is the proper thing
 to do, and wish that I could do that.

 Finally, it might be possible to build clang_rt as a separate project
 using the makefiles as per the old days -- it is designed to do that as a
 separate build I see.

 Pretty close. clang-3.8 on PPC is working surprisingly well to build
 software that can't be built any other way, in the end.

--
Ticket URL: <https://trac.macports.org/ticket/54242#comment:5>
MacPorts <https://www.macports.org/>
Ports system for macOS


More information about the macports-tickets mailing list