CC = gcc CPP = g++ STRIP = strip CFLAGS = -Ofast -g -Wstrict-aliasing -Iinclude -Iinclude/luajit-2.1 -DSOL_LUAJIT=1 CPPFLAGS = -std=gnu++20 -Wno-deprecated-enum-enum-conversion $(CFLAGS) LDFLAGS = -lglfw -lGL -lX11 -lpthread -lXrandr -lXi -ldl -lm -lluajit-5.1 BIN = voksel ifeq ($(CROSS), mingw-w64) CC = x86_64-w64-mingw32-gcc CPP = x86_64-w64-mingw32-g++ STRIP = x86_64-w64-mingw32-strip LDFLAGS = -static -lglfw3 -lopengl32 -lgdi32 -luser32 -lkernel32 -lssp -lluajit BIN = voksel.exe endif SRCDIR = src BUILDDIR = out CPPFILES := $(shell find ./$(SRCDIR) -type f -name '*.cpp') CFILES := $(shell find ./$(SRCDIR) -type f -name '*.c') OBJ := $(CPPFILES:./$(SRCDIR)/%.cpp=$(BUILDDIR)/%.o) OBJ += $(CFILES:./$(SRCDIR)/%.c=$(BUILDDIR)/%.o) .PHONY: all run clean all: $(BIN) run: $(BIN) @echo "[RUN] $@" @GALLIUM_HUD="simple,fps" ./$(BIN) # Link rules for the final executable. $(BIN): $(OBJ) @echo "[LD] $@" @$(CPP) $^ -o $@ $(LDFLAGS) # Compilation rules for *.cpp files. $(BUILDDIR)/%.o: src/%.cpp @echo "[CPP] $< | $@" @mkdir -p $(shell dirname $@) @$(CPP) $(CPPFLAGS) -c $< -o $@ # Compilation rules for *.c files. $(BUILDDIR)/%.o: src/%.c @echo "[CC] $< | $@" @mkdir -p $(shell dirname $@) @$(CC) $(CFLAGS) -c $< -o $@ clean: rm -rf $(BUILDDIR)