> On 1 Jun 2016, at 18:16, Dmitri Gribenko <griboz...@gmail.com> wrote:
> 
> On Wed, Jun 1, 2016 at 7:17 AM, Karl via swift-dev <swift-dev@swift.org> 
> wrote:
>> We’d configure it like this:
>> - SWIFT_HOST_TRIPLE (e.g x86_64-unknown-linux-gnu)
>> - SWIFT_DEPLOYMENT_TARGETS (e.g. x86_64-unknown-linux-gnu + 
>> armv7-linux-gnueabihf + armv7-none-linux-androideabi + 
>> i386-none-linux-androideabi + …)
> 
> Hi Karl,
> 
> One thing to keep in mind is that triples are not as useful as they
> can seem to be, and trying to derive information from them can
> sometimes be a futile exercise because the information just either
> isn't there, or different vendors mean different things but use the
> same triple.
> 
> This is an excellent thread on this topic from llvm-dev:
> 
> http://comments.gmane.org/gmane.comp.compilers.llvm.devel/87804
> 
> Also: https://wiki.debian.org/Multiarch/Tuples#Why_not_use_GNU_triplets.3F
> 
> I'm not saying that SDK/ARCH is a better replacement (it isn't, it is
> currently a strict subset of the information from the triple), but at
> least it is not the triple itself, so people don't have the
> expectation of being able to provide the triple and let the system
> figure out the rest.  So I'd be concerned about starting to treat the
> triple as the primary piece of information, and the rest as secondary.
> 
> Dmitri
> 
> -- 
> main(i,j){for(i=2;;i++){for(j=2;j<i;j++){if(!(i%j)){j=0;break;}}if
> (j){printf("%d\n",i);}}} /*Dmitri Gribenko <griboz...@gmail.com>*/

Yes, I’m not really fond of using triples either. However, we need the triple 
for every stdlib target we build anyway, so even if we passed some kind of list 
of tuples from build-script > CMake, we’d have to try and derive a triple from 
that information and it must always match the thing that was specified in the 
build-script to configure LLVM.

The build script still only works in terms of “deployment targets” (e.g. 
iphoneos-armv7, iphonesimulator-x86_64) and the triples are hardcoded in there, 
so it’s not like we expect CMake to just work with completely arbitrary 
triples. The host and all of the stdlib targets you build will come from that 
curated list of triples which we know can be detected.

We don’t need too much information, anyway. We only need the architecture, and 
enough pattern matching to disambiguate which SDK it’s referring to (e.g match 
“*-linux-gnu*" for linux, “*-linux-android*" for android, etc). We don’t really 
need to *completely* understand the triple.

@Austin: Could your issues be related to 
https://github.com/apple/swift/commit/06d8455cdf53f9196ae5d6a09bd8aadbb3c1c3d6 ?

Karl
_______________________________________________
swift-dev mailing list
swift-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-dev

Reply via email to