ctr_firmware/trunk/firmware/build/buildtools/commondefs
(no author) fab593a113 (shirait)
firmwareビルド環境の設定、fatfsライブラリ追加。

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_firmware@253 b871894f-2f95-9b40-918c-086798483c85
2009-02-04 12:47:09 +00:00

351 lines
9.5 KiB
Makefile

#! make -f
#----------------------------------------------------------------------------
# Project: CtrBrom - commondefs - common definitions for build system
# File: commondefs
#
# Copyright 2008 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Date:: 2009-01-30#$
# $Rev: 244 $
# $Author: nakasima $
#----------------------------------------------------------------------------
ifndef FIRM_COMMONDEFS_
FIRM_COMMONDEFS_ = TRUE
include $(CTRFIRM_ROOT)/build/buildtools/commondefs.config
CTR_NO_STD_PCHDR = TRUE # プリコンパイルヘッダ抑止
USE_MY_RULE_BIN = TRUE
EMPTY ?=
SPACE ?= $(EMPTY) $(EMPTY)
#
# SDK Major Version
#
FIRMSDK_VERSION_MAJOR ?= 0
# EXO_PLATFORM = [TEG/TS]
EXO_PLATFORM ?= $(FIRM_PLATFORM)
#
# CodeGen Target
#
# FIRM_PLATFORM = [TS/TEG/MG20EMU/NE1EMU]
# FIRM_MEMSIZE = [64M/128M]
# FIRM_CODEGEN = [ARM/THUMB]
# FIRM_PROC = [ARM11/ARM9]
#
# FIRM_PROMGEN = [TRUE/FALSE]
# FIRM_TARGET = [BROM/FIRM/APP]
# FIRM_MEDIA = [NAND/NOR/GCD/BROM]
#
FIRM_PLATFORM ?= MG20EMU
FIRM_MEMSIZE ?= 128M
FIRM_CODEGEN ?= THUMB
FIRM_PROC ?= ARM11
FIRM_TARGET ?= BROM
FIRM_MEDIA ?= BROM
# replace TwlSDK
CTR_PLATFORM = $(FIRM_PLATFORM)
CTR_MEMSIZE = $(FIRM_MEMSIZE)
CTR_CODEGEN = $(FIRM_CODEGEN)
CTR_PROC = $(FIRM_PROC)
# replace NitroSDK
ifndef CODEGEN_PROC
CODEGEN_PROC := $(FIRM_PROC)
endif
ifeq ($(FIRM_CODEGEN),ALL)
FIRM_CODEGEN_ALL ?= TRUE
override FIRM_CODEGEN = ARM
endif
ifeq ($(FIRM_CODEGEN),ARM)
FIRM_CODEGEN_ARCH =
else # ($(FIRM_CODEGEN),THUMB)
FIRM_CODEGEN_ARCH = .thumb
endif
#
# C Compiler type
#
# CTR_CCTYPE = [CW/SNC/RVCT]
#
# replace NitroSDK
CTR_CCTYPE := RVCT
#
# SDK build type
#
# one of [FIRM_DEBUG/FIRM_RELEASE/FIRM_FINALROM]
#
ifdef FIRM_DEBUG
FIRM_BUILD_TYPE ?= DEBUG
FIRM_BUILD_DIR ?= Debug
else
ifdef FIRM_FINALROM
FIRM_BUILD_TYPE ?= FINALROM
FIRM_BUILD_DIR ?= Rom
else # FIRM_RELEASE (default)
FIRM_BUILD_TYPE ?= RELEASE
FIRM_BUILD_DIR ?= Release
endif
endif
# replace TwlSDK
CTR_BUILD_TYPE ?= $(FIRM_BUILD_TYPE)
CTR_BUILD_DIR ?= $(FIRM_BUILD_DIR)
#
# Debugger Type
#
# one of [ARM/KMC]
#
ifneq ($(FIRM_PLATFORM),MG20EMU)
ifneq ($(FIRM_PLATFORM),NE1EMU)
FIRM_DEBUGGER ?= ARM
endif
endif
FIRM_DEBUGGER ?= KMC
# replace TwlSDK
CTR_DEBUGGER ?= $(FIRM_DEBUGGER)
#----------------------------------------------------------------------------
### SDK Library settings
ifeq ($(FIRM_TARGET),BROM)
ifndef FIRM_PROMGEN
ifeq ($(CODEGEN_PROC),ARM11)
CRT0_O ?= crt0.o crt0_excp.o crt0_secure.o
else # CODEGEN_PROC==ARM9
CRT0_O ?= crt0.o crt0_excp.o crt0_secure_sp.o
endif # CODEGEN_PROC==ARM9
endif # FIRM_PROMGEN
else # FIRM_TARGET
ifeq ($(FIRM_TARGET),FIRM)
CRT0_O ?= crt0_firm.o
else # FIRM_TARGET_APP
CRT0_O ?= crt0_app.o
endif # FIRM_TARGET_APP
endif # FIRM_TARGET_BROM
ifneq ($(FIRM_PROMGEN),TRUE)
ifdef FIRM_DEF_LINK_SCATLD
CRT0_O += crt0_scat.o
endif # FIRM_DEF_LINK_SCATLD
endif # FIRM_PROMGEN
#----------------------------------------------------------------------------
### CTR-commondefs
#
include $(CTRSDK_ROOT)/build/buildtools/commondefs
#----------------------------------------------------------------------------
# FIRM-SDK path settings
#
BROM_ROOT := $(call eupath,$(CTRBROM_ROOT))
BROM_INCDIR := $(BROM_ROOT)/include
FIRM_ROOT := $(call eupath,$(CTRFIRM_ROOT))
FIRM_BUILDTOOLSDIR := $(FIRM_ROOT)/build/buildtools
FIRM_BUILDSETUPDIR := $(FIRM_ROOT)/build/buildsetup
FIRM_INCDIR := $(FIRM_ROOT)/include
FIRM_TOOLSDIR := $(FIRM_ROOT)/tools
FIRM_KEYSDIR := $(FIRM_ROOT)/build/keys
FIRM_COMPONENTSDIR := $(FIRM_ROOT)/components
FIRM_ADDINS ?= $(FIRM_ROOT)/add-ins
FIRM_CTRSDK_ROOT ?= $(call eupath,$(CTRFIRM_ROOT))
FIRM_CTRFIRM_ROOT ?= $(call eupath,$(CTRFIRM_ROOT))
FIRM_CTRFIRM_INCDIR := $(FIRM_CTRFIRM_ROOT)/include
FIRM_CTRFIRM_TOOLSDIR := $(FIRM_CTRFIRM_ROOT)/tools
FIRM_BUILDARCH ?= $(CODEGEN_PROC)-$(FIRM_PLATFORM)$(FIRM_CODEGEN_ARCH)
FIRM_BUILDARCH_ARM11 := ARM11-$(FIRM_PLATFORM)$(FIRM_CODEGEN_ARCH)
FIRM_BUILDARCH_ARM9 := ARM9-$(FIRM_PLATFORM)$(FIRM_CODEGEN_ARCH)
FIRM_BUILDTYPE ?= $(FIRM_BUILDARCH)/$(FIRM_BUILD_DIR)
FIRM_BUILDTYPE_ARM11 := $(FIRM_BUILDARCH_ARM11)/$(FIRM_BUILD_DIR)
FIRM_BUILDTYPE_ARM9 := $(FIRM_BUILDARCH_ARM9)/$(FIRM_BUILD_DIR)
FIRM_LIBARCH := $(CODEGEN_PROC)-$(FIRM_PLATFORM)
FIRM_LIBTYPE := $(FIRM_LIBARCH)/$(FIRM_BUILD_DIR)
FIRM_LIBDIR := $(FIRM_ROOT)/lib/$(FIRM_LIBTYPE)
FIRM_LIBSYSCALLDIR := $(FIRM_ROOT)/lib/$(FIRM_LIBARCH)/etc
FIRM_LIBSUFFIX := .firm$(FIRM_CODEGEN_ARCH)
FIRM_SPECDIR := $(FIRM_INCDIR)/firm/specfiles
FIRM_SPECARCH := $(CODEGEN_PROC)
ifneq ($(FIRM_TARGET),FIRM)
FIRM_SPECARCH := $(FIRM_SPECARCH)-$(FIRM_TARGET)
endif
DEFAULT_FIRM_LCFILE := $(FIRM_SPECDIR)/$(FIRM_SPECARCH).ldscript
ifndef FIRM_PROMGEN
DEFAULT_FIRM_LCFILE_TEMPLATE := $(FIRM_SPECDIR)/$(FIRM_SPECARCH)$(LCF_SUFFIX_).ldscript.template
DEFAULT_FIRM_LCFILE_SPEC := $(FIRM_SPECDIR)/$(FIRM_SPECARCH).lsf
else # FIRM_PROMGEN
DEFAULT_FIRM_LCFILE_TEMPLATE := $(FIRM_SPECDIR)/PROM.ldscript.template
DEFAULT_FIRM_LCFILE_SPEC := $(FIRM_SPECDIR)/PROM.lsf
endif # FIRM_PROMGEN
DEFAULT_FIRM_ROM_SPEC := $(FIRM_SPECDIR)/ROM-$(TWL_PLATFORM).rsf
FIRM_LCF_MAPHDRS := $(BROM_INCDIR)/brom/hw/$(FIRM_PROC)/mmap_brom.h \
$(CTR_INCDIR)/ctr/hw/$(FIRM_PROC)/mmap_global.h \
$(FIRM_CTRFIRM_INCDIR)/firm/hw/$(FIRM_PROC)/mmap_firm.h \
ifeq ($(FIRM_PROC),ARM11)
FIRM_LCF_MAPHDRS += $(FIRM_INCDIR)/firm/hw/$(FIRM_PROC)/mmap_axi_wram.h
else # FIRM_PROC == ARM9
FIRM_LCF_MAPHDRS += $(FIRM_INCDIR)/firm/hw/$(FIRM_PROC)/mmap_tcm.h
endif # FIRM_PROC == ARM9
# replace TwlSDK
CTR_BUILDARCH ?= $(FIRM_BUILDARCH)
### Compiler & Linker settings
FIRM_PROM_SRCDIR ?= $(FIRM_ROOT)/build/libraries/prom
FIRM_PROM_SRC ?= prom_crt0.c
ifeq ($(FIRM_PROMGEN),TRUE)
SRCDIR += $(FIRM_PROM_SRCDIR)
#SRCS += $(FIRM_PROM_SRC)
endif
# replace NitroSDK
LCFILE_TEMPLATE = $(DEFAULT_FIRM_LCFILE_TEMPLATE)
LCFILE_TEMPLATE_RV = $(shell cygpath -m $(DEFAULT_FIRM_LCFILE_TEMPLATE))
LCFILE_SPEC = $(DEFAULT_FIRM_LCFILE_SPEC)
LCFILE_AUTOGEN = $(BINDIR)/$(notdir $(LCFILE_SPEC:.lsf=.autogen.ldscript))
LCFILE = $(LCFILE_AUTOGEN)
LDRES_FILE = # $(LDRES_AUTOGEN)
LDEPENDS_LCF += $(FIRM_BUILDTOOLSDIR)/commondefs $(FIRM_LCF_MAPHDRS)
LDEPENDS_RES += $(FIRM_BUILDTOOLSDIR)/commondefs
### SDK Library settings
ifeq ($(CODEGEN_PROC),ARM11)
FIRM_LIBS_BASE ?= \
libos \
libmi \
libvlink \
ifdef FIRM_PROFILE_TYPE
FIRM_LIBS_BASE += libos.$(FIRM_PROFILE_TYPE)
endif
else # ($(CODEGEN_PROC),ARM9)
FIRM_LIBS_BASE ?= \
libos_sp \
libmi_sp \
libvlink_sp \
ifdef FIRM_PROFILE_TYPE
FIRM_LIBS_BASE += libos_sp.$(FIRM_PROFILE_TYPE)
endif
endif
FIRM_LIBS ?= $(CRT0_O) $(addsuffix $(FIRM_LIBSUFFIX).a,$(FIRM_LIBS_BASE))
FIRM_LDEPENDS_DBG ?= $(CTRFIRM_ROOT)/build/libraries/os/common/os_printf.c \
#----------------------------------------------------------------------------
# MY BUILD TOOLS
#
MAKENORFIRM := $(FIRM_CTRFIRM_TOOLSDIR)/bin/makenorfirm.exe
MAKENANDFIRM := $(FIRM_CTRFIRM_TOOLSDIR)/bin/makenandfirm.exe
MAKEGCDFIRM := $(FIRM_CTRFIRM_TOOLSDIR)/bin/makegcdfirm.exe
OPENSSL := $(FIRM_CTRFIRM_TOOLSDIR)/openssl/openssl.exe
MAKEFIRM_RSA_PRVKEY ?= $(call eupath,$(FIRM_CTRFIRM_TOOLSDIR))/openssl/rsa_private.der
MAKEFIRM_RSA_PUBKEY ?= $(call eupath,$(FIRM_CTRFIRM_TOOLSDIR))/openssl/rsa_public.der
MAKEFIRM_FLAGS ?=
ifneq ($(filter NORFIRM NANDFIRM GCDFIRM,$(FIRM_TARGET)),)
FIRM_STRIP_AXF := TRUE
endif
#----------------------------------------------------------------------------
ifeq ($(CTR_PRIVATE),TRUE)
FIRM_PRIVATE := TRUE
endif
ifeq ($(CTR_WITH_ARM9),TRUE)
FIRM_WITH_ARM9 := TRUE
endif
#----------------------------------------------------------------------------
### Global Library resettings
GINCLUDES := $(FIRM_INCDIR) $(FIRM_CTRFIRM_INCDIR) $(GINCLUDES) $(BROM_INCDIR)
GLIBRARY_DIRS := $(FIRM_LIBDIR) $(GLIBRARY_DIRS)
GLIBRARIES := $(FIRM_LIBS) \
# $(filter-out $(addsuffix $(CTR_LIBSUFFIX).a,$(FIRM_LIBS_BASE)),$(GLIBRARIES))
#----------------------------------------------------------------------------
# CTRFIRM_INSTALL_ROOT
#
ifdef CTRFIRM_INSTALL_ROOT
CTRFIRM_INSTALL_ROOT_ := $(CTRFIRM_INSTALL_ROOT)
else
CTRFIRM_INSTALL_ROOT_ := $(CTRFIRM_ROOT)
endif
FIRM_INSTALL_ROOT := $(subst $(SPACE),\ ,$(subst \,/,$(CTRFIRM_INSTALL_ROOT_)))
FIRM_INSTALL_INCDIR := $(FIRM_INSTALL_ROOT)/include
FIRM_INSTALL_TOOLSDIR := $(FIRM_INSTALL_ROOT)/tools
FIRM_INSTALL_LIBDIR := $(FIRM_INSTALL_ROOT)/lib/$(FIRM_LIBTYPE)
FIRM_INSTALL_PROMDIR := $(FIRM_INSTALL_TOOLSDIR)/prom/$(FIRM_PLATFORM)$(FIRM_CODEGEN_ARCH)
FIRM_INSTALL_COMPONENTSDIR := $(FIRM_INSTALL_ROOT)/components
FIRM_INSTALL_ADDINS := $(FIRM_INSTALL_ROOT)/add-ins
#----------------------------------------------------------------------------
# Compiler flags
#
MACRO_FLAGS += -DFIRM_TARGET_$(FIRM_TARGET) \
-DFIRM_MEDIA='$(DFIRM_MEDIA)' \
-DFIRM_ROOT='$(FIRM_ROOT)' \
-DBROM_TARGET_$(FIRM_TARGET) \
#----------------------------------------------------------------------------
endif # FIRM_COMMONDEFS_
#----- End of commondefs -----