62 lines
1.6 KiB
Makefile
62 lines
1.6 KiB
Makefile
src_files = $(shell find src -iname "*.cpp")
|
|
obj_files = $(src_files:src/%.cpp=obj/%.o)
|
|
|
|
|
|
ifeq ($(OS),Windows_NT)
|
|
CCFLAGS += -D WIN32 -Iext/PTHREADS-BUILT/include -std=c++20
|
|
PTHREADLIB = ext/PTHREADS-BUILT/lib/pthreadVCE3.lib
|
|
ifeq ($(PROCESSOR_ARCHITEW6432),AMD64)
|
|
CCFLAGS += -D AMD64
|
|
else
|
|
ifeq ($(PROCESSOR_ARCHITECTURE),AMD64)
|
|
CCFLAGS += -D AMD64
|
|
endif
|
|
ifeq ($(PROCESSOR_ARCHITECTURE),x86)
|
|
CCFLAGS += -D IA32
|
|
endif
|
|
endif
|
|
else
|
|
UNAME_S := $(shell uname -s)
|
|
ifeq ($(UNAME_S),Linux)
|
|
CCFLAGS += -D LINUX
|
|
endif
|
|
ifeq ($(UNAME_S),Darwin)
|
|
CCFLAGS += -D OSX
|
|
endif
|
|
UNAME_P := $(shell uname -p)
|
|
ifeq ($(UNAME_P),x86_64)
|
|
CCFLAGS += -D AMD64
|
|
endif
|
|
ifneq ($(filter %86,$(UNAME_P)),)
|
|
CCFLAGS += -D IA32
|
|
endif
|
|
ifneq ($(filter arm%,$(UNAME_P)),)
|
|
CCFLAGS += -D ARM
|
|
endif
|
|
endif
|
|
|
|
debug: OPTIMIZATION_FLAG = -g
|
|
release: OPTIMIZATION_FLAG = -O3
|
|
|
|
release: all export_comp_db
|
|
|
|
debug: all export_comp_db
|
|
|
|
all: $(obj_files)
|
|
@ mkdir -p bin
|
|
g++ -I inc/ $^ $(PTHREADLIB) -o bin/main $(OPTIMIZATION_FLAG) $(CCFLAGS)
|
|
|
|
obj/%.o: src/%.cpp
|
|
@ mkdir -p obj
|
|
g++ -I inc/ -c $< -o $@ $(OPTIMIZATION_FLAG) $(CCFLAGS)
|
|
|
|
export_comp_db:
|
|
echo [ > compile_commands.json
|
|
make debug -B --dry-run > temp
|
|
awk '/g\+\+.*\.cpp/ { f="compile_commands.json"; printf "\t\{\n\t\t\"directory\": \"%s\",\n\t\t\"command\": \"%s\",\n\t\t\"file\": \"%s\"\n\t\},\n", ENVIRON["PWD"], $$0, $$5 >> f }' temp
|
|
echo ] >> compile_commands.json
|
|
rm temp
|
|
|
|
clean:
|
|
rm -f obj/*.o bin/*.exe
|