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