1#! make -f
2#----------------------------------------------------------------------------
3# Project:  TwlSDK
4# File:     commondefs
5#
6#  Copyright 2007-2009 Nintendo.  All rights reserved.
7#
8# These coded instructions, statements, and computer programs contain
9# proprietary information of Nintendo of America Inc. and/or Nintendo
10# Company Ltd., and are protected by Federal copyright law.  They may
11# not be disclosed to third parties or copied or duplicated in any form,
12# in whole or in part, without the prior written consent of Nintendo.
13#
14# $Date:: 2009-12-25#$
15# $Rev: 11268 $
16# $Author: kitase_hirotake $
17#----------------------------------------------------------------------------
18ifndef TWLSDK_TWL_COMMONDEFS_
19TWLSDK_TWL_COMMONDEFS_	 = TRUE
20
21#
22# SDK Major Version
23#
24
25TWLSDK_VERSION_MAJOR	?= 5
26
27#
28# CodeGen Target
29#
30#	TWL_PLATFORM  = [BB/TEG/TS]
31#	TWL_MEMSIZE   = [16M/32M]
32#	TWL_CODEGEN   = [ARM/THUMB]
33#	TWL_PROC      = [ARM9/ARM7]
34#
35TWL_PLATFORM			?= TS
36TWL_MEMSIZE				?= 16M
37TWL_PROC				?= ARM9
38
39CODEGEN_PROC			 = $(strip $(TWL_PROC))
40
41
42#
43# ArchGen Target
44#
45#	TWL_ARCHGEN = [LIMITED/HYBRID/ALL]
46#
47DEFAULT_ARCHGEN			 = HYBRID
48TWL_ARCHGEN				?= $(DEFAULT_ARCHGEN)
49
50ARCHGEN_TYPE			 = $(if $(filter LIMITED,$(TWL_ARCHGEN)),.LTD,$(if $(filter LIMITED_ferret,$(TWL_ARCHGEN)),.LTD,.HYB))
51COMP_TYPE				 = $(if $(filter LIMITED_ferret,$(TWL_ARCHGEN)),.ferret)
52
53#
54# C Compiler type
55#
56#	TWL_CCTYPE = [CW]
57#
58
59TWL_CCTYPE		?= CW
60
61
62#
63# Binary build tool switch
64#
65TWL_MAKEROM		?= TRUE
66
67#
68# RomSpeedType for makerom.exe
69#
70#	one of [MROM/1TROM/UNDEFINED]
71#
72
73TWL_ROMSPEED	?= UNDEFINED
74
75#
76# SDK build type
77#
78#	one of [TWL_DEBUG/TWL_RELEASE/TWL_FINALROM]
79#
80
81#
82# Codec Mode
83#
84#	CODEC_MODE = [TWL/NTR]
85#
86DEFAULT_CODEC_MODE		= TWL
87MAKEROM_CODEC_MODE		?= $(DEFAULT_CODEC_MODE)
88
89
90ifneq	($(TARGET_DEBUG),)
91TWL_BUILD_TYPE		?= DEBUG
92TWL_BUILD_DIR		?= Debug
93
94else
95ifneq	($(TARGET_FINALROM),)
96TWL_BUILD_TYPE		?= FINALROM
97TWL_BUILD_DIR		?= Rom
98
99else	#TWL_RELEASE(default)
100TWL_BUILD_TYPE		?= RELEASE
101TWL_BUILD_DIR		?= Release
102
103endif
104endif
105
106
107#----------------------------------------------------------------------------
108#  TWL-SDK path settings
109#
110
111TWL_INCDIR			:= $(ROOT)/include
112TWL_TOOLSDIR		:= $(TOOLSDIR)
113TWL_COMPONENTSDIR	:= $(COMPONENTSDIR)
114TWL_ADDINS			?= $(ADDINSDIR)
115
116TWL_BUILDARCH		?= $(CODEGEN_PROC)-$(TWL_PLATFORM)$(ARCHGEN_TYPE)$(COMP_TYPE)$(CODEGEN_ARCH)
117TWL_BUILDARCH_ARM9	 = ARM9-$(TWL_PLATFORM)$(ARCHGEN_TYPE)$(CODEGEN_ARCH)
118ifeq ($(DEMO_CHECK_BUILD),)
119TWL_BUILDARCH_ARM7	?= ARM7-$(TWL_PLATFORM)$(ARCHGEN_TYPE)$(CODEGEN_ARCH)
120else
121TWL_BUILDARCH_ARM7	?= ARM7-$(TWL_PLATFORM)$(ARCHGEN_TYPE)$(CODEGEN_ARCH_ARM7)
122endif
123
124TWL_BUILDTYPE		?= $(TWL_BUILDARCH)/$(TWL_BUILD_DIR)
125TWL_BUILDTYPE_ARM9	 = $(TWL_BUILDARCH_ARM9)/$(TWL_BUILD_DIR)
126TWL_BUILDTYPE_ARM7	 = $(TWL_BUILDARCH_ARM7)/$(TWL_BUILD_DIR)
127
128TWL_LIBARCH			 = $(CODEGEN_PROC)-$(TWL_PLATFORM)
129TWL_LIBTYPE			 = $(TWL_LIBARCH)/$(TWL_BUILD_DIR)
130TWL_LIBDIR			 = $(ROOT)/lib/$(TWL_LIBTYPE)
131TWL_LIBSYSCALLDIR	 = $(ROOT)/lib/$(TWL_LIBARCH)/etc
132TWL_LIBSUFFIX	 	?= .TWL$(ARCHGEN_TYPE)$(CODEGEN_ARCH)
133
134
135#----------------------------------------------------------------------------
136#  TWL-SYSTEM path settings
137#
138
139ifdef	TWLSYSTEM_ROOT
140TWLSYSTEM_ROOT_		:= $(subst $(SPACE),\ ,$(subst \,/,$(TWLSYSTEM_ROOT)))
141-include $(TWLSYSTEM_ROOT_)/build/buildtools/nnslibdefs
142endif
143
144#----------------------------------------------------------------------------
145#  TWL-WIRELESS path settings
146#
147#	libraries should be in
148#		$(ROOT)/lib/TwlWireless
149#
150#	includes should be in
151#		$(ROOT)/include/twl_wl/ARM7/*.h
152#
153#		access by #include <twl_wl/ARM7/*.h>
154#
155#	SDK_VERSION_WL is defined in <twl_wl/ARM7/version_wl.h>
156#
157
158TWLWIRELESS_VERSION		?=	080602
159TWLWIRELESS_PACKAGE 	?=	TianShan_$(TWLWIRELESS_VERSION)
160TWLWIRELESS_ROOT		 = $(subst $(SPACE),\ ,$(subst \,/,$(TWLSDK_ROOT)))/add-ins/TwlWireless/$(TWLWIRELESS_PACKAGE)
161TWLWIRELESS_LIBDIR		 = $(subst $(SPACE),\ ,$(subst \,/,$(TWLSDK_ROOT)))/lib/TwlWireless/$(TWL_LIBTYPE)
162
163#----------------------------------------------------------------------------
164#  Compiler settings
165#
166
167ifneq	($(FORCE_BUILD),)
168
169### module subdir src/ obj/ lib/ include/
170
171TWL_SPECDIR				 = $(TWL_INCDIR)/twl/specfiles
172
173ifneq	($(filter TWL,$(TARGET_PLATFORM_LIST)),)
174DEFAULT_LCFILE			 = $(TWL_SPECDIR)/$(TWL_LIBARCH).lcf
175DEFAULT_LCFILE_TEMPLATE	 = $(TWL_SPECDIR)/$(TWL_LIBARCH).lcf.template
176DEFAULT_LCFILE_SPEC		 = $(TWL_SPECDIR)/$(TWL_LIBARCH).lsf
177DEFAULT_ROM_SPEC		 = $(TWL_SPECDIR)/ROM-$(TWL_PLATFORM).rsf
178endif
179
180SRCDIR					?= $(DEFAULT_SRCDIR)
181INCDIR					?= $(DEFAULT_INCDIR)
182ETCDIR					?= $(DEFAULT_ETCDIR)
183OBJDIR					?= ./obj/$(TWL_BUILDTYPE)
184BINDIR					?= ./bin/$(TWL_BUILDTYPE)
185LIBDIR					?= ./lib/$(TWL_BUILDTYPE)
186
187ifdef	MSYSTEM
188DEPENDDIR				?= ./depend.MinGW/$(TWL_BUILDTYPE)
189else
190DEPENDDIR				?= ./depend/$(TWL_BUILDTYPE)
191endif
192
193ifeq        ($(CODEGEN_PROC),ARM9)
194LIBSYSCALL_				 = $(if $(LIBSYSCALL),$(LIBSYSCALL),$(TWL_LIBSYSCALLDIR)/libsyscall.a)
195LIBSYSCALL_TWL_			 = $(if $(LIBSYSCALL_TWL),$(LIBSYSCALL_TWL),$(TWL_LIBSYSCALLDIR)/libsyscall.twl.a)
196else #ifeq  ($(CODEGEN_PROC),ARM7)
197LIBSYSCALL_				 = $(if $(LIBSYSCALL),$(LIBSYSCALL),$(TWL_LIBSYSCALLDIR)/libsubpsyscall.a)
198LIBSYSCALL_TWL_			 = $(if $(LIBSYSCALL_TWL),$(LIBSYSCALL_TWL),$(TWL_LIBSYSCALLDIR)/libsyscall_sp.twl.a)
199endif
200
201### Compiler & Linker settings
202
203-include $(TWL_BUILDTOOLSDIR)/commondefs.cctype.$(TWL_CCTYPE)
204
205ifneq	($(TWL_MAKEROM),)
206LCFILE_TEMPLATE			?= $(DEFAULT_LCFILE_TEMPLATE)
207LCFILE_SPEC				?= $(DEFAULT_LCFILE_SPEC)
208LCFILE_AUTOGEN			?= $(BINDIR)/$(notdir $(LCFILE_SPEC:.lsf=.autogen.lcf))
209LCFILE					?= $(LCFILE_AUTOGEN)
210DEFAULT_LDRES_TEMPLATE	:= $(TWL_SPECDIR)/$(basename $(word $(words $(subst /, ,$(LD))),$(subst /, ,$(LD)))).response.template
211LDRES_TEMPLATE			?= $(DEFAULT_LDRES_TEMPLATE)
212LDRES_AUTOGEN			?= $(BINDIR)/$(notdir $(LCFILE_SPEC:.lsf=.autogen.response))
213LDRES_FILE				?= $(LDRES_AUTOGEN)
214else
215LCFILE					?= $(DEFAULT_LCFILE)
216endif
217
218TARGETS					?= $(addprefix $(BINDIR)/,$(TARGET_BIN) $(TARGET_ELF) $(TARGET_SIGN_BIN))	\
219						   $(addprefix $(OBJDIR)/,$(TARGET_OBJ)) 									\
220						   $(addprefix $(LIBDIR)/,$(TARGET_LIB))
221
222TARGET_BIN_BASENAME		 = $(patsubst %.TWL,%,$(notdir $(basename $(firstword $(TARGET_BIN) $(TARGET_ELF)))))
223TARGET_NAME				?= $(TARGET_BIN_BASENAME)
224
225### Debugger settings
226
227-include $(TWL_BUILDTOOLSDIR)/commondefs.emtype.IS
228
229
230### SDK Library settings
231
232ifeq	($(CODEGEN_PROC),ARM9)
233CRT0_O			?=  crt0$(ARCHGEN_TYPE).TWL.o
234endif
235
236ifeq	($(CODEGEN_PROC),ARM9)
237
238TWL_LIBS		?= 								\
239				   libcard$(TWL_LIBSUFFIX).a	\
240				   libcp$(TWL_LIBSUFFIX).a		\
241				   libel$(TWL_LIBSUFFIX).a		\
242				   libenv$(TWL_LIBSUFFIX).a		\
243				   libext$(TWL_LIBSUFFIX).a		\
244				   libfs$(TWL_LIBSUFFIX).a		\
245				   libfx$(TWL_LIBSUFFIX).a		\
246				   libgx$(TWL_LIBSUFFIX).a		\
247				   libmath$(TWL_LIBSUFFIX).a	\
248				   libmb$(TWL_LIBSUFFIX).a		\
249				   libmi$(TWL_LIBSUFFIX).a		\
250				   libnvram$(TWL_LIBSUFFIX).a	\
251				   libos$(TWL_LIBSUFFIX).a		\
252				   libprc$(TWL_LIBSUFFIX).a		\
253				   libpxi$(TWL_LIBSUFFIX).a		\
254				   librtc$(TWL_LIBSUFFIX).a		\
255				   libscfg$(TWL_LIBSUFFIX).a	\
256				   libsnd$(TWL_LIBSUFFIX).a		\
257				   libspi$(TWL_LIBSUFFIX).a		\
258				   libstd$(TWL_LIBSUFFIX).a		\
259				   libwbt$(TWL_LIBSUFFIX).a		\
260				   libwfs$(TWL_LIBSUFFIX).a		\
261				   libwm$(TWL_LIBSUFFIX).a		\
262				   libctrdg$(TWL_LIBSUFFIX).a	\
263				   libcrypto$(TWL_LIBSUFFIX).a	\
264			       libcht$(TWL_LIBSUFFIX).a		\
265				   libssp$(TWL_LIBSUFFIX).a		\
266				   libwxc$(TWL_LIBSUFFIX).a		\
267				   $(notdir $(LIBSYSCALL_))		\
268				   $(notdir $(LIBSYSCALL_TWL_))	\
269				   $(CRT0_O)
270
271TWL_LIBS_EX		?= librtcex$(TWL_LIBSUFFIX).a			\
272				   libcamera$(TWL_LIBSUFFIX).a			\
273				   libnwm$(TWL_LIBSUFFIX).a				\
274				   libmicex$(TWL_LIBSUFFIX).a			\
275				   libfatfs$(TWL_LIBSUFFIX).a			\
276				   libsndex$(TWL_LIBSUFFIX).a			\
277				   libdsp$(TWL_LIBSUFFIX).a				\
278				   libdsp_g711$(TWL_LIBSUFFIX).a		\
279				   libdsp_graphics$(TWL_LIBSUFFIX).a	\
280				   libaes$(TWL_LIBSUFFIX).a             \
281				   libtcl$(TWL_LIBSUFFIX).a
282
283TWL_LIBS		+= $(if $(TWL_PROFILE_TYPE),libos.$(TWL_PROFILE_TYPE)$(TWL_LIBSUFFIX).a)
284TWL_LIBS		+= $(if $(filter TRUE,$(TWL_NANDAPP)),libna$(TWL_LIBSUFFIX).a)
285TWL_LIBS		+= $(if $(filter TRUE,$(TWLSDK_IRC_PRIVATE)),libirc$(TWL_LIBSUFFIX).a)
286
287else #	($(CODEGEN_PROC),ARM7)
288
289TWL_LIBS		?= 									\
290				   libcamera_sp$(TWL_LIBSUFFIX).a	\
291				   libcard_sp$(TWL_LIBSUFFIX).a		\
292				   libcdc_sp$(TWL_LIBSUFFIX).a		\
293				   libel_sp$(TWL_LIBSUFFIX).a		\
294				   libexi_sp$(TWL_LIBSUFFIX).a		\
295				   libfatfs_sp$(TWL_LIBSUFFIX).a	\
296				   libfs_sp$(TWL_LIBSUFFIX).a		\
297				   libi2c_sp$(TWL_LIBSUFFIX).a		\
298				   libmath_sp$(TWL_LIBSUFFIX).a		\
299				   libmi_sp$(TWL_LIBSUFFIX).a		\
300				   libnvram_sp$(TWL_LIBSUFFIX).a	\
301				   libnwm_sp$(TWL_LIBSUFFIX).a		\
302				   libos_sp$(TWL_LIBSUFFIX).a		\
303				   libpad_sp$(TWL_LIBSUFFIX).a		\
304				   libpm_sp$(TWL_LIBSUFFIX).a		\
305				   libpxi_sp$(TWL_LIBSUFFIX).a		\
306				   librtc_sp$(TWL_LIBSUFFIX).a		\
307				   libscfg_sp$(TWL_LIBSUFFIX).a		\
308				   libsnd_sp$(TWL_LIBSUFFIX).a		\
309				   libsndex_sp$(TWL_LIBSUFFIX).a	\
310				   libspi_sp$(TWL_LIBSUFFIX).a		\
311				   libmcu_sp$(TWL_LIBSUFFIX).a		\
312				   libstd_sp$(TWL_LIBSUFFIX).a		\
313				   libwm_sp$(TWL_LIBSUFFIX).a		\
314				   libwvr_sp$(TWL_LIBSUFFIX).a		\
315				   libtp_sp$(TWL_LIBSUFFIX).a		\
316				   libtpex_sp$(TWL_LIBSUFFIX).a		\
317				   libmic_sp$(TWL_LIBSUFFIX).a		\
318				   libmicex_sp$(TWL_LIBSUFFIX).a	\
319				   libaes_sp$(TWL_LIBSUFFIX).a		\
320				   $(notdir $(LIBSYSCALL_))			\
321				   $(notdir $(LIBSYSCALL_TWL_))		\
322				   $(CRT0_O)
323
324TWL_LIBS		+= $(if $(filter HYBRID,$(TWL_ARCHGEN)),libctrdg_sp$(TWL_LIBSUFFIX).a)
325TWL_LIBS		+= $(if $(TWL_PROFILE_TYPE),libos_sp.$(TWL_PROFILE_TYPE)$(TWL_LIBSUFFIX).a)
326
327endif
328
329### Global Library settings
330
331SYSTEM_GINCLUDES		 = $(TWLWIRELESS_INCDIR)							\
332						   $(TWL_INCDIR) $(ISDBG_INCDIRS)
333
334DEFAULT_GINCLUDES		 = $(INCDIR) $(SRCDIR)								\
335						   $(NITROSYSTEM_INCDIR) $(SYSTEM_GINCLUDES)
336
337DEFAULT_GLIBRARY_DIRS	 = $(LIBDIR) $(dir $(LIBSYSCALL_)) $(dir $(LIBSYSCALL_TWL_))			\
338						   $(NITROSYSTEM_LIBDIR) $(TWLWIRELESS_LIBDIR) $(NITROWIRELESS_LIBDIR)	\
339						   $(TWL_LIBDIR) $(ISDBG_LIBDIRS)
340
341DEFAULT_GLIBRARIES		 = $(NITROSYSTEM_LIBS) $(TWL_LIBS) $(TWL_LIBS_EX) $(STUBS_LIBS) $(ISDBG_LIBS)
342
343GINCLUDES		?= $(DEFAULT_GINCLUDES)
344GLIBRARY_DIRS	?= $(DEFAULT_GLIBRARY_DIRS)
345GLIBRARIES		?= $(DEFAULT_GLIBRARIES)
346GLIBRARIES_EX	?= $(TWL_LIBS_EX)
347
348LINCLUDES		?=
349LLIBRARY_DIRS	?=
350LLIBRARIES		?=
351LNEWDIRS		?=
352
353NEWDIRS			?= $(strip $(if $(SRCS),$(OBJDIR) $(DEPENDDIR))			\
354				   $(if $(TARGET_LIB),$(LIBDIR))				\
355				   $(if $(TARGET_BIN)$(TARGET_ELF),$(BINDIR))	\
356				   $(LNEWDIRS))
357
358GDIRT_CLEAN_DIRS	:= ./obj ./bin ./lib ./depend
359GDIRT_CLOBBER_DIRS	:=
360
361### NAND APP settings
362ifeq	($(TWL_NANDAPP),TRUE)
363ifeq	($(CODEGEN_PROC),ARM9)
364DEFAULT_ROM_SPEC	 = $(TWL_SPECDIR)/ROM-$(TWL_PLATFORM)_nand.rsf
365
366INT_ROM_EXT			:=	nand.srl
367TMP_NAND_SRL		?= $(addprefix $(BINDIR)/,$(TARGET_BIN_BASENAME).$(INT_ROM_EXT))
368TITLE_VERSION_LO	?=	0
369endif
370endif
371
372endif
373
374
375#----------------------------------------------------------------------------
376#  MY BUILD TOOLS
377#
378
379MAKELCF			:= $(TWL_TOOLSDIR)/bin/makelcf.TWL.exe
380MAKEBANNER		:= $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe
381ADDBANNER		:= $(TWL_TOOLSDIR)/bin/addbanner.exe
382NTEXCONV		:= $(TWL_TOOLSDIR)/bin/ntexconv.exe
383BANNERCVTR		:= $(TWL_TOOLSDIR)/bin/bannercvtr.exe
384COMPSTATIC		:= $(TWL_TOOLSDIR)/bin/compstatic.TWL.exe
385MAKEROM			:= $(TWL_TOOLSDIR)/bin/makerom.TWL.exe
386EMUCHILD		:= $(TWL_TOOLSDIR)/bin/emuchild.exe
387ATTACHSIGN		:= $(TWL_TOOLSDIR)/bin/attachsign.exe
388BIN2OBJ			:= $(TWL_TOOLSDIR)/bin/bin2obj.exe
389MAKELST			:= $(TWL_TOOLSDIR)/bin/makelst.exe
390STRIPDEBUG		:= $(TWL_TOOLSDIR)/bin/stripdebug.exe
391MAKERSF			:= $(TWL_TOOLSDIR)/bin/makersf.pl
392LOADRUN			:= $(TWL_TOOLSDIR)/bin/loadrun.TWL.exe
393MAKETAD			:= $(TWL_TOOLSDIR)/bin/maketad.exe
394
395MAKELCF_FLAGS	 			?=
396MAKEBANNER_FLAGS			?=
397MAKEROM_FLAGS	 			?=
398COMPSTATIC_FLAGS			?=
399LOADRUN_FLAGS				?=
400DEFAULT_COMP_ARM7			?= $(if $(filter LIMITED,$(TWL_ARCHGEN)),racoon,$(if $(filter LIMITED_ferret,$(TWL_ARCHGEN)),ferret,mongoose))
401# boot information set by TWL-IPL (16kB)
402DEFAULT_ADDRESS_STATIC		?=	0x02004000
403DEFAULT_ADDRESS_ITCM		?=	0x01FF8000
404DEFAULT_ADDRESS_DTCM		?=	0x2fe0000
405DEFAULT_COMPSUFFIX			?= _LZ
406DEFAULT_MAKEROM_ARM9		= $(TWL_COMPONENTSDIR)/printserver/$(TWL_BUILDTYPE_ARM9)/printserver.$(TWL_ELF_EXT)
407DEFAULT_MAKEROM_ARM7_BASE	= $(TWL_COMPONENTSDIR)/$(DEFAULT_COMP_ARM7)/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7)
408DEFAULT_MAKEROM_ARM7		= $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT)
409
410DEFAULT_MAKEROM_ROMROOT		:= ./files
411DEFAULT_MAKEROM_ROMFILES	:=
412DEFAULT_MAKEROM_ROMSPEED	?= $(TWL_ROMSPEED)
413DEFAULT_MAKEROM_CERT_PRIV	:= $(TWL_SPECDIR)/default.der
414
415
416#----------------------------------------------------------------------------
417#  LIST OF JUNKS for "make
418#
419
420GDIRT_CLEAN		 = a.out core *~ *.bak \\\#*\\\# $(GDIRT_CLEAN_DIRS)
421
422GDIRT_CLOBBER	 = $(GDIRT_CLOBBER_DIRS)
423
424GDIRT_INSTALLED	 = $(addprefix $(INSTALL_DIR)/,$(notdir $(INSTALL_TARGETS)))
425
426
427#----------------------------------------------------------------------------
428#  Load add-ins' commondefs
429#
430-include $(TWL_BUILDTOOLSDIR)/commondefs.add-ins.*
431
432
433#----------------------------------------------------------------------------
434#  DEFAULT TARGET
435#
436ifdef TWL_UTEST
437default all:	utest
438else
439default all:	build
440endif
441
442#----------------------------------------------------------------------------
443endif	# TWLSDK_TWL_COMMONDEFS_
444#----- End of commondefs -----
445