#! make -f
#----------------------------------------------------------------------------
# Project:  C\[X->oCi[
# File:     Makefile
#
# Copyright 2005 GameFreak.inc  All rights reserved.
#
#----------------------------------------------------------------------------

# localize_spec_mark(LANG_ALL) imatake 2007/02/09
# ̌łƐiłƂŐA[JCu؂ւ悤ɕύX

# -----------------------------------------------------------------------------
# localize_spec_mark(LANG_ALL) imatake 2007/02/09
# ԃt@C alldata_*.elf 𐳂邽߂ CW 1.2 makeKv
# ϐ CWFolder_NITRO_1_2  CW 1.2 ̃pXĂ
CWFOLDER_NITRO = $(CWFOLDER_NITRO_1_2)
# -----------------------------------------------------------------------------

DP_ROOT	=	../../..

SUBDIRS		=

ifdef PG5_TRIAL
EVENTDATA	=	zone_event_trial.narc
ALLDATA_BIN	=	alldata_trial.bin
else
EVENTDATA	=	zone_event_release.narc
ALLDATA_BIN	=	alldata_release.bin
endif

#Ro[gΏۃt@C̃TtBbNX
FILETYPES	=	evb	evc	evd	evp

HEADERS		=	evc_id.h evd_id.h script_id.h

include ../maptable/eventlist.txt
#include	sourcefile.lst

NEWSYS	=	YES

EVBFILES	= $(CONVSRCS:_total.c=.evb)
EVCFILES	= $(CONVSRCS:_total.c=.evc)
EVDFILES	= $(CONVSRCS:_total.c=.evd)
EVPFILES	= $(CONVSRCS:_total.c=.evp)

#----------------------------------------------------------------------------
#C\[XoCiϊɕKvȒ`
#----------------------------------------------------------------------------
include	$(NITROSDK_ROOT)/build/buildtools/commondefs.cctype.CW
include	$(NITROSYSTEM_ROOT)/build/buildtools/commondefs

#ʕϐ`
include $(DP_ROOT)/commondefs.GF

include	$(NITROSYSTEM_ROOT)/build/buildtools/modulerules

ELF2BIN	= $(DP_ROOT)/convert/eventdata/celf2bin.exe
LISTMK	= $(DP_ROOT)/convert/eventdata/listmk.exe
ELFPICKUP = $(DP_ROOT)/convert/eventdata/elfpickup.pl
ELFALLPICKUP = $(DP_ROOT)/convert/eventdata/elfallpickup.pl

#----------------------------------------------------------------------------
#MakeŐ*.binmake clean̍폜Ώۂɂ
#LDIRT_CLEAN	= $(CONVSRCS:.c=.bin) $(foreach mark, $(FILETYPES), $(CONVSRCS:_total.c=_$(mark).bin))
#LDIRT_CLEAN += $(EVENTDATA) $(EVENTDATA:.narc=.naix) $(HEADERS)
#LDIRT_CLEAN += $(CONVSRCS:_total.c=_evb.c) $(CONVSRCS:_total.c=_evc.c) \
#	$(CONVSRCS:_total.c=_evd.c) $(CONVSRCS:_total.c=_evp.c)

LDIRT_CLEAN	= *.bin *.c
ifdef PG5_TRIAL
LDIRT_CLEAN += $(EVENTDATA) zone_event.naix $(HEADERS)
else
LDIRT_CLEAN += $(EVENTDATA) zone_event.naix $(HEADERS)
endif

LINCLUDES		= $(NITROSDK_ROOT)/include
LINCLUDES	+= $(dir $<)


#----------------------------------------------------------------------------
#	XV[`
#----------------------------------------------------------------------------

do-build: $(EVENTDATA)


CCFLAGS = -lang c

ifdef PG5_TRIAL
CCFLAGS += -DPG5_TRIAL=$(PG5_TRIAL)
endif

#----------------------------------------------------------------------------
# precompile
#----------------------------------------------------------------------------
QUOTE			="		#"
DEPEND_RULE	= $(QUOTE)/ARM_EABI_Support/d;s/\\\\\\([^ ]\\)/\\/\\1/g;$(QUOTE)

define MOVE_SRC_DEPEND
	-$(SED) -e $(DEPEND_RULE) $(*F).d > $(DEPENDDIR)/$(*F).d && $(RM) $(*F).d
endef

#PRECOMPILE_SRC		 =	ev_common.h	#precompile.pch
PRECOMPILE_SRC		 =	precompile.pch
PRECOMPILE_CC_MCH	 =	precompile_cc.mch
PRECOMPILE_CCFLAGS	:=	$(CCFLAGS)
#CCFLAGS			+=	-prefix $(PRECOMPILE_CC_MCH)
INCLUDES		+=	-I$(NITROSDK_ROOT)/include

precompile: $(PRECOMPILE_CC_MCH)

#o[W`t@CXVꂽvRpCwb_XV
$(PRECOMPILE_CC_MCH):	$(VER_FILE)

-include $(PRECOMPILE_CC_MCH).d
$(PRECOMPILE_CC_MCH):%_cc.mch:
		$(CC) $(PRECOMPILE_CCFLAGS) $(INCLUDES) $(PRECOMPILE_SRC) -MD -precompile $(PRECOMPILE_CC_MCH)
		$(MOVE_SRC_DEPEND)
		$(MV) $(DEPENDDIR)/$(*F).d $@.d

#----------------------------------------------------------------------------

#$(EVENTDATA): $(CONVSRCS:.c=.bin)
$(EVENTDATA): $(ALLDATA_BIN)
	nnsarc -i -c -l -n -S ../maptable/eventarc.txt zone_event.narc > arc_result.txt
	mv -f zone_event.narc $(EVENTDATA)


$(ALLDATA_BIN):	$(ALLDATA_BIN:.bin=.elf)
	@echo $(CONVSRCS:_total.c=) > flist
	$(ELFALLPICKUP) flist $(ALLDATA_BIN:.bin=.elf)
	@rm -f flist
	@touch $(ALLDATA_BIN)


$(ALLDATA_BIN:.bin=.elf):	ev_common.h $(EVBFILES) $(EVCFILES) $(EVDFILES) $(EVPFILES) $(HEADERS)
	@cat ev_common.h > all_data.c
	@cat $(EVBFILES) >> all_data.c
	@cat $(EVCFILES) >> all_data.c
	@cat $(EVDFILES) >> all_data.c
	@cat $(EVPFILES) >> all_data.c
	$(CC) $(CCFLAGS) $(INCLUDES) all_data.c -MD -o all_data.o
	$(MWLD) -dis -o $(ALLDATA_BIN:.bin=.elf) all_data.o


#̃fBNgɑ݂*evc.ht@CSCN[ht@Cevc_id.h𐶐
evc_id.h:
	sed "s/evd\.h/evc\.h/" ../maptable/doorevent.h > evc_id.h

#̃fBNgɑ݂*evd.ht@CSCN[ht@Cevd_id.h𐶐
evd_id.h:
	ls -1 *evd.h |sed "s/^/#include \"/;s/$$/\"/" > evd_id.h

#scriptfBNgɑ݂*def.ht@CSCN[ht@Cscript_id.h𐶐
script_id.h: $(wildcard ../script/*_def.h)
	ls -1 ../script/*_def.h |grep -v scr_seq_def.h |sed "s/^/#include \"/;s/$$/\"/" > script_id.h


#----------------------------------------------------------------------------
#
#		Dummy Target
#
#----------------------------------------------------------------------------
mkinclude:	$(HEADERS)

#----------------------------------------------------------------------------
#----------------------------------------------------------------------------
mkdummy:
	$(foreach target, $(CONVSRCS:_total.c=), $(shell dummyfiles/makedummy.bat $(target)))
