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