diff --git a/CMakeLists.txt b/CMakeLists.txt index de11a4d3e0c..b2f7d7798cd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -205,10 +205,10 @@ check_linker_supports_pie(configure_warnings) # It is a usage requirement for all targets except for secp256k1, which # gets its flags by other means. add_library(core_interface INTERFACE) -add_library(core_interface_relwithdebinfo INTERFACE) +add_library(core_interface_depends INTERFACE) add_library(core_interface_debug INTERFACE) target_link_libraries(core_interface INTERFACE - $<$:core_interface_relwithdebinfo> + $<$:core_interface_depends> $<$:core_interface_debug> ) @@ -576,8 +576,7 @@ else() endif() target_compile_definitions(core_interface INTERFACE ${DEPENDS_COMPILE_DEFINITIONS}) -target_compile_definitions(core_interface_relwithdebinfo INTERFACE ${DEPENDS_COMPILE_DEFINITIONS_RELWITHDEBINFO}) -target_compile_definitions(core_interface_debug INTERFACE ${DEPENDS_COMPILE_DEFINITIONS_DEBUG}) +target_compile_definitions(core_interface_depends INTERFACE ${DEPENDS_CONFIG_COMPILE_DEFINITIONS}) # If the {CXX,LD}FLAGS environment variables are defined during building depends # and configuring this build system, their content might be duplicated. diff --git a/depends/Makefile b/depends/Makefile index 2841d50ae4a..7ea989ce842 100644 --- a/depends/Makefile +++ b/depends/Makefile @@ -215,17 +215,13 @@ $(host_prefix)/toolchain.cmake : toolchain.cmake.in $(host_prefix)/.stamp_$(fina -e 's|@OBJCOPY@|$(host_OBJCOPY)|' \ -e 's|@OBJDUMP@|$(host_OBJDUMP)|' \ -e 's|@CFLAGS@|$(strip $(host_CFLAGS))|' \ - -e 's|@CFLAGS_RELEASE@|$(strip $(host_release_CFLAGS))|' \ - -e 's|@CFLAGS_DEBUG@|$(strip $(host_debug_CFLAGS))|' \ + -e 's|@CFLAGS_DEPENDS_CONFIG@|$(strip $(host_$(release_type)_CFLAGS))|' \ -e 's|@CXXFLAGS@|$(strip $(host_CXXFLAGS))|' \ - -e 's|@CXXFLAGS_RELEASE@|$(strip $(host_release_CXXFLAGS))|' \ - -e 's|@CXXFLAGS_DEBUG@|$(strip $(host_debug_CXXFLAGS))|' \ + -e 's|@CXXFLAGS_DEPENDS_CONFIG@|$(strip $(host_$(release_type)_CXXFLAGS))|' \ -e 's|@CPPFLAGS@|$(strip $(host_CPPFLAGS))|' \ - -e 's|@CPPFLAGS_RELEASE@|$(strip $(host_release_CPPFLAGS))|' \ - -e 's|@CPPFLAGS_DEBUG@|$(strip $(host_debug_CPPFLAGS))|' \ + -e 's|@CPPFLAGS_DEPENDS_CONFIG@|$(strip $(host_$(release_type)_CPPFLAGS))|' \ -e 's|@LDFLAGS@|$(strip $(host_LDFLAGS))|' \ - -e 's|@LDFLAGS_RELEASE@|$(strip $(host_release_LDFLAGS))|' \ - -e 's|@LDFLAGS_DEBUG@|$(strip $(host_debug_LDFLAGS))|' \ + -e 's|@LDFLAGS_DEPENDS_CONFIG@|$(strip $(host_$(release_type)_LDFLAGS))|' \ -e 's|@qt_packages@|$(qt_packages_)|' \ -e 's|@qrencode_packages@|$(qrencode_packages_)|' \ -e 's|@zmq_packages@|$(zmq_packages_)|' \ diff --git a/depends/funcs.mk b/depends/funcs.mk index b07432adec9..f4b8880e106 100644 --- a/depends/funcs.mk +++ b/depends/funcs.mk @@ -8,9 +8,11 @@ $(1)_ar=$$($$($(1)_type)_AR) $(1)_ranlib=$$($$($(1)_type)_RANLIB) $(1)_nm=$$($$($(1)_type)_NM) $(1)_cflags=$$($$($(1)_type)_CFLAGS) \ - $$($$($(1)_type)_$$(release_type)_CFLAGS) + $$($$($(1)_type)_$$(release_type)_CFLAGS) \ + -pipe -std=$(C_STANDARD) $(1)_cxxflags=$$($$($(1)_type)_CXXFLAGS) \ - $$($$($(1)_type)_$$(release_type)_CXXFLAGS) + $$($$($(1)_type)_$$(release_type)_CXXFLAGS) \ + -pipe -std=$(CXX_STANDARD) $(1)_ldflags=$$($$($(1)_type)_LDFLAGS) \ $$($$($(1)_type)_$$(release_type)_LDFLAGS) \ -L$$($($(1)_type)_prefix)/lib diff --git a/depends/hosts/darwin.mk b/depends/hosts/darwin.mk index 6f39718effd..7ec2fd96caa 100644 --- a/depends/hosts/darwin.mk +++ b/depends/hosts/darwin.mk @@ -60,8 +60,8 @@ darwin_CXX=$(clangxx_prog) --target=$(host) \ -iwithsysroot/usr/include/c++/v1 \ -iwithsysroot/usr/include -iframeworkwithsysroot/System/Library/Frameworks -darwin_CFLAGS=-pipe -std=$(C_STANDARD) -mmacos-version-min=$(OSX_MIN_VERSION) -darwin_CXXFLAGS=-pipe -std=$(CXX_STANDARD) -mmacos-version-min=$(OSX_MIN_VERSION) +darwin_CFLAGS=-mmacos-version-min=$(OSX_MIN_VERSION) +darwin_CXXFLAGS=-mmacos-version-min=$(OSX_MIN_VERSION) darwin_LDFLAGS=-Wl,-platform_version,macos,$(OSX_MIN_VERSION),$(OSX_SDK_VERSION) ifneq ($(build_os),darwin) diff --git a/depends/hosts/default.mk b/depends/hosts/default.mk index 22409c4004d..968f6de8fe4 100644 --- a/depends/hosts/default.mk +++ b/depends/hosts/default.mk @@ -29,12 +29,11 @@ endef define add_host_flags_func ifeq ($(filter $(origin $1),undefined default),) -$(host_arch)_$(host_os)_$1 = $($1) -$(host_arch)_$(host_os)_$(release_type)_$1 = +$(host_arch)_$(host_os)_$(release_type)_$1 = $($1) else -$(host_arch)_$(host_os)_$1 += $($(host_os)_$1) $(host_arch)_$(host_os)_$(release_type)_$1 += $($(host_os)_$(release_type)_$1) endif +$(host_arch)_$(host_os)_$1 += $($(host_os)_$1) host_$1 = $$($(host_arch)_$(host_os)_$1) host_$(release_type)_$1 = $$($(host_arch)_$(host_os)_$(release_type)_$1) endef diff --git a/depends/hosts/freebsd.mk b/depends/hosts/freebsd.mk index 009d215f82f..b69535cc800 100644 --- a/depends/hosts/freebsd.mk +++ b/depends/hosts/freebsd.mk @@ -1,5 +1,5 @@ -freebsd_CFLAGS=-pipe -std=$(C_STANDARD) -freebsd_CXXFLAGS=-pipe -std=$(CXX_STANDARD) +freebsd_CFLAGS= +freebsd_CXXFLAGS= freebsd_release_CFLAGS=-O2 freebsd_release_CXXFLAGS=$(freebsd_release_CFLAGS) diff --git a/depends/hosts/linux.mk b/depends/hosts/linux.mk index e2f34265d15..41958f9978b 100644 --- a/depends/hosts/linux.mk +++ b/depends/hosts/linux.mk @@ -1,5 +1,5 @@ -linux_CFLAGS=-pipe -std=$(C_STANDARD) -linux_CXXFLAGS=-pipe -std=$(CXX_STANDARD) +linux_CFLAGS= +linux_CXXFLAGS= ifneq ($(LTO),) linux_AR = $(host_toolchain)gcc-ar diff --git a/depends/hosts/mingw32.mk b/depends/hosts/mingw32.mk index 4628f7255df..7db6afaef6a 100644 --- a/depends/hosts/mingw32.mk +++ b/depends/hosts/mingw32.mk @@ -5,8 +5,8 @@ ifneq ($(shell $(SHELL) $(.SHELLFLAGS) "command -v $(host)-g++-posix"),) mingw32_CXX := $(host)-g++-posix endif -mingw32_CFLAGS=-pipe -std=$(C_STANDARD) -mingw32_CXXFLAGS=-pipe -std=$(CXX_STANDARD) +mingw32_CFLAGS= +mingw32_CXXFLAGS= ifneq ($(LTO),) mingw32_AR = $(host_toolchain)gcc-ar diff --git a/depends/hosts/netbsd.mk b/depends/hosts/netbsd.mk index d2b79f9d5bf..0e1256c34e8 100644 --- a/depends/hosts/netbsd.mk +++ b/depends/hosts/netbsd.mk @@ -1,5 +1,5 @@ -netbsd_CFLAGS=-pipe -std=$(C_STANDARD) -netbsd_CXXFLAGS=-pipe -std=$(CXX_STANDARD) +netbsd_CFLAGS= +netbsd_CXXFLAGS= ifneq ($(LTO),) netbsd_AR = $(host_toolchain)gcc-ar diff --git a/depends/hosts/openbsd.mk b/depends/hosts/openbsd.mk index 53595689b62..5ab3f53eae6 100644 --- a/depends/hosts/openbsd.mk +++ b/depends/hosts/openbsd.mk @@ -1,5 +1,5 @@ -openbsd_CFLAGS=-pipe -std=$(C_STANDARD) -openbsd_CXXFLAGS=-pipe -std=$(CXX_STANDARD) +openbsd_CFLAGS= +openbsd_CXXFLAGS= openbsd_release_CFLAGS=-O2 openbsd_release_CXXFLAGS=$(openbsd_release_CFLAGS) diff --git a/depends/toolchain.cmake.in b/depends/toolchain.cmake.in index ac24f74ad4f..5819878cc31 100644 --- a/depends/toolchain.cmake.in +++ b/depends/toolchain.cmake.in @@ -15,14 +15,27 @@ if(@depends_crosscompiling@) set(CMAKE_SYSTEM_PROCESSOR @host_arch@) endif() + +# Create a build type specifically for depends builds and default to it. When +# building from depends toolchain file, this will ensure that the flags from +# depends (or those provided by the user during depends build) will not be +# overridden by CMake's build-type flags. +# The user can still change the build-type to a non-Depends-type +# (Release/Debug/RelWithDebInfo/etc), which will inform the build to ignore the +# depends flags. +if(NOT SET_UP_CONFIGURATIONS_DONE) + set(SET_UP_CONFIGURATIONS_DONE TRUE) + list(PREPEND CMAKE_CONFIGURATION_TYPES "Depends") + if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Depends) + endif() +endif() + if(NOT DEFINED CMAKE_C_FLAGS_INIT) set(CMAKE_C_FLAGS_INIT "@CFLAGS@") endif() -if(NOT DEFINED CMAKE_C_FLAGS_RELWITHDEBINFO_INIT) - set(CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "@CFLAGS_RELEASE@") -endif() -if(NOT DEFINED CMAKE_C_FLAGS_DEBUG_INIT) - set(CMAKE_C_FLAGS_DEBUG_INIT "@CFLAGS_DEBUG@") +if(NOT DEFINED CMAKE_C_FLAGS_DEPENDS_INIT) + set(CMAKE_C_FLAGS_DEPENDS_INIT "@CFLAGS_DEPENDS_CONFIG@") endif() if(NOT DEFINED CMAKE_C_COMPILER) @@ -33,13 +46,9 @@ if(NOT DEFINED CMAKE_CXX_FLAGS_INIT) set(CMAKE_CXX_FLAGS_INIT "@CXXFLAGS@") set(CMAKE_OBJCXX_FLAGS_INIT "@CXXFLAGS@") endif() -if(NOT DEFINED CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT) - set(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "@CXXFLAGS_RELEASE@") - set(CMAKE_OBJCXX_FLAGS_RELWITHDEBINFO_INIT "@CXXFLAGS_RELEASE@") -endif() -if(NOT DEFINED CMAKE_CXX_FLAGS_DEBUG_INIT) - set(CMAKE_CXX_FLAGS_DEBUG_INIT "@CXXFLAGS_DEBUG@") - set(CMAKE_OBJCXX_FLAGS_DEBUG_INIT "@CXXFLAGS_DEBUG@") +if(NOT DEFINED CMAKE_CXX_FLAGS_DEPENDS_INIT) + set(CMAKE_CXX_FLAGS_DEPENDS_INIT "@CXXFLAGS_DEPENDS_CONFIG@") + set(CMAKE_OBJCXX_FLAGS_DEPENDS_INIT "@CXXFLAGS_DEPENDS_CONFIG@") endif() if(NOT DEFINED CMAKE_CXX_COMPILER) @@ -49,8 +58,7 @@ endif() # The DEPENDS_COMPILE_DEFINITIONS* variables are to be treated as lists. set(DEPENDS_COMPILE_DEFINITIONS @CPPFLAGS@) -set(DEPENDS_COMPILE_DEFINITIONS_RELWITHDEBINFO @CPPFLAGS_RELEASE@) -set(DEPENDS_COMPILE_DEFINITIONS_DEBUG @CPPFLAGS_DEBUG@) +set(DEPENDS_CONFIG_COMPILE_DEFINITIONS @CPPFLAGS_DEPENDS_CONFIG@) if(NOT DEFINED CMAKE_EXE_LINKER_FLAGS_INIT) set(CMAKE_EXE_LINKER_FLAGS_INIT "@LDFLAGS@") @@ -58,17 +66,11 @@ endif() if(NOT DEFINED CMAKE_SHARED_LINKER_FLAGS_INIT) set(CMAKE_SHARED_LINKER_FLAGS_INIT "@LDFLAGS@") endif() -if(NOT DEFINED CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT) - set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT "@LDFLAGS_RELEASE@") +if(NOT DEFINED CMAKE_SHARED_LINKER_FLAGS_DEPENDS_INIT) + set(CMAKE_SHARED_LINKER_FLAGS_DEPENDS_INIT "@LDFLAGS_DEPENDS_CONFIG@") endif() -if(NOT DEFINED CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO_INIT) - set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO_INIT "@LDFLAGS_RELEASE@") -endif() -if(NOT DEFINED CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT) - set(CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT "@LDFLAGS_DEBUG@") -endif() -if(NOT DEFINED CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT) - set(CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT "@LDFLAGS_DEBUG@") +if(NOT DEFINED CMAKE_EXE_LINKER_FLAGS_DEPENDS_INIT) + set(CMAKE_EXE_LINKER_FLAGS_DEPENDS_INIT "@LDFLAGS_DEPENDS_CONFIG@") endif() set(CMAKE_AR "@AR@")