clang 3.4 can't be configured (part of a selfupdate)

Ryan Schmidt ryandesign at macports.org
Sat Jul 30 21:22:41 PDT 2016


> On Jul 30, 2016, at 11:20 PM, Jeremy Huddleston Sequoia <jeremyhu at macports.org> wrote:
> 
> 
>> On Jul 30, 2016, at 18:16, Ryan Schmidt <ryandesign at macports.org> wrote:
>> 
>> 
>>> On Jul 30, 2016, at 7:58 AM, [ftp83plus] wrote:
>>> 
>>>> El 29 jul 2016, a las 16:45, Lawrence Velázquez escribió:
>>>> 
>>>>> On Jul 29, 2016, at 1:35 AM, Ken Cunningham wrote:
>>>>> 
>>>>>> /opt/local/bin/clang++-mp-3.3   -pipe -Os -stdlib=libc++   -arch i386 -mmacosx-version-min=10.6 -Wl,-search_paths_first -Wl,-headerpad_max_install_names  -L/opt/local/lib -Wl,-headerpad_max_install_names  CMakeFiles/cmTC_70577.dir/testCXXCompiler.cxx.o  -o cmTC_70577  
>>>>>> ld: warning: ignoring file /usr/lib/libc++.dylib, file was built for unsupported file format ( 0xcf 0xfa 0xed 0xfe 0x 7 0x 0 0x 0 0x 1 0x 3 0x 0 0x 0 0x 0 0x 6 0x 0 0x 0 0x 0 ) which is not the architecture being linked (i386): /usr/lib/libc++.dylib
>>>>> 
>>>>> You're building for -arch i386, but your libc++.dylib does not have
>>>>> that architecture (it's likely going to be x64_86) -- So somewhere
>>>>> ( probably in your macports.conf file, I would think) your
>>>>> architecture is not set correctly.
>>>> 
>>>> The libomp port is being installed +universal. Since it uses the muniversal-1.0 portgroup, MacPorts builds it for each architecture separately, then lipo(1)s everything together at the end.
>>>> 
>>>> The problem is that the i386 build is trying to link to libc++, which in your case appears to be provided by libcxx. But libomp does not declare a dependency on libcxx, so MacPorts did not attempt to rebuild libcxx +universal. You may have to do this yourself.
>>>> 
>>>> vq
>>> 
>>> So should I rebuild libcxx +universal variant first before performing Step 4 of the LibcxxOnOlderSystems?
>> 
>> Jeremy, shouldn't we modify the LibcxxOnOlderSystems instructions to include installing libcxx +universal?
> 
> 
> Something like this should work:
> 
> sudo port -v -s upgrade --enforce-variants libcxx +universal universal_archs="x86_64 i386" configure.compiler=macports-clang-3.8
> 
> or:
> 
> sudo port -v -s upgrade --enforce-variants ld64 +ld64_127
> sudo port -v -s upgrade --enforce-variants libcxx +universal universal_archs="x86_64 i386 ppc" configure.compiler=macports-clang-3.8
> 
> I've updated the wiki as well.

Thanks. Selecting universal_archs at the command line is valid for that command only. If the libcxx port were ever to be updated with a new version or revision, it would then be rebuilt with the universal_archs specified in macports.conf. Maybe it would be useful to override universal_archs in the libcxx portfile to the widest compatibility supported on the user's OS, and to force the universal variant on? libcxx has no dependencies so this shouldn't cause too much inconvenience.




More information about the macports-users mailing list