1- CMAKE_COMMON_FLAGS ?= -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
2- CMAKE_DEBUG_FLAGS ?= --preset debug
3- CMAKE_RELEASE_FLAGS ?= --preset release
41NPROCS ?= $(shell nproc)
52CLANG_FORMAT ?= clang-format
63DOCKER_COMPOSE ?= docker-compose
7-
8- # NOTE: use Makefile.local to override the options defined above.
9- -include Makefile.local
10-
11- CMAKE_DEBUG_FLAGS += -DCMAKE_BUILD_TYPE=Debug $(CMAKE_COMMON_FLAGS )
12- CMAKE_RELEASE_FLAGS += -DCMAKE_BUILD_TYPE=Release $(CMAKE_COMMON_FLAGS )
4+ PRESETS ?= debug release debug-custom release-custom
135
146.PHONY : all
157all : test-debug test-release
168
179# Run cmake
18- .PHONY : cmake-debug
19- cmake-debug :
20- cmake -B build_debug $(CMAKE_DEBUG_FLAGS )
21-
22- .PHONY : cmake-release
23- cmake-release :
24- cmake -B build_release $(CMAKE_RELEASE_FLAGS )
10+ .PHONY : $(addprefix cmake-, $(PRESETS ) )
11+ $(addprefix cmake-, $(PRESETS ) ) : cmake-% :
12+ cmake --preset $*
2513
26- build_debug/CMakeCache.txt : cmake-debug
27- build_release/CMakeCache.txt : cmake-release
14+ $(addsuffix /CMakeCache.txt, $(addprefix build-, $(PRESETS ) ) ) : build-% /CMakeCache.txt: cmake-%
2815
2916# Build using cmake
30- .PHONY : build-debug build-release
31- build-debug build-release : build-% : build_ % /CMakeCache.txt
32- cmake --build build_ $* -j $(NPROCS ) --target service_template
17+ .PHONY : $( addprefix build-, $( PRESETS ) )
18+ $( addprefix build-, $( PRESETS ) ) : build-% : build- % /CMakeCache.txt
19+ cmake --build build- $* -j $(NPROCS ) --target service_template
3320
3421# Test
35- .PHONY : test-debug test-release
36- test-debug test-release : test-% : build-%
37- cmake --build build_ $* -j $(NPROCS ) --target service_template_unittest
38- cmake --build build_ $* -j $(NPROCS ) --target service_template_benchmark
39- cd build_ $* && (( test - t 1 && GTEST_COLOR= 1 PYTEST_ADDOPTS= "-- color= yes" ctest - V) || ctest - V)
22+ .PHONY : $( addprefix test-, $( PRESETS ) )
23+ $( addprefix test-, $( PRESETS ) ) : test-% : build-%
24+ cmake --build build- $* -j $(NPROCS ) --target service_template_unittest
25+ cmake --build build- $* -j $(NPROCS ) --target service_template_benchmark
26+ cd build- $* && (( test - t 1 && GTEST_COLOR= 1 PYTEST_ADDOPTS= "-- color= yes" ctest - V) || ctest - V)
4027 pycodestyle tests
4128
4229# Start the service (via testsuite service runner)
43- .PHONY : start-debug start-release
44- start-debug start-release : start-% :
45- cmake --build build_$* -v --target start-service_template
46-
47- .PHONY : service-start-debug service-start-release
48- service-start-debug service-start-release : service-start-% : start-%
30+ .PHONY : $(addprefix start-, $(PRESETS ) )
31+ $(addprefix start-, $(PRESETS ) ) : start-% :
32+ cmake --build build-$* -v --target start-service_template
4933
5034# Cleanup data
51- .PHONY : clean-debug clean-release
52- clean-debug clean-release : clean-% :
53- cmake --build build_ $* --target clean
35+ .PHONY : $( addprefix clean-, $( PRESETS ) )
36+ $( addprefix clean-, $( PRESETS ) ) : clean-% :
37+ cmake --build build- $* --target clean
5438
5539.PHONY : dist-clean
5640dist-clean :
57- rm -rf build_ *
41+ rm -rf build *
5842 rm -rf tests/__pycache__/
5943 rm -rf tests/.pytest_cache/
6044
6145# Install
62- .PHONY : install-debug install-release
63- install-debug install-release : install-% : build-%
64- cmake --install build_ $* -v --component service_template
46+ .PHONY : $( addprefix install-, $( PRESETS ) )
47+ $( addprefix install-, $( PRESETS ) ) : install-% : build-%
48+ cmake --install build- $* -v --component service_template
6549
6650.PHONY : install
6751install : install-release
@@ -73,23 +57,20 @@ format:
7357 find tests -name ' *.py' -type f | xargs autopep8 -i
7458
7559# Internal hidden targets that are used only in docker environment
76- .PHONY : --in-docker-start-debug --in-docker-start-release
77- --in-docker-start-debug --in-docker-start-release : --in-docker-start-% : install-%
60+ .PHONY : $( addprefix --in-docker-start-, $( PRESETS ) )
61+ $( addprefix --in-docker-start-, $( PRESETS ) ) : --in-docker-start-% : install-%
7862 /home/user/.local/bin/service_template \
7963 --config /home/user/.local/etc/service_template/static_config.yaml \
8064 --config_vars /home/user/.local/etc/service_template/config_vars.yaml
8165
8266# Build and run service in docker environment
83- .PHONY : docker-start-debug docker-start-release
67+ .PHONY : $( addprefix docker-start-, $( PRESETS ) )
8468docker-start-debug docker-start-release : docker-start-% :
8569 $(DOCKER_COMPOSE ) run -p 8080:8080 --rm service_template-container make -- --in-docker-start-$*
8670
87- .PHONY : docker-start-service-debug docker-start-service-release
88- docker-start-service-debug docker-start-service-release : docker-start-service-% : docker-start-%
89-
9071# Start specific target in docker environment
91- .PHONY : docker-cmake-debug docker-build-debug docker-test-debug docker-clean-debug docker-install-debug docker-cmake-release docker-build-release docker-test-release docker-clean-release docker- install-release
92- docker-cmake-debug docker-build-debug docker-test-debug docker-clean-debug docker-install-debug docker-cmake-release docker-build-release docker-test-release docker-clean-release docker- install-release : docker-% :
72+ .PHONY : $( addprefix docker-cmake-, $( PRESETS ) ) $( addprefix docker-build-, $( PRESETS ) ) $( addprefix docker-test-, $( PRESETS ) ) $( addprefix docker-clean-, $( PRESETS ) ) $( addprefix docker-install-, $( PRESETS ) )
73+ $( addprefix docker-cmake-, $( PRESETS ) ) $( addprefix docker-build-, $( PRESETS ) ) $( addprefix docker-test-, $( PRESETS ) ) $( addprefix docker-clean-, $( PRESETS ) ) $( addprefix docker-install-, $( PRESETS ) ) : docker-% :
9374 $(DOCKER_COMPOSE ) run --rm service_template-container make $*
9475
9576# Stop docker container and cleanup data
0 commit comments