#! make -f
#----------------------------------------------------------------------------
# Project:  TwlSDK - WM - demo - wireless-all
# File:     Makefile
#
# Copyright 2006-2008 Nintendo.  All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law.  They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Date:: 2008-12-24#$
# $Rev: 9728 $
# $Author: okubata_ryoma $
#----------------------------------------------------------------------------

SUBDIRS		 =
SUBMAKES	 = Makefile.icon


#----------------------------------------------------------------------------
# ̃vOŎgp\[Xt@C͈ȉ̒ʂł.
#----------------------------------------------------------------------------
# NITRO ݂̂ł삵Ȃ
TARGET_PLATFORM	:= NITRO

SRCDIR		 = ./src
INCDIR		 = ./include

# e@ʏ.
SRCS		 =	main.c		\
				common.c	\
				test.c

# CXhCo. (WH̊ȈՃbp[)
SRCS		+=	wh_measure.c	\
				wh_download.c	\
				wh_datasharing.c

# WH(CXTvW[)gp.
WH_DIR		 =	$(ROOT)/build/demos/wireless_shared/wh
LINCLUDES	+=	$(WH_DIR)
SRCS		+=	$(WH_DIR)/wh.c

# MBP(DS_E[hvCTvW[)gp.
MBP_DIR		 =	$(ROOT)/build/demos/wireless_shared/mbp
LINCLUDES	+=	$(MBP_DIR)
SRCS		+=	$(MBP_DIR)/mbp.c

# WFS(CXt@CVXeTvW[)gp.
WFS_DIR		 =	$(ROOT)/build/demos/wireless_shared/wfs
LINCLUDES	+=	$(WFS_DIR)/include
SRCS		+=	$(WFS_DIR)/src/wfs_common.c

#----------------------------------------------------------------------------
# ̃vOŃrhɎgp郊\[X͈ȉ̒ʂł.
#----------------------------------------------------------------------------

# bin2obj.exe  .dat -> .o ɕϊׂf[^Qi[fBNg.
DATA_DIR	 =	./data/image

# CXNxACR.
WLICON_DIR	 =	$(ROOT)/data/wl_icons
WLICON_OBJS	 =	$(patsubst $(WLICON_DIR)/wireless_strength_level_%_b.bmp,$(OBJDIR)/linkimg%.o,$(WLICON_BMP))
EXT_OBJS	+=	$(WLICON_OBJS)

# ASCII\pBGLN^.
BGCHAR_OBJS	 =	$(patsubst $(DATA_DIR)/%.dat,$(OBJDIR)/%.o,$(wildcard $(DATA_DIR)/*.dat))
EXT_OBJS	+=	$(BGCHAR_OBJS)


#----------------------------------------------------------------------------
# AvP[V̈ʓIȐݒ͈ȉ̒ʂł.
#----------------------------------------------------------------------------

TARGET_NEF		 = main.nef
TARGET_BIN		 = main.srl
TWL_MAKEROM		 = TRUE
MAKEROM_ROMROOT	 = ./data/rom
MAKEROM_ROMFILES = *

# vO̊eZOgkꍇ͂̃tOLɂ܂.
# kꂽZOg CARD-ROM ł̃oCiTCY팸
# CARD-ROM ܂̓CXoRł̃[hԂZk邩,
# s͓WĴ߂ɂ炩 CPU Ԃ܂.

TWL_COMPRESS	 = TRUE

# CX_E[hq@ƂăI[o[Cgpꍇ,
# ZLeB̂߂ɕK TWL_DIGEST LɂKv܂.

TWL_DIGEST		 = TRUE


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


include	$(TWLSDK_ROOT)/build/buildtools/commondefs

do-build:	$(TARGETS)

#----------------------------------------------------------------------------
# N[u[ge@ƂĂ̓ʂȐݒ͈ȉ̒ʂł.
#----------------------------------------------------------------------------

# ZLeBړI̐e@p̈ .parent ZNVzu邽
# N[u[gpNݒev[gw肵܂.

ifeq	($(TARGET_PLATFORM),TWL)
LCFILE_TEMPLATE	= $(TWL_SPECDIR)/ARM9-TS-cloneboot-C.lcf.template
else
LCFILE_TEMPLATE	= $(NITRO_SPECDIR)/ARM9-TS-cloneboot-C.lcf.template
endif

# .parent ZNV̓eDS_E[hvCq@ɂ͑M܂.
# ̃ZNVɐe@pK{̊֐zu邱Ƃɂ,
# T󂳂ꂽMee@gČ邱Ƃs\ɂ܂.
# R[h̔zuɂĂ, ȉ̓_ɒӂĂ.
#   E.text/.rodata ZNVȊO܂܂Ȃ
#   Ee@݂̂KvƂdvȏ܂ނ
# 
# .parent ZNV, YR[hɂĈȉ̂悤ɔzu܂.
# 
#     #include <nitro/parent_begin.h>
#
#     void  ForParentOnly(void)
#     {
#         /* e@ŗL̏ */
#     }
#
#     #include <nitro/parent_end.h>
#
# ̃TvfłDS_E[hvCe@̑SĂ̊֐
# .parent ZNVɔzuĂ܂. ڍׂ̓\[XR[hQƂ.


# iŃAvP[V̂߂ɊeX֔zzꂽ
# ȃVXeR[CuŎw肵܂.
# ̃Tvł͎bpƂāA炩߂̃fBNg,
# SDK t(lib/ARM9-TS/etc/libsyscall.a)̃Rs[uĂ܂D
# ̃fɂăAvP[Vꍇ́AЃT|[g
# zzĂĂ libsyscal.a ł̎bVXeR[
# ㏑ĂD

LIBSYSCALL			 = ./etc/libsyscall.a
LIBSYSCALL_CHILD	 = ./etc/libsyscall_child.bin


#----------------------------------------------------------------------------
# AvP[V𐻕iłŎs邽߂̏葱͈ȉ̒ʂł.
#----------------------------------------------------------------------------

# 葱͂悻ȉ̗ɂȂ܂.
# ڍׂ́uDS_E[hvCvQƂ.
# (/docs/TechnicalNotes/AboutMultiBoot.pdf)
#
# (0) N[u[gȂ emuchild R}hőMpvOpӂ܂.
#     łȂ main.srl ̂܂ܗpӂ܂.
#      makefile ł, pӂ̂ bin/sign.srl Ƃ܂.
#
# (1) R[h擾̂, (0) ŗpӂ tmp/sign.srl T[o֑t܂.
#     ̍Ƃ͂gp̃uEUƂōsKv܂.
#      makefile ł, 擾R[h bin/sign.sgn Ƃ܂.
#
# (2) attachsign R}hgp, (1) Ŏ擾 bin/sign.sgn 
#     main.srl ŏIvO𐶐܂.
#      makefile ł,  main_with_sign.srl Ƃ܂.
#

# N[u[g̏ꍇ͒ʏDS_E[hvCvOƎ኱قȂ,
# g̃vOłȂ emuchild ŉHvOT[o֑t܂.

presign:
	$(EMUCHILD) \
		bin/$(TWL_BUILDTYPE)/$(TARGET_BIN)	\
		$(LIBSYSCALL_CHILD)						\
		bin/sign.srl

# ꂽR[hoCiɊ܂߂葱̓N[u[gʏƓlł.
postsign:
	$(ATTACHSIGN) \
		bin/$(TWL_BUILDTYPE)/$(TARGET_BIN)	\
		bin/sign.sgn							\
		main_with_sign.srl

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

include	$(TWLSDK_ROOT)/build/buildtools/modulerules

# SẴoCif[^萔zƂăN܂.
$(OBJDIR)/%.o : $(DATA_DIR)/%.dat
	$(BIN2OBJ) --compatible $< $@ >/dev/null


#===== End of Makefile =====
