aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile131
1 files changed, 11 insertions, 120 deletions
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