Boost logo

Boost-Build :

From: egoots_at_[hidden]
Date: 2022-05-06 17:15:05

In the past I have always built boost including iostreams with zlib
using environment variables to build from sources.

set ZLIB_INCLUDE=C:\Dev\zlib\zlib-1.2.12
set ZLIB_SOURCE=C:\Dev\zlib\zlib-1.2.12

and then running b2 using the following command (from within a Visual
Studio 2017 x64 Native Tools command prompt window (In this case I am
using Boost 1.79)

.\b2 -j6 link=static,shared threading=multi variant=debug,release
toolset=msvc-14.1 address-model=64 --without-python
--stagedir=stage_x64 > build64.log 2>&1

The above works.

Now, I want to build zstd as well. It does not seem to support a source
build according to the iostreams documents. Nor does it seem to support
using environment variables and indicates I should use a user-config.jam

First I thought I would start by switching my zlib build to use
user-config so I tried:

using zlib : 1.2.12 : <source>C:/Dev/zlib/zlib-1.2.12 ;

I built with --debug-configuration, and it shows good progress at the start:

notice: Loading user-config configuration file 'user-config.jam' from
notice: [zlib] Building zlib from source as z
notice: [zlib] Condition
notice: [zlib] found zlib source in /C:/Dev/zlib/zlib-1.2.12

Building the Boost libraries

     - WinDbg builds : yes [9]
     - WinDbg builds : yes [10]
     - WinDbgCached builds : yes [9]
     - BOOST_COMP_GNUC >= 4.3.0 : no [9]
     - cxx11_hdr_thread : yes [9]
     - cxx11_hdr_regex : yes [9]
error: Name clash for '<pC:\Dev\boost_1_79_0\stage_x64\lib>libz.lib'
error: Tried to build the target twice, with property sets having
error: these incompatible properties:
error: - <debug-symbols>on <inlining>off <optimization>off
<runtime-debugging>on <variant>debug
error: - <debug-symbols>off <define>NDEBUG <inlining>full
<optimization>speed <runtime-debugging>off <variant>release
error: Please make sure to have consistent requirements for these
error: properties everywhere in your project, especially for install
error: targets.

How should the zlib libraries be specified in the user-config.jam file
in order to build correctly on Windows?

Ultimately, I want to also know how to build boost iostreams with zstd.
I downloaded the release 1.5.2 which including the include header zstd.h
in the include subfolder, the libzstd.lib and libzstd.dll.a (I was
expected a .lib file here) in the dll subfolder , as well as a static
lib file libzstd_static.lib in the static folder.

I attempted to used the following settings in the user-config.jam

using zstd : 1.5.2 : <include>C:/Dev/zstd/zstd-v1.5.2-win64/include
<search>C:/Dev/zstd/zstd-v1.5.2-win64/dll ;

Then rebuilt boost with the following output snippets

notice: Loading user-config configuration file 'user-config.jam' from
notice: [zstd] Using pre-installed library
notice: [zstd] Condition

In the Building the boost libraries section

     - zstd : no [4]
     - zstd : no (cached) [4]
     - zstd : no
     - zstd : no (cached)

Boost builds successfully, but zstd does not appear to be built into it.

What should the user-config.jam file look like to build with zstd on

Boost-Build list run by bdawes at, david.abrahams at, gregod at, cpdaniel at, john at