Boost logo

Boost :

Subject: Re: [boost] How to build boost on windows with Clang/LLVM
From: Mikhail Strelnikov (mikhail.strelnikov_at_[hidden])
Date: 2017-10-15 15:01:25


I do use clang on Windows with bjam and it works (until it doesn't).

This 'C:/Program' looks like problem patched by this commit -
https://github.com/boostorg/build/commit/c442d64b30a585ca114a1cb8c5ed8b33a93412a3
So you might need to use develop BB.

Here is my site-config.jam (you probably won't need all the stuff):

using clang
    :
    : "C:/Program Files/LLVM/bin/clang.exe"
    : #<compileflags>-fmsc-version=1910
      <ranlib>"C:/Program Files/LLVM/bin/llvm-ranlib.exe"
      <archiver>"C:/Program Files/LLVM/bin/llvm-ar.exe"
      <rc>"C:/Program Files (x86)/Windows Kits/10/bin/10.0.15063.0/x64/rc.exe"
      <linkflags>-fuse-ld=lld
      <linkflags>-llibcmtd

      <cxxflags>-Wno-gnu-string-literal-operator-template
      <cxxflags>-Xclang <cxxflags>-flto-visibility-public-std

      <cxxflags>-fno-ms-compatibility
      <cxxflags>-fno-delayed-template-parsing
      <cxxflags>-Wno-dynamic-exception-spec # TODO: file bug to MS
      <cxxflags>-Wno-c++11-narrowing # TODO: wut
      <cxxflags>-D_WINSOCK_DEPRECATED_NO_WARNINGS # TODO: wut

      <cxxflags>-std=c++2a
      <cxxflags>-Wunused-command-line-argument

      <cxxflags>-DBOOST_USE_WINDOWS_H
      <cxxflags>-DBOOST_NO_ANSI_APIS

      <cxxflags>-D_DEBUG
      <cxxflags>-gcodeview

      <cxxflags>-D_MT
      <cxxflags>-D_WIN32
      <cxxflags>-DNOMINMAX
      <cxxflags>-DWIN32_LEAN_AND_MEAN
      <cxxflags>-D_HAS_AUTO_PTR_ETC=1
      <cxxflags>-D_ITERATOR_DEBUG_LEVEL=0
      <cxxflags>-D_CRT_DECLARE_NONSTDC_NAMES=1 # clang defines
__STDC__, cl does not (see definition of _CRT_INTERNAL_NONSTDC_NAMES)

      <cxxflags>-IC:/PROGRA~2/MICROS~1/2017/COMMUN~1/VC/Tools/MSVC/1411~1.255/atlmfc/include
      <linkflags>-LC:/PROGRA~2/MICROS~1/2017/COMMUN~1/VC/Tools/MSVC/1411~1.255/atlmfc/lib/x64
    ;

It only works for x64 debug, so invocation is:

b2.exe -sBOOST_ROOT=B:\boost\ --build-dir=O:\out --disable-icu -j16
link=static runtime-link=static address-model=64 toolset=clang
variant=debug

Rene told us he is going to do things for clang on Windows, so there
is always hope.

2017-10-15 15:12 GMT+03:00 degski via Boost <boost_at_[hidden]>:
> On 15 October 2017 at 12:32, degski <degski_at_[hidden]> wrote:
>
>> ... so I am gonna give that a try and get back how it went.
>>
>
> Ok, tried that, (I think as before), this is the first clue something is
> wong (with quotes, obviously):
>
> C:\boost_1_65_1>bjam -d0 --clean
> 'C:/Program' is not recognized as an internal or external command,
> operable program or batch file.
>
> So obviously a f'in 'quotes'-problem.
>
> This then later causes the same problem with <ranlib>"C:/Program
> Files/LLVM/bin/llvm-ranlib.exe" <archiver>"C:/Program
> Files/LLVM/bin/llvm-ar.exe". I see in boost-build (the folder I'm building
> in) that source files get compiled to *.obj (they exist), but they do not
> get assembled into a lib, because the tool-chain's exe's can't be found,
> due to missing quotes (that are there), wtf?
>
> ========config-project.jam=======================
>
> import option ;
>
> using clang : 6.0 :
> "C:/Program Files/LLVM/bin/clang++.exe" :
> <compileflags>-fmsc-version=1911
> <compileflags>-DBOOST_USE_WINAPI_VERSION=0x1000
> <compileflags>-DBOOST_USE_WINDOWS_H=1
> <compileflags>-D_WIN32_WINNT=0x1000
> <compileflags>-DNOMINMAX
> <ranlib>"C:/Program Files/LLVM/bin/llvm-ranlib.exe"
> <archiver>"C:/Program Files/LLVM/bin/llvm-ar.exe"
> <linkflags>-fuse-ld=lld
> <linkflags>-flto=thin
> ;
>
> option.set keep-going : false ;
>
> ===========================================
>
> It's an ansi codepage 850 txt file, just in case (I checked).
>
> The quotes *are* there [in the file] of course, so I don't get it...
>
> degski
>
> _______________________________________________
> Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk