mirror of
https://github.com/bitcoin/bitcoin.git
synced 2024-11-20 02:25:40 +01:00
2e1336dbfe
2f5dfe4a7f
depends: build qt in c++17 mode (fanquake)104e859c97
builds: don't pass -silent to qt when building in debug mode (fanquake)e2c500636c
depends: build zeromq with -std=c++17 (fanquake)2374f2fbef
depends: build Boost with -std=c++17 (fanquake)2dde55702d
depends: build bdb with -std=c++17 (fanquake) Pull request description: In packages where we are passing `-std=c++11` switch to `-std=c++17`, or, `-std=c++1z` in the case of Qt. This PR also contains a [commit](104e859c97
) that improves debug output when building Qt for debugging (`DEBUG=1`). Now we'll get output like this: ```bash g++ -c -pipe -ffunction-sections -O2 -fPIC -std=c++11 -fno-exceptions <lots more> ../../corelib/kernel/qcoreapplication.cpp ``` rather than just: ```bash compiling ../../corelib/kernel/qcoreapplication.cpp ``` Note that when you look at the DEBUG output for these changes when building Qt, you'll see objects being compiled with a mix of C++11 and C++17. The breakdown is roughly: 1. `qmake` built with `-std=c++11`: ```bash Creating qmake... make[1]: Entering directory '<trim>/qt/5.9.8-4110fa99945/qtbase/qmake' g++ -c -o project.o -std=c++11 -ffunction-sections -O2 -g <trim> <trim>/qt/5.9.8-4110fa99945/qtbase/qmake/project.cpp # when qmake, Qt also builds some of it's corelib, such as corelib/global/qmalloc.cpp g++ -c -o qmalloc.o -std=c++11 -ffunction-sections -O2 -g <trim> <trim>/qt/5.9.8-4110fa99945/qtbase/src/corelib/global/qmalloc.cpp ``` 2. `qmake` is run, and passed our build options, including `-c++std`: ```bash make[1]: Entering directory '<trim>/qt/5.9.8-4110fa99945/qtbase' <trim>qt/5.9.8-4110fa99945/qtbase/bin/qmake -o Makefile qtbase.pro -- -bindir <trim>/native/bin -c++std c++1z -confirm-license <trim> ``` 3. After some cleaning and configuring, we actually start to build Qt, as well as it's tools and internal libs: ```bash Building qt... make[1]: Entering directory '<trim>/qt/5.9.8-4110fa99945/qtbase/src' # build libpng, zlib etc gcc -c -m64 -pipe -pipe -O1 <trim> -o .obj/png.o png.c # build libQt5Bootstrap, using C++11, which again compiles qmalloc.cpp make[2]: Entering directory '<trim>/qt/5.9.8-4110fa99945/qtbase/src/tools/bootstrap' g++ -c -pipe -ffunction-sections -O2 -fPIC -std=c++11 <trim> -o .obj/qmalloc.o ../../corelib/global/qmalloc.cpp # build a bunch of tools like moc, rcc, uic, qfloat16-tables, qdbuscpp2xml, using C++11 g++ -c -pipe -O2 -std=c++11 -fno-exceptions -Wall -W <trim> -o .obj/rcc.o rcc.cpp # from here, Qt is compiled with -std=c++1z, including qmalloc.cpp, for the third and final time: g++ -c -include .pch/Qt5Core <trim> -g -Og -fPIC -std=c++1z -fvisibility=hidden <trim> -o .obj/qmalloc.o global/qmalloc.cpp ``` 4. Finally, build tools like `lrelease`, `lupdate`, etc, but back to using -std=c++11 ```bash make[1]: Entering directory '<trim>/qt/5.9.8-4110fa99945/qttools/src/linguist/lrelease' g++ -c -pipe -O2 -std=c++11 -fno-exceptions -Wall -W <trim> -o .obj/translator.o ../shared/translator.cpp ``` If you dump the debug info from the built Qt libs, they should also tell you that they were compiled with `C++17`: ```bash objdump -g bitcoin/depends/x86_64-pc-linux-gnu/lib/libQt5Core.a GNU C++17 9.3.0 -m64 -mtune=generic -march=x86-64 -g -O1 -Og -std=c++17 -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -fasynchronous-unwind-tables -fstack-protector-strong -fstack-clash-protection -fcf-protection ``` ACKs for top commit: laanwj: Code review ACK2f5dfe4a7f
practicalswift: cr ACK2f5dfe4a7f
: patch looks correct fjahr: Code review ACK2f5dfe4a7f
hebasto: ACK2f5dfe4a7f
, I have reviewed the code and it looks OK, I agree it can be merged. Tree-SHA512: fc5e9d7c7518c68349c8228fb1aead829850373efc960c9b8c079096a83d1dad19c62a9730fce5802322bf07e320960fd47851420d429eda0a87c307f4e8b03a
46 lines
2.2 KiB
Makefile
46 lines
2.2 KiB
Makefile
package=boost
|
|
$(package)_version=1_71_0
|
|
$(package)_download_path=https://dl.bintray.com/boostorg/release/$(subst _,.,$($(package)_version))/source/
|
|
$(package)_file_name=boost_$($(package)_version).tar.bz2
|
|
$(package)_sha256_hash=d73a8da01e8bf8c7eda40b4c84915071a8c8a0df4a6734537ddde4a8580524ee
|
|
$(package)_dependencies=native_b2
|
|
|
|
define $(package)_set_vars
|
|
$(package)_config_opts_release=variant=release
|
|
$(package)_config_opts_debug=variant=debug
|
|
$(package)_config_opts=--layout=tagged --build-type=complete --user-config=user-config.jam
|
|
$(package)_config_opts+=threading=multi link=static -sNO_COMPRESSION=1
|
|
$(package)_config_opts_linux=target-os=linux threadapi=pthread runtime-link=shared
|
|
$(package)_config_opts_darwin=target-os=darwin runtime-link=shared
|
|
$(package)_config_opts_mingw32=target-os=windows binary-format=pe threadapi=win32 runtime-link=static
|
|
$(package)_config_opts_x86_64=architecture=x86 address-model=64
|
|
$(package)_config_opts_i686=architecture=x86 address-model=32
|
|
$(package)_config_opts_aarch64=address-model=64
|
|
$(package)_config_opts_armv7a=address-model=32
|
|
ifneq (,$(findstring clang,$($(package)_cxx)))
|
|
$(package)_toolset_$(host_os)=clang
|
|
else
|
|
$(package)_toolset_$(host_os)=gcc
|
|
endif
|
|
$(package)_config_libraries=filesystem,system,thread,test
|
|
$(package)_cxxflags=-std=c++17 -fvisibility=hidden
|
|
$(package)_cxxflags_linux=-fPIC
|
|
$(package)_cxxflags_android=-fPIC
|
|
endef
|
|
|
|
define $(package)_preprocess_cmds
|
|
echo "using $($(package)_toolset_$(host_os)) : : $($(package)_cxx) : <cflags>\"$($(package)_cflags)\" <cxxflags>\"$($(package)_cxxflags)\" <compileflags>\"$($(package)_cppflags)\" <linkflags>\"$($(package)_ldflags)\" <archiver>\"$($(package)_ar)\" <striper>\"$(host_STRIP)\" <ranlib>\"$(host_RANLIB)\" <rc>\"$(host_WINDRES)\" : ;" > user-config.jam
|
|
endef
|
|
|
|
define $(package)_config_cmds
|
|
./bootstrap.sh --without-icu --with-libraries=$($(package)_config_libraries) --with-toolset=$($(package)_toolset_$(host_os)) --with-bjam=b2
|
|
endef
|
|
|
|
define $(package)_build_cmds
|
|
b2 -d2 -j2 -d1 --prefix=$($(package)_staging_prefix_dir) $($(package)_config_opts) toolset=$($(package)_toolset_$(host_os)) stage
|
|
endef
|
|
|
|
define $(package)_stage_cmds
|
|
b2 -d0 -j4 --prefix=$($(package)_staging_prefix_dir) $($(package)_config_opts) toolset=$($(package)_toolset_$(host_os)) install
|
|
endef
|