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-07-10#$ 15# $Rev: 10886 $ 16# $Author: okubata_ryoma $ 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 282TWL_LIBS += $(if $(TWL_PROFILE_TYPE),libos.$(TWL_PROFILE_TYPE)$(TWL_LIBSUFFIX).a) 283TWL_LIBS += $(if $(filter TRUE,$(TWL_NANDAPP)),libna$(TWL_LIBSUFFIX).a) 284 285else # ($(CODEGEN_PROC),ARM7) 286 287TWL_LIBS ?= \ 288 libcamera_sp$(TWL_LIBSUFFIX).a \ 289 libcard_sp$(TWL_LIBSUFFIX).a \ 290 libcdc_sp$(TWL_LIBSUFFIX).a \ 291 libel_sp$(TWL_LIBSUFFIX).a \ 292 libexi_sp$(TWL_LIBSUFFIX).a \ 293 libfatfs_sp$(TWL_LIBSUFFIX).a \ 294 libfs_sp$(TWL_LIBSUFFIX).a \ 295 libi2c_sp$(TWL_LIBSUFFIX).a \ 296 libmath_sp$(TWL_LIBSUFFIX).a \ 297 libmi_sp$(TWL_LIBSUFFIX).a \ 298 libnvram_sp$(TWL_LIBSUFFIX).a \ 299 libnwm_sp$(TWL_LIBSUFFIX).a \ 300 libos_sp$(TWL_LIBSUFFIX).a \ 301 libpad_sp$(TWL_LIBSUFFIX).a \ 302 libpm_sp$(TWL_LIBSUFFIX).a \ 303 libpxi_sp$(TWL_LIBSUFFIX).a \ 304 librtc_sp$(TWL_LIBSUFFIX).a \ 305 libscfg_sp$(TWL_LIBSUFFIX).a \ 306 libsnd_sp$(TWL_LIBSUFFIX).a \ 307 libsndex_sp$(TWL_LIBSUFFIX).a \ 308 libspi_sp$(TWL_LIBSUFFIX).a \ 309 libmcu_sp$(TWL_LIBSUFFIX).a \ 310 libstd_sp$(TWL_LIBSUFFIX).a \ 311 libwm_sp$(TWL_LIBSUFFIX).a \ 312 libwvr_sp$(TWL_LIBSUFFIX).a \ 313 libtp_sp$(TWL_LIBSUFFIX).a \ 314 libtpex_sp$(TWL_LIBSUFFIX).a \ 315 libmic_sp$(TWL_LIBSUFFIX).a \ 316 libmicex_sp$(TWL_LIBSUFFIX).a \ 317 libaes_sp$(TWL_LIBSUFFIX).a \ 318 $(notdir $(LIBSYSCALL_)) \ 319 $(notdir $(LIBSYSCALL_TWL_)) \ 320 $(CRT0_O) 321 322TWL_LIBS += $(if $(filter HYBRID,$(TWL_ARCHGEN)),libctrdg_sp$(TWL_LIBSUFFIX).a) 323TWL_LIBS += $(if $(TWL_PROFILE_TYPE),libos_sp.$(TWL_PROFILE_TYPE)$(TWL_LIBSUFFIX).a) 324 325endif 326 327### Global Library settings 328 329SYSTEM_GINCLUDES = $(TWLWIRELESS_INCDIR) \ 330 $(TWL_INCDIR) $(ISDBG_INCDIRS) 331 332DEFAULT_GINCLUDES = $(INCDIR) $(SRCDIR) \ 333 $(NITROSYSTEM_INCDIR) $(SYSTEM_GINCLUDES) 334 335DEFAULT_GLIBRARY_DIRS = $(LIBDIR) $(dir $(LIBSYSCALL_)) $(dir $(LIBSYSCALL_TWL_)) \ 336 $(NITROSYSTEM_LIBDIR) $(TWLWIRELESS_LIBDIR) $(NITROWIRELESS_LIBDIR) \ 337 $(TWL_LIBDIR) $(ISDBG_LIBDIRS) 338 339DEFAULT_GLIBRARIES = $(NITROSYSTEM_LIBS) $(TWL_LIBS) $(TWL_LIBS_EX) $(STUBS_LIBS) $(ISDBG_LIBS) 340 341GINCLUDES ?= $(DEFAULT_GINCLUDES) 342GLIBRARY_DIRS ?= $(DEFAULT_GLIBRARY_DIRS) 343GLIBRARIES ?= $(DEFAULT_GLIBRARIES) 344GLIBRARIES_EX ?= $(TWL_LIBS_EX) 345 346LINCLUDES ?= 347LLIBRARY_DIRS ?= 348LLIBRARIES ?= 349LNEWDIRS ?= 350 351NEWDIRS ?= $(strip $(if $(SRCS),$(OBJDIR) $(DEPENDDIR)) \ 352 $(if $(TARGET_LIB),$(LIBDIR)) \ 353 $(if $(TARGET_BIN)$(TARGET_ELF),$(BINDIR)) \ 354 $(LNEWDIRS)) 355 356GDIRT_CLEAN_DIRS := ./obj ./bin ./lib ./depend 357GDIRT_CLOBBER_DIRS := 358 359### NAND APP settings 360ifeq ($(TWL_NANDAPP),TRUE) 361ifeq ($(CODEGEN_PROC),ARM9) 362DEFAULT_ROM_SPEC = $(TWL_SPECDIR)/ROM-$(TWL_PLATFORM)_nand.rsf 363 364INT_ROM_EXT := nand.srl 365TMP_NAND_SRL ?= $(addprefix $(BINDIR)/,$(TARGET_BIN_BASENAME).$(INT_ROM_EXT)) 366TITLE_VERSION_LO ?= 0 367endif 368endif 369 370endif 371 372 373#---------------------------------------------------------------------------- 374# MY BUILD TOOLS 375# 376 377MAKELCF := $(TWL_TOOLSDIR)/bin/makelcf.TWL.exe 378MAKEBANNER := $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe 379ADDBANNER := $(TWL_TOOLSDIR)/bin/addbanner.exe 380NTEXCONV := $(TWL_TOOLSDIR)/bin/ntexconv.exe 381BANNERCVTR := $(TWL_TOOLSDIR)/bin/bannercvtr.exe 382COMPSTATIC := $(TWL_TOOLSDIR)/bin/compstatic.TWL.exe 383MAKEROM := $(TWL_TOOLSDIR)/bin/makerom.TWL.exe 384EMUCHILD := $(TWL_TOOLSDIR)/bin/emuchild.exe 385ATTACHSIGN := $(TWL_TOOLSDIR)/bin/attachsign.exe 386BIN2OBJ := $(TWL_TOOLSDIR)/bin/bin2obj.exe 387MAKELST := $(TWL_TOOLSDIR)/bin/makelst.exe 388STRIPDEBUG := $(TWL_TOOLSDIR)/bin/stripdebug.exe 389MAKERSF := $(TWL_TOOLSDIR)/bin/makersf.pl 390LOADRUN := $(TWL_TOOLSDIR)/bin/loadrun.TWL.exe 391MAKETAD := $(TWL_TOOLSDIR)/bin/maketad.exe 392 393MAKELCF_FLAGS ?= 394MAKEBANNER_FLAGS ?= 395MAKEROM_FLAGS ?= 396COMPSTATIC_FLAGS ?= 397LOADRUN_FLAGS ?= 398DEFAULT_COMP_ARM7 ?= $(if $(filter LIMITED,$(TWL_ARCHGEN)),racoon,$(if $(filter LIMITED_ferret,$(TWL_ARCHGEN)),ferret,mongoose)) 399# boot information set by TWL-IPL (16kB) 400DEFAULT_ADDRESS_STATIC ?= 0x02004000 401DEFAULT_ADDRESS_ITCM ?= 0x01FF8000 402DEFAULT_ADDRESS_DTCM ?= 0x2fe0000 403DEFAULT_COMPSUFFIX ?= _LZ 404DEFAULT_MAKEROM_ARM9 = $(TWL_COMPONENTSDIR)/printserver/$(TWL_BUILDTYPE_ARM9)/printserver.$(TWL_ELF_EXT) 405DEFAULT_MAKEROM_ARM7_BASE = $(TWL_COMPONENTSDIR)/$(DEFAULT_COMP_ARM7)/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) 406DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) 407 408DEFAULT_MAKEROM_ROMROOT := ./files 409DEFAULT_MAKEROM_ROMFILES := 410DEFAULT_MAKEROM_ROMSPEED ?= $(TWL_ROMSPEED) 411DEFAULT_MAKEROM_CERT_PRIV := $(TWL_SPECDIR)/default.der 412 413 414#---------------------------------------------------------------------------- 415# LIST OF JUNKS for "make 416# 417 418GDIRT_CLEAN = a.out core *~ *.bak \\\#*\\\# $(GDIRT_CLEAN_DIRS) 419 420GDIRT_CLOBBER = $(GDIRT_CLOBBER_DIRS) 421 422GDIRT_INSTALLED = $(addprefix $(INSTALL_DIR)/,$(notdir $(INSTALL_TARGETS))) 423 424 425#---------------------------------------------------------------------------- 426# Load add-ins' commondefs 427# 428-include $(TWL_BUILDTOOLSDIR)/commondefs.add-ins.* 429 430 431#---------------------------------------------------------------------------- 432# DEFAULT TARGET 433# 434ifdef TWL_UTEST 435default all: utest 436else 437default all: build 438endif 439 440#---------------------------------------------------------------------------- 441endif # TWLSDK_TWL_COMMONDEFS_ 442#----- End of commondefs ----- 443