WSJT-X/doc/building-Boost-libs.txt

242 lines
8.5 KiB
Plaintext

Linux
=====
Debian style:
sudo apt install libboost-all-dev
RPM style:
sudo dnf install boost-devel
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 ~/Downloads/boost_1_74_0.tar.bz2
cd boost_1_74_0/tools/build
./bootstrap.sh
./b2 toolset=clang --prefix=$HOME/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=$HOME/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=$HOME/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_64\;~/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_64\;~/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 %USERPROFILE%\src .
Download and extract the libbacktrace sources from
https://github.com/ianlancetaylor/libbacktrace as follows.
cd %USERPROFILE%\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 %USERPROFILE%\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 %USERPROFILE%\src\boost_1_74_0\tools\build
bootstrap.bat mingw
.\b2 --prefix=C:\Tools\boost-build\MinGW32 install
cd ..\..
C:\Tools\boost-build\MinGW32\bin\b2 -j8 toolset=gcc ^
--build-dir=%USERPROFILE%\build\boost ^
address-model=32 architecture=x86 variant=debug,release ^
link=shared threading=multi ^
--with-log --with-stacktrace --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=%USERPROFILE%\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 %USERPROFILE%\src\boost_1_74_0\tools\build
bootstrap.bat mingw
.\b2 --prefix=C:\Tools\boost-build\MinGW64 install
cd ..\..
C:\Tools\boost-build\MinGW64\bin\b2 -j8 toolset=gcc-8~64 ^
address-model=64 architecture=x86 variant=debug,release ^
link=shared threading=multi ^
--with-log --with-stacktrace ^
--build-dir=%USERPROFILE%\build\boost ^
--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=%USERPROFILE%\build\boost ^
--build-type=complete clean
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. It is also needed for
teh install target of release configuration builds. Installed Release
configurations will move any required DLLs to the installation bin
directory automatically.
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.15.2/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)
# where to find required packages
set (CMAKE_PREFIX_PATH ${BOOSTDIR} ${QTDIR} ${FFTWDIR} ${HAMLIBDIR} ${HAMLIBDIR}/bin ${LIBUSBDIR})
# ...