|
|
@@ -1,5 +1,13 @@
|
|
|
+INTERACTIVE:=$(shell [ -t 0 ] && echo 1)
|
|
|
+
|
|
|
+ifdef INTERACTIVE
|
|
|
+CLEAN_ANSI=
|
|
|
+else
|
|
|
+CLEAN_ANSI=| sed -r 's/\x1B\[([0-9]{1,3}(;[0-9]{1,2};?)?)?[mGK]//g'
|
|
|
+endif
|
|
|
+
|
|
|
CXX := clang++
|
|
|
-CXX_FLAGS := -std=c++20 -isystem include/ -DJVALIDATE_USE_EXCEPTIONS
|
|
|
+CXX_FLAGS := -Wall -Wextra -Werror -std=c++20 -isystem include/ -DJVALIDATE_USE_EXCEPTIONS
|
|
|
|
|
|
TEST_DIR := tests/
|
|
|
INCLUDE_DIR := include/
|
|
|
@@ -9,8 +17,9 @@ HEADERS := $(shell find $(INCLUDE_DIR) -name *.h)
|
|
|
TEST_HEADERS := $(wildcard $(TEST_DIR)*.h)
|
|
|
TEST_SOURCES := $(wildcard $(TEST_DIR)*.cxx)
|
|
|
TEST_OBJECTS := $(patsubst %.cxx, .build/%.o, $(TEST_SOURCES))
|
|
|
+TEST_BINARIES := .build/bin/selfvalidate
|
|
|
|
|
|
-all: .build/bin/selfvalidate
|
|
|
+all: run-test
|
|
|
|
|
|
debug: CXX_FLAGS := $(CXX_FLAGS) -g
|
|
|
debug: all
|
|
|
@@ -18,11 +27,17 @@ debug: all
|
|
|
clean:
|
|
|
@ rm -rf .build
|
|
|
|
|
|
+test: $(TEST_BINARIES)
|
|
|
+
|
|
|
+run-test: test
|
|
|
+run-test:
|
|
|
+ .build/bin/selfvalidate $(CLEAN_ANSI)
|
|
|
+
|
|
|
.build/tests/%.o: tests/%.cxx $(HEADERS) $(TEST_HEADERS)
|
|
|
@ mkdir -p .build/tests
|
|
|
$(CXX) $(CXX_FLAGS) -c $< -o $@
|
|
|
|
|
|
|
|
|
.build/bin/selfvalidate: .build/tests/selfvalidate_test.o
|
|
|
- @ mkdir -p .build/bin/tests
|
|
|
+ @ mkdir -p .build/bin
|
|
|
$(CXX) $< -o $@ -L/opt/local/lib -ljsoncpp -lgmock -lgtest
|