musique/Makefile

50 lines
1.2 KiB
Makefile
Raw Normal View History

2022-04-24 15:27:09 +02:00
MAKEFLAGS="-j $(grep -c ^processor /proc/cpuinfo)"
2022-05-08 15:57:31 +02:00
CXXFLAGS:=$(CXXFLAGS) -std=c++20 -Wall -Wextra -Werror=switch -Werror=unused-result
2022-05-02 22:09:11 +02:00
CPPFLAGS:=$(CPPFLAGS) -Ilib/expected/ -Ilib/ut/ -Isrc/
2022-04-24 15:27:09 +02:00
Obj=bin/errors.o \
bin/lexer.o \
bin/location.o \
bin/parser.o \
bin/unicode.o \
2022-05-02 20:45:06 +02:00
bin/unicode_tables.o
2022-04-24 16:09:55 +02:00
all: bin/musique bin/unit-tests
2022-04-24 15:27:09 +02:00
bin/%.o: src/%.cc src/*.hh
g++ $(CXXFLAGS) $(CPPFLAGS) -o $@ $< -c
2022-04-24 16:09:55 +02:00
bin/musique: $(Obj) bin/main.o src/*.hh
g++ $(CXXFLAGS) $(CPPFLAGS) -o $@ $(Obj) bin/main.o
.PHONY: unit-tests
unit-tests: bin/unit-tests
./$<
.PHONY: unit-test-coverage
2022-05-02 22:09:11 +02:00
unit-test-coverage:
@which gcov >/dev/null || ( echo "[ERROR] gcov is required for test coverage report"; false )
@which gcovr >/dev/null || ( echo "[ERROR] gcovr is required for test coverage report"; false )
2022-05-02 22:09:11 +02:00
CXXFLAGS=--coverage $(MAKE) bin/unit-tests -B
bin/unit-tests
rm -rf coverage
mkdir coverage
gcovr -e '.*\.hpp' --html --html-details -o coverage/index.html
rm -rf bin
xdg-open coverage/index.html
.PHONY: doc
doc: Doxyfile src/*.cc src/*.hh
doxygen
cd doc; $(MAKE) html
2022-05-02 22:09:11 +02:00
2022-04-24 16:09:55 +02:00
bin/unit-tests: src/tests/*.cc $(Obj)
g++ $(CXXFLAGS) $(CPPFLAGS) -o $@ $^
2022-04-24 15:27:09 +02:00
clean:
2022-05-02 22:12:29 +02:00
rm -rf bin coverage
2022-04-24 15:27:09 +02:00
.PHONY: clean
$(shell mkdir -p bin)