1#! make -f
2#----------------------------------------------------------------------------
3# Project:  TwlSDK
4# File:     commondefs
5#
6#  Copyright 2007-2008 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-02-06#$
15# $Rev: 9980 $
16# $Author: ooshimay $
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.FLX.TWL.o
234else #	($(CODEGEN_PROC),ARM7)
235CRT0_O			?=  crt0.HYB.TWL.o
236endif
237
238ifeq	($(CODEGEN_PROC),ARM9)
239
240TWL_LIBS		?= 								\
241				   libcard$(TWL_LIBSUFFIX).a	\
242				   libcp$(TWL_LIBSUFFIX).a		\
243				   libel$(TWL_LIBSUFFIX).a		\
244				   libenv$(TWL_LIBSUFFIX).a		\
245				   libext$(TWL_LIBSUFFIX).a		\
246				   libfs$(TWL_LIBSUFFIX).a		\
247				   libfx$(TWL_LIBSUFFIX).a		\
248				   libgx$(TWL_LIBSUFFIX).a		\
249				   libmath$(TWL_LIBSUFFIX).a	\
250				   libmb$(TWL_LIBSUFFIX).a		\
251				   libmi$(TWL_LIBSUFFIX).a		\
252				   libnvram$(TWL_LIBSUFFIX).a	\
253				   libos$(TWL_LIBSUFFIX).a		\
254				   libprc$(TWL_LIBSUFFIX).a		\
255				   libpxi$(TWL_LIBSUFFIX).a		\
256				   librtc$(TWL_LIBSUFFIX).a		\
257				   libscfg$(TWL_LIBSUFFIX).a	\
258				   libsnd$(TWL_LIBSUFFIX).a		\
259				   libspi$(TWL_LIBSUFFIX).a		\
260				   libstd$(TWL_LIBSUFFIX).a		\
261				   libwbt$(TWL_LIBSUFFIX).a		\
262				   libwfs$(TWL_LIBSUFFIX).a		\
263				   libwm$(TWL_LIBSUFFIX).a		\
264				   libctrdg$(TWL_LIBSUFFIX).a	\
265				   libcrypto$(TWL_LIBSUFFIX).a	\
266			       libcht$(TWL_LIBSUFFIX).a		\
267				   libssp_jpegEncoder$(TWL_LIBSUFFIX).a \
268				   libssp_jpegDecoder$(TWL_LIBSUFFIX).a \
269				   $(notdir $(LIBSYSCALL_))		\
270				   $(notdir $(LIBSYSCALL_TWL_))	\
271				   $(CRT0_O)
272
273TWL_LIBS_EX		?= librtcex$(TWL_LIBSUFFIX).a			\
274				   libcamera$(TWL_LIBSUFFIX).a			\
275				   libnwm$(TWL_LIBSUFFIX).a				\
276				   libmicex$(TWL_LIBSUFFIX).a			\
277				   libfatfs$(TWL_LIBSUFFIX).a			\
278				   libsndex$(TWL_LIBSUFFIX).a			\
279				   libdsp$(TWL_LIBSUFFIX).a				\
280				   libdsp_g711$(TWL_LIBSUFFIX).a		\
281				   libdsp_graphics$(TWL_LIBSUFFIX).a	\
282				   libaes$(TWL_LIBSUFFIX).a
283
284TWL_LIBS		+= $(if $(TWL_PROFILE_TYPE),libos.$(TWL_PROFILE_TYPE)$(TWL_LIBSUFFIX).a)
285
286else #	($(CODEGEN_PROC),ARM7)
287
288TWL_LIBS		?= 									\
289				   libcamera_sp$(TWL_LIBSUFFIX).a	\
290				   libcard_sp$(TWL_LIBSUFFIX).a		\
291				   libcdc_sp$(TWL_LIBSUFFIX).a		\
292				   libel_sp$(TWL_LIBSUFFIX).a		\
293				   libexi_sp$(TWL_LIBSUFFIX).a		\
294				   libfatfs_sp$(TWL_LIBSUFFIX).a	\
295				   libfs_sp$(TWL_LIBSUFFIX).a		\
296				   libi2c_sp$(TWL_LIBSUFFIX).a		\
297				   libmath_sp$(TWL_LIBSUFFIX).a		\
298				   libmi_sp$(TWL_LIBSUFFIX).a		\
299				   libnvram_sp$(TWL_LIBSUFFIX).a	\
300				   libnwm_sp$(TWL_LIBSUFFIX).a		\
301				   libos_sp$(TWL_LIBSUFFIX).a		\
302				   libpad_sp$(TWL_LIBSUFFIX).a		\
303				   libpm_sp$(TWL_LIBSUFFIX).a		\
304				   libpxi_sp$(TWL_LIBSUFFIX).a		\
305				   librtc_sp$(TWL_LIBSUFFIX).a		\
306				   libscfg_sp$(TWL_LIBSUFFIX).a		\
307				   libsnd_sp$(TWL_LIBSUFFIX).a		\
308				   libsndex_sp$(TWL_LIBSUFFIX).a	\
309				   libspi_sp$(TWL_LIBSUFFIX).a		\
310				   libmcu_sp$(TWL_LIBSUFFIX).a		\
311				   libstd_sp$(TWL_LIBSUFFIX).a		\
312				   libwm_sp$(TWL_LIBSUFFIX).a		\
313				   libwvr_sp$(TWL_LIBSUFFIX).a		\
314				   libtp_sp$(TWL_LIBSUFFIX).a		\
315				   libtpex_sp$(TWL_LIBSUFFIX).a		\
316				   libmic_sp$(TWL_LIBSUFFIX).a		\
317				   libmicex_sp$(TWL_LIBSUFFIX).a	\
318				   libaes_sp$(TWL_LIBSUFFIX).a		\
319				   $(notdir $(LIBSYSCALL_))			\
320				   $(notdir $(LIBSYSCALL_TWL_))		\
321				   $(CRT0_O)
322
323TWL_LIBS		+= $(if $(filter HYBRID,$(TWL_ARCHGEN)),libctrdg_sp$(TWL_LIBSUFFIX).a)
324TWL_LIBS		+= $(if $(TWL_PROFILE_TYPE),libos_sp.$(TWL_PROFILE_TYPE)$(TWL_LIBSUFFIX).a)
325
326endif
327
328### Global Library settings
329
330SYSTEM_GINCLUDES		 = $(TWLWIRELESS_INCDIR)							\
331						   $(TWL_INCDIR) $(ISDBG_INCDIRS)
332
333DEFAULT_GINCLUDES		 = $(INCDIR) $(SRCDIR)								\
334						   $(NITROSYSTEM_INCDIR) $(SYSTEM_GINCLUDES)
335
336DEFAULT_GLIBRARY_DIRS	 = $(LIBDIR) $(dir $(LIBSYSCALL_)) $(dir $(LIBSYSCALL_TWL_))			\
337						   $(NITROSYSTEM_LIBDIR) $(TWLWIRELESS_LIBDIR) $(NITROWIRELESS_LIBDIR)	\
338						   $(TWL_LIBDIR) $(ISDBG_LIBDIRS)
339
340DEFAULT_GLIBRARIES		 = $(NITROSYSTEM_LIBS) $(TWL_LIBS) $(TWL_LIBS_EX) $(STUBS_LIBS) $(ISDBG_LIBS)
341
342GINCLUDES		?= $(DEFAULT_GINCLUDES)
343GLIBRARY_DIRS	?= $(DEFAULT_GLIBRARY_DIRS)
344GLIBRARIES		?= $(DEFAULT_GLIBRARIES)
345GLIBRARIES_EX	?= $(TWL_LIBS_EX)
346
347LINCLUDES		?=
348LLIBRARY_DIRS	?=
349LLIBRARIES		?=
350LNEWDIRS		?=
351
352NEWDIRS			?= $(strip $(if $(SRCS),$(OBJDIR) $(DEPENDDIR))			\
353				   $(if $(TARGET_LIB),$(LIBDIR))				\
354				   $(if $(TARGET_BIN)$(TARGET_ELF),$(BINDIR))	\
355				   $(LNEWDIRS))
356
357GDIRT_CLEAN_DIRS	:= ./obj ./bin ./lib ./depend
358GDIRT_CLOBBER_DIRS	:=
359
360endif
361
362
363#----------------------------------------------------------------------------
364#  MY BUILD TOOLS
365#
366
367MAKELCF			:= $(TWL_TOOLSDIR)/bin/makelcf.TWL.exe
368MAKEBANNER		:= $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe
369ADDBANNER		:= $(TWL_TOOLSDIR)/bin/addbanner.exe
370NTEXCONV		:= $(TWL_TOOLSDIR)/bin/ntexconv.exe
371BANNERCVTR		:= $(TWL_TOOLSDIR)/bin/bannercvtr.exe
372COMPSTATIC		:= $(TWL_TOOLSDIR)/bin/compstatic.TWL.exe
373MAKEROM			:= $(TWL_TOOLSDIR)/bin/makerom.TWL.exe
374EMUCHILD		:= $(TWL_TOOLSDIR)/bin/emuchild.exe
375ATTACHSIGN		:= $(TWL_TOOLSDIR)/bin/attachsign.exe
376BIN2OBJ			:= $(TWL_TOOLSDIR)/bin/bin2obj.exe
377MAKELST			:= $(TWL_TOOLSDIR)/bin/makelst.exe
378STRIPDEBUG		:= $(TWL_TOOLSDIR)/bin/stripdebug.exe
379MAKERSF			:= $(TWL_TOOLSDIR)/bin/makersf.pl
380LOADRUN			:= $(TWL_TOOLSDIR)/bin/loadrun.TWL.exe
381
382MAKELCF_FLAGS	 			?=
383MAKEBANNER_FLAGS			?=
384MAKEROM_FLAGS	 			?=
385COMPSTATIC_FLAGS			?=
386LOADRUN_FLAGS				?=
387DEFAULT_COMP_ARM7			?= $(if $(filter LIMITED,$(TWL_ARCHGEN)),racoon,$(if $(filter LIMITED_ferret,$(TWL_ARCHGEN)),ferret,mongoose))
388# boot information set by TWL-IPL (16kB)
389DEFAULT_ADDRESS_STATIC		?=	0x02004000
390DEFAULT_ADDRESS_ITCM		?=	0x01FF8000
391DEFAULT_ADDRESS_DTCM		?=	0x2fe0000
392DEFAULT_COMPSUFFIX			?= _LZ
393DEFAULT_MAKEROM_ARM9		= $(TWL_COMPONENTSDIR)/printserver/$(TWL_BUILDTYPE_ARM9)/printserver.$(TWL_ELF_EXT)
394DEFAULT_MAKEROM_ARM7_BASE	= $(TWL_COMPONENTSDIR)/$(DEFAULT_COMP_ARM7)/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7)
395DEFAULT_MAKEROM_ARM7		= $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT)
396
397DEFAULT_MAKEROM_ROMROOT		:= ./files
398DEFAULT_MAKEROM_ROMFILES	:=
399DEFAULT_MAKEROM_ROMSPEED	?= $(TWL_ROMSPEED)
400DEFAULT_MAKEROM_CERT_PRIV	:= $(TWL_SPECDIR)/default.der
401
402
403#----------------------------------------------------------------------------
404#  LIST OF JUNKS for "make
405#
406
407GDIRT_CLEAN		 = a.out core *~ *.bak \\\#*\\\# $(GDIRT_CLEAN_DIRS)
408
409GDIRT_CLOBBER	 = $(GDIRT_CLOBBER_DIRS)
410
411GDIRT_INSTALLED	 = $(addprefix $(INSTALL_DIR)/,$(notdir $(INSTALL_TARGETS)))
412
413
414#----------------------------------------------------------------------------
415#  Load add-ins' commondefs
416#
417-include $(TWL_BUILDTOOLSDIR)/commondefs.add-ins.*
418
419
420#----------------------------------------------------------------------------
421#  DEFAULT TARGET
422#
423ifdef TWL_UTEST
424default all:	utest
425else
426default all:	build
427endif
428
429#----------------------------------------------------------------------------
430endif	# TWLSDK_TWL_COMMONDEFS_
431#----- End of commondefs -----
432