Basic recipe for building the Boost libs

Includes building libbacktrace for use with MinGW builds using
Boost.stacktrace.
This commit is contained in:
Bill Somerville 2020-09-30 18:43:58 +01:00
parent 6b0033c128
commit f0bd7634a5
No known key found for this signature in database
GPG Key ID: D864B06D1E81618F
2 changed files with 228 additions and 0 deletions

1
.gitignore vendored
View File

@ -14,6 +14,7 @@ jnq*
*.txt
*.bak
!**/CMakeLists.txt
!**/*.txt
__pycache__
cmake-build-debug
cmake-build-release

227
doc/building-Boost-libs.txt Normal file
View File

@ -0,0 +1,227 @@
Linux
=====
sudo apt install libboost-all-dev
macOS
=====
Download the latest Boost sources from here: boost.org
Currently v 1.74.0 - https://dl.bintray.com/boostorg/release/1.74.0/source/boost_1_74_0.tar.bz2
cd ~/Downloads
curl -L -O https://dl.bintray.com/boostorg/release/1.74.0/source/boost_1_74_0.tar.bz2
mkdir src
cd !$
tar --bzip2 -xf boost_1_74_0.tar.bz2
cd boost_1_74_0/tools/build
bootstrap.sh
./b2 toolset=clang --prefix=~/local/boost-build install
cd ../..
~/local/boost-build/bin/b2 -j8 toolset=clang cflags=-mmacosx-version-min=10.12 \
cxxflags=-mmacosx-version-min=10.12 mflags=-mmacosx-version-min=10.12 \
mmflags=-mmacosx-version-min=10.12 mflags=-mmacosx-version-min=10.12 \
linkflags=-mmacosx-version-min=10.12 \
architecture=x86 address-model=64 --prefix=~/local/boost install
That will take a while, once successful (warnings can be ignored) you can clean the build tree to save some space:
~/local/boost-build/bin/b2 toolset=clang cflags=-mmacosx-version-min=10.12 \
cxxflags=-mmacosx-version-min=10.12 mflags=-mmacosx-version-min=10.12 \
mmflags=-mmacosx-version-min=10.12 mflags=-mmacosx-version-min=10.12 \
linkflags=-mmacosx-version-min=10.12 \
architecture=x86 address-model=64 --prefix=~/local/boost clean
All that remains is to reconfigure your WSJT-X build trees to include ~/local/boost in your CMAKE_PREFIX_PATH, maybe something like these (one each for Debug and Release configuration builds and assumes the Macports GCC v7 tool-chain is being used):
FC=gfortran-mp-7 \
cmake \
-D CMAKE_PREFIX_PATH:PATH=~/local/boost\;~/Qt/5.15.0-clang\;~/local/hamlib/release\;/opt/local \
-D CMAKE_INSTALL_PREFIX=~/local/wsjtx/release \
-D CMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk \
-D CMAKE_BUILD_TYPE=Release \
-B ~/build/wsjtx-release \
~/src/bitbucket.org/k1jt/wsjtx
FC=gfortran-mp-7 \
cmake \
-D CMAKE_PREFIX_PATH:PATH=~/local/boost\;~/Qt/5.15.0-clang\;~/local/hamlib/debug\;/opt/local \
-D CMAKE_INSTALL_PREFIX=~/local/wsjtx/debug \
-D CMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk \
-D CMAKE_BUILD_TYPE=Debug \
-B ~/build/wsjtx-debug \
~/src/bitbucket.org/k1jt/wsjtx
Substitute you installed SDK version, Qt version and location, and Hamlib install locations.
MS Windows
==========
Because 32-bit and 64-bit builds are possible and each use different
tool-chains, two separate builds are necessary if both architectures
are required.
Common steps
------------
Download and extract the latest Boost library sources, at the time of
writing that was
https://dl.bintray.com/boostorg/release/1.74.0/source/boost_1_74_0.7z
. Extract to some convenient location, I use %HOME%\src .
Download and extract the libbacktrace sources from
https://github.com/ianlancetaylor/libbacktrace as follows.
cd %HOME%\src
mkdir github.com
cd github.com
mkdir ianlancetaylor
cd ianlancetaylor
git clone git@github.com:ianlancetaylor/libbacktrace.git
I install third-party tools under the C:\Tools directory, the
following assumes that, adjust to taste. Note that it is OK to install
both 32- and 64-bit builds of Boost to the same path as the library
names are unique per architecture and tool-chain. This saves a lot of
space as the boost header files are quite big, and there's no need to
install multiple copies.
Create a new file %HOME%\src\boost_1_74_0\project-config.jam with the
following three lines to specify how Boost.Build finds the libbacktrace
library matched to your relevant C++ compliers:
import toolset ;
using gcc : : C:\\Qt\\Tools\\mingw730_32\\bin\\g++ : <compileflags>-I"C:\\Tools\\libbacktrace-1.0\\MinGW32\\include" <linkflags>-L"C:\\Tools\\libbacktrace-1.0\\MinGW32\\lib" ;
using gcc : 8~64 : C:\\Qt\\Tools\\mingw810_64\\bin\\g++ : <compileflags>-I"C:\\Tools\\libbacktrace-1.0\\MinGW64\\include" <linkflags>-L"C:\\Tools\\libbacktrace-1.0\\MinGW64\\lib" ;
Note that it may need some local adjustment of the C++ compiler
version and path depending on the exact tool-chains from your Qt
installation. Above I am using the Qt v5.12.9 MinGW32 v7 tool-chain
for 32-bit (toolset=gcc), and Qt v5.15.0 MinGW64 v8 tool-chain
for 64-bit (toolchain=gcc-8~64).
32-bit
------
Start an MSys or MSys2 shell with the 32-bit C/C++ tool-chain from
your Qt installation on the PATH environment variable.
cd ~/src/github.com/ianlancetaylor/libbacktrace
./configure --prefix=/c/Tools/libbacktrace-1.0/MinGW32
make && make install
make clean
Start a CMD window suitably configured for use of the 32-bit MinGW
tool-chain bundled with your Qt binary installation. Verify the
correct compiler is in the PATH. i.e. it identifies (g++ --version) as
i686-posix-dwarf-rev0.
cd %HOME%\src\boost_1_74_0\tools\build
bootstrap.bat
.\b2 --prefix=C:\Tools\boost-build\MinGW32 install
cd ..\..
C:\Tools\boost-build\MinGW32\bin\b2 -j8 toolset=gcc ^
--build-dir=%HOME%\build\boost ^
--build-type=complete --prefix=C:\Tools\boost install
If all is well you should see the following line about a 1/3 of the
way through the initial configuration steps.
- libbacktrace builds : yes
After some time it should complete with something like:
...failed updating 1574 targets...
...skipped 1112 targets...
...updated 3924 targets...
warnings can usually be ignored. If successful; you can release some
space by cleaning the build tree:
C:\Tools\boost-build\MinGW32\bin\b2 toolset=gcc ^
--build-dir=%HOME%\build\boost ^
--build-type=complete clean
64-bit
======
Start an MSys or MSys2 shell with the 64-bit C/C++ tool-chain from
your Qt installation on the PATH environment variable.
cd ~/src/github.com/ianlancetaylor/libbacktrace
./configure --prefix=/c/Tools/libbacktrace-1.0/MinGW64
make && make install
make clean
Start a CMD window suitably configured for use of the 64-bit MinGW
tool-chain bundled with your Qt binary installation. Verify the
correct compiler is in the PATH. i.e. it identifies (g++ --version) as
x86_64-posix-seh-rev0. Note the toolchain specified must match your
compilers and the project-config.jam file you created above. With a v7
64-bit C++ compiler use gcc-7~64, with a v8 64-bit C++ compiler use
gcc-8~64. My example matches my 64-bit Qt v5.15.0 with the bundled
MinGW64 v8.1.0.
cd %HOME%\src\boost_1_74_0\tools\build
bootstrap.bat
.\b2 --prefix=C:\Tools\boost-build\MinGW64 install
cd ..\..
C:\Tools\boost-build\MinGW64\bin\b2 -j8 toolset=gcc-8~64 ^
address-model=64 --build-dir=%HOME%\build\boost ^
--build-type=complete --prefix=C:\Tools\boost install
If all is well you should see the following line about a 1/3 of the
way through the initial configuration steps.
- libbacktrace builds : yes
After some time it should complete with something like:
...failed updating 108 targets...
...skipped 32 targets...
...updated 3648 targets...
warnings can usually be ignored. If successful; you can release some
space by cleaning the build tree:
C:\Tools\boost-build\MinGW32\bin\b2 toolset=gcc-8~64 ^
address-model=64 --build-dir=%HOME%\build\boost ^
--build-type=complete clean
Setting up WSJT-X builds
------------------------
All that remains is to add C:\Tools\boost\ to your 32- and 64-bit
build configurations CMAKE_PREFIX_PATH variables. I use tool-chain
files for my WSJT-X builds on Windows, an extract from my 32-bit Debug
configuration tool-chain file:
# ...
set (BOOSTDIR C:/Tools/boost)
set (QTDIR C:/Qt/5.12.9/mingw73_32)
# set (QTDIR C:/Qt/5.15.0/mingw81_32)
set (FFTWDIR C:/Tools/fftw-3.3.5-dll32)
set (HAMLIBDIR C:/test-install/hamlib/mingw32/debug)
set (LIBUSBDIR C:/Tools/libusb-1.0.23)
set (PYTHONDIR C:/Python27)
set (ASCIIDOCDIR C:/Tools/asciidoc-master)
# where to find required packages
set (CMAKE_PREFIX_PATH ${BOOSTDIR} ${QTDIR} ${FFTWDIR} ${HAMLIBDIR} ${HAMLIBDIR}/bin ${LIBUSBDIR} ${PYTHONDIR} ${ASCIIDOCDIR})
# ...
Run-time Environment
--------------------
You will need to add C:\Tools\boost\lib to your PATH environment
variable in order to run installed Debug configurations of WSJT-X, or
to execute build artefacts from a build tree. Installed Release
configurations will move any required DLLs to the installation bin
directory automatically.