From 2027ad30e7b436b1341a0013398732c10f880bb9 Mon Sep 17 00:00:00 2001 From: Cory Fields Date: Tue, 23 Sep 2014 16:59:03 -0400 Subject: [PATCH 01/12] depends: add the debug/release concept to depends --- depends/Makefile | 14 ++++++++-- depends/config.site.in | 3 ++ depends/funcs.mk | 59 ++++++++++++++++++++++------------------ depends/hosts/default.mk | 5 +++- 4 files changed, 51 insertions(+), 30 deletions(-) diff --git a/depends/Makefile b/depends/Makefile index f5fb5b865..fc763bede 100644 --- a/depends/Makefile +++ b/depends/Makefile @@ -22,6 +22,12 @@ host:=$(HOST) host_toolchain:=$(HOST)- endif +ifneq ($(DEBUG),) +release_type=debug +else +release_type=release +endif + base_build_dir=$(BASEDIR)/work/build base_staging_dir=$(BASEDIR)/work/staging canonical_host:=$(shell ./config.sub $(HOST)) @@ -103,12 +109,14 @@ $(host_prefix)/share/config.site : config.site.in $(host_prefix)/.stamp_$(final_ -e 's|@STRIP@|$(toolchain_path)$(host_STRIP)|' \ -e 's|@build_os@|$(build_os)|' \ -e 's|@host_os@|$(host_os)|' \ - -e 's|@CFLAGS@|$(host_CFLAGS)|' \ - -e 's|@CXXFLAGS@|$(host_CXXFLAGS)|' \ - -e 's|@LDFLAGS@|$(host_LDFLAGS)|' \ + -e 's|@CFLAGS@|$(strip $(host_CFLAGS) $(host_$(release_type)_CFLAGS))|' \ + -e 's|@CXXFLAGS@|$(strip $(host_CXXFLAGS) $(host_$(release_type)_CXXFLAGS))|' \ + -e 's|@CPPFLAGS@|$(strip $(host_CPPFLAGS) $(host_$(release_type)_CPPFLAGS))|' \ + -e 's|@LDFLAGS@|$(strip $(host_LDFLAGS) $(host_$(release_type)_LDFLAGS))|' \ -e 's|@no_qt@|$(NO_QT)|' \ -e 's|@no_wallet@|$(NO_WALLET)|' \ -e 's|@no_upnp@|$(NO_UPNP)|' \ + -e 's|@debug@|$(DEBUG)|' \ $< > $@ $(AT)touch $@ diff --git a/depends/config.site.in b/depends/config.site.in index 1df04eec3..abd814ea6 100644 --- a/depends/config.site.in +++ b/depends/config.site.in @@ -81,4 +81,7 @@ fi if test -n "@CXXFLAGS@"; then export CXXFLAGS="@CXXFLAGS@ $CXXFLAGS" fi +if test -n "@CPPFLAGS@"; then + export CPPFLAGS="@CPPFLAGS@ $CPPFLAGS" +fi export LDFLAGS="-L$prefix/lib @LDFLAGS@ $LDFLAGS" diff --git a/depends/funcs.mk b/depends/funcs.mk index 28bfb8549..c1fc0a0e3 100644 --- a/depends/funcs.mk +++ b/depends/funcs.mk @@ -8,10 +8,10 @@ $(1)_ar=$($($(1)_type)_AR) $(1)_ranlib=$($($(1)_type)_RANLIB) $(1)_libtool=$($($(1)_type)_LIBTOOL) $(1)_nm=$($($(1)_type)_NM) -$(1)_cflags=$($($(1)_type)_CFLAGS) -$(1)_cxxflags=$($($(1)_type)_CXXFLAGS) -$(1)_ldflags=$($($(1)_type)_LDFLAGS) -L$($($(1)_type)_prefix)/lib -$(1)_cppflags:=-I$($($(1)_type)_prefix)/include +$(1)_cflags=$($($(1)_type)_CFLAGS) $($($(1)_type)_$(release_type)_CFLAGS) +$(1)_cxxflags=$($($(1)_type)_CXXFLAGS) $($($(1)_type)_$(release_type)_CXXFLAGS) +$(1)_ldflags=$($($(1)_type)_LDFLAGS) $($($(1)_type)_$(release_type)_LDFLAGS) -L$($($(1)_type)_prefix)/lib +$(1)_cppflags=$($($(1)_type)_CPPFLAGS) $($($(1)_type)_$(release_type)_CPPFLAGS) -I$($($(1)_type)_prefix)/include $(1)_recipe_hash:= endef @@ -38,7 +38,7 @@ define int_get_build_id $(eval $(1)_dependencies += $($(1)_$(host_arch)_$(host_os)_dependencies) $($(1)_$(host_os)_dependencies)) $(eval $(1)_all_dependencies:=$(call int_get_all_dependencies,$(1),$($($(1)_type)_native_toolchain) $($(1)_dependencies))) $(foreach dep,$($(1)_all_dependencies),$(eval $(1)_build_id_deps+=$(dep)-$($(dep)_version)-$($(dep)_recipe_hash))) -$(eval $(1)_build_id_long:=$(1)-$($(1)_version)-$($(1)_recipe_hash) $($(1)_build_id_deps)) +$(eval $(1)_build_id_long:=$(1)-$($(1)_version)-$($(1)_recipe_hash)-$(release_type) $($(1)_build_id_deps)) $(eval $(1)_build_id:=$(shell echo -n "$($(1)_build_id_long)" | $(build_SHA256SUM) | cut -c-$(HASH_LENGTH))) final_build_id_long+=$($(package)_build_id_long) @@ -83,33 +83,40 @@ endef define int_config_attach_build_config $(eval $(call $(1)_set_vars,$(1))) -$(1)_cflags+=$($(1)_cflags_$(host_arch)) -$(1)_cflags+=$($(1)_cflags_$(host_os)) -$(1)_cflags+=$($(1)_cflags_$(host_arch)_$(host_os)) +$(1)_cflags+=$($(1)_cflags_$(release_type)) +$(1)_cflags+=$($(1)_cflags_$(host_arch)) $($(1)_cflags_$(host_arch)_$(release_type)) +$(1)_cflags+=$($(1)_cflags_$(host_os)) $($(1)_cflags_$(host_os)_$(release_type)) +$(1)_cflags+=$($(1)_cflags_$(host_arch)_$(host_os)) $($(1)_cflags_$(host_arch)_$(host_os)_$(release_type)) -$(1)_cxxflags+=$($(1)_cxxflags_$(host_arch)) -$(1)_cxxflags+=$($(1)_cxxflags_$(host_os)) -$(1)_cxxflags+=$($(1)_cxxflags_$(host_arch)_$(host_os)) +$(1)_cxxflags+=$($(1)_cxxflags_$(release_type)) +$(1)_cxxflags+=$($(1)_cxxflags_$(host_arch)) $($(1)_cxxflags_$(host_arch)_$(release_type)) +$(1)_cxxflags+=$($(1)_cxxflags_$(host_os)) $($(1)_cxxflags_$(host_os)_$(release_type)) +$(1)_cxxflags+=$($(1)_cxxflags_$(host_arch)_$(host_os)) $($(1)_cxxflags_$(host_arch)_$(host_os)_$(release_type)) -$(1)_cppflags+=$($(1)_cppflags_$(host_arch)) -$(1)_cppflags+=$($(1)_cppflags_$(host_os)) -$(1)_cppflags+=$($(1)_cppflags_$(host_arch)_$(host_os)) +$(1)_cppflags+=$($(1)_cppflags_$(release_type)) +$(1)_cppflags+=$($(1)_cppflags_$(host_arch)) $($(1)_cppflags_$(host_arch)_$(release_type)) +$(1)_cppflags+=$($(1)_cppflags_$(host_os)) $($(1)_cppflags_$(host_os)_$(release_type)) +$(1)_cppflags+=$($(1)_cppflags_$(host_arch)_$(host_os)) $($(1)_cppflags_$(host_arch)_$(host_os)_$(release_type)) -$(1)_ldflags+=$($(1)_ldflags_$(host_arch)) -$(1)_ldflags+=$($(1)_ldflags_$(host_os)) -$(1)_ldflags+=$($(1)_ldflags_$(host_arch)_$(host_os)) +$(1)_ldflags+=$($(1)_ldflags_$(release_type)) +$(1)_ldflags+=$($(1)_ldflags_$(host_arch)) $($(1)_ldflags_$(host_arch)_$(release_type)) +$(1)_ldflags+=$($(1)_ldflags_$(host_os)) $($(1)_ldflags_$(host_os)_$(release_type)) +$(1)_ldflags+=$($(1)_ldflags_$(host_arch)_$(host_os)) $($(1)_ldflags_$(host_arch)_$(host_os)_$(release_type)) -$(1)_build_opts+=$$($(1)_build_opts_$(host_arch)) -$(1)_build_opts+=$$($(1)_build_opts_$(host_os)) -$(1)_build_opts+=$$($(1)_build_opts_$(host_arch)_$(host_os)) +$(1)_build_opts+=$$($(1)_build_opts_$(release_type)) +$(1)_build_opts+=$$($(1)_build_opts_$(host_arch)) $$($(1)_build_opts_$(host_arch)_$(release_type)) +$(1)_build_opts+=$$($(1)_build_opts_$(host_os)) $$($(1)_build_opts_$(host_os)_$(release_type)) +$(1)_build_opts+=$$($(1)_build_opts_$(host_arch)_$(host_os)) $$($(1)_build_opts_$(host_arch)_$(host_os)_$(release_type)) -$(1)_config_opts+=$$($(1)_config_opts_$(host_arch)) -$(1)_config_opts+=$$($(1)_config_opts_$(host_os)) -$(1)_config_opts+=$$($(1)_config_opts_$(host_arch)_$(host_os)) +$(1)_config_opts+=$$($(1)_config_opts_$(release_type)) +$(1)_config_opts+=$$($(1)_config_opts_$(host_arch)) $$($(1)_config_opts_$(host_arch)_$(release_type)) +$(1)_config_opts+=$$($(1)_config_opts_$(host_os)) $$($(1)_config_opts_$(host_os)_$(release_type)) +$(1)_config_opts+=$$($(1)_config_opts_$(host_arch)_$(host_os)) $$($(1)_config_opts_$(host_arch)_$(host_os)_$(release_type)) -$(1)_config_env+=$($(1)_config_env_$(host_arch)) -$(1)_config_env+=$($(1)_config_env_$(host_os)) -$(1)_config_env+=$($(1)_config_env_$(host_arch)_$(host_os)) +$(1)_config_env+=$$($(1)_config_env_$(release_type)) +$(1)_config_env+=$($(1)_config_env_$(host_arch)) $($(1)_config_env_$(host_arch)_$(release_type)) +$(1)_config_env+=$($(1)_config_env_$(host_os)) $($(1)_config_env_$(host_os)_$(release_type)) +$(1)_config_env+=$($(1)_config_env_$(host_arch)_$(host_os)) $($(1)_config_env_$(host_arch)_$(host_os)_$(release_type)) $(1)_config_env+=PKG_CONFIG_LIBDIR=$($($(1)_type)_prefix)/lib/pkgconfig $(1)_config_env+=PKG_CONFIG_PATH=$($($(1)_type)_prefix)/share/pkgconfig diff --git a/depends/hosts/default.mk b/depends/hosts/default.mk index b9fe5d858..6f60d6b3f 100644 --- a/depends/hosts/default.mk +++ b/depends/hosts/default.mk @@ -11,13 +11,16 @@ default_host_NM = $(host_toolchain)nm define add_host_tool_func $(host_os)_$1?=$$(default_host_$1) $(host_arch)_$(host_os)_$1?=$$($(host_os)_$1) +$(host_arch)_$(host_os)_$(release_type)_$1?=$$($(host_os)_$1) host_$1=$$($(host_arch)_$(host_os)_$1) endef define add_host_flags_func $(host_arch)_$(host_os)_$1 += $($(host_os)_$1) +$(host_arch)_$(host_os)_$(release_type)_$1 += $($(host_os)_$(release_type)_$1) host_$1 = $$($(host_arch)_$(host_os)_$1) +host_$(release_type)_$1 = $$($(host_arch)_$(host_os)_$(release_type)_$1) endef $(foreach tool,CC CXX AR RANLIB STRIP NM LIBTOOL OTOOL INSTALL_NAME_TOOL,$(eval $(call add_host_tool_func,$(tool)))) -$(foreach flags,CFLAGS CXXFLAGS LDFLAGS, $(eval $(call add_host_flags_func,$(flags)))) +$(foreach flags,CFLAGS CXXFLAGS CPPFLAGS LDFLAGS, $(eval $(call add_host_flags_func,$(flags)))) From f3973040028d6a7335a3265fa0e13b599b2fac3d Mon Sep 17 00:00:00 2001 From: Cory Fields Date: Tue, 23 Sep 2014 17:00:31 -0400 Subject: [PATCH 02/12] depends: add debug/release flags for linux/osx/win Linux and mingw enable libstdc++ debugging for extra runtime checks. OSX doesn't play nice, so don't enable it there. --- depends/hosts/darwin.mk | 10 +++++++++- depends/hosts/linux.mk | 10 +++++++++- depends/hosts/mingw32.mk | 10 +++++++++- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/depends/hosts/darwin.mk b/depends/hosts/darwin.mk index 9e2415655..8d718eba1 100644 --- a/depends/hosts/darwin.mk +++ b/depends/hosts/darwin.mk @@ -3,6 +3,14 @@ OSX_SDK_VERSION=10.7 OSX_SDK=$(SDK_PATH)/MacOSX$(OSX_SDK_VERSION).sdk darwin_CC=clang -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) darwin_CXX=clang++ -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) -darwin_CFLAGS=-pipe -O2 + +darwin_CFLAGS=-pipe darwin_CXXFLAGS=$(darwin_CFLAGS) + +darwin_release_CFLAGS=-O2 +darwin_release_CXXFLAGS=$(darwin_release_CFLAGS) + +darwin_debug_CFLAGS=-O1 +darwin_debug_CXXFLAGS=$(darwin_debug_CFLAGS) + darwin_native_toolchain=native_cctools diff --git a/depends/hosts/linux.mk b/depends/hosts/linux.mk index 194d71d55..b13a0f1ad 100644 --- a/depends/hosts/linux.mk +++ b/depends/hosts/linux.mk @@ -1,6 +1,14 @@ -linux_CFLAGS=-pipe -O2 +linux_CFLAGS=-pipe linux_CXXFLAGS=$(linux_CFLAGS) +linux_release_CFLAGS=-O2 +linux_release_CXXFLAGS=$(linux_release_CFLAGS) + +linux_debug_CFLAGS=-O1 +linux_debug_CXXFLAGS=$(linux_debug_CFLAGS) + +linux_debug_CPPFLAGS=-D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC + ifeq (86,$(findstring 86,$(build_arch))) i686_linux_CC=gcc -m32 i686_linux_CXX=g++ -m32 diff --git a/depends/hosts/mingw32.mk b/depends/hosts/mingw32.mk index ffe4a5584..dbfb62fdc 100644 --- a/depends/hosts/mingw32.mk +++ b/depends/hosts/mingw32.mk @@ -1,2 +1,10 @@ -mingw32_CFLAGS=-pipe -O2 +mingw32_CFLAGS=-pipe mingw32_CXXFLAGS=$(mingw32_CFLAGS) + +mingw32_release_CFLAGS=-O2 +mingw32_release_CXXFLAGS=$(mingw32_release_CFLAGS) + +mingw32_debug_CFLAGS=-O1 +mingw32_debug_CXXFLAGS=$(mingw32_debug_CFLAGS) + +mingw32_debug_CPPFLAGS=-D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC From 7e99df78c4e9f93f2f31298c00bb5568bfd42a43 Mon Sep 17 00:00:00 2001 From: Cory Fields Date: Tue, 23 Sep 2014 17:02:22 -0400 Subject: [PATCH 03/12] depends: make sure openssl sees cppflags --- depends/packages/openssl.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/depends/packages/openssl.mk b/depends/packages/openssl.mk index b1dcc6f81..3ccdaf6f2 100644 --- a/depends/packages/openssl.mk +++ b/depends/packages/openssl.mk @@ -9,7 +9,7 @@ $(package)_config_env=AR="$($(package)_ar)" RANLIB="$($(package)_ranlib)" CC="$( $(package)_config_opts=--prefix=$(host_prefix) --openssldir=$(host_prefix)/etc/openssl no-zlib no-shared no-dso $(package)_config_opts+=no-krb5 no-camellia no-capieng no-cast no-cms no-dtls1 no-gost no-gmp no-heartbeats no-idea no-jpake no-md2 $(package)_config_opts+=no-mdc2 no-rc5 no-rdrand no-rfc3779 no-rsax no-sctp no-seed no-sha0 no-static_engine no-whirlpool no-rc2 no-rc4 no-ssl3 -$(package)_config_opts+=$($(package)_cflags) +$(package)_config_opts+=$($(package)_cflags) $($(package)_cppflags) $(package)_config_opts_x86_64_linux=-fPIC linux-x86_64 $(package)_config_opts_arm_linux=-fPIC linux-generic32 $(package)_config_opts_x86_64_darwin=darwin64-x86_64-cc From 3b63df5fac7c65c87036aec2bdf8130b74873577 Mon Sep 17 00:00:00 2001 From: Cory Fields Date: Tue, 23 Sep 2014 17:03:09 -0400 Subject: [PATCH 04/12] depends: boost: build for debug or release as requested Also hook up cppflags there, which was missing before. --- depends/packages/boost.mk | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/depends/packages/boost.mk b/depends/packages/boost.mk index a3cacbcbb..98ed3de77 100644 --- a/depends/packages/boost.mk +++ b/depends/packages/boost.mk @@ -6,8 +6,10 @@ $(package)_sha256_hash=fff00023dd79486d444c8e29922f4072e1d451fc5a4d2b6075852ead7 $(package)_patches=darwin_boost_atomic-1.patch darwin_boost_atomic-2.patch 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+=variant=release threading=multi link=static -sNO_BZIP2=1 -sNO_ZLIB=1 +$(package)_config_opts+=threading=multi link=static -sNO_BZIP2=1 -sNO_ZLIB=1 $(package)_config_opts_linux=threadapi=pthread runtime-link=shared $(package)_config_opts_darwin=--toolset=darwin-4.2.1 runtime-link=shared $(package)_config_opts_mingw32=binary-format=pe target-os=windows threadapi=win32 runtime-link=static @@ -26,7 +28,7 @@ endef define $(package)_preprocess_cmds patch -p2 < $($(package)_patch_dir)/darwin_boost_atomic-1.patch && \ patch -p2 < $($(package)_patch_dir)/darwin_boost_atomic-2.patch && \ - echo "using $(boost_toolset_$(host_os)) : : $($(package)_cxx) : \"$($(package)_cxxflags)\" \"$($(package)_ldflags)\" \"$(boost_archiver_$(host_os))\" \"$(host_STRIP)\" \"$(host_RANLIB)\" \"$(host_WINDRES)\" : ;" > user-config.jam + echo "using $(boost_toolset_$(host_os)) : : $($(package)_cxx) : \"$($(package)_cxxflags) $($(package)_cppflags)\" \"$($(package)_ldflags)\" \"$(boost_archiver_$(host_os))\" \"$(host_STRIP)\" \"$(host_RANLIB)\" \"$(host_WINDRES)\" : ;" > user-config.jam endef define $(package)_config_cmds From 1d154db4570a523362366ba5698b9692edc998a2 Mon Sep 17 00:00:00 2001 From: Cory Fields Date: Tue, 23 Sep 2014 17:41:42 -0400 Subject: [PATCH 05/12] depends: teach qt to honor debug/release This means it also needs to honor our flags, so patch them in as necessary. --- depends/packages/qt.mk | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/depends/packages/qt.mk b/depends/packages/qt.mk index e719e2e50..5fbab57dd 100644 --- a/depends/packages/qt.mk +++ b/depends/packages/qt.mk @@ -10,8 +10,9 @@ $(package)_qt_libs=corelib network widgets gui plugins testlib $(package)_patches=mac-qmake.conf fix-xcb-include-order.patch qt5-tablet-osx.patch define $(package)_set_vars -$(package)_config_opts = -release -opensource -confirm-license -$(package)_config_opts += -no-audio-backend -no-sql-tds -no-glib -no-icu +$(package)_config_opts_release = -release +$(package)_config_opts_debug = -debug +$(package)_config_opts += -opensource -confirm-license -no-audio-backend -no-sql-tds -no-glib -no-icu $(package)_config_opts += -no-cups -no-iconv -no-gif -no-audio-backend -no-freetype $(package)_config_opts += -no-sql-sqlite -no-nis -no-cups -no-iconv -no-pch $(package)_config_opts += -no-gif -no-feature-style-plastique @@ -53,7 +54,13 @@ define $(package)_preprocess_cmds cp -f qtbase/mkspecs/macx-clang/qplatformdefs.h qtbase/mkspecs/macx-clang-linux/ &&\ cp -f $($(package)_patch_dir)/mac-qmake.conf qtbase/mkspecs/macx-clang-linux/qmake.conf && \ patch -p1 < $($(package)_patch_dir)/fix-xcb-include-order.patch && \ - patch -p1 < $($(package)_patch_dir)/qt5-tablet-osx.patch + patch -p1 < $($(package)_patch_dir)/qt5-tablet-osx.patch && \ + echo "QMAKE_CFLAGS += $($(package)_cflags) $($(package)_cppflags)" >> qtbase/mkspecs/common/gcc-base.conf && \ + echo "QMAKE_CXXFLAGS += $($(package)_cxxflags) $($(package)_cppflags)" >> qtbase/mkspecs/common/gcc-base.conf && \ + echo "QMAKE_LFLAGS += $($(package)_ldflags)" >> qtbase/mkspecs/common/gcc-base.conf && \ + sed -i.old "s|QMAKE_CFLAGS = |QMAKE_CFLAGS = $($(package)_cflags) $($(package)_cppflags) |" qtbase/mkspecs/win32-g++/qmake.conf && \ + sed -i.old "s|QMAKE_LFLAGS = |QMAKE_LFLAGS = $($(package)_ldflags) |" qtbase/mkspecs/win32-g++/qmake.conf && \ + sed -i.old "s|QMAKE_CXXFLAGS = |QMAKE_CXXFLAGS = $($(package)_cxxflags) $($(package)_cppflags) |" qtbase/mkspecs/win32-g++/qmake.conf endef define $(package)_config_cmds From b1efba82982ea9e120ced226bdbff6402bc99f64 Mon Sep 17 00:00:00 2001 From: Cory Fields Date: Tue, 23 Sep 2014 19:27:57 -0400 Subject: [PATCH 06/12] depends: give miniupnpc cppflags --- depends/packages/miniupnpc.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/depends/packages/miniupnpc.mk b/depends/packages/miniupnpc.mk index 30f2d3f31..00101f1b9 100644 --- a/depends/packages/miniupnpc.mk +++ b/depends/packages/miniupnpc.mk @@ -8,7 +8,7 @@ define $(package)_set_vars $(package)_build_opts=CC="$($(package)_cc)" $(package)_build_opts_darwin=OS=Darwin $(package)_build_opts_mingw32=-f Makefile.mingw -$(package)_build_env+=CFLAGS="$($(package)_cflags)" AR="$($(package)_ar)" +$(package)_build_env+=CFLAGS="$($(package)_cflags) $($(package)_cppflags)" AR="$($(package)_ar)" endef define $(package)_preprocess_cmds From dc66ff53b4b4d31fda4ec4ee500a6a8f98bae6ac Mon Sep 17 00:00:00 2001 From: Cory Fields Date: Tue, 23 Sep 2014 17:52:43 -0400 Subject: [PATCH 07/12] depends: make LDFLAGS act like the other flags --- depends/config.site.in | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/depends/config.site.in b/depends/config.site.in index abd814ea6..c80c3e8f2 100644 --- a/depends/config.site.in +++ b/depends/config.site.in @@ -52,7 +52,9 @@ export PATH=$prefix/native/bin:$PATH export PKG_CONFIG="`which pkg-config` --static" export PKG_CONFIG_LIBDIR=$prefix/lib/pkgconfig export PKG_CONFIG_PATH=$prefix/share/pkgconfig + export CPPFLAGS="-I$prefix/include/ $CPPFLAGS" +export LDFLAGS="-L$prefix/lib $LDFLAGS" export CC="@CC@" export CXX="@CXX@" @@ -84,4 +86,6 @@ fi if test -n "@CPPFLAGS@"; then export CPPFLAGS="@CPPFLAGS@ $CPPFLAGS" fi -export LDFLAGS="-L$prefix/lib @LDFLAGS@ $LDFLAGS" +if test -n "@LDFLAGS@"; then + export LDFLAGS="@LDFLAGS@ $LDFLAGS" +fi From 1f7fff2beea20c3f1bf5a4496f81cb9be9e0e07e Mon Sep 17 00:00:00 2001 From: Cory Fields Date: Tue, 23 Sep 2014 17:51:10 -0400 Subject: [PATCH 08/12] depends: add docs for debug --- depends/README.packages | 12 ++++++++++++ depends/README.usage | 1 + 2 files changed, 13 insertions(+) diff --git a/depends/README.packages b/depends/README.packages index c35abfbdc..5ab7ed7de 100644 --- a/depends/README.packages +++ b/depends/README.packages @@ -65,10 +65,22 @@ These variables may be set to override or append their default values. $(package)_config_env $(package)_build_env $(package)_stage_env + $(package)_build_opts + $(package)_config_opts The *_env variables are used to add environment variables to the respective commands. +Many variables respect a debug/release suffix as well, in order to use them for +only the appropriate build config. For example: + $(package)_cflags_release = -O3 + $(package)_cflags_i686_debug = -g + $(package)_config_opts_release = --disable-debug + +These will be used in addition to the options that do not specify +debug/release. All builds are considered to be release unless DEBUG=1 is set by +the user. + Other variables may be defined as needed. Build commands: diff --git a/depends/README.usage b/depends/README.usage index 0aacefbf9..d3c57956f 100644 --- a/depends/README.usage +++ b/depends/README.usage @@ -22,6 +22,7 @@ FALLBACK_DOWNLOAD_PATH: If a source file can't be fetched, try here before givin NO_QT: Don't download/build/cache qt and its dependencies NO_WALLET: Don't download/build/cache libs needed to enable the wallet NO_UPNP: Don't download/build/cache packages needed for enabling upnp +DEBUG: disable some optimizations and enable more runtime checking If some packages are not built, for example 'make NO_WALLET=1', the appropriate options will be passed to bitcoin's configure. In this case, --disable-wallet. From 00522cd45b7c093975a7684876b26abeced58da9 Mon Sep 17 00:00:00 2001 From: Cory Fields Date: Tue, 23 Sep 2014 18:18:03 -0400 Subject: [PATCH 09/12] depends: disable reduced exports for debug builds Some debug options may not be compatible. --- depends/config.site.in | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/depends/config.site.in b/depends/config.site.in index c80c3e8f2..3426050cd 100644 --- a/depends/config.site.in +++ b/depends/config.site.in @@ -77,6 +77,10 @@ if test -n "@NM@"; then ac_cv_path_ac_pt_NM=${NM} fi +if test -n "@debug@"; then + enable_reduce_exports=no +fi + if test -n "@CFLAGS@"; then export CFLAGS="@CFLAGS@ $CFLAGS" fi From a94496fbb672fce43b66f56ed0bbd69a560d5654 Mon Sep 17 00:00:00 2001 From: Cory Fields Date: Tue, 23 Sep 2014 16:53:34 -0400 Subject: [PATCH 10/12] tests: don't split an empty string --- src/test/getarg_tests.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/test/getarg_tests.cpp b/src/test/getarg_tests.cpp index 8cadcdd71..8a984304f 100644 --- a/src/test/getarg_tests.cpp +++ b/src/test/getarg_tests.cpp @@ -16,7 +16,8 @@ BOOST_AUTO_TEST_SUITE(getarg_tests) static void ResetArgs(const std::string& strArg) { std::vector vecArg; - boost::split(vecArg, strArg, boost::is_space(), boost::token_compress_on); + if (strArg.size()) + boost::split(vecArg, strArg, boost::is_space(), boost::token_compress_on); // Insert dummy executable name: vecArg.insert(vecArg.begin(), "testbitcoin"); From be6d87aa60c1aca886b557901a493119c2aac024 Mon Sep 17 00:00:00 2001 From: Cory Fields Date: Tue, 23 Sep 2014 16:53:58 -0400 Subject: [PATCH 11/12] script: don't read past the end --- src/script/interpreter.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/script/interpreter.cpp b/src/script/interpreter.cpp index d742fb9eb..a71f55dd2 100644 --- a/src/script/interpreter.cpp +++ b/src/script/interpreter.cpp @@ -839,7 +839,8 @@ public: itBegin = it; } } - s.write((char*)&itBegin[0], it-itBegin); + if (itBegin != scriptCode.end()) + s.write((char*)&itBegin[0], it-itBegin); } /** Serialize an input of txTo */ From 93e24dddf3b7063a157b414c07e08ac7f31eaf03 Mon Sep 17 00:00:00 2001 From: Cory Fields Date: Tue, 23 Sep 2014 18:19:09 -0400 Subject: [PATCH 12/12] travis: use debug for one build For the all-off build, enable the wallet and debug. This ensures that debug options will catch wallet problems as well. In order to make sure the no-wallet path is still tested, disable the wallet in the other x86_64 build. --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 54799362a..155ac012d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,9 +27,9 @@ matrix: - compiler: "true 1" env: HOST=arm-linux-gnueabihf PACKAGES="g++-arm-linux-gnueabihf" DEP_OPTS="NO_QT=1" GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat" - compiler: "true 2" - env: HOST=x86_64-unknown-linux-gnu DEP_OPTS="NO_QT=1 NO_WALLET=1 NO_UPNP=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat CPPFLAGS=-DDEBUG_LOCKORDER" + env: HOST=x86_64-unknown-linux-gnu DEP_OPTS="NO_QT=1 NO_UPNP=1 DEBUG=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat CPPFLAGS=-DDEBUG_LOCKORDER" - compiler: "true 3" - env: HOST=x86_64-unknown-linux-gnu RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat" + env: HOST=x86_64-unknown-linux-gnu DEP_OPTS="NO_WALLET=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat" - compiler: "true 4" env: HOST=i686-pc-linux-gnu PACKAGES="g++-multilib" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat" - compiler: "true 5"