Makefile 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. INTERACTIVE:=$(shell [ -t 0 ] && echo 1)
  2. ifdef INTERACTIVE
  3. CLEAN_ANSI=
  4. else
  5. CLEAN_ANSI=| sed -r 's/\x1B\[([0-9]{1,3}(;[0-9]{1,2};?)?)?[mGK]//g'
  6. endif
  7. CXX := clang++
  8. CXX_FLAGS := -Wall -Wextra -Werror -std=c++20 \
  9. -isystem include/ -I/opt/homebrew/opt/icu4c/include \
  10. -DJVALIDATE_USE_EXCEPTIONS
  11. LD_FLAGS := -L/opt/local/lib -L/opt/homebrew/opt/icu4c/lib -licuuc
  12. TEST_DIR := tests/
  13. INCLUDE_DIR := include/
  14. HEADERS := $(shell find $(INCLUDE_DIR) -name *.h)
  15. TEST_HEADERS := $(wildcard $(TEST_DIR)*.h)
  16. TEST_SOURCES := $(wildcard $(TEST_DIR)*.cxx)
  17. TEST_OBJECTS := $(patsubst %.cxx, .build/%.o, $(TEST_SOURCES))
  18. TEST_BINARIES := .build/bin/selfvalidate
  19. EXCLUDED_TESTS := format* content non_bmp_regex ecmascript_regex \
  20. bignum float_overflow zeroTerminatedFloats
  21. EXCLUDED_TESTS := $(shell printf ":*optional_%s" $(EXCLUDED_TESTS) | cut -c2-):Draft2019_09/JsonSchema.TestSuite/recursiveRef
  22. all: run-test
  23. debug: CXX_FLAGS := $(CXX_FLAGS) -g -fsanitize=address
  24. debug: LD_FLAGS := $(LD_FLAGS) -fsanitize=address
  25. debug: test
  26. clean:
  27. @ rm -rf .build
  28. test: $(TEST_BINARIES)
  29. run-test: test
  30. run-test:
  31. .build/bin/selfvalidate --gtest_filter=-$(EXCLUDED_TESTS) $(CLEAN_ANSI)
  32. .build/tests/%.o: tests/%.cxx $(HEADERS) $(TEST_HEADERS)
  33. @ mkdir -p .build/tests
  34. $(CXX) $(CXX_FLAGS) -c $< -o $@
  35. .build/bin/selfvalidate: .build/tests/selfvalidate_test.o
  36. @ mkdir -p .build/bin
  37. $(CXX) $< -o $@ $(LD_FLAGS) -ljsoncpp -lgmock -lcurl -lgtest