Separated makefile into smaller scripts to improve readability
This commit is contained in:
parent
7fb6df219c
commit
e16a28dfdc
65
Makefile
65
Makefile
@ -1,12 +1,4 @@
|
|||||||
MAKEFLAGS="-j $(grep -c ^processor /proc/cpuinfo)"
|
include config.mk
|
||||||
CXXFLAGS:=$(CXXFLAGS) -std=c++20 -Wall -Wextra -Werror=switch -Werror=return-type -Werror=unused-result -Wno-maybe-uninitialized
|
|
||||||
CPPFLAGS:=$(CPPFLAGS) -Ilib/expected/ -Ilib/ut/ -Ilib/midi/include -Iinclude/ -Ilib/bestline/
|
|
||||||
RELEASE_FLAGS=-O3
|
|
||||||
DEBUG_FLAGS=-O0 -ggdb -fsanitize=undefined -DDebug
|
|
||||||
CXX=g++
|
|
||||||
|
|
||||||
LDFLAGS=-L./lib/midi/
|
|
||||||
LDLIBS=-lmidi-alsa -lasound -lpthread
|
|
||||||
|
|
||||||
Obj= \
|
Obj= \
|
||||||
builtin_functions.o \
|
builtin_functions.o \
|
||||||
@ -25,72 +17,23 @@ Obj= \
|
|||||||
unicode_tables.o \
|
unicode_tables.o \
|
||||||
value.o
|
value.o
|
||||||
|
|
||||||
Tests= \
|
|
||||||
context.o \
|
|
||||||
environment.o \
|
|
||||||
interpreter.o \
|
|
||||||
lex.o \
|
|
||||||
main.o \
|
|
||||||
number.o \
|
|
||||||
parser.o \
|
|
||||||
unicode.o \
|
|
||||||
value.o
|
|
||||||
|
|
||||||
Release_Obj=$(addprefix bin/,$(Obj))
|
|
||||||
Debug_Obj=$(addprefix bin/debug/,$(Obj))
|
|
||||||
Test_Obj=$(addprefix bin/debug/tests/,$(Tests))
|
|
||||||
|
|
||||||
all: bin/musique
|
all: bin/musique
|
||||||
|
|
||||||
test: unit-tests
|
include scripts/debug.mk
|
||||||
etc/tools/test.py test examples
|
include scripts/release.mk
|
||||||
|
include scripts/test.mk
|
||||||
debug: bin/debug/musique
|
|
||||||
|
|
||||||
bin/%.o: src/%.cc include/*.hh
|
|
||||||
@echo "CXX $@"
|
|
||||||
@$(CXX) $(CXXFLAGS) $(RELEASE_FLAGS) $(CPPFLAGS) -o $@ $< -c
|
|
||||||
|
|
||||||
bin/musique: $(Release_Obj) bin/main.o bin/bestline.o include/*.hh lib/midi/libmidi-alsa.a
|
|
||||||
@echo "CXX $@"
|
|
||||||
@$(CXX) $(CXXFLAGS) $(RELEASE_FLAGS) $(CPPFLAGS) -o $@ $(Release_Obj) bin/bestline.o bin/main.o $(LDFLAGS) $(LDLIBS)
|
|
||||||
|
|
||||||
bin/debug/musique: $(Debug_Obj) bin/debug/main.o bin/bestline.o include/*.hh
|
|
||||||
@echo "CXX $@"
|
|
||||||
@$(CXX) $(CXXFLAGS) $(DEBUG_FLAGS) $(CPPFLAGS) -o $@ $(Debug_Obj) bin/bestline.o bin/debug/main.o $(LDFLAGS) $(LDLIBS)
|
|
||||||
|
|
||||||
bin/debug/%.o: src/%.cc include/*.hh
|
|
||||||
@echo "CXX $@"
|
|
||||||
@$(CXX) $(CXXFLAGS) $(DEBUG_FLAGS) $(CPPFLAGS) -o $@ $< -c
|
|
||||||
|
|
||||||
bin/bestline.o: lib/bestline/bestline.c lib/bestline/bestline.h
|
bin/bestline.o: lib/bestline/bestline.c lib/bestline/bestline.h
|
||||||
@echo "CC $@"
|
@echo "CC $@"
|
||||||
@$(CC) $< -c -O3 -o $@
|
@$(CC) $< -c -O3 -o $@
|
||||||
|
|
||||||
unit-tests: bin/unit-tests
|
|
||||||
./$<
|
|
||||||
|
|
||||||
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 )
|
|
||||||
CXXFLAGS=--coverage $(MAKE) bin/unit-tests -B
|
|
||||||
bin/unit-tests
|
|
||||||
rm -rf coverage
|
|
||||||
mkdir coverage
|
|
||||||
gcovr -e '.*\.hpp' -e 'src/tests/.*' -e 'src/pretty.cc' --html --html-details -o coverage/index.html
|
|
||||||
rm -rf bin/debug
|
|
||||||
xdg-open coverage/index.html
|
|
||||||
|
|
||||||
doc: Doxyfile src/*.cc include/*.hh
|
doc: Doxyfile src/*.cc include/*.hh
|
||||||
doxygen
|
doxygen
|
||||||
|
|
||||||
doc-open: doc
|
doc-open: doc
|
||||||
xdg-open ./doc/build/html/index.html
|
xdg-open ./doc/build/html/index.html
|
||||||
|
|
||||||
bin/unit-tests: $(Test_Obj) $(Debug_Obj)
|
|
||||||
@echo "CXX $@"
|
|
||||||
@$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(DEBUG_FLAGS) -o $@ $^
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf bin coverage
|
rm -rf bin coverage
|
||||||
|
|
||||||
|
12
config.mk
Normal file
12
config.mk
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
MAKEFLAGS="-j $(grep -c ^processor /proc/cpuinfo)"
|
||||||
|
|
||||||
|
CXXFLAGS:=$(CXXFLAGS) -std=c++20 -Wall -Wextra -Werror=switch -Werror=return-type -Werror=unused-result -Wno-maybe-uninitialized
|
||||||
|
CPPFLAGS:=$(CPPFLAGS) -Ilib/expected/ -Ilib/ut/ -Ilib/midi/include -Iinclude/ -Ilib/bestline/
|
||||||
|
|
||||||
|
RELEASE_FLAGS=-O3
|
||||||
|
DEBUG_FLAGS=-O0 -ggdb -fsanitize=undefined -DDebug
|
||||||
|
|
||||||
|
CXX=g++
|
||||||
|
|
||||||
|
LDFLAGS=-L./lib/midi/
|
||||||
|
LDLIBS=-lmidi-alsa -lasound -lpthread
|
11
scripts/debug.mk
Normal file
11
scripts/debug.mk
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
Debug_Obj=$(addprefix bin/debug/,$(Obj))
|
||||||
|
|
||||||
|
debug: bin/debug/musique
|
||||||
|
|
||||||
|
bin/debug/musique: $(Debug_Obj) bin/debug/main.o bin/bestline.o include/*.hh
|
||||||
|
@echo "CXX $@"
|
||||||
|
@$(CXX) $(CXXFLAGS) $(DEBUG_FLAGS) $(CPPFLAGS) -o $@ $(Debug_Obj) bin/bestline.o bin/debug/main.o $(LDFLAGS) $(LDLIBS)
|
||||||
|
|
||||||
|
bin/debug/%.o: src/%.cc include/*.hh
|
||||||
|
@echo "CXX $@"
|
||||||
|
@$(CXX) $(CXXFLAGS) $(DEBUG_FLAGS) $(CPPFLAGS) -o $@ $< -c
|
9
scripts/release.mk
Normal file
9
scripts/release.mk
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
Release_Obj=$(addprefix bin/,$(Obj))
|
||||||
|
|
||||||
|
bin/%.o: src/%.cc include/*.hh
|
||||||
|
@echo "CXX $@"
|
||||||
|
@$(CXX) $(CXXFLAGS) $(RELEASE_FLAGS) $(CPPFLAGS) -o $@ $< -c
|
||||||
|
|
||||||
|
bin/musique: $(Release_Obj) bin/main.o bin/bestline.o include/*.hh lib/midi/libmidi-alsa.a
|
||||||
|
@echo "CXX $@"
|
||||||
|
@$(CXX) $(CXXFLAGS) $(RELEASE_FLAGS) $(CPPFLAGS) -o $@ $(Release_Obj) bin/bestline.o bin/main.o $(LDFLAGS) $(LDLIBS)
|
33
scripts/test.mk
Normal file
33
scripts/test.mk
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
Tests= \
|
||||||
|
context.o \
|
||||||
|
environment.o \
|
||||||
|
interpreter.o \
|
||||||
|
lex.o \
|
||||||
|
main.o \
|
||||||
|
number.o \
|
||||||
|
parser.o \
|
||||||
|
unicode.o \
|
||||||
|
value.o
|
||||||
|
|
||||||
|
Test_Obj=$(addprefix bin/debug/tests/,$(Tests))
|
||||||
|
|
||||||
|
test: unit-tests
|
||||||
|
etc/tools/test.py test examples
|
||||||
|
|
||||||
|
unit-tests: bin/unit-tests
|
||||||
|
./$<
|
||||||
|
|
||||||
|
bin/unit-tests: $(Test_Obj) $(Debug_Obj)
|
||||||
|
@echo "CXX $@"
|
||||||
|
@$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(DEBUG_FLAGS) -o $@ $^
|
||||||
|
|
||||||
|
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 )
|
||||||
|
CXXFLAGS=--coverage $(MAKE) bin/unit-tests -B
|
||||||
|
bin/unit-tests
|
||||||
|
rm -rf coverage
|
||||||
|
mkdir coverage
|
||||||
|
gcovr -e '.*\.hpp' -e 'src/tests/.*' -e 'src/pretty.cc' --html --html-details -o coverage/index.html
|
||||||
|
rm -rf bin/debug
|
||||||
|
xdg-open coverage/index.html
|
Loading…
Reference in New Issue
Block a user