mirror of
				https://github.com/bensuperpc/astar.git
				synced 2025-10-31 05:46:23 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			163 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Makefile
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			163 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Makefile
		
	
	
		
			Executable File
		
	
	
	
	
| #//////////////////////////////////////////////////////////////
 | |
| #//   ____                                                   //
 | |
| #//  | __ )  ___ _ __  ___ _   _ _ __   ___ _ __ _ __   ___  //
 | |
| #//  |  _ \ / _ \ '_ \/ __| | | | '_ \ / _ \ '__| '_ \ / __| //
 | |
| #//  | |_) |  __/ | | \__ \ |_| | |_) |  __/ |  | |_) | (__  //
 | |
| #//  |____/ \___|_| |_|___/\__,_| .__/ \___|_|  | .__/ \___| //
 | |
| #//                             |_|             |_|          //
 | |
| #//////////////////////////////////////////////////////////////
 | |
| #//                                                          //
 | |
| #//  sandbox, 2023                               //
 | |
| #//  Created: 04, June, 2021                                 //
 | |
| #//  Modified: 18, November, 2023                            //
 | |
| #//  file: -                                                 //
 | |
| #//  -                                                       //
 | |
| #//  Source:                                                 //
 | |
| #//  OS: ALL                                                 //
 | |
| #//  CPU: ALL                                                //
 | |
| #//                                                          //
 | |
| #//////////////////////////////////////////////////////////////
 | |
| 
 | |
| PROJECT_NAME := world_of_blocks
 | |
| 
 | |
| PARALLEL := 1
 | |
| 
 | |
| GENERATOR := Ninja
 | |
| PROJECT_ROOT := .
 | |
| 
 | |
| CTEST_TIMEOUT := 1500
 | |
| CTEST_OPTIONS := --output-on-failure --timeout $(CTEST_TIMEOUT) --parallel $(PARALLEL) --verbose
 | |
| 
 | |
| # LANG := en
 | |
| # LANG=$(LANG)
 | |
| # -Werror=float-equal
 | |
| 
 | |
| .PHONY: build
 | |
| build: base
 | |
| 
 | |
| .PHONY: all
 | |
| all: release debug minsizerel coverage relwithdebinfo minsizerel relwithdebinfo release-clang \
 | |
| 	debug-clang base base-clang sanitize sanitize-clang gprof $(DOCKCROSS_IMAGE) docker valgrind gdb
 | |
| 
 | |
| .PHONY: base
 | |
| base:
 | |
| 	cmake -B build/$@ -S $(PROJECT_ROOT) -G $(GENERATOR) --preset=$@
 | |
| 	cmake --build build/$@
 | |
| 	ctest $(CTEST_OPTIONS) --test-dir build/$@
 | |
| 
 | |
| .PHONY: base-clang
 | |
| base-clang:
 | |
| 	cmake -B build/$@ -S $(PROJECT_ROOT) -G $(GENERATOR) --preset=$@
 | |
| 	cmake --build build/$@
 | |
| 	ctest $(CTEST_OPTIONS) --test-dir build/$@
 | |
| 
 | |
| .PHONY: release
 | |
| release:
 | |
| 	cmake -B build/$@ -S $(PROJECT_ROOT) -G $(GENERATOR) --preset=base -DCMAKE_BUILD_TYPE=Release
 | |
| 	cmake --build build/$@
 | |
| 	ctest $(CTEST_OPTIONS) --test-dir build/$@
 | |
| 
 | |
| .PHONY: release-clang
 | |
| release-clang:
 | |
| 	cmake -B build/$@ -S $(PROJECT_ROOT) -G $(GENERATOR) --preset=base -DCMAKE_BUILD_TYPE=Release \
 | |
| 	-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
 | |
| 	cmake --build build/$@
 | |
| 	ctest $(CTEST_OPTIONS) --test-dir build/$@
 | |
| 
 | |
| .PHONY: debug
 | |
| debug:
 | |
| 	cmake -B build/$@ -S $(PROJECT_ROOT) -G $(GENERATOR) --preset=dev -DCMAKE_BUILD_TYPE=Debug
 | |
| 	cmake --build build/$@
 | |
| 	ctest $(CTEST_OPTIONS) --test-dir build/$@
 | |
| 
 | |
| .PHONY: debug-clang
 | |
| debug-clang:
 | |
| 	cmake -B build/$@ -S $(PROJECT_ROOT) -G $(GENERATOR) --preset=dev -DCMAKE_BUILD_TYPE=Debug \
 | |
| 	-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
 | |
| 	cmake --build build/$@
 | |
| 	ctest $(CTEST_OPTIONS) --test-dir build/$@
 | |
| 
 | |
| .PHONY: coverage
 | |
| coverage:
 | |
| 	cmake -B build/$@ -S $(PROJECT_ROOT) -G $(GENERATOR) --preset=dev-coverage -DCMAKE_BUILD_TYPE=Coverage
 | |
| 	cmake --build build/$@
 | |
| 	ctest $(CTEST_OPTIONS) --test-dir build/$@
 | |
| 	cmake --build build/$@ --target $@
 | |
| 
 | |
| .PHONY: sanitize
 | |
| sanitize:
 | |
| 	cmake -B build/$@ -S $(PROJECT_ROOT) -G $(GENERATOR) --preset=ci-sanitize
 | |
| 	cmake --build build/$@
 | |
| 	ctest $(CTEST_OPTIONS) --test-dir build/$@
 | |
| 
 | |
| sanitize-clang:
 | |
| 	cmake -B build/$@ -S $(PROJECT_ROOT) -G $(GENERATOR) --preset=ci-sanitize \
 | |
| 	-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
 | |
| 	cmake --build build/$@
 | |
| 	ctest $(CTEST_OPTIONS) --test-dir build/$@
 | |
| 
 | |
| .PHONY: minsizerel
 | |
| minsizerel:
 | |
| 	cmake -B build/$@ -S $(PROJECT_ROOT) -G $(GENERATOR) --preset=dev -DCMAKE_BUILD_TYPE=MinSizeRel
 | |
| 	cmake --build build/$@
 | |
| 	ctest $(CTEST_OPTIONS) --test-dir build/$@
 | |
| 
 | |
| .PHONY: relwithdebinfo
 | |
| relwithdebinfo:
 | |
| 	cmake -B build/$@ -S $(PROJECT_ROOT) -G $(GENERATOR) --preset=dev -DCMAKE_BUILD_TYPE=RelWithDebInfo
 | |
| 	cmake --build build/$@
 | |
| 	ctest $(CTEST_OPTIONS) --test-dir build/$@
 | |
| 
 | |
| .PHONY: gprof
 | |
| gprof:
 | |
| 	cmake --preset=$@ -G $(GENERATOR)
 | |
| 	cmake --build build/$@
 | |
| 	@echo "Run executable and after gprof <exe> gmon.out | less"
 | |
| 
 | |
| .PHONY: perf
 | |
| perf:
 | |
| 	cmake --preset=base -G $(GENERATOR)
 | |
| 	cmake --build build/base
 | |
| 	perf record --all-user -e branch-misses ./build/base/bin/$(PROJECT_NAME)
 | |
| 
 | |
| .PHONY: graph
 | |
| graph:
 | |
| 	cmake -B build/$@ -S $(PROJECT_ROOT) -G $(GENERATOR) --graphviz=build/$@/graph.dot
 | |
| 	cmake --build build/base
 | |
| 	dot -Tpng -o build/$@/graph.png build/$@/graph.dot
 | |
| 
 | |
| .PHONY: valgrind
 | |
| valgrind:
 | |
| 	cmake -B build/$@ -S $(PROJECT_ROOT) -G $(GENERATOR) --preset=debugger
 | |
| 	cmake --build build/$@
 | |
| 	valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes --verbose --log-file=build/$@/valgrind.log ./build/$@/bin/$(PROJECT_NAME)
 | |
| 
 | |
| .PHONY: gdb
 | |
| gdb:
 | |
| 	cmake -B build/$@ -S $(PROJECT_ROOT) -G $(GENERATOR) --preset=debugger
 | |
| 	cmake --build build/$@
 | |
| 	gdb build/$@/bin/$(PROJECT_NAME)
 | |
| 
 | |
| .PHONY: lint
 | |
| lint:
 | |
| 	cmake -D FORMAT_COMMAND=clang-format -P cmake/lint.cmake
 | |
| 	cmake -P cmake/spell.cmake
 | |
| 
 | |
| .PHONY: format
 | |
| format:
 | |
| 	time find . -regex '.*\.\(cpp\|cxx\|hpp\|hxx\|c\|h\|cu\|cuh\|cuhpp\|tpp\)' -not -path '*/build/*' -not -path '.git/*' | parallel clang-format -style=file -i {} \;
 | |
| 
 | |
| .PHONY: cloc
 | |
| cloc:
 | |
| 	cloc --fullpath --not-match-d="(build|.git)" --not-match-f="(.git)" .
 | |
| 
 | |
| .PHONY: update
 | |
| update:
 | |
| # 	git submodule update --recursive --remote --force --rebase
 | |
| 	git submodule update --init --recursive
 | |
| 	git pull --recurse-submodules --all --progress
 | |
| 
 | |
| .PHONY: clear
 | |
| clear:
 | |
| 	rm -rf build/*
 |