aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlaanwj <126646+laanwj@users.noreply.github.com>2022-06-16 22:08:50 +0200
committerlaanwj <126646+laanwj@users.noreply.github.com>2022-06-16 23:53:48 +0200
commit874529665c1c326fc86fc0d0d6c3512fab087ab8 (patch)
tree7234673f81ae4177fd71ef75d071c3bb720fcf40
parent7f2c983e1cfdb58b6f84eabe5ff6a16f143f39aa (diff)
parentf7595f1354f4618436fdab232000dc152bff315a (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/Makefile3
-rw-r--r--depends/README.md2
-rw-r--r--depends/hosts/android.mk3
-rw-r--r--depends/hosts/darwin.mk6
-rw-r--r--depends/hosts/freebsd.mk6
-rw-r--r--depends/hosts/linux.mk6
-rw-r--r--depends/hosts/mingw32.mk6
-rw-r--r--depends/hosts/netbsd.mk4
-rw-r--r--depends/hosts/openbsd.mk5
-rw-r--r--depends/packages/bdb.mk1
-rw-r--r--depends/packages/zeromq.mk1
-rw-r--r--depends/patches/qt/mac-qmake.conf2
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