You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
658 B
Makefile
33 lines
658 B
Makefile
CXX := clang++
|
|
CXXFLAGS := -std=c++23 -O2 -Wall -Wextra -Werror -Ilib
|
|
|
|
SRC_DIR := src
|
|
LIB_DIR := lib
|
|
OUT_DIR := out
|
|
|
|
PROJECTS := $(wildcard $(SRC_DIR)/*)
|
|
BINS := $(patsubst $(SRC_DIR)/%, $(OUT_DIR)/%, $(PROJECTS))
|
|
LIB_SOURCES := $(wildcard $(LIB_DIR)/*.cpp)
|
|
|
|
OPENMP_FLAG :=
|
|
OPENMP_CHECK := $(shell echo | $(CXX) -fopenmp -x c++ - -o /dev/null 2>/dev/null && echo yes)
|
|
|
|
ifeq ($(OPENMP_CHECK),yes)
|
|
OPENMP_FLAG := -fopenmp
|
|
endif
|
|
|
|
CXXFLAGS += $(OPENMP_FLAG)
|
|
|
|
all: $(BINS)
|
|
|
|
$(OUT_DIR)/%: $(SRC_DIR)/% $(LIB_SOURCES) | $(OUT_DIR)
|
|
$(CXX) $(CXXFLAGS) $</*.cpp $(LIB_SOURCES) -o $@
|
|
|
|
$(OUT_DIR):
|
|
mkdir -p $(OUT_DIR)
|
|
|
|
clean:
|
|
rm -rf $(OUT_DIR)
|
|
|
|
.PHONY: all clean
|