cpp-xnoecraft2/Makefile

57 lines
1.5 KiB
Makefile

CXX = g++
CXXFLAGS = -O3 -Isrc
LD = ld
LINKFLAGS = -lGL -lglfw
CC = gcc
CCFLAGS = -O3 -Isrc
XNOECRAFT_CPP_SRCS = $(shell find src/ -name '*.cpp')
XNOECRAFT_C_SRCS = $(shell find src/ -name '*.c')
XNOECRAFT_RES = $(shell find res/ -type f)
XNOECRAFT_OBJS = $(patsubst src/%.cpp,build/%.o,$(XNOECRAFT_CPP_SRCS)) $(patsubst src/%.c,build/%.o,$(XNOECRAFT_C_SRCS)) $(patsubst res/%.dat,build/%.o,$(XNOECRAFT_RES))
XNOECRAFT_OBJS_WIN = $(patsubst src/%.cpp,build/%.wo,$(XNOECRAFT_CPP_SRCS)) $(patsubst src/%.c,build/%.wo,$(XNOECRAFT_C_SRCS)) $(patsubst res/%.dat,build/%.o,$(XNOECRAFT_RES))
XNOECRAFT_SRC_DIRS = $(shell find src/* -type d)
XNOECRAFT_RES_DIRS = $(shell find res/* -type d)
XNOECRAFT_OBJ_DIRS = $(patsubst src/%,build/%,$(XNOECRAFT_SRC_DIRS)) $(patsubst res/%,build/%,$(XNOECRAFT_RES_DIRS))
.PHONY = all cleanbuild clean prepare
run: all
./build/xnoecraft
all: prepare build/xnoecraft build/xnoecraft.exe
cleanbuild: clean prepare build/xnoecraft
clean:
rm -r build
prepare: $(XNOECRAFT_OBJ_DIRS)
build/xnoecraft: $(XNOECRAFT_OBJS)
$(CXX) $(LINKFLAGS) -o $@ $^
build/xnoecraft.exe: $(XNOECRAFT_OBJS_WIN)
x86_64-w64-mingw32-g++ -static -static-libgcc -static-libstdc++ $^ -lglfw3 -lgdi32 -lssp -o $@
build/%.o: src/%.cpp
$(CXX) $(CXXFLAGS) -o $@ -c $<
build/%.o: src/%.c
$(CC) $(CCFLAGS) -o $@ -c $<
build/%.wo: src/%.cpp
x86_64-w64-mingw32-g++ $(CXXFLAGS) -o $@ -c $<
build/%.wo: src/%.c
x86_64-w64-mingw32-gcc $(CCFLAGS) -o $@ -c $<
build/%.o: res/%.dat
$(LD) -r -b binary $< -o $@
$(XNOECRAFT_OBJ_DIRS):
mkdir -p $@