Boost logo

Boost Users :

Subject: Re: [Boost-users] LLVM bitcode for Boost libraries?
From: degski (degski_at_[hidden])
Date: 2018-12-04 16:27:58


On Tue, 4 Dec 2018 at 13:08, Paul A. Bristow via Boost-users <
boost-users_at_[hidden]> wrote:

>
>
>
>
> *From:* Boost-users [mailto:boost-users-bounces_at_[hidden]] *On
> Behalf Of *degski via Boost-users
> *Sent:* 30 November 2018 20:40
> *To:* boost-users_at_[hidden]
> *Cc:* degski
> *Subject:* Re: [Boost-users] LLVM bitcode for Boost libraries?
>
>
>
> On Fri, 30 Nov 2018 at 16:09, Osman Zakir via Boost-users <
> boost-users_at_[hidden]> wrote:
>
> So you mean I should use Clang-C2/Clang with Microsoft CodeGen, aka the
> clang-cl compiler? Either way, how do I change the compiler toolchain when
> building Boost?
>
>
>
> No, that's dead for a [quite] while now, just get and install Clang/LLVM
> from https://releases.llvm.org/download.html#7.0.0.
>
>
>
> AFAIK, the final Boost-1.69 release [or current dev branch] will allow for
> building with clang-cl **and lld-link** [Thanks to Peter Dimov]. You'll
> need to have a project-jam file something like this:
>
>
>
> import option ;
> using clang-win : : "C:\\Program Files\\LLVM\\bin\\clang-cl.exe"
> -fuse-ld=lld :
> <compatibility>vc14
> <compileflags>-fmsc-version=1915
> <compileflags>-fms-compatibility
> <compileflags>-fno-delayed-template-parsing
> <compileflags>-flto=thin
> <cxxflags>"/std:c++17"
> <cxxflags>"/Zc:forScope"
> <cxxflags>"/Zc:wchar_t"
> <cxxflags>"/EHsc"
> <cxxflags>"/Zc:inline"
> <cxxflags>"/Gd"
> <cxxflags>"/diagnostics:classic"
> <cxxflags>-Wno-unknown-argument
> <cxxflags>-Wno-unknown-pragmas
> <cxxflags>-Wno-macro-redefined
> <cxxflags>-Wno-unused-variable
> <cxxflags>-Wno-mismatched-tags
> <cxxflags>-Wno-deprecated-declarations
> <cxxflags>-D_UNICODE
> <cxxflags>-DUNICODE
> <cxxflags>-DBOOST_USE_WINDOWS_H
> <cxxflags>-DBOOST_NO_ANSI_APIS
> <cxxflags>-DBOOST_USE_WINAPI_VERSION=0x1000
> <cxxflags>-DBOOST_USE_WINDOWS_H=1
> <cxxflags>-DNOMINMAX
> <cxxflags>-DWIN32_LEAN_AND_MEAN
> <cxxflags>-D_CRT_SECURE_NO_WARNINGS
> ;
>
>
>
> But you'll have to adjust that to your needs.
>
>
>
> Before I bash my head against this configuration again, please can you
> confirm that this does this work for you to build the Boost libraries **on
> Windows** so that one can use the Boost.Test library (not header-only)?
>
>
>
> Am I right on thinking that
>
>
>
> All the / items are to allow compilation of MSVC stuff.
>
>
>
> Is it essential to use <cxxflags>"/EHsc" ? when
>
>
>
> test suite using Boost. emits a warning that EHa should be enabled:
>
> *warning C4535: calling _set_se_translator() requires /EHa*
>
>
>
> All the –Wno- items are to deal with a blizzard of warnings from MSVC
> stuff?
>
>
>
> <cxxflags>-D_CRT_SECURE_NO_WARNINGS is need to avoid C runtime
> warnings.
>
>
> And all the other –D items are only needed if you want to use more than
> empty project console applications?
>

You can probably forget everything after the line <cxxflags>"/std:c++17",
the rest is indeed mostly to have a build log with as little nonsense as
possible and I picked /EHsc, because this seems to be the default in the
IDE. I don't build the test suite, but the libs build quite nicely.

degski
PS: @Paul, was not clear to me who wrote what [who was abusing his head],
so maybe I missed something.

-- 
*“If something cannot go on forever, it will stop" - Herbert Stein*


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net