voksel/Makefile

51 lines
1.2 KiB
Makefile

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)