mirror of
https://github.com/gunchev/bench.git
synced 2025-11-20 12:15:48 +00:00
122 lines
2.9 KiB
Makefile
122 lines
2.9 KiB
Makefile
# Where this Makefile is located
|
|
TOP := $(shell dirname "$(abspath $(lastword $(MAKEFILE_LIST)))")
|
|
# Up to 16 parallel processes for compiling
|
|
CMAKE_BUILD_PARALLEL_LEVEL := $(shell (nproc; echo 16) | sort -n | head -n 1)
|
|
CMAKE := cmake
|
|
|
|
|
|
.PHONY: help
|
|
help:
|
|
@echo
|
|
@echo "▌Help"
|
|
@echo "▙▄▄▄▄▄"
|
|
@echo
|
|
@echo "Available targets:"
|
|
@echo
|
|
@echo " debug: debug build"
|
|
@echo " debugc: debug build with clang"
|
|
@echo " debugcov: debug build with coverage"
|
|
@echo " debugcovc: debug build with coverage with clang"
|
|
@echo " release: release build"
|
|
@echo " releasec: release build with clang"
|
|
@echo " relwithdebinfo: release build with debug info"
|
|
@echo " relwithdebinfoc: release build with debug info and clang"
|
|
@echo " minsizerel: minimum size release build (-Os)"
|
|
@echo " minsizerelc: minimum size release build (-Os) and clang"
|
|
@echo
|
|
@echo " all: all of the above"
|
|
@echo
|
|
@echo " distclean: (dc) remove all build files"
|
|
@echo
|
|
|
|
|
|
.PHONY: build
|
|
build:
|
|
( test -d "$(BUILD_DIR)" && cd "$(BUILD_DIR)" && $(MAKE) ) || ( mkdir -p "$(BUILD_DIR)" && cd "$(BUILD_DIR)" && $(CMAKE) -D CMAKE_BUILD_TYPE="$(BUILD_TYPE)" "$(TOP)" && $(MAKE) )
|
|
|
|
|
|
.PHONY: buildc
|
|
buildc:
|
|
( test -d "$(BUILD_DIR)" && cd "$(BUILD_DIR)" && $(MAKE) ) || ( mkdir -p "$(BUILD_DIR)" && cd "$(BUILD_DIR)" && CC=clang CXX=clang++ $(CMAKE) -D CMAKE_BUILD_TYPE="$(BUILD_TYPE)" "$(TOP)" && $(MAKE) )
|
|
|
|
|
|
.PHONY: debug
|
|
debug: BUILD_DIR=$(TOP)/build/debug
|
|
debug: BUILD_TYPE=Debug
|
|
debug: build
|
|
|
|
|
|
.PHONY: debugc
|
|
debugc: BUILD_DIR=$(TOP)/build/debugc
|
|
debugc: BUILD_TYPE=Debug
|
|
debugc: buildc
|
|
|
|
|
|
.PHONY: debugcov
|
|
debugcov: BUILD_DIR=$(TOP)/build/debugcov
|
|
debugcov: BUILD_TYPE=DebugCov
|
|
debugcov: build
|
|
|
|
|
|
.PHONY: debugcovc
|
|
debugcovc: BUILD_DIR=$(TOP)/build/debugcovc
|
|
debugcovc: BUILD_TYPE=DebugCov
|
|
debugcovc: buildc
|
|
|
|
|
|
.PHONY: release
|
|
release: BUILD_DIR=$(TOP)/build/release
|
|
release: BUILD_TYPE=Release
|
|
release: build
|
|
|
|
|
|
.PHONY: releasec
|
|
releasec: BUILD_DIR=$(TOP)/build/releasec
|
|
releasec: BUILD_TYPE=Release
|
|
releasec: buildc
|
|
|
|
|
|
.PHONY: relwithdebinfo
|
|
relwithdebinfo: BUILD_DIR=$(TOP)/build/relwithdebinfo
|
|
relwithdebinfo: BUILD_TYPE=RelWithDebInfo
|
|
relwithdebinfo: build
|
|
|
|
|
|
.PHONY: relwithdebinfoc
|
|
relwithdebinfoc: BUILD_DIR=$(TOP)/build/relwithdebinfoc
|
|
relwithdebinfoc: BUILD_TYPE=RelWithDebInfo
|
|
relwithdebinfoc: buildc
|
|
|
|
|
|
.PHONY: minsizerel
|
|
minsizerel: BUILD_DIR=$(TOP)/build/minsizerel
|
|
minsizerel: BUILD_TYPE=MinSizeRel
|
|
minsizerel: build
|
|
|
|
|
|
.PHONY: minsizerelc
|
|
minsizerelc: BUILD_DIR=$(TOP)/build/minsizerelc
|
|
minsizerelc: BUILD_TYPE=MinSizeRel
|
|
minsizerelc: buildc
|
|
|
|
|
|
.PHONY: all
|
|
all:
|
|
make debug
|
|
make debugcov
|
|
make release
|
|
make relwithdebinfo
|
|
make minsizerel
|
|
make debugc
|
|
make debugcovc
|
|
make releasec
|
|
make relwithdebinfoc
|
|
make minsizerelc
|
|
|
|
|
|
.PHONY: distclean
|
|
distclean:
|
|
-rm -rf "$(TOP)"/build/
|
|
|
|
|
|
dc: distclean
|