mirror of
https://git.soft.fish/val/MicroCorruption.git
synced 2024-11-25 20:26:02 +00:00
60 lines
1.2 KiB
Makefile
60 lines
1.2 KiB
Makefile
|
|
||
|
# ---------- Variables listed below --------- #
|
||
|
# Executable
|
||
|
TARGET := chernobyl.out
|
||
|
|
||
|
# Paths to source, include, dependency, and object files
|
||
|
SPATH = src
|
||
|
IPATH = inc
|
||
|
DPATH = dep
|
||
|
OPATH = obj
|
||
|
|
||
|
# File type of source file
|
||
|
STYPE = c
|
||
|
|
||
|
VPATH = $(SPATH) $(IPATH) $(DPATH) $(OPATH)
|
||
|
|
||
|
# compiler and compiler flags
|
||
|
CC = g++
|
||
|
CFLAGS = -I$(IPATH) -std=c++11 -Os
|
||
|
|
||
|
# list of object files
|
||
|
SOURCES = $(wildcard $(SPATH)/*.$(STYPE))
|
||
|
OBJECTS = $(addprefix $(OPATH)/,$(notdir $(SOURCES:.$(STYPE)=.o)))
|
||
|
|
||
|
|
||
|
# ----------- Targets listed below ---------- #
|
||
|
# Some targets aren't real
|
||
|
.PHONY: all clean run dump
|
||
|
# Don't autodelete object files:
|
||
|
.PRECIOUS: $(OPATH)/%.o
|
||
|
|
||
|
all: $(DPATH) $(OPATH) $(TARGET)
|
||
|
|
||
|
dump:
|
||
|
@echo SOURCES: $(SOURCES)
|
||
|
@echo OBJECTS: $(OBJECTS)
|
||
|
@echo TARGET: $(TARGET)
|
||
|
@echo VPATH: $(VPATH)
|
||
|
|
||
|
clean:
|
||
|
-rm $(TARGET)
|
||
|
-rm -r dep obj
|
||
|
|
||
|
run:
|
||
|
-$(addprefix ./,$(addsuffix ;,$(TARGET)))
|
||
|
|
||
|
$(DPATH) $(OPATH):
|
||
|
mkdir -p $@
|
||
|
|
||
|
# Make the executable(s)
|
||
|
%.out: $(OBJECTS)
|
||
|
$(CC) $(CFLAGS) -o "$@" $^
|
||
|
# Make the object and dependency files
|
||
|
$(OPATH)/%.o: $(SPATH)/%.$(STYPE)
|
||
|
$(CC) $(CFLAGS) -MMD -MF "$(DPATH)/$(@F:.o=.d)" -o "$@" -c "$<"
|
||
|
|
||
|
# --------- Inclusions listed below --------- #
|
||
|
# use dependencies when rebuilding
|
||
|
-include $(wildcard $(DPATH)/*.d)
|