MAKEFLAGS += --warn-undefined-variables
-OUTPUT_OPTION = -MMD -MP -o $@
SHELL := bash
.DEFAULT_GOAL := all
+# So where possible we can make tests more reproducible
+export BUP_TEST_RANDOM_SEED ?= $(shell echo "$$RANDOM")
+
+# Guard against accidentally using/testing a local bup
+export PATH := $(CURDIR)/dev/shadow-bin:$(PATH)
+
clean_paths :=
generated_dependencies :=
os := $(shell ($(pf); uname | sed 's/[-_].*//') $(isok))
os := $(call shout,$(os),Unable to determine OS)
+# CFLAGS CPPFLAGS LDFLAGS are handled vis config/config.vars.in
+
# Satisfy --warn-undefined-variables
-CFLAGS ?=
DESTDIR ?=
-CPPFLAGS ?=
-LDFLAGS ?=
TARGET_ARCH ?=
-bup_shared_cflags := -O2 -Wall -Werror -Wformat=2
+bup_shared_cflags := -O2 -Wall -Werror -Wformat=2 -MMD -MP
bup_shared_cflags := -Wno-unknown-pragmas -Wsign-compare $(bup_shared_cflags)
bup_shared_cflags := -D_FILE_OFFSET_BITS=64 $(bup_shared_cflags)
bup_shared_cflags := $(bup_config_cflags) $(bup_shared_cflags)
# _XOPEN_SOURCE version, i.e. -Werror crashes on a mismatch, so for
# now, we're just going to let Python's version win.
-helpers_cflags := $(bup_python_cflags) $(bup_shared_cflags) -I$(CURDIR)/src
+helpers_cflags = $(bup_python_cflags) $(bup_shared_cflags) -I$(CURDIR)/src
helpers_ldflags := $(bup_python_ldflags) $(bup_shared_ldflags)
ifneq ($(strip $(bup_readline_cflags)),)
$(INSTALL) -pm 0644 lib/bup/source_info.py $(dest_libdir)/bup/; \
fi
-embed_cflags := $(bup_python_cflags_embed) $(bup_shared_cflags) -I$(CURDIR)/src
+embed_cflags = $(bup_python_cflags_embed) $(bup_shared_cflags) -I$(CURDIR)/src
embed_ldflags := $(bup_python_ldflags_embed) $(bup_shared_ldflags)
config/config.h: config/config.vars
clean_paths += config/config.h.tmp
-cc_bin = $(CC) $(embed_cflags) $(CFLAGS) $^ $(embed_ldflags) $(LDFLAGS) -fPIE \
- -I src $(OUTPUT_OPTION)
+cc_bin = $(CC) $(embed_cflags) -I src $(CPPFLAGS) $(CFLAGS) $^ \
+ $(embed_ldflags) $(LDFLAGS) -fPIE -o $@
clean_paths += dev/python-proposed
generated_dependencies += dev/python-proposed.d
clean_paths += dev/python
dev/python: dev/python-proposed
dev/validate-python $@-proposed
- ln $@-proposed $@
+ cp -R -p $@-proposed $@
clean_paths += dev/bup-exec
generated_dependencies += dev/bup-exec.d
-dev/bup-exec: CFLAGS += -D BUP_DEV_BUP_EXEC=1
+dev/bup-exec: bup_shared_cflags += -D BUP_DEV_BUP_EXEC=1
dev/bup-exec: lib/cmd/bup.c src/bup/compat.c src/bup/io.c
$(cc_bin)
clean_paths += dev/bup-python
generated_dependencies += dev/bup-python.d
-dev/bup-python: CFLAGS += -D BUP_DEV_BUP_PYTHON=1
+dev/bup-python: bup_shared_cflags += -D BUP_DEV_BUP_PYTHON=1
dev/bup-python: lib/cmd/bup.c src/bup/compat.c src/bup/io.c
$(cc_bin)
clean_paths += lib/bup/_helpers$(soext)
generated_dependencies += lib/bup/_helpers.d
lib/bup/_helpers$(soext): lib/bup/_helpers.c lib/bup/bupsplit.c
- $(CC) $(helpers_cflags) $(CFLAGS) $^ \
- $(helpers_ldflags) $(LDFLAGS) $(OUTPUT_OPTION)
+ $(CC) $(helpers_cflags) $(CPPFLAGS) $(CFLAGS) $^ \
+ $(helpers_ldflags) $(LDFLAGS) -o $@
test/tmp:
mkdir test/tmp
./pylint
test: all test/tmp dev/python lint
+ ! bup version # Ensure we can't test the local bup (cf. dev/shadow-bin)
./bup features
if test yes = "$$(dev/python -c 'import xdist; print("yes")' 2>/dev/null)"; then \
(set -x; ./pytest $(xdist_opt);) \
long-check: export BUP_TEST_LEVEL=11
long-check: check
-.PHONY: check-py2 check-py3 check-both
+.PHONY: check-py3
check-py3:
$(MAKE) clean && BUP_PYTHON_CONFIG=python3-config $(MAKE) check
-check-py2:
- $(MAKE) clean && BUP_PYTHON_CONFIG=python2.7-config $(MAKE) check
-check-both:
- $(MAKE) check-py3
- $(MAKE) check-py2
.PHONY: Documentation/all
Documentation/all: $(man_roff) $(man_html)