From 11ccc964a08c650302e917c4a5f84764e2c5e7fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Thu, 5 May 2022 18:37:52 +0100 Subject: build: switch Makefile over to use meson MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This cuts out most of the current Makefile, leaving a simplified set of targets that are a shim to the various meson commands. Signed-off-by: Daniel P. Berrangé --- Makefile | 131 ++++++--------------------------------------------------------- 1 file changed, 11 insertions(+), 120 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index 407b931..485e943 100644 --- a/Makefile +++ b/Makefile @@ -28,103 +28,19 @@ # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # -BUILD_TYPE ?= dbg +BUILD_DIR = $(CURDIR)/build -ifeq ($(BUILD_TYPE), dbg) - CMAKE_BUILD_TYPE = Debug - CFLAGS += -DDEBUG -else - CMAKE_BUILD_TYPE = Release -endif +.PHONY: all install test coverity pre-push clean tags -ifdef WITH_ASAN - CC = clang - CFLAGS += -fsanitize=address - LDFLAGS += -fsanitize=address -endif +all: + test -d $(BUILD_DIR) || meson $(BUILD_DIR) + ninja -C $(BUILD_DIR) -ifeq ($(MAKECMDGOALS), gcov) - CFLAGS += --coverage - LDFLAGS += --coverage -endif +install: + ninja -C $(BUILD_DIR) install -ifeq ($(VERBOSE),) - MAKEFLAGS += -s -endif - -GIT_SHA = $(shell git rev-parse --short HEAD) -CMAKE = $(shell bash -c "command -v cmake3 cmake" | head -1) -RSTLINT = $(shell bash -c "command -v restructuredtext-lint /bin/true" | head -1) -FLAKE8 = $(shell bash -c "command -v flake8 /bin/true" | head -1) - -BUILD_DIR_BASE = $(CURDIR)/build -BUILD_DIR = $(BUILD_DIR_BASE)/$(BUILD_TYPE) - -INSTALL_PREFIX ?= /usr/local - -.PHONY: all install test pytest pytest-valgrind -.PHONY: pre-push clean realclean tags gcov - -all install: $(BUILD_DIR)/Makefile - +$(MAKE) -C $(BUILD_DIR) $@ - -# -# NB: add --capture=no to get a C-level assert failure output. -# -PYTESTCMD = \ - $(shell bash -c "command -v pytest-3 /bin/true" | head -1) \ - -rP --quiet - -PYTEST = \ - BUILD_TYPE=$(BUILD_TYPE) $(PYTESTCMD) - -# -# In our tests, we make sure to destroy the ctx at the end of each test; this is -# enough for these settings to detect (most?) library leaks as "definite", -# without all the noise from the rest of the Python runtime. -# -# As running under valgrind is very slow, we don't run this unless requested. -# -PYTESTVALGRIND = \ - BUILD_TYPE=$(BUILD_TYPE) \ - PYTHONMALLOC=malloc \ - valgrind \ - --suppressions=$(CURDIR)/test/py/valgrind.supp \ - --quiet \ - --track-origins=yes \ - --errors-for-leak-kinds=definite \ - --show-leak-kinds=definite \ - --leak-check=full \ - --exit-on-first-error=yes \ - --error-exitcode=1 \ - $(PYTESTCMD) - -ifdef WITH_ASAN - -pytest pytest-valgrind: - -else - -pytest: all - @echo "=== Running python tests ===" -ifeq ($(PYTESTCMD), /bin/true -rP --quiet) - @echo "No pytest-3 found in system. Try 'apt-get install python3-pytest' or 'which pytest-3'" - @echo "0 Python tests run" -endif - $(PYTEST) - -pytest-valgrind: all - @echo "=== Running python tests with valgrind ===" - $(PYTESTVALGRIND) - -endif - -ifdef WITH_GCOV -test: all pytest -else -test: all pytest -endif - cd $(BUILD_DIR)/test; ctest --verbose +test: all + meson test -C $(BUILD_DIR) pre-push: .github/workflows/pull_request.sh @@ -132,33 +48,8 @@ pre-push: coverity: .github/workflows/coverity.sh -GCOVS=$(patsubst %.c,%.c.gcov, $(wildcard lib/*.c)) - -gcov: realclean test $(GCOVS) - clean: rm -rf $(BUILD_DIR) -realclean: - rm -rf $(BUILD_DIR_BASE) - rm -rf $(GCOVS) - -$(BUILD_DIR)/Makefile: -ifneq (,$(filter -DNDEBUG,$(CFLAGS))) - $(error -DNDEBUG flag is not supported) -endif - mkdir -p $(BUILD_DIR) - cd $(BUILD_DIR); $(CMAKE) \ - -D "CMAKE_C_COMPILER:STRING=$(CC)" \ - -D "CMAKE_C_FLAGS:STRING=$(CFLAGS)" \ - -D "CMAKE_BUILD_TYPE:STRING=$(CMAKE_BUILD_TYPE)" \ - -D "CMAKE_INSTALL_PREFIX=$(INSTALL_PREFIX)" \ - -D "WITH_ASAN=$(WITH_ASAN)" \ - -D "WITH_TRAN_PIPE=$(WITH_TRAN_PIPE)" \ - $(CURDIR) - -tags: - ctags -R --exclude=$(BUILD_DIR) - -lib/%.c.gcov: lib/%.c - cd lib && gcov -o ../build/$(BUILD_TYPE)/lib/CMakeFiles/$*.dir/$*.gcno $< +tags: all + ninja -C $(BUILD_DIR) ctags -- cgit v1.1