ctr_firmware/trunk/build/buildtools/commondefs
nakasima 58d5bae0e3 buildtools修正。
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_firmware@3 b871894f-2f95-9b40-918c-086798483c85
2008-11-07 09:21:34 +00:00

489 lines
13 KiB
Makefile

#! make -f
#----------------------------------------------------------------------------
# Project: CtrSDK - 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.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
ifndef CTRSDK_COMMONDEFS_
CTRSDK_COMMONDEFS_ = TRUE
#
# SDK root directory
#
CTRSDK_ROOT ?= C:/ctr_sdk
#
# SDK Major Version
#
CTRSDK_VERSION_MAJOR ?= 4
#
# CodeGen Target
#
# CTR_PLATFORM = [TEG/TS]
# CTR_MEMSIZE = [64M/128M]
# CTR_CODEGEN = [ARM/THUMB]
# CTR_PROC = [ARM11/ARM9/ARM7]
#
CTR_PLATFORM ?= TS
CTR_MEMSIZE ?= 64M
CTR_CODEGEN ?= ARM
CTR_PROC ?= ARM11
ifndef CODEGEN_PROC
CODEGEN_PROC := $(CTR_PROC)
endif
ifeq ($(CTR_CODEGEN),ALL)
CTR_CODEGEN_ALL ?= TRUE
override CTR_CODEGEN = ARM
endif
ifeq ($(CTR_CODEGEN),ARM)
CODEGEN_ARCH =
else # ($(CTR_CODEGEN),THUMB)
CODEGEN_ARCH = .thumb
endif
CODEGEN_CC ?= $(CTR_CODEGEN)
CODEGEN_AS ?= ARM
TS_VERSION = $(if $(CTR_TS_VERSION),_TS$(CTR_TS_VERSION))
#
# C Compiler type
#
# CTR_CCTYPE = [CW/SNC]
#
CTR_CCTYPE ?= CW
#
# Binary build tool switch
#
ifeq ($(CTR_ELFTOBIN),)
CTR_MAKEROM ?= TRUE
endif
ifeq ($(CTR_MAKEROM)$(CTR_PLATFORM),TS)
__error:
@echo "---- Stop, Don't use ELFTOBIN with CTR_PLATFORM=TS ----"
@exit 1
endif
#
# RomSpeedType for makerom.exe
#
# one of [MROM/1TROM/UNDEFINED]
#
CTR_ROMSPEED ?= UNDEFINED
#
# SDK build type
#
# one of [CTR_DEBUG/CTR_RELEASE/CTR_FINALROM]
#
ifdef CTR_DEBUG
CTR_BUILD_TYPE ?= DEBUG
CTR_BUILD_DIR ?= Debug
else
ifdef CTR_FINALROM
CTR_BUILD_TYPE ?= FINALROM
CTR_BUILD_DIR ?= Rom
else # CTR_RELEASE (default)
CTR_BUILD_TYPE ?= RELEASE
CTR_BUILD_DIR ?= Release
endif
endif
#----------------------------------------------------------------------------
# Utilities
#
EMPTY :=
SPACE := $(EMPTY) $(EMPTY)
#----------------------------------------------------------------------------
# CTR-SDK path settings
#
-include $(CTR_BUILDTOOLSDIR)/commondefs.cygpath
ROOT := $(call eupath,$(CTRSDK_ROOT))
CTR_BUILDTOOLSDIR := $(ROOT)/build/buildtools
CTR_BUILDSETUPDIR := $(ROOT)/build/buildsetup
CTR_INCDIR := $(ROOT)/include
CTR_TOOLSDIR := $(ROOT)/tools
CTR_COMPONENTSDIR := $(ROOT)/components
CTR_ADDINS ?= $(ROOT)/add-ins
CTR_BUILDARCH ?= $(CODEGEN_PROC)-$(CTR_PLATFORM)$(CODEGEN_ARCH)
CTR_BUILDARCH_ARM11 := ARM9-$(CTR_PLATFORM)$(CODEGEN_ARCH)
CTR_BUILDARCH_ARM9 := ARM7-$(CTR_PLATFORM)$(CODEGEN_ARCH)
CTR_BUILDTYPE ?= $(CTR_BUILDARCH)/$(CTR_BUILD_DIR)
CTR_BUILDTYPE_ARM11 := $(CTR_BUILDARCH_ARM9)/$(CTR_BUILD_DIR)
CTR_BUILDTYPE_ARM9 := $(CTR_BUILDARCH_ARM7)/$(CTR_BUILD_DIR)
CTR_LIBARCH := $(CODEGEN_PROC)-$(CTR_PLATFORM)
CTR_LIBTYPE := $(CTR_LIBARCH)/$(CTR_BUILD_DIR)
CTR_LIBDIR := $(ROOT)/lib/$(CTR_LIBTYPE)
CTR_LIBSYSCALLDIR := $(ROOT)/lib/$(CTR_LIBARCH)/etc
CTR_LIBSUFFIX := $(CODEGEN_ARCH)
#----------------------------------------------------------------------------
# CTR-SYSTEM path settings
#
ifdef CTRSYSTEM_ROOT
CTRSYSTEM_ROOT_ := $(subst $(SPACE),\ ,$(subst \,/,$(CTRSYSTEM_ROOT)))
-include $(CTRSYSTEM_ROOT_)/build/buildtools/nnslibdefs
endif
CTRSYSTEM_LIBDIR ?= $(ROOT)/lib/CtrSystem/$(CTR_LIBTYPE)
CTRSYSTEM_INCDIR ?=
#----------------------------------------------------------------------------
# CTR-WIRELESS path settings
#
# libraries should be in
# $(ROOT)/lib/CtrWireless
#
# includes should be in
# $(ROOT)/include/ctr_wl/ARM11/*.h
#
# access by #include <ctr_wl/ARM11/*.h>
#
# SDK_VERSION_WL is defined in <ctr_wl/ARM11/version_wl.h>
#
CTRWIRELESS_VERSION ?= 2.78.00
CTRWIRELESS_ROOT ?= $(ROOT)/add-ins/CtrWireless/Marionea-$(CTRWIRELESS_VERSION)
CTRWIRELESS_ROOT_ = $(subst $(SPACE),\ ,$(subst \,/,$(CTRWIRELESS_ROOT)))
ifneq ($(CTR_PROC),ARM9)
CTRWIRELESS_LIBDIR ?= $(ROOT)/lib/CtrWireless/$(CTR_LIBTYPE)
CTRWIRELESS_INCDIR ?= $(ROOT)/include
endif
#----------------------------------------------------------------------------
# Compiler settings
#
CTR_FORCE_BUILD ?= $(strip $(TARGET_BIN) $(TARGET_OBJ) $(TARGET_NEF) $(TARGET_LIB) $(TARGET_SIGN_BIN))
ifneq ($(CTR_FORCE_BUILD),)
### module subdir src/ obj/ lib/ include/
DEFAULT_SRCDIR := ./src
DEFAULT_INCDIR := ./include
DEFAULT_ETCDIR := ./etc
LCF_SUFFIX_ := $(if $(CTR_DIGEST),-C)
CTR_SPECDIR := $(CTR_INCDIR)/ctr/specfiles
DEFAULT_LCFILE := $(CTR_SPECDIR)/$(CTR_LIBARCH).lcf
DEFAULT_LCFILE_TEMPLATE := $(CTR_SPECDIR)/$(CTR_LIBARCH)$(LCF_SUFFIX_).lcf.template
DEFAULT_LCFILE_SPEC := $(CTR_SPECDIR)/$(CTR_LIBARCH).lsf
DEFAULT_ROM_SPEC := $(CTR_SPECDIR)/ROM-$(CTR_PLATFORM).rsf
SRCDIR ?= $(DEFAULT_SRCDIR)
INCDIR ?= $(DEFAULT_INCDIR)
ETCDIR ?= $(DEFAULT_ETCDIR)
OBJDIR ?= ./obj/$(CTR_BUILDTYPE)
BINDIR ?= ./bin/$(CTR_BUILDTYPE)
LIBDIR ?= ./lib/$(CTR_BUILDTYPE)
DEPENDDIR ?= ./depend/$(CTR_BUILDTYPE)
LIBSYSCALL_ = $(if $(LIBSYSCALL),$(LIBSYSCALL),$(CTR_LIBSYSCALLDIR)/libsyscall.a)
### Compiler & Linker settings
-include $(CTR_BUILDTOOLSDIR)/commondefs.cctype.$(CTR_CCTYPE)
ifneq ($(CTR_MAKEROM),)
LCFILE_TEMPLATE ?= $(DEFAULT_LCFILE_TEMPLATE)
LCFILE_SPEC ?= $(DEFAULT_LCFILE_SPEC)
LCFILE_AUTOGEN ?= $(BINDIR)/$(notdir $(LCFILE_SPEC:.lsf=.autogen.lcf))
LCFILE ?= $(LCFILE_AUTOGEN)
DEFAULT_LDRES_TEMPLATE := $(CTR_SPECDIR)/$(basename $(notdir $(LD))).response.template
LDRES_TEMPLATE ?= $(DEFAULT_LDRES_TEMPLATE)
LDRES_AUTOGEN ?= $(BINDIR)/$(notdir $(LCFILE_SPEC:.lsf=.autogen.response))
LDRES_FILE ?= $(LDRES_AUTOGEN)
else
LCFILE ?= $(DEFAULT_LCFILE)
endif
TARGETS = $(addprefix $(BINDIR)/,$(TARGET_BIN) $(TARGET_NEF) $(TARGET_SIGN_BIN)) \
$(addprefix $(OBJDIR)/,$(TARGET_OBJ)) \
$(addprefix $(LIBDIR)/,$(TARGET_LIB))
TARGET_BIN_BASENAME = $(notdir $(basename $(firstword $(TARGET_BIN) $(TARGET_NEF))))
TARGET_NAME ?= $(TARGET_BIN_BASENAME)
### Debugger settings
ifndef IS_CTR_DIR
ifdef IS_IRIS_DIR
IS_CTR_DIR = $(IS_IRIS_DIR)
endif
endif
-include $(CTR_BUILDTOOLSDIR)/commondefs.emtype.ISD
### SDK Library settings
CRT0_O ?= crt0.o
ifeq ($(CODEGEN_PROC),ARM11)
CTR_LIBS ?= libfx$(CTR_LIBSUFFIX).a \
libgx$(CTR_LIBSUFFIX).a \
libos$(TS_VERSION)$(CTR_LIBSUFFIX).a \
libmi$(CTR_LIBSUFFIX).a \
libsnd$(CTR_LIBSUFFIX).a \
libpxi$(CTR_LIBSUFFIX).a \
libext$(CTR_LIBSUFFIX).a \
libfs$(CTR_LIBSUFFIX).a \
libdgt$(CTR_LIBSUFFIX).a \
libcp$(CTR_LIBSUFFIX).a \
libspi$(TS_VERSION)$(CTR_LIBSUFFIX).a \
librtc$(CTR_LIBSUFFIX).a \
libprc$(CTR_LIBSUFFIX).a \
libcard$(CTR_LIBSUFFIX).a \
libwm$(CTR_LIBSUFFIX).a \
libwbt$(CTR_LIBSUFFIX).a \
libmb$(CTR_LIBSUFFIX).a \
libctrdg$(CTR_LIBSUFFIX).a \
libmath$(CTR_LIBSUFFIX).a \
libcht$(CTR_LIBSUFFIX).a \
libstd$(CTR_LIBSUFFIX).a \
libenv$(CTR_LIBSUFFIX).a \
$(notdir $(LIBSYSCALL_)) \
$(CRT0_O)
ifdef CTR_PROFILE_TYPE
CTR_LIBS += libos.$(CTR_PROFILE_TYPE)$(CTR_LIBSUFFIX).a
endif
else # ($(CODEGEN_PROC),ARM9)
CTR_LIBS ?= libos_sp$(CTR_LIBSUFFIX).a \
libmi_sp$(CTR_LIBSUFFIX).a \
libsnd_sp$(CTR_LIBSUFFIX).a \
libpxi_sp$(CTR_LIBSUFFIX).a \
libpad_sp$(CTR_LIBSUFFIX).a \
libexi_sp$(CTR_LIBSUFFIX).a \
libfs_sp$(CTR_LIBSUFFIX).a \
libcard_sp$(CTR_LIBSUFFIX).a \
librtc_sp$(CTR_LIBSUFFIX).a \
libspi_sp$(CTR_LIBSUFFIX).a \
libtp_sp$(CTR_LIBSUFFIX).a \
libnvram_sp$(CTR_LIBSUFFIX).a \
libmic_sp$(TS_VERSION)$(CTR_LIBSUFFIX).a \
libpm_sp$(CTR_LIBSUFFIX).a \
libctrdg_sp$(CTR_LIBSUFFIX).a \
libwvr_sp$(CTR_LIBSUFFIX).a \
libstd_sp$(CTR_LIBSUFFIX).a \
libsubpsyscall.a \
$(CRT0_O)
ifdef CTR_PROFILE_TYPE
CTR_LIBS += libos_sp.$(CTR_PROFILE_TYPE)$(CTR_LIBSUFFIX).a
endif
endif
### Global Library settings
DEFAULT_GINCLUDES := $(INCDIR) $(SRCDIR) \
$(CTRSYSTEM_INCDIR) $(CTRWIRELESS_INCDIR) \
$(CTR_INCDIR) $(ISD_INCDIRS)
DEFAULT_GLIBRARY_DIRS := $(LIBDIR) $(dir $(LIBSYSCALL_)) \
$(CTRSYSTEM_LIBDIR) $(CTRWIRELESS_LIBDIR) \
$(CTR_LIBDIR) $(ISD_LIBDIRS)
DEFAULT_GLIBRARIES := $(CTRSYSTEM_LIBS) $(CTR_LIBS) $(STUBS_LIBS) $(ISD_LIBS)
GINCLUDES ?= $(DEFAULT_GINCLUDES)
GLIBRARY_DIRS ?= $(DEFAULT_GLIBRARY_DIRS)
GLIBRARIES ?= $(DEFAULT_GLIBRARIES)
LINCLUDES ?=
LLIBRARY_DIRS ?=
LLIBRARIES ?=
LNEWDIRS ?=
NEWDIRS ?= $(if $(SRCS),$(OBJDIR) $(DEPENDDIR)) \
$(if $(TARGET_LIB),$(LIBDIR)) \
$(if $(TARGET_BIN)$(TARGET_NEF),$(BINDIR)) \
$(LNEWDIRS)
GDIRT_CLEAN_DIRS := ./obj ./bin ./lib ./depend
GDIRT_CLOBBER_DIRS :=
endif
#----------------------------------------------------------------------------
# MAKE COMMAND SETTINGS
#
# --no-print-directory: No print directory when 'change directory'
# -r no builtin rules
# -R no builtin variables
# -j do make with multi-thread (not used now)
#
MAKEFILE = $(firstword $(MAKEFILE_LIST))
MAKEFLAGS_SHORT = $(filter -%,$(filter-out --%,$(MAKEFLAGS)))
MAKEFLAGS += -R -r
# Check -w option
ifeq (,$(findstring w,$(MAKEFLAGS_SHORT)))
MAKEFLAGS += --no-print-directory
endif
# Check -k option
ifeq (,$(findstring k,$(MAKEFLAGS_SHORT)))
AND = &&
else
AND = ;
endif
# Check -s option
ifneq (,$(findstring s,$(MAKEFLAGS_SHORT)))
CTR_STDOUT = > /dev/null
endif
#----------------------------------------------------------------------------
# CYGWIN TOOLS
#
CD := cd
CP := cp -rf
RM := rm -rf
MV := mv
MKDIRP := mkdir -p
SED := sed
INSTALL := install -p
TOUCH := touch
ECHO := echo
PERL := perl
OBJCOPY := objcopy -I elf32-little -O binary
REMAKE := $(MAKE) -f $(MAKEFILE)
LEX := flex
YACC := bison -y
CC_X86 := gcc -mno-cygwin
CXX_X86 := g++ -mno-cygwin
LD_X86 := gcc -mno-cygwin
AR_X86 := ar ruc
#----------------------------------------------------------------------------
# MY BUILD TOOLS
#
MAKELCF := $(CTR_TOOLSDIR)/bin/makelcf.exe
MAKEBANNER := $(CTR_TOOLSDIR)/bin/makebanner.exe
ADDBANNER := $(CTR_TOOLSDIR)/bin/addbanner.exe
NTEXCONV := $(CTR_TOOLSDIR)/bin/ntexconv.exe
COMPSTATIC := $(CTR_TOOLSDIR)/bin/compstatic.exe
MAKEROM := $(CTR_TOOLSDIR)/bin/makerom.exe
EMUCHILD := $(CTR_TOOLSDIR)/bin/emuchild.exe
ATTACHSIGN := $(CTR_TOOLSDIR)/bin/attachsign.exe
BIN2OBJ := $(CTR_TOOLSDIR)/bin/bin2obj.exe
MAKELCF_FLAGS ?=
MAKEBANNER_FLAGS ?=
MAKEROM_FLAGS ?=
COMPSTATIC_FLAGS ?=
DEFAULT_COMP_ARM9 ?= $(if $(findstring TEG,$(CTR_PLATFORM)),ferret,mongoose)
DEFAULT_ADDRESS_DTCM ?= $(if $(findstring TEG,$(CTR_PLATFORM)),0x02380000,0x027e0000)
DEFAULT_COMPSUFFIX ?= _LZ
DEFAULT_MAKEROM_ARM11 := $(CTR_COMPONENTSDIR)/printserver/$(CTR_BUILDTYPE_ARM9)/main.nef
DEFAULT_MAKEROM_ARM9 := $(CTR_COMPONENTSDIR)/$(DEFAULT_COMP_ARM9)/$(CTR_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM9)_sub$(TS_VERSION).nef
DEFAULT_MAKEROM_ROMROOT := ./files
DEFAULT_MAKEROM_ROMFILES :=
DEFAULT_MAKEROM_ROMSPEED ?= $(CTR_ROMSPEED)
#----------------------------------------------------------------------------
# LIST OF JUNKS for "make
#
GDIRT_CLEAN = a.out core *~ *.bak \\\#*\\\# $(GDIRT_CLEAN_DIRS)
GDIRT_CLOBBER = $(GDIRT_CLOBBER_DIRS)
GDIRT_INSTALLED = $(addprefix $(INSTALL_DIR)/,$(notdir $(INSTALL_TARGETS)))
#----------------------------------------------------------------------------
# CTRSDK_INSTALL_ROOT
#
ifdef CTRSDK_INSTALL_ROOT
CTRSDK_INSTALL_ROOT_ := $(CTRSDK_INSTALL_ROOT)
else
CTRSDK_INSTALL_ROOT_ := $(CTRSDK_ROOT)
endif
CTR_INSTALL_ROOT := $(subst $(SPACE),\ ,$(subst \,/,$(CTRSDK_INSTALL_ROOT_)))
CTR_INSTALL_INCDIR := $(CTR_INSTALL_ROOT)/include
CTR_INSTALL_TOOLSDIR := $(CTR_INSTALL_ROOT)/tools
CTR_INSTALL_LIBDIR := $(CTR_INSTALL_ROOT)/lib/$(CTR_LIBTYPE)
CTR_INSTALL_COMPONENTSDIR := $(CTR_INSTALL_ROOT)/components
CTR_INSTALL_ADDINS := $(CTR_INSTALL_ROOT)/add-ins
#----------------------------------------------------------------------------
# PRIVATE FLAGS
#
-include $(CTR_BUILDTOOLSDIR)/_privatedefs
-include $(CTR_BUILDTOOLSDIR)/@privatedefs
#----------------------------------------------------------------------------
# Load add-ins' commondefs
#
-include $(CTR_BUILDTOOLSDIR)/commondefs.add-ins.*
#----------------------------------------------------------------------------
# DEFAULT TARGET
#
ifdef CTR_UTEST
default all: utest
else
default all: build
endif
#----------------------------------------------------------------------------
endif # CTRSDK_COMMONDEFS_
#----- End of commondefs -----