#37463: llvm-3.2 does not build / universal variants semantics should be changed -----------------------+------------------------ Reporter: vince@… | Owner: jeremyhu@… Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: 2.1.2 Resolution: | Keywords: universal Port: llvm-3.2 | -----------------------+------------------------ Comment (by vince@…): Replying to [comment:1 jeremyhu@…]:
No. +universal means that the built binaries will run on either machine. This is true for *all* ports. Making it have a different meaning (ie CTARGET rather than CHOST) for toolchain ports is nonsensical. Furthermore, there is no reason to care about CTARGET for llvm because it is not as restricted as gcc and can support multiple targets with the same build.
Have a look at gccXX ports: {{{ -> port installed gcc47 The following ports are currently installed: gcc47 @4.7.2_2+universal (active) -> file /opt/local/bin/gcc-mp-4.7 /opt/local/bin/gcc-mp-4.7: Mach-O 64-bit executable x86_64 }}} The universal flag in this case enables the multilib option, which means: "please generate a compiler that can be used for both x86-64 and i386 code generation" ; there is no way to generate a ‘universal binary‘ gcc. I don’t see why llvm/clang would not adhere to the same convention, which seems reasonable to me: consider a port like atlas which depends on gcc47 for its +gcc47 variant. If I build a universal atlas, I don’t care about gcc being a universal binary: what I desire is a gcc that can compile atlas for both x86 and i386 (or ppc and ppc64); that’s exactly what the universal variant of gcc offers me. Now if I build clang/llvm without the universal variant, I also get a compiler able to generate code for both x86/i386, that’s what I want. But if I now desire to build atlas with the universal variant, macports will rebuild clang with the +universal option, which is at minimum a waste of resources… -- Ticket URL: <https://trac.macports.org/ticket/37463#comment:3> MacPorts <http://www.macports.org/> Ports system for Mac OS