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-11-11#$
15# $Rev: 11147 $
16# $Author: okubata_ryoma $
17#----------------------------------------------------------------------------
18ifndef TWLSDK_NITRO_COMMONDEFS_
19TWLSDK_NITRO_COMMONDEFS_ = TRUE
20
21#
22# SDK Major Version
23#
24
25NITROSDK_VERSION_MAJOR	?= 5
26
27#
28# CodeGen Target
29#
30#	NITRO_PLATFORM  = [TS]
31#	NITRO_MEMSIZE   = [4M/8M]
32#	NITRO_PROC      = [ARM9/ARM7]
33#
34
35NITRO_PLATFORM			?= TS
36NITRO_MEMSIZE			?= 4M
37NITRO_PROC				?= ARM9
38
39CODEGEN_PROC			 = $(strip $(NITRO_PROC))
40
41
42#
43# C Compiler type
44#
45#	NITRO_CCTYPE = [CW]
46#
47
48NITRO_CCTYPE		?= CW
49
50
51#
52# Binary build tool switch
53#
54NITRO_MAKEROM		?= TRUE
55
56#
57# RomSpeedType for makerom.exe
58#
59#	one of [MROM/1TROM/UNDEFINED]
60#
61
62NITRO_ROMSPEED		?= UNDEFINED
63
64#
65# SDK build type
66#
67#	one of [NITRO_DEBUG/NITRO_RELEASE/NITRO_FINALROM]
68#
69
70ifneq	($(TARGET_DEBUG),)
71NITRO_BUILD_TYPE	?= DEBUG
72NITRO_BUILD_DIR		?= Debug
73
74else
75ifneq	($(TARGET_FINALROM),)
76NITRO_BUILD_TYPE	?= FINALROM
77NITRO_BUILD_DIR		?= Rom
78
79else	#NITRO_RELEASE(default)
80NITRO_BUILD_TYPE	?= RELEASE
81NITRO_BUILD_DIR		?= Release
82
83endif
84endif
85
86#----------------------------------------------------------------------------
87#  NITRO-SDK path settings
88#
89
90NITRO_INCDIR			:= $(ROOT)/include
91NITRO_TOOLSDIR			:= $(TOOLSDIR)
92NITRO_COMPONENTSDIR		:= $(COMPONENTSDIR)
93NITRO_ADDINS			?= $(ADDINSDIR)
94
95NITRO_BUILDARCH			?= $(CODEGEN_PROC)-$(NITRO_PLATFORM)$(CODEGEN_ARCH)
96NITRO_BUILDARCH_ARM9	 = ARM9-$(NITRO_PLATFORM)$(CODEGEN_ARCH)
97ifeq ($(DEMO_CHECK_BUILD),)
98NITRO_BUILDARCH_ARM7	 = ARM7-$(NITRO_PLATFORM)$(ARCHGEN_TYPE)$(CODEGEN_ARCH)
99else
100NITRO_BUILDARCH_ARM7	 = ARM7-$(NITRO_PLATFORM)$(ARCHGEN_TYPE)$(CODEGEN_ARCH_ARM7)
101endif
102
103NITRO_BUILDTYPE			?= $(NITRO_BUILDARCH)/$(NITRO_BUILD_DIR)
104NITRO_BUILDTYPE_ARM9	 = $(NITRO_BUILDARCH_ARM9)/$(NITRO_BUILD_DIR)
105NITRO_BUILDTYPE_ARM7	 = $(NITRO_BUILDARCH_ARM7)/$(NITRO_BUILD_DIR)
106
107NITRO_LIBARCH			 = $(CODEGEN_PROC)-$(NITRO_PLATFORM)
108NITRO_LIBTYPE			 = $(NITRO_LIBARCH)/$(NITRO_BUILD_DIR)
109NITRO_LIBDIR			 = $(ROOT)/lib/$(NITRO_LIBTYPE)
110NITRO_LIBSYSCALLDIR		 = $(ROOT)/lib/$(NITRO_LIBARCH)/etc
111NITRO_LIBSUFFIX			?= $(CODEGEN_ARCH)
112
113
114#----------------------------------------------------------------------------
115#  TWL-SYSTEM path settings
116#
117
118ifdef	TWLSYSTEM_ROOT
119TWLSYSTEM_ROOT_		:= $(subst $(SPACE),\ ,$(subst \,/,$(TWLSYSTEM_ROOT)))
120-include $(TWLSYSTEM_ROOT_)/build/buildtools/nnslibdefs
121endif
122
123#----------------------------------------------------------------------------
124#  Compiler settings
125#
126
127ifneq	($(FORCE_BUILD),)
128
129### module subdir src/ obj/ lib/ include/
130
131LCF_SUFFIX_				= $(if $(NITRO_DIGEST),-C)
132NITRO_SPECDIR			= $(NITRO_INCDIR)/nitro/specfiles
133
134ifneq	($(filter NITRO,$(TARGET_PLATFORM_LIST)),)
135DEFAULT_LCFILE			= $(NITRO_SPECDIR)/$(NITRO_LIBARCH).lcf
136DEFAULT_LCFILE_TEMPLATE	= $(NITRO_SPECDIR)/$(NITRO_LIBARCH)$(LCF_SUFFIX_).lcf.template
137DEFAULT_LCFILE_SPEC		= $(NITRO_SPECDIR)/$(NITRO_LIBARCH).lsf
138DEFAULT_ROM_SPEC		= $(NITRO_SPECDIR)/ROM-$(NITRO_PLATFORM).rsf
139endif
140
141SRCDIR					?= $(DEFAULT_SRCDIR)
142INCDIR					?= $(DEFAULT_INCDIR)
143ETCDIR					?= $(DEFAULT_ETCDIR)
144OBJDIR					?= ./obj/$(NITRO_BUILDTYPE)
145BINDIR					?= ./bin/$(NITRO_BUILDTYPE)
146LIBDIR					?= ./lib/$(NITRO_BUILDTYPE)
147
148ifdef	MSYSTEM
149DEPENDDIR				?= ./depend.MinGW/$(NITRO_BUILDTYPE)
150else
151DEPENDDIR				?= ./depend/$(NITRO_BUILDTYPE)
152endif
153
154LIBSYSCALL_				 = $(if $(LIBSYSCALL),$(LIBSYSCALL),$(NITRO_LIBSYSCALLDIR)/libsyscall.a)
155
156### Compiler & Linker settings
157
158-include $(NITRO_BUILDTOOLSDIR)/commondefs.cctype.$(NITRO_CCTYPE)
159
160ifneq	($(NITRO_MAKEROM),)
161LCFILE_TEMPLATE			?= $(DEFAULT_LCFILE_TEMPLATE)
162LCFILE_SPEC				?= $(DEFAULT_LCFILE_SPEC)
163LCFILE_AUTOGEN			?= $(BINDIR)/$(notdir $(LCFILE_SPEC:.lsf=.autogen.lcf))
164LCFILE					?= $(LCFILE_AUTOGEN)
165DEFAULT_LDRES_TEMPLATE	:= $(NITRO_SPECDIR)/$(basename $(word $(words $(subst /, ,$(LD))),$(subst /, ,$(LD)))).response.template
166LDRES_TEMPLATE			?= $(DEFAULT_LDRES_TEMPLATE)
167LDRES_AUTOGEN			?= $(BINDIR)/$(notdir $(LCFILE_SPEC:.lsf=.autogen.response))
168LDRES_FILE				?= $(LDRES_AUTOGEN)
169else
170LCFILE					?= $(DEFAULT_LCFILE)
171endif
172
173TARGETS					?= $(addprefix $(BINDIR)/,$(TARGET_BIN) $(TARGET_ELF) $(TARGET_SIGN_BIN)) \
174						   $(addprefix $(OBJDIR)/,$(TARGET_OBJ)) 		\
175						   $(addprefix $(LIBDIR)/,$(TARGET_LIB))
176
177TARGET_BIN_BASENAME		 = $(notdir $(basename $(firstword $(TARGET_BIN) $(TARGET_ELF))))
178TARGET_NAME				?= $(TARGET_BIN_BASENAME)
179
180### Debugger settings
181
182-include $(NITRO_BUILDTOOLSDIR)/commondefs.emtype.IS
183
184
185### SDK Library settings
186
187CRT0_O			?=  crt0.o
188
189ifeq	($(CODEGEN_PROC),ARM9)
190
191NITRO_LIBS		?= 									\
192				   libcard$(NITRO_LIBSUFFIX).a		\
193				   libcp$(NITRO_LIBSUFFIX).a		\
194				   libenv$(NITRO_LIBSUFFIX).a		\
195				   libext$(NITRO_LIBSUFFIX).a		\
196				   libfs$(NITRO_LIBSUFFIX).a		\
197				   libfx$(NITRO_LIBSUFFIX).a		\
198				   libgx$(NITRO_LIBSUFFIX).a		\
199				   libmath$(NITRO_LIBSUFFIX).a		\
200				   libmb$(NITRO_LIBSUFFIX).a		\
201				   libmi$(NITRO_LIBSUFFIX).a		\
202				   libnvram$(NITRO_LIBSUFFIX).a		\
203				   libos$(NITRO_LIBSUFFIX).a		\
204				   libprc$(NITRO_LIBSUFFIX).a		\
205				   libpxi$(NITRO_LIBSUFFIX).a		\
206				   librtc$(NITRO_LIBSUFFIX).a		\
207				   libsnd$(NITRO_LIBSUFFIX).a		\
208				   libspi$(NITRO_LIBSUFFIX).a		\
209				   libstd$(NITRO_LIBSUFFIX).a		\
210				   libwbt$(NITRO_LIBSUFFIX).a		\
211				   libwfs$(NITRO_LIBSUFFIX).a		\
212				   libwm$(NITRO_LIBSUFFIX).a		\
213				   libcrypto$(NITRO_LIBSUFFIX).a	\
214				   libctrdg$(NITRO_LIBSUFFIX).a		\
215			       libcht$(NITRO_LIBSUFFIX).a		\
216				   libssp$(NITRO_LIBSUFFIX).a		\
217				   libwxc$(NITRO_LIBSUFFIX).a		\
218				   $(notdir $(LIBSYSCALL_))			\
219				   $(CRT0_O)
220
221NITRO_LIBS		+= $(if $(NITRO_PROFILE_TYPE),libos.$(NITRO_PROFILE_TYPE)$(NITRO_LIBSUFFIX).a)
222NITRO_LIBS		+= $(if $(filter TRUE,$(TWLSDK_IRC_PRIVATE)),libirc$(NITRO_LIBSUFFIX).a)
223
224else #	($(CODEGEN_PROC),ARM7)
225
226NITRO_LIBS		?= 									\
227				   libcard_sp$(NITRO_LIBSUFFIX).a	\
228				   libexi_sp$(NITRO_LIBSUFFIX).a	\
229				   libfs_sp$(NITRO_LIBSUFFIX).a		\
230				   libmi_sp$(NITRO_LIBSUFFIX).a		\
231				   libmic_sp$(NITRO_LIBSUFFIX).a	\
232				   libnvram_sp$(NITRO_LIBSUFFIX).a	\
233				   libos_sp$(NITRO_LIBSUFFIX).a		\
234				   libpad_sp$(NITRO_LIBSUFFIX).a	\
235				   libpm_sp$(NITRO_LIBSUFFIX).a		\
236				   libpxi_sp$(NITRO_LIBSUFFIX).a	\
237				   librtc_sp$(NITRO_LIBSUFFIX).a	\
238				   libsnd_sp$(NITRO_LIBSUFFIX).a	\
239				   libspi_sp$(NITRO_LIBSUFFIX).a	\
240				   libstd_sp$(NITRO_LIBSUFFIX).a	\
241				   libtp_sp$(NITRO_LIBSUFFIX).a		\
242				   libwvr_sp$(NITRO_LIBSUFFIX).a	\
243				   libctrdg_sp$(NITRO_LIBSUFFIX).a	\
244				   libsubpsyscall.a					\
245				   $(CRT0_O)
246
247
248NITRO_LIBS		+= $(if $(NITRO_PROFILE_TYPE),libos_sp.$(NITRO_PROFILE_TYPE)$(NITRO_LIBSUFFIX).a)
249
250endif
251
252### Global Library settings
253
254SYSTEM_GINCLUDES		 = $(NITROWIRELESS_INCDIR)							\
255						   $(NITRO_INCDIR) $(ISDBG_INCDIRS)
256
257DEFAULT_GINCLUDES		 = $(INCDIR) $(SRCDIR)								\
258						   $(NITROSYSTEM_INCDIR) $(SYSTEM_GINCLUDES)
259
260DEFAULT_GLIBRARY_DIRS	 = $(LIBDIR) $(dir $(LIBSYSCALL_))					\
261						   $(NITROSYSTEM_LIBDIR) $(NITROWIRELESS_LIBDIR)	\
262						   $(NITRO_LIBDIR) $(ISDBG_LIBDIRS)
263
264DEFAULT_GLIBRARIES		 = $(NITROSYSTEM_LIBS) $(NITRO_LIBS) $(STUBS_LIBS) $(ISDBG_LIBS)
265
266GINCLUDES				?= $(DEFAULT_GINCLUDES)
267GLIBRARY_DIRS			?= $(DEFAULT_GLIBRARY_DIRS)
268GLIBRARIES				?= $(DEFAULT_GLIBRARIES)
269
270LINCLUDES				?=
271LLIBRARY_DIRS			?=
272LLIBRARIES				?=
273LNEWDIRS				?=
274
275NEWDIRS					?= $(strip $(if $(SRCS),$(OBJDIR) $(DEPENDDIR))			\
276						   $(if $(TARGET_LIB),$(LIBDIR))				\
277						   $(if $(TARGET_BIN)$(TARGET_ELF),$(BINDIR))	\
278						   $(LNEWDIRS))
279
280GDIRT_CLEAN_DIRS		:= ./obj ./bin ./lib ./depend
281GDIRT_CLOBBER_DIRS		:=
282
283endif
284
285#----------------------------------------------------------------------------
286#  MY BUILD TOOLS
287#
288
289MAKELCF			:= $(NITRO_TOOLSDIR)/bin/makelcf.exe
290MAKEBANNER		:= $(NITRO_TOOLSDIR)/bin/makebanner.exe
291ADDBANNER		:= $(NITRO_TOOLSDIR)/bin/addbanner.exe
292NTEXCONV		:= $(NITRO_TOOLSDIR)/bin/ntexconv.exe
293COMPSTATIC		:= $(NITRO_TOOLSDIR)/bin/compstatic.exe
294MAKEROM			:= $(NITRO_TOOLSDIR)/bin/makerom.exe
295EMUCHILD		:= $(NITRO_TOOLSDIR)/bin/emuchild.exe
296ATTACHSIGN		:= $(NITRO_TOOLSDIR)/bin/attachsign.exe
297BIN2OBJ			:= $(NITRO_TOOLSDIR)/bin/bin2obj.exe
298MAKELST			:= $(NITRO_TOOLSDIR)/bin/makelst.exe
299STRIPDEBUG		:= $(NITRO_TOOLSDIR)/bin/stripdebug.exe
300LOADRUN			:= $(NITRO_TOOLSDIR)/bin/loadrun.exe
301
302MAKELCF_FLAGS	 			?=
303MAKEBANNER_FLAGS			?=
304MAKEROM_FLAGS	 			?=
305COMPSTATIC_FLAGS			?=
306LOADRUN_FLAGS				?=
307DEFAULT_COMP_ARM7			?= mongoose
308DEFAULT_ADDRESS_STATIC		?= 0x02000000
309DEFAULT_ADDRESS_ITCM		?= 0x01FF8000
310DEFAULT_ADDRESS_DTCM		?= 0x027e0000
311DEFAULT_COMPSUFFIX			?= _LZ
312DEFAULT_MAKEROM_ARM9		 = $(NITRO_COMPONENTSDIR)/printserver/$(NITRO_BUILDTYPE_ARM9)/main.$(NITRO_ELF_EXT)
313DEFAULT_MAKEROM_ARM7		 = $(NITRO_COMPONENTSDIR)/$(DEFAULT_COMP_ARM7)/$(NITRO_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7)_sub.$(NITRO_ELF_EXT)
314
315DEFAULT_MAKEROM_ROMROOT		:= ./files
316DEFAULT_MAKEROM_ROMFILES	:=
317DEFAULT_MAKEROM_ROMSPEED	?= $(NITRO_ROMSPEED)
318
319
320#----------------------------------------------------------------------------
321#  LIST OF JUNKS for "make
322#
323
324GDIRT_CLEAN	= a.out core *~ *.bak \\\#*\\\# $(GDIRT_CLEAN_DIRS)
325
326GDIRT_CLOBBER	= $(GDIRT_CLOBBER_DIRS)
327
328GDIRT_INSTALLED	= $(addprefix $(INSTALL_DIR)/,$(notdir $(INSTALL_TARGETS)))
329
330
331#----------------------------------------------------------------------------
332#  Load add-ins' commondefs
333#
334#-include $(NITRO_BUILDTOOLSDIR)/commondefs.add-ins.*
335
336
337#----------------------------------------------------------------------------
338#  DEFAULT TARGET
339#
340ifdef NITRO_UTEST
341default all:	utest
342else
343default all:	build
344endif
345
346#----------------------------------------------------------------------------
347endif	# TWLSDK_NITRO_COMMONDEFS_
348#----- End of commondefs -----
349