CXX=clang++-14 ifeq ($(shell which $(CXX)),) CXX=clang++-13 endif ifeq ($(shell which $(CXX)),) CXX=clang++-11 endif ifeq ($(shell which $(CXX)),) CXX=g++-11 endif ifeq ($(shell which $(CXX)),) CXX=g++-10 endif ifeq ($(shell which $(CXX)),) CXX=g++-8 endif ifeq ($(shell which $(CXX)),) CXX=clang++ endif ifeq ($(shell which $(CXX)),) CXX=g++-10 endif ifeq ($(shell which $(CXX)),) CXX=g++-9 endif ifeq ($(shell which $(CXX)),) CXX=g++ endif ifeq ($(LINK_STATICALLY),1) LDFLAGS+=-static endif ifeq ($(CXXFLAGS),) CXXFLAGS=-O2 -g -DNDEBUG #CXXFLAGS=-O0 -g -D_DEBUG endif # -fprofile-instr-generate -fcoverage-mapping # gcc:--coverage CXXFLAGS+=-Wall -I. YEAR=$(shell date +"%Y") CXXFLAGS+=-DYEAR=\"$(YEAR)\" CXXFLAGS+=-pthread ifeq ($(CXX),clang++-11) CXXFLAGS+=-std=c++20 #-stdlib=libc++ else ifeq ($(CXX),clang++-14) CXXFLAGS+=-std=c++20 #-stdlib=libc++ else ifeq ($(CXX),clang++-13) CXXFLAGS+=-std=c++20 #-stdlib=libc++ else ifeq ($(CXX),g++-11) CXXFLAGS+=-std=c++20 #-stdlib=libc++ else CXXFLAGS+=-std=c++17 endif ifeq ($(CXX),clang++-11) LIBS+= \ -fuse-ld=lld-11 \ -lstdc++ #-lc++ \ #-lc++abi #-lc++fs #-lstdc++fs LLVMPROFDATA=llvm-profdata-11 LLVMCOV=llvm-cov-11 CXXTYPE=clang++ else ifeq ($(CXX),clang++-14) LIBS+= \ -fuse-ld=lld-14 \ -lc++ -lc++abi LLVMPROFDATA=llvm-profdata-14 LLVMCOV=llvm-cov-14 CXXTYPE=clang++ else ifeq ($(CXX),clang++-13) LIBS+= \ -fuse-ld=lld-13 \ -lstdc++ LLVMPROFDATA=llvm-profdata-13 LLVMCOV=llvm-cov-13 CXXTYPE=clang++ else LIBS+= \ -lstdc++ \ -lstdc++fs CXXTYPE=g++ endif SRC_ROOT=$(shell echo $(MAKEFILE_LIST) | tr " " "\n" | grep common.mk | sed -e 's/\([^ ]*\)common.mk/\1/g') VERSION=$(shell dpkg-parsechangelog --show-field Version --file $(SRC_ROOT)/debian/changelog) CXXFLAGS+=-DVERSION=\"$(VERSION)\" LIBS+=$(shell pkg-config --libs fmt) CXXFLAGS+=$(shell pkg-config --cflags fmt)