diff --git a/.travis.yml b/.travis.yml index 3d98bcad4..598788063 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,7 +17,7 @@ addons: - gcc-4.8 env: - - ARCH=64 SOURCE_CHECK_ONLY=true CDEBUGFLAGS="-std=gnu11 -g -fstack-protector -O3 -flto" LDFLAGS="-O3 -flto" + - ARCH=64 SOURCE_CHECK_ONLY=true COPTFLAGS="-O3 -flto" # - VALGRIND=0 ARCH=32 DEVELOPER=1 COMPILER=gcc TEST_GROUP=1 TEST_GROUP_COUNT=2 SOURCE_CHECK_ONLY=false # - VALGRIND=0 ARCH=32 DEVELOPER=1 COMPILER=gcc TEST_GROUP=2 TEST_GROUP_COUNT=2 SOURCE_CHECK_ONLY=false - VALGRIND=0 ARCH=64 DEVELOPER=1 COMPILER=gcc SOURCE_CHECK_ONLY=false diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e481ee73..de5d0dc81 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - JSON API: `invoice` expiry defaults to 7 days, and can have s/m/h/d/w suffixes. - Config: Increased default amount for minimal channel capacity from 1k sat to 10k sat. +- Build: Non-developer builds are now done with "-Og" optimization. ### Deprecated diff --git a/Makefile b/Makefile index 7e23e8a2a..c9c1a8035 100644 --- a/Makefile +++ b/Makefile @@ -185,14 +185,12 @@ WIRE_GEN := tools/generate-wire.py ALL_PROGRAMS = CPPFLAGS = -DBINTOPKGLIBEXECDIR='"'$(shell sh tools/rel.sh $(bindir) $(pkglibexecdir))'"' -CWARNFLAGS := -Werror -Wall -Wundef -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wold-style-definition -CDEBUGFLAGS := -std=gnu11 -g -fstack-protector $(SANITIZER_FLAGS) -CFLAGS = $(CPPFLAGS) $(CWARNFLAGS) $(CDEBUGFLAGS) -I $(CCANDIR) $(EXTERNAL_INCLUDE_FLAGS) -I . -I/usr/local/include $(FEATURES) $(COVFLAGS) $(DEV_CFLAGS) -DSHACHAIN_BITS=48 -DJSMN_PARENT_LINKS $(PIE_CFLAGS) $(COMPAT_CFLAGS) +CFLAGS = $(CPPFLAGS) $(CWARNFLAGS) $(CDEBUGFLAGS) $(COPTFLAGS) -I $(CCANDIR) $(EXTERNAL_INCLUDE_FLAGS) -I . -I/usr/local/include $(FEATURES) $(COVFLAGS) $(DEV_CFLAGS) -DSHACHAIN_BITS=48 -DJSMN_PARENT_LINKS $(PIE_CFLAGS) $(COMPAT_CFLAGS) # We can get configurator to run a different compile cmd to cross-configure. CONFIGURATOR_CC := $(CC) -LDFLAGS = $(PIE_LDFLAGS) $(SANITIZER_FLAGS) +LDFLAGS = $(PIE_LDFLAGS) $(SANITIZER_FLAGS) $(COPTFLAGS) ifeq ($(STATIC),1) LDLIBS = -L/usr/local/lib -Wl,-dn -lgmp -lsqlite3 -lz -Wl,-dy -lm -lpthread -ldl $(COVFLAGS) else diff --git a/configure b/configure index b220cde05..28a6270bc 100755 --- a/configure +++ b/configure @@ -6,7 +6,6 @@ set -e # Default values, loaded from environment or canned. PREFIX=${PREFIX:-/usr/local} CC=${CC:-cc} -CWARNFLAGS=${CWARNFLAGS:--Werror -Wall -Wundef -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wold-style-definition} CDEBUGFLAGS=${CDEBUGFLAGS:--std=gnu11 -g -fstack-protector} DEVELOPER=${DEVELOPER:-0} EXPERIMENTAL_FEATURES=${EXPERIMENTAL_FEATURES:-0} @@ -43,6 +42,7 @@ usage() usage_with_default "CDEBUGFLAGS" "$CDEBUGFLAGS" usage_with_default "CONFIGURATOR_CC" "$CONFIGURATOR_CC" usage_with_default "PYTEST" "$PYTEST" + usage_with_default "COPTFLAGS" "$COPTFLAGS" echo " To override compile line for configurator itself" echo "Options include:" @@ -110,6 +110,7 @@ for opt in "$@"; do CONFIGURATOR_CC=*) CONFIGURATOR_CC="${opt#CONFIGURATOR_CC=}";; CWARNFLAGS=*) CWARNFLAGS="${opt#CWARNFLAGS=}";; CDEBUGFLAGS=*) CDEBUGFLAGS="${opt#CDEBUGFLAGS=}";; + COPTFLAGS=*) COPTFLAGS="${opt#COPTFLAGS=}";; PYTEST=*) PYTEST="${opt#PYTEST=}";; --prefix=*) PREFIX="${opt#--prefix=}";; --enable-developer) DEVELOPER=1;; @@ -132,8 +133,26 @@ for opt in "$@"; do esac done +# Default COPTFLAGS is only set if not developer +if [ -z ${COPTFLAGS+x} ]; then + if [ "$DEVELOPER" = 0 ]; then + COPTFLAGS="-Og" + else + COPTFLAGS="" + fi +fi + +# We only enable Werror if we're -O3 or no-optimization. Otherwise gcc gives +# false positives. +if [ -z ${CWARNFLAGS+x} ]; then + CWARNFLAGS="-Wall -Wundef -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wold-style-definition" + if [ -x ${COPTFLAGS+x} ] || [ -z "${COPTFLAGS##*-O3*}" ]; then + CWARNFLAGS="$CWARNFLAGS -Werror" + fi +fi + echo -n "Compiling $CONFIGURATOR..." -$CC $CWARNFLAGS $CDEBUGFLAGS -o $CONFIGURATOR $CONFIGURATOR.c +$CC $CWARNFLAGS $CDEBUGFLAGS $COPTFLAGS -o $CONFIGURATOR $CONFIGURATOR.c echo "done" if [ -z "$VALGRIND" ]; then @@ -156,7 +175,7 @@ if [ "$ASAN" = "1" ]; then fi rm -f $CONFIG_VAR_FILE.$$ -$CONFIGURATOR --extra-tests --autotools-style --var-file=$CONFIG_VAR_FILE.$$ --header-file=$CONFIG_HEADER --configurator-cc="$CONFIGURATOR_CC" "$CC" $CWARNFLAGS $CDEBUGFLAGS <