omi-eikyo/Makefile

126 lines
3.3 KiB
Makefile
Raw Permalink Normal View History

2017-09-20 08:42:57 -07:00
## Copyright © 2017 Project Golan, all rights reserved.
2017-10-04 17:14:46 -07:00
## See COPYING for more information.
2017-09-21 20:07:00 -07:00
GDCC_CC=gdcc-cc
GDCC_LD=gdcc-ld
2017-09-27 18:51:40 -07:00
GDCC_NTSC=gdcc-ntsc
2017-09-21 20:07:00 -07:00
GDCC_MAKELIB=gdcc-makelib
2017-09-20 08:42:57 -07:00
2017-09-23 17:21:07 -07:00
CFLAGS += -O2 -g -c
LFLAGS += -O2 -g -lm
GDCC_TARGET=--bc-target=Doominati
GDCC_LFLAGS += $(GDCC_TARGET)
GDCC_CFLAGS += $(GDCC_TARGET) --alloc-Aut=4194304 -c
2017-09-20 08:42:57 -07:00
SRC=src
INC=inc
2017-09-21 20:07:00 -07:00
BIN=bin
2017-09-22 08:37:31 -07:00
IR=ir
2017-09-29 16:06:00 -07:00
TEXT=text
2017-09-22 14:06:52 -07:00
MAPSRC=maps
2017-09-22 08:37:31 -07:00
2017-09-23 17:21:07 -07:00
DATA_MAIN=data
DATA_MFED=data_mfed
MAPBIN =$(DATA_MAIN)/maps
CODEDEFS =$(DATA_MAIN)/codedefs
CODEDEFS_MFED=$(DATA_MFED)/codedefs
2017-09-29 16:06:00 -07:00
TEXTDEFS =$(DATA_MAIN)/textdefs
2017-09-20 08:42:57 -07:00
2017-09-29 16:06:00 -07:00
FOLDERS=$(CODEDEFS) $(CODEDEFS_MFED) $(TEXTDEFS) $(BIN) $(IR) $(MAPBIN)
2017-09-20 08:42:57 -07:00
2017-09-23 17:21:07 -07:00
define tgt_template =
$(1)_SOURCES=$(SRC)/$(2)
$(1)_OUTPUTS=$$($(1)_SOURCES:$(SRC)/%.c=$(IR)/%.ir)
$(1)_BINARYS=$(3)
endef
2017-09-26 13:58:44 -07:00
define exe_template =
$(1)_SOURCES=$(SRC)/$(2)
$(1)_OUTPUTS=$$($(1)_SOURCES:$(SRC)/%.c=$(BIN)/%.o)
$(1)_BINARYS=$(3)
endef
2017-09-23 17:21:07 -07:00
define lib_template =
$(1)_SOURCES=$$(wildcard $(SRC)/$(2)*.c)
$(1)_HEADERS=$$(wildcard $(SRC)/$(2)*.h)
$(1)_OUTPUTS=$$($(1)_SOURCES:$(SRC)/%.c=$(IR)/%.ir)
$(1)_BINARYS=$(CODEDEFS)/$(3)
endef
2017-09-22 14:06:52 -07:00
2017-09-23 17:21:07 -07:00
$(eval $(call tgt_template,MAIN,main.c,$(CODEDEFS)/eikyo-main.bin))
$(eval $(call tgt_template,MFED,mfed.c,$(CODEDEFS_MFED)/eikyo-mfed.bin))
2017-09-21 20:07:00 -07:00
2017-09-26 13:58:44 -07:00
$(eval $(call exe_template,STRH,strh.c,$(BIN)/strh))
$(eval $(call exe_template,GOL5,golan5.c,$(BIN)/golan5))
2017-09-23 17:21:07 -07:00
$(eval $(call lib_template,GAME,g_,eikyo-game.bin))
2017-09-26 13:58:44 -07:00
$(eval $(call lib_template,INTR,i_,eikyo-interface.bin))
2017-09-23 17:21:07 -07:00
$(eval $(call lib_template,MISC,m_,eikyo-misc.bin))
2017-09-29 16:06:00 -07:00
$(eval $(call lib_template,RNDR,r_,eikyo-render.bin))
2017-09-21 20:07:00 -07:00
MISC_LIBOUTS=$(MISC_SOURCES:$(SRC)/%.c=$(BIN)/%.o)
2017-09-21 20:07:00 -07:00
2017-09-29 16:06:00 -07:00
CDEF_SOURCES=$(SRC)/extmem.nts
CDEF_BINARYS=$(CODEDEFS)/eikyo-extmem.bin
LIBC_OUTPUTS=$(IR)/libc.ir $(IR)/libGDCC.ir
LIBC_BINARYS=$(CODEDEFS)/stdlib.bin
2017-09-23 17:21:07 -07:00
MAPS_SOURCES=$(wildcard $(MAPSRC)/*.gmf9)
MAPS_OUTPUTS=$(MAPS_SOURCES:$(MAPSRC)/%.gmf9=$(MAPBIN)/%.gmf0)
2017-09-20 08:42:57 -07:00
2017-09-29 16:06:00 -07:00
TENG_SOURCES=$(wildcard $(TEXT)/*-eng.nts)
TENG_BINARYS=$(TEXTDEFS)/eikyo-eng.text
2017-09-27 18:51:40 -07:00
2017-09-29 16:06:00 -07:00
TJPN_SOURCES=$(wildcard $(TEXT)/*-jpn.nts)
TJPN_BINARYS=$(TEXTDEFS)/eikyo-jpn.text
2017-09-20 19:35:19 -07:00
.PHONY: clean
2017-09-23 12:43:54 -07:00
.SECONDARY: $(MISC_LIBOUTS)
2017-09-20 19:35:19 -07:00
2017-09-29 16:06:00 -07:00
all: $(FOLDERS) $(GAME_BINARYS) $(INTR_BINARYS) $(MAIN_BINARYS) $(MFED_BINARYS) $(MISC_BINARYS) $(RNDR_BINARYS) $(LIBC_BINARYS) $(MAPS_OUTPUTS) $(CDEF_BINARYS) $(TENG_BINARYS) $(TJPN_BINARYS)
$(GAME_BINARYS): $(GAME_OUTPUTS)
2017-09-23 17:21:07 -07:00
$(GOL5_BINARYS): $(GOL5_OUTPUTS)
2017-09-26 13:58:44 -07:00
$(INTR_BINARYS): $(INTR_OUTPUTS)
$(LIBC_BINARYS): $(LIBC_OUTPUTS)
$(MAIN_BINARYS): $(MAIN_OUTPUTS)
2017-09-23 17:21:07 -07:00
$(MFED_BINARYS): $(MFED_OUTPUTS)
$(MISC_BINARYS): $(MISC_OUTPUTS)
$(RNDR_BINARYS): $(RNDR_OUTPUTS)
2017-09-26 13:58:44 -07:00
$(STRH_BINARYS): $(STRH_OUTPUTS)
2017-09-29 16:06:00 -07:00
$(TENG_BINARYS): $(TENG_SOURCES)
$(TJPN_BINARYS): $(TJPN_SOURCES)
2017-09-20 08:42:57 -07:00
2017-09-22 14:06:52 -07:00
$(FOLDERS):
2017-09-21 20:07:00 -07:00
mkdir -p $@
2017-09-20 19:35:19 -07:00
2017-09-21 20:07:00 -07:00
clean:
2017-09-22 14:06:52 -07:00
rm -f $(addsuffix /*,$(FOLDERS))
$(MAPBIN)/%.gmf0: $(MAPSRC)/%.gmf9 $(GOL5_BINARYS)
$(GOL5_BINARYS) $< $@
2017-09-22 14:06:52 -07:00
2017-09-23 12:43:54 -07:00
$(BIN)/%: $(MISC_LIBOUTS)
$(CC) $(LFLAGS) -o $@ $^
2017-09-23 12:43:54 -07:00
$(BIN)/%.o: $(SRC)/%.c $(MISC_HEADERS)
$(CC) $(CFLAGS) -o $@ $<
2017-09-20 08:42:57 -07:00
2017-09-23 17:21:07 -07:00
%.bin:
2017-09-21 20:07:00 -07:00
$(GDCC_LD) $(GDCC_LFLAGS) -o $@ $^
2017-09-20 08:42:57 -07:00
2017-09-29 16:06:00 -07:00
%.text:
$(GDCC_NTSC) -t TEXTDEFS -o $@ $^
2017-09-27 18:51:40 -07:00
2017-09-26 13:58:44 -07:00
$(IR)/%.ir: $(SRC)/%.c $(GAME_HEADERS) $(INTR_HEADERS) $(MISC_HEADERS) $(RNDR_HEADERS) $(STRH_BINARYS)
$(GDCC_CC) $(GDCC_CFLAGS) -DM_fileHash=$(shell bin/strh $<) -o $@ $<
2017-09-20 08:42:57 -07:00
$(LIBC_OUTPUTS):
2017-09-21 20:07:00 -07:00
$(GDCC_MAKELIB) $(GDCC_CFLAGS) -o $@ $(basename $(@F))
2017-09-20 08:42:57 -07:00
2017-09-29 16:06:00 -07:00
$(CDEF_BINARYS): $(CDEF_SOURCES)
$(GDCC_NTSC) -t CODEDEFS -o $@ $^
2017-09-20 08:42:57 -07:00
## EOF