Clang target triple and clang-linux.jam

Edward Diener via Boost-build <[email protected]> Tue, 21 Apr 2020 05:11:35 -0400
Newsgroups gmane.comp.lib.boost.build
Message-ID <[email protected]>
The default target triple, as represented by the "-target" command line 
parameter, for clang depends on the installation and the address model. 
On Windows installations of clang in LLVM releases the default targer 
triple changed form targeting gcc to targeting vc++ with clang-3.8. The 
target triple chosen affects the validity of which command line 
parameters are recognized as valid and how those command line 
paramneters are interpreted.

In the clang-linux.jam toolset the command line parameters conform to a 
target triple representing gcc as the target, ie. 'i686-pc-windows-gnu' 
for a 32-bit build and 'x86_64-pc-windows-gnu' for a 64-bit build. If 
clang-linux is used with the default target triple in LLVM release 3.8.0 
on up for Windows, without the target triple specifically being set to 
target gcc, the clang-linux toolset will fail miserably when run on 
Windows using such an LLVM release. We have a separate toolset, 
clang-win, for using the default target triple for LLVM Windows releases 
3.8 on up which is to target vc++.

In the Boost Build tests, the 'toolset_clang_linux' works fine when run 
in Linux because the default target triple for clang-3.9.0 on Linux 
targets gcc. But when run on Windows it fails because the default target 
triple targets vc++.

How should this be resolved ?

In my own clang-linux toolset definitions I have the correct target 
triple for 32-bit and 64-bit builds set in the toolset definition as 
<compileflags> and <linkflags> so using the clang-linux toolset works 
properly.


_______________________________________________
Unsubscribe & other changes: https://lists.boost.org/mailman/listinfo.cgi/boost-build