diff options
author | laanwj <126646+laanwj@users.noreply.github.com> | 2022-06-16 22:08:50 +0200 |
---|---|---|
committer | laanwj <126646+laanwj@users.noreply.github.com> | 2022-06-16 23:53:48 +0200 |
commit | 874529665c1c326fc86fc0d0d6c3512fab087ab8 (patch) | |
tree | 7234673f81ae4177fd71ef75d071c3bb720fcf40 | |
parent | 7f2c983e1cfdb58b6f84eabe5ff6a16f143f39aa (diff) | |
parent | f7595f1354f4618436fdab232000dc152bff315a (diff) |
Merge bitcoin/bitcoin#22380: build: add and use C_STANDARD and CXX_STANDARD in depends
f7595f1354f4618436fdab232000dc152bff315a build: add and use CXX_STANDARD in depends (fanquake)
7e7b3e42fa98b584ae60513a6774037bf677b8ce build: add and use C_STANDARD in depends (fanquake)
Pull request description:
By explicitly setting a C standard version we avoid any potential for issues/differences in libraries that may come about due to C STD version, as well as avoid potentially being opted into newer code / features in libraries when compiler defaults change (i.e as of 11.0.0, Clang now defaults to gnu17 over gnu11).
This should be a no-op for our release builds, because it's just explicitly setting the default that is [already being used](https://github.com/fanquake/core-review/blob/master/compiler-defaults.md). However this is relevant for anyone building depends with a newer compiler.
I found [one broken `__STDC_VERSION__` check in the](https://github.com/miniupnp/miniupnp/pull/552) miniupnpc header.
At the same time, add `CXX_STANDARD` for setting our C++ standard, and use that over setting `-std=c++17` for cxx packages.
Guix builds:
```bash
```
ACKs for top commit:
dongcarl:
Code Review ACK f7595f1354f4618436fdab232000dc152bff315a
laanwj:
Code review ACK f7595f1354f4618436fdab232000dc152bff315a
Tree-SHA512: 9255190d91ba3de20762b1d6af35c59d64f3d77a52bbe9a3f1dfb6bcf16daef66054ebef96b58e7285cd01bf613e69a78bd5e8681c21293e254f23d1fa7b0f71
-rw-r--r-- | depends/Makefile | 3 | ||||
-rw-r--r-- | depends/README.md | 2 | ||||
-rw-r--r-- | depends/hosts/android.mk | 3 | ||||
-rw-r--r-- | depends/hosts/darwin.mk | 6 | ||||
-rw-r--r-- | depends/hosts/freebsd.mk | 6 | ||||
-rw-r--r-- | depends/hosts/linux.mk | 6 | ||||
-rw-r--r-- | depends/hosts/mingw32.mk | 6 | ||||
-rw-r--r-- | depends/hosts/netbsd.mk | 4 | ||||
-rw-r--r-- | depends/hosts/openbsd.mk | 5 | ||||
-rw-r--r-- | depends/packages/bdb.mk | 1 | ||||
-rw-r--r-- | depends/packages/zeromq.mk | 1 | ||||
-rw-r--r-- | depends/patches/qt/mac-qmake.conf | 2 |
12 files changed, 27 insertions, 18 deletions
diff --git a/depends/Makefile b/depends/Makefile index 76f84b1a34..5a1c472a15 100644 --- a/depends/Makefile +++ b/depends/Makefile @@ -45,6 +45,9 @@ MULTIPROCESS ?= LTO ?= FALLBACK_DOWNLOAD_PATH ?= https://bitcoincore.org/depends-sources +C_STANDARD ?= c11 +CXX_STANDARD ?= c++17 + BUILD = $(shell ./config.guess) HOST ?= $(BUILD) PATCHES_PATH = $(BASEDIR)/patches diff --git a/depends/README.md b/depends/README.md index 26bfd9bed5..66e1ddc4eb 100644 --- a/depends/README.md +++ b/depends/README.md @@ -96,6 +96,8 @@ The following can be set when running make: `make FOO=bar` - `BASE_CACHE`: Built packages will be placed here - `SDK_PATH`: Path where SDKs can be found (used by macOS) - `FALLBACK_DOWNLOAD_PATH`: If a source file can't be fetched, try here before giving up +- `C_STANDARD`: Set the C standard version used. Defaults to `c11`. +- `CXX_STANDARD`: Set the C++ standard version used. Defaults to `c++17`. - `NO_QT`: Don't download/build/cache Qt and its dependencies - `NO_QR`: Don't download/build/cache packages needed for enabling qrencode - `NO_ZMQ`: Don't download/build/cache packages needed for enabling ZeroMQ diff --git a/depends/hosts/android.mk b/depends/hosts/android.mk index 9029355460..b53966dcf8 100644 --- a/depends/hosts/android.mk +++ b/depends/hosts/android.mk @@ -6,6 +6,9 @@ android_CXX=$(ANDROID_TOOLCHAIN_BIN)/$(HOST)$(ANDROID_API_LEVEL)-clang++ android_CC=$(ANDROID_TOOLCHAIN_BIN)/$(HOST)$(ANDROID_API_LEVEL)-clang endif +android_CFLAGS=-std=$(C_STANDARD) +android_CXXFLAGS=-std=$(CXX_STANDARD) + ifneq ($(LTO),) android_CFLAGS += -flto android_LDFLAGS += -flto diff --git a/depends/hosts/darwin.mk b/depends/hosts/darwin.mk index a564613cb6..8507e28532 100644 --- a/depends/hosts/darwin.mk +++ b/depends/hosts/darwin.mk @@ -109,15 +109,15 @@ darwin_CXX=env -u C_INCLUDE_PATH -u CPLUS_INCLUDE_PATH \ -Xclang -internal-externc-isystem$(clang_resource_dir)/include \ -Xclang -internal-externc-isystem$(OSX_SDK)/usr/include -darwin_CFLAGS=-pipe +darwin_CFLAGS=-pipe -std=$(C_STANDARD) +darwin_CXXFLAGS=-pipe -std=$(CXX_STANDARD) ifneq ($(LTO),) darwin_CFLAGS += -flto +darwin_CXXFLAGS += -flto darwin_LDFLAGS += -flto endif -darwin_CXXFLAGS=$(darwin_CFLAGS) - darwin_release_CFLAGS=-O2 darwin_release_CXXFLAGS=$(darwin_release_CFLAGS) diff --git a/depends/hosts/freebsd.mk b/depends/hosts/freebsd.mk index 853fa0f457..5351d0b900 100644 --- a/depends/hosts/freebsd.mk +++ b/depends/hosts/freebsd.mk @@ -1,12 +1,12 @@ -freebsd_CFLAGS=-pipe +freebsd_CFLAGS=-pipe -std=$(C_STANDARD) +freebsd_CXXFLAGS=-pipe -std=$(CXX_STANDARD) ifneq ($(LTO),) freebsd_CFLAGS += -flto +freebsd_CXXFLAGS += -flto freebsd_LDFLAGS += -flto endif -freebsd_CXXFLAGS=$(freebsd_CFLAGS) - freebsd_release_CFLAGS=-O2 freebsd_release_CXXFLAGS=$(freebsd_release_CFLAGS) diff --git a/depends/hosts/linux.mk b/depends/hosts/linux.mk index 5322520e6f..b101043439 100644 --- a/depends/hosts/linux.mk +++ b/depends/hosts/linux.mk @@ -1,12 +1,12 @@ -linux_CFLAGS=-pipe +linux_CFLAGS=-pipe -std=$(C_STANDARD) +linux_CXXFLAGS=-pipe -std=$(CXX_STANDARD) ifneq ($(LTO),) linux_CFLAGS += -flto +linux_CXXFLAGS += -flto linux_LDFLAGS += -flto endif -linux_CXXFLAGS=$(linux_CFLAGS) - linux_release_CFLAGS=-O2 linux_release_CXXFLAGS=$(linux_release_CFLAGS) diff --git a/depends/hosts/mingw32.mk b/depends/hosts/mingw32.mk index 979280b5cb..b98f9ab7ac 100644 --- a/depends/hosts/mingw32.mk +++ b/depends/hosts/mingw32.mk @@ -2,15 +2,15 @@ ifneq ($(shell $(SHELL) $(.SHELLFLAGS) "command -v $(host)-g++-posix"),) mingw32_CXX := $(host)-g++-posix endif -mingw32_CFLAGS=-pipe +mingw32_CFLAGS=-pipe -std=$(C_STANDARD) +mingw32_CXXFLAGS=-pipe -std=$(CXX_STANDARD) ifneq ($(LTO),) mingw32_CFLAGS += -flto +mingw32_CXXFLAGS += -flto mingw32_LDFLAGS += -flto endif -mingw32_CXXFLAGS=$(mingw32_CFLAGS) - mingw32_release_CFLAGS=-O2 mingw32_release_CXXFLAGS=$(mingw32_release_CFLAGS) diff --git a/depends/hosts/netbsd.mk b/depends/hosts/netbsd.mk index 9e48248b7e..8342dcc6ed 100644 --- a/depends/hosts/netbsd.mk +++ b/depends/hosts/netbsd.mk @@ -1,7 +1,9 @@ -netbsd_CFLAGS=-pipe +netbsd_CFLAGS=-pipe -std=$(C_STANDARD) +netbsd_CXXFLAGS=-pipe -std=$(CXX_STANDARD) ifneq ($(LTO),) netbsd_CFLAGS += -flto +netbsd_CXXFLAGS += -flto netbsd_LDFLAGS += -flto endif diff --git a/depends/hosts/openbsd.mk b/depends/hosts/openbsd.mk index c4a629e021..d330e94d2e 100644 --- a/depends/hosts/openbsd.mk +++ b/depends/hosts/openbsd.mk @@ -1,8 +1,9 @@ -openbsd_CFLAGS=-pipe -openbsd_CXXFLAGS=$(openbsd_CFLAGS) +openbsd_CFLAGS=-pipe -std=$(C_STANDARD) +openbsd_CXXFLAGS=-pipe -std=$(CXX_STANDARD) ifneq ($(LTO),) openbsd_CFLAGS += -flto +openbsd_CXXFLAGS += -flto openbsd_LDFLAGS += -flto endif diff --git a/depends/packages/bdb.mk b/depends/packages/bdb.mk index dc536fd399..80c7ce8429 100644 --- a/depends/packages/bdb.mk +++ b/depends/packages/bdb.mk @@ -15,7 +15,6 @@ $(package)_config_opts_netbsd=--with-pic $(package)_config_opts_openbsd=--with-pic $(package)_config_opts_android=--with-pic $(package)_cflags+=-Wno-error=implicit-function-declaration -$(package)_cxxflags+=-std=c++17 $(package)_cppflags_mingw32=-DUNICODE -D_UNICODE endef diff --git a/depends/packages/zeromq.mk b/depends/packages/zeromq.mk index c74ae15b31..267ed11253 100644 --- a/depends/packages/zeromq.mk +++ b/depends/packages/zeromq.mk @@ -16,7 +16,6 @@ define $(package)_set_vars $(package)_config_opts_netbsd=--with-pic $(package)_config_opts_openbsd=--with-pic $(package)_config_opts_android=--with-pic - $(package)_cxxflags+=-std=c++17 endef define $(package)_preprocess_cmds diff --git a/depends/patches/qt/mac-qmake.conf b/depends/patches/qt/mac-qmake.conf index 543407f853..cb94bf07b4 100644 --- a/depends/patches/qt/mac-qmake.conf +++ b/depends/patches/qt/mac-qmake.conf @@ -15,7 +15,7 @@ QMAKE_MAC_SDK.macosx.SDKVersion = $${MAC_SDK_VERSION} QMAKE_MAC_SDK.macosx.PlatformPath = /phony !host_build: QMAKE_CFLAGS += -target $${MAC_TARGET} !host_build: QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_CFLAGS -!host_build: QMAKE_CXXFLAGS += $$QMAKE_CFLAGS +!host_build: QMAKE_CXXFLAGS += -target $${MAC_TARGET} !host_build: QMAKE_LFLAGS += -target $${MAC_TARGET} QMAKE_AR = $${CROSS_COMPILE}ar cq QMAKE_RANLIB=$${CROSS_COMPILE}ranlib |