omi-eikyo/Makefile

75 lines
1.9 KiB
Makefile

## Copyright © 2017 Project Golan, all rights reserved.
GDCC_CC=gdcc-cc
GDCC_LD=gdcc-ld
GDCC_MAKELIB=gdcc-makelib
SRC=src
INC=inc
CODEDEFS=data/codedefs
BIN=bin
IR=ir
MAPSRC=maps
MAPBIN=data/maps
FOLDERS=$(CODEDEFS) $(BIN) $(IR) $(MAPBIN)
CFLAGS += -O2 -g -lm
GDCC_TARGET=--bc-target=Doominati
GDCC_LFLAGS += $(GDCC_TARGET)
GDCC_CFLAGS += $(GDCC_TARGET) --alloc-Aut=4194304 -c
MAPS_SOURCES=$(wildcard $(MAPSRC)/*.gmf9)
MAPS_OUTPUTS=$(MAPS_SOURCES:$(MAPSRC)/%.gmf9=$(MAPBIN)/%.gmf0)
GAME_SOURCES=$(wildcard $(SRC)/g_*.c)
GAME_HEADERS=$(wildcard $(SRC)/g_*.h)
GAME_OUTPUTS=$(GAME_SOURCES:$(SRC)/g_%.c=$(IR)/g_%.ir)
GAME_BINARYS=$(CODEDEFS)/eikyo-game.bin
MAIN_SOURCES=$(SRC)/main.c
MAIN_OUTPUTS=$(MAIN_SOURCES:$(SRC)/%.c=$(IR)/%.ir)
MAIN_BINARYS=$(CODEDEFS)/eikyo-main.bin
MISC_SOURCES=$(wildcard $(SRC)/m_*.c)
MISC_HEADERS=$(wildcard $(SRC)/m_*.h)
MISC_OUTPUTS=$(MISC_SOURCES:$(SRC)/m_%.c=$(IR)/m_%.ir)
MISC_BINARYS=$(CODEDEFS)/eikyo-misc.bin
RNDR_SOURCES=$(wildcard $(SRC)/r_*.c)
RNDR_HEADERS=$(wildcard $(SRC)/r_*.h)
RNDR_OUTPUTS=$(RNDR_SOURCES:$(SRC)/r_%.c=$(IR)/r_%.ir)
RNDR_BINARYS=$(CODEDEFS)/eikyo-render.bin
.PHONY: clean
all: $(FOLDERS) $(CODEDEFS)/stdlib.bin $(GAME_BINARYS) $(MAIN_BINARYS) $(MISC_BINARYS) $(RNDR_BINARYS) $(MAPS_OUTPUTS)
$(FOLDERS):
mkdir -p $@
clean:
rm -f $(addsuffix /*,$(FOLDERS))
$(MAPBIN)/%.gmf0: $(MAPSRC)/%.gmf9 $(BIN)/golan5
$(BIN)/golan5 $< $@
$(BIN)/golan5: $(SRC)/golan5.c $(SRC)/m_binio.c $(SRC)/m_token.c $(SRC)/m_tokbuf.c
$(BIN)/%:
$(CC) $(CFLAGS) $(LFLAGS) -o $@ $^
$(CODEDEFS)/stdlib.bin: $(IR)/libc.ir $(IR)/libGDCC.ir
$(GAME_BINARYS): $(GAME_OUTPUTS)
$(MAIN_BINARYS): $(MAIN_OUTPUTS)
$(MISC_BINARYS): $(MISC_OUTPUTS)
$(RNDR_BINARYS): $(RNDR_OUTPUTS)
$(CODEDEFS)/%.bin:
$(GDCC_LD) $(GDCC_LFLAGS) -o $@ $^
$(IR)/%.ir: $(SRC)/%.c $(GAME_HEADERS) $(MISC_HEADERS) $(RNDR_HEADERS)
$(GDCC_CC) $(GDCC_CFLAGS) -o $@ $<
$(IR)/libc.ir $(IR)/libGDCC.ir:
$(GDCC_MAKELIB) $(GDCC_CFLAGS) -o $@ $(basename $(@F))
## EOF