diff --git a/build/buildtools/commondefs b/build/buildtools/commondefs index ee1ffbd..50873a8 100644 --- a/build/buildtools/commondefs +++ b/build/buildtools/commondefs @@ -111,7 +111,7 @@ TWL_TOOLSDIR := $(TWL_ROOT)/tools TWL_COMPONENTSDIR := $(TWL_ROOT)/components TWL_ADDINS ?= $(TWL_ROOT)/add-ins -TWL_NITROSDK_ROOT ?=$(shell cygpath -w $(NITROSDK_ROOT)) +TWL_NITROSDK_ROOT ?= $(subst $(SPACE),\ ,$(subst \,/,$(NITROSDK_ROOT))) TWL_BUILDARCH ?= $(TWL_CODEGEN_PROC)-$(TWL_PLATFORM)$(TWL_CODEGEN_ARCH) TWL_BUILDARCH_ARM9 := ARM9-$(TWL_PLATFORM)$(TWL_CODEGEN_ARCH) diff --git a/build/buildtools/modulerules b/build/buildtools/modulerules index 217250f..12ead4e 100644 --- a/build/buildtools/modulerules +++ b/build/buildtools/modulerules @@ -1,9 +1,9 @@ #! make -f #---------------------------------------------------------------------------- -# Project: TwlSDK - modulerules - common rules for build system +# Project: NitroSDK - modulerules - common rules for build system # File: modulerules # -# Copyright 2007 Nintendo. All rights reserved. +# Copyright 2003-2005 Nintendo. All rights reserved. # # These coded instructions, statements, and computer programs contain # proprietary information of Nintendo of America Inc. and/or Nintendo @@ -11,30 +11,686 @@ # 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: $ +# $Log: modulerules,v $ +# Revision 1.93 2005/08/23 05:17:27 yasu +# make clobber 時に不要な削除を行なっていたことの修正 +# +# Revision 1.92 2005/07/29 02:22:41 yasu +# EDIRT_CLOBBER/CLEAN の追加 +# +# Revision 1.91 2005/07/21 11:55:21 yasu +# EDEPENDS_NEF/BIN を追加 +# +# Revision 1.90 2005/07/14 08:57:14 yasu +# makebanner 関連のコマンドを NITRO_FORCE_BUILD のスコープ外に出す +# +# Revision 1.89 2005/07/14 07:58:45 yasu +# SDK_FORCE_BUILD で不要な比較をやめる +# +# Revision 1.88 2005/07/08 01:26:14 yasu +# full ビルド時に時間を出力するように修正 +# +# Revision 1.87 2005/06/24 02:16:18 yasu +# add-ins の読み込み処理を追加 +# +# Revision 1.86 2005/04/05 23:52:58 yosizaki +# fix copyright date. +# +# Revision 1.85 2005/04/05 11:29:45 yosizaki +# add NITRO_ROMSPEED. +# +# Revision 1.84 2004/12/27 01:34:46 yasu +# fix around NITRO_CODEGEN_ALL +# +# Revision 1.83 2004/10/08 06:01:58 yasu +# add full-install +# +# Revision 1.82 2004/09/17 09:37:22 yasu +# Add addbanner and makebanner-default +# +# Revision 1.81 2004/09/10 02:16:48 yasu +# Error fix in DO_INSTALL +# +# Revision 1.80 2004/09/10 01:24:57 yasu +# Add '+' mark to support 'make -n' +# Fix for building ferret +# +# Revision 1.79 2004/09/09 11:41:32 yasu +# Support NITRO_DIGEST +# +# Revision 1.78 2004/09/09 02:37:14 yasu +# Show $(MAKEFILE) if using non-default-Makefile +# +# Revision 1.77 2004/09/09 01:23:48 yasu +# Fix '-s/-w/-k' option searching method +# +# Revision 1.77 2004/09/09 00:53:08 yasu +# 文面修正 +# +# Revision 1.76 2004/09/08 11:55:10 yasu +# fix around make full with $(AND) +# +# Revision 1.75 2004/09/08 00:12:34 yasu +# NITRO_STDOUT moves to commondefs +# +# Revision 1.74 2004/09/08 00:06:26 yasu +# Set NITRO_STDOUT to '> /dev/null' if -s option defined +# +# Revision 1.73 2004/09/04 01:25:06 yasu +# Support "make super-full-install" +# +# Revision 1.72 2004/09/01 09:09:31 miya +# add TARGET_SIGN_BIN +# +# Revision 1.71 2004/08/27 09:22:22 yasu +# Fix around NITRO_CODEGEN_ALL +# +# Revision 1.70 2004/07/19 02:50:34 yasu +# Support super-full and super-clobber to build on all platforms +# +# Revision 1.69 2004/07/19 00:45:04 yasu +# Fix build error on Mingw +# Always build TS version on make full +# +# Revision 1.68 2004/07/17 09:39:55 yasu +# Check modification time on install +# +# Revision 1.67 2004/07/17 07:51:54 yasu +# Rollback +# +# Revision 1.66 2004/07/17 07:21:42 yasu +# Check time stamp to skip installing +# +# Revision 1.65 2004/07/15 13:19:50 yasu +# Fix target 'makefull' again +# +# Revision 1.64 2004/07/15 06:46:10 yasu +# Fix target 'makefull' +# +# Revision 1.63 2004/07/14 11:53:34 yasu +# Support NITRO_CODEGEN=ALL +# +# Revision 1.62 2004/07/10 04:56:05 yasu +# Support USE_MY_RULE_BIN and Clean up around makerom +# +# Revision 1.61 2004/07/10 04:20:41 yasu +# Use response file to support overlay group. +# Support SRCS_AUTOLOAD +# +# Revision 1.60 2004/07/06 04:04:23 yasu +# Support makerom -F option +# +# Revision 1.59 2004/07/01 09:41:02 yasu +# add TARGET_ROM +# +# Revision 1.58 2004/07/01 02:19:09 yasu +# support srl making rules +# +# Revision 1.57 2004/06/28 10:49:40 yasu +# No exec makedir without newdir +# +# Revision 1.56 2004/06/25 11:41:52 yasu +# Exec linker whenever no SRCS defined +# +# Revision 1.55 2004/06/23 05:41:07 yasu +# Add more information when make full +# +# Revision 1.54 2004/06/23 01:32:40 terui +# make full 時にARM、THUMBの順にビルドするよう変更。 +# +# Revision 1.53 2004/06/21 00:38:54 yasu +# In 'make full', change build order like as 1)finalrom, 2)release, 3)debug. +# +# Revision 1.52 2004/04/20 07:53:57 yasu +# Change build sequence like as RELEASE, DEBUG then FINALROM at 'make full' +# +# Revision 1.51 2004/04/20 03:49:38 yasu +# add LDEPENDS_BIN/NEF for dependancies +# +# Revision 1.50 2004/04/14 11:28:48 yasu +# support suffiex on MAKEROM_ARMx +# +# Revision 1.49 2004/04/09 11:04:43 yasu +# support MAKEROM_FLAGS +# +# Revision 1.48 2004/04/09 05:44:22 yasu +# Hide TS build rule +# +# Revision 1.47 2004/04/06 06:37:14 yasu +# add default options for makerom +# +# Revision 1.46 2004/04/06 04:55:53 yasu +# add more variables for default makerom option +# +# Revision 1.45 2004/04/03 06:35:42 yasu +# fix mistakes when merging with branch +# +# Revision 1.44 2004/04/03 06:31:26 yasu +# small change for MAKEROM +# +# Revision 1.43 2004/04/02 01:36:33 yasu +# guard against re-including +# +# Revision 1.42 2004/03/30 07:16:48 yasu +# fix autotest log sequence +# +# Revision 1.41 2004/03/26 13:12:15 yasu +# fully support makerom +# +# Revision 1.40 2004/03/10 12:26:56 yasu +# support SUBMAKES (Makefile recursive call) with directory +# +# Revision 1.39 2004/02/28 09:48:16 yasu +# append SUBMAKES +# +# Revision 1.38 2004/02/25 12:44:50 yasu +# Add dynamic dependancies rule instead of makefile.src +# +# Revision 1.37 2004/02/23 05:01:38 yasu +# axf->nef +# +# Revision 1.36 2004/02/19 02:01:57 yasu +# fix building Makefile.srcs +# +# Revision 1.35 2004/02/19 01:45:18 yasu +# fix condition of include Makefile.srcs +# +# Revision 1.34 2004/02/18 13:06:17 yasu +# rollback to 1.30 +# +# Revision 1.33 2004/02/17 13:16:23 yasu +# Don't make run if no binary +# +# Revision 1.32 2004/02/17 12:55:30 yasu +# support wildcard for make install +# +# Revision 1.31 2004/02/17 09:25:46 yasu +# reduce recursive call of make command as possible +# +# Revision 1.30 2004/02/16 10:19:17 yasu +# fix in target full +# +# Revision 1.29 2004/02/16 01:24:24 yasu +# support file dependancies +# +# Revision 1.28 2004/02/14 06:44:21 yasu +# workaround ELFTOBIN +# +# Revision 1.27 2004/02/13 10:15:38 yasu +# support ARM7 build setting with elftobin +# +# Revision 1.26 2004/02/09 13:14:33 yasu +# fix for NITRO_CODEGEN +# +# Revision 1.25 2004/02/09 11:05:32 kitani_toshikazu +# Work around IS-IRIS-EMU => IS=NITRO-EMU. +# +# Revision 1.24 2004/02/06 12:41:52 yasu +# add do-autotest-test +# +# Revision 1.23 2004/02/06 11:55:00 kitani_toshikazu +# Remove the TARGET_BIN condition for enabling autoTest log file setting. +# +# Revision 1.22 2004/02/06 09:19:53 kitani_toshikazu +# Fix a bug around autoTest. +# +# Revision 1.21 2004/02/06 01:06:05 yasu +# add command for autotest +# +# Revision 1.20 2004/02/05 07:29:20 yasu +# rollback IS_NITRO_SDK -> IS_IRIS_SDK +# +# Revision 1.19 2004/02/05 07:09:01 yasu +# change SDK prefix iris -> nitro +# +# Revision 1.18 2004/02/03 10:46:21 yasu +# Workaround for SHELL=/bin/sh +# +# Revision 1.17 2004/02/03 07:37:04 yasu +# Add target "autotest" +# +# Revision 1.16 2004/01/30 13:29:11 yasu +# delete all installed target by 'make clobber' +# +# Revision 1.15 2004/01/19 06:52:54 yasu +# Add comments +# +# Revision 1.14 2004/01/15 10:49:31 yasu +# support overlay +# +# Revision 1.13 2003/12/29 01:37:16 yasu +# Support a target "make run" +# +# Revision 1.12 2003/12/10 23:57:30 yasu +# SRCS が定義されていないときは Makefile.srcs を作成しないようにした +# +# Revision 1.11 2003/12/10 05:12:48 yasu +# ソースファイル指定に xxxx/src.c の形式を使えるように変更 +# Makefile.srcs の追加 +# IS_NITRO_DIR が定義してある場合に IS Debugger ライブラリをリンクするよう修正 +# +# Revision 1.10 2003/12/02 02:40:23 yasu +# IS-NITRO-EMULATOR 用ライブラリの定義追加 +# +# Revision 1.9 2003/11/29 04:06:24 yasu +# make full の追加 +# +# Revision 1.8 2003/11/05 09:57:12 yasu +# make の -k オプションを有効にした +# NITRO_INC_DIR -> NITRO_INCDIR の修正 +# +# Revision 1.7 2003/11/05 08:42:37 yasu +# build が error で停止する様にした. +# make -i で error を無視する. +# +# Revision 1.6 2003/11/05 07:13:21 yasu +# SRCS の依存ルール追加 +# +# Revision 1.5 2003/10/30 06:10:08 yasu +# SUFFIXES ルールの設定 +# +# Revision 1.4 2003/10/30 05:51:00 yasu +# .PHONY: の追加 +# +# Revision 1.3 2003/10/30 04:46:49 yasu +# do-build/do-install の追加とそれに伴う修正 +# +# Revision 1.2 2003/10/29 13:25:40 yasu +# make の伝播のフレームワーク完成 +# all/install/clean/clobber が使える +# +# Revision 1.1 2003/10/29 06:47:28 yasu +# Support "make clean/clobber" only +# # $NoKeywords: $ #---------------------------------------------------------------------------- -ifndef TWLSDK_MODULERULES_ +ifndef NITROSDK_MODULERULES_ #---------------------------------------------------------------------------- -### NITRO-modulerules +# Implicit RULES +#---------------------------------------------------------------------------- +.SUFFIXES: # Delete all suffix rules + +ifneq ($(NITRO_FORCE_BUILD),) + +# yutaka +#VPATH = $(SRCDIR) +vpath %c $(foreach dir,$(SRCDIR),$(shell cygpath -u $(dir))) + +# ...CW style +#CYGDRV ?= $(shell cygpath -u c:)/.. +#ASRCDIR = $(subst : ,,$(patsubst %:,$(CYGDRV)/%:,$(subst :,: ,$(SRCDIR)))) +#vpath %c $(ASRCDIR) + +SSRCFILES = $(addprefix $(OBJDIR)/,$(notdir $(SRCS))) +ASRCFILES = $(addprefix $(OBJDIR)/,$(notdir $(SRCS_AUTOLOAD))) +VSRCFILES = $(addprefix $(OBJDIR)/,$(notdir $(SRCS_OVERLAY))) + +SOBJS_CC = $(filter %.o,$(SSRCFILES:.c=.o)) +SOBJS_AS = $(filter %.o,$(SSRCFILES:.s=.o)) +SOBJS_CXX = $(filter %.o,$(SSRCFILES:.cpp=.o)) +AOBJS_CC = $(filter %.o,$(ASRCFILES:.c=.o)) +AOBJS_AS = $(filter %.o,$(ASRCFILES:.s=.o)) +AOBJS_CXX = $(filter %.o,$(ASRCFILES:.cpp=.o)) +VOBJS_CC = $(filter %.o,$(VSRCFILES:.c=.o)) +VOBJS_AS = $(filter %.o,$(VSRCFILES:.s=.o)) +VOBJS_CXX = $(filter %.o,$(VSRCFILES:.cpp=.o)) + +OBJS_CC = $(SOBJS_CC) $(AOBJS_CC) $(VOBJS_CC) +OBJS_AS = $(SOBJS_AS) $(AOBJS_AS) $(VOBJS_AS) +OBJS_CXX = $(SOBJS_CXX) $(AOBJS_CXX) $(VOBJS_CXX) +OBJS_STATIC = $(SOBJS_CC) $(SOBJS_AS) $(SOBJS_CXX) $(EXT_OBJS) +OBJS_AUTOLOAD = $(AOBJS_CC) $(AOBJS_AS) $(AOBJS_CXX) $(EXT_OBJS_AUTOLOAD) +OBJS_OVERLAY = $(VOBJS_CC) $(VOBJS_AS) $(VOBJS_CXX) $(EXT_OBJS_OVERLAY) +OBJS = $(OBJS_STATIC) $(OBJS_AUTOLOAD) $(OBJS_OVERLAY) + +# yutaka +#-include $(NITRO_BUILDTOOLSDIR)/modulerules.cctype.$(NITRO_CCTYPE) +-include $(TWL_BUILDTOOLSDIR)/modulerules.cctype.$(NITRO_CCTYPE) + +# Common Rules + +# .bin .srl +ifdef NITRO_MAKEROM +# +# MAKEROM # -include $(NITROSDK_ROOT)/build/buildtools/modulerules -.PHONY: twllib +ROM_SPEC ?= $(DEFAULT_ROM_SPEC) +MAKEROM_ARM9 ?= $(DEFAULT_MAKEROM_ARM9) +MAKEROM_ARM7 ?= $(DEFAULT_MAKEROM_ARM7) +MAKEROM_ROMROOT ?= $(DEFAULT_MAKEROM_ROMROOT) +MAKEROM_ROMFILES ?= $(DEFAULT_MAKEROM_ROMFILES) +MAKEROM_ROMSPEED ?= $(DEFAULT_MAKEROM_ROMSPEED) +MAKEROM_FLAGS ?= +MAKEROM_FLAGS += $(if $(NITRO_FINALROM),,-F) -twllib: - @$(MAKE) -C $(TWLSDK_ROOT)/build/libraries +MAKEROM_DEFS = -DNITROSDK_ROOT='$(ROOT)' \ + -DTARGET_NAME='$(TARGET_NAME)' \ + -DMAKEROM_ROMROOT='$(MAKEROM_ROMROOT)' \ + -DMAKEROM_ROMFILES='$(MAKEROM_ROMFILES)' \ + -DMAKEROM_ROMSPEED='$(MAKEROM_ROMSPEED)' \ + -DBINDIR='$(BINDIR)' \ + -DCOMPDIR='$(NITRO_COMPONENTSDIR)' \ + -DCOMPTYPE9='$(NITRO_BUILDTYPE_ARM9)' \ + -DCOMPTYPE7='$(NITRO_BUILDTYPE_ARM7)' \ + -DPROC='$(CODEGEN_PROC)' \ + -DPLATFORM='$(NITRO_PLATFORM)' \ + -DCODEGEN='$(CODEGEN_ARCH)' \ + -DBUILD='$(NITRO_BUILD_DIR)' \ + -DCOMPSUFFIX9='$(COMPSUFFIX)' \ + -DCOMPSUFFIX7='' -# .axf -$(BINDIR)/$(TARGET_BIN_BASENAME).axf: $(OBJS) $(LCFILE) $(MAKEFILE) $(LDEPENDS_NEF) $(EDEPENDS_NEF) $(ALIBRARIES) $(LDRES_FILE) $(CW_LIBCXX) -ifeq ($(NITRO_CCTYPE),RVCT) - $(LD) $(LDFLAGS) $(LIBRARY_DIRS) -o $@ $(GLIBRARIES) $(OBJS) +TARGET_ROM = $(strip $(findstring .srl,$(TARGET_BIN)) \ + $(findstring .bin,$(TARGET_BIN))) + +ifneq ($(strip $(OBJS) $(LLIBRARIES)),) # any object? +ifeq ($(CODEGEN_PROC),ARM9) +SDEPENDS_BIN = $(BINDIR)/%.nef $(MAKEROM_ARM7) +MAKEROM_DEFS += -DMAKEROM_ARM9='$(basename $@)' \ + -DMAKEROM_ARM7='$(basename $(MAKEROM_ARM7))' +else # !ARM9 +SDEPENDS_BIN = $(BINDIR)/%.nef $(MAKEROM_ARM9) +MAKEROM_DEFS += -DMAKEROM_ARM9='$(basename $(MAKEROM_ARM9))' \ + -DMAKEROM_ARM7='$(basename $@)' +endif # -ARM9 +else # !OBJS !LLIBRARIES +SDEPENDS_BIN = $(MAKEROM_ARM9) $(MAKEROM_ARM7) +MAKEROM_DEFS += -DMAKEROM_ARM9='$(basename $(MAKEROM_ARM9))' \ + -DMAKEROM_ARM7='$(basename $(MAKEROM_ARM7))' +endif # -OBJS -LLIBRARIES + +ifndef USE_MY_RULE_BIN +$(BINDIR)/%.bin $(BINDIR)/%.srl: $(SDEPENDS_BIN) $(ROM_SPEC) $(LDEPENDS_BIN) $(EDEPENDS_BIN) + $(MAKEROM) $(MAKEROM_FLAGS) $(MAKEROM_DEFS) $(ROM_SPEC) $@ +endif # -USE_MY_RULE_BIN + +$(BINDIR)/$(TARGET_SIGN_BIN): $(BINDIR)/$(TARGET_BIN) + $(NITROSDK_ROOT)/tools/bin/attachsign.exe -D $(addprefix $(BINDIR)/,$(TARGET_BIN)) + +else # !NITRO_MAKEROM +# +# ELFTOBIN +# +ifndef USE_MY_RULE_BIN +ifeq ($(CODEGEN_PROC),ARM9) +$(BINDIR)/%.bin $(BINDIR)/%.srl: $(BINDIR)/%.nef $(LDEPENDS_BIN) $(EDEPENDS_BIN) + $(ELFTOBIN) $< $(ELFTOBIN_ARM7) $(ELFTOBIN_ROMHEADER) -o $@ +else # !ARM9 +$(BINDIR)/%.bin $(BINDIR)/%.srl: $(BINDIR)/%.nef $(LDEPENDS_BIN) $(EDEPENDS_BIN) + $(ELFTOBIN) $(ELFTOBIN_ARM9) $< $(ELFTOBIN_ROMHEADER) -o $@ +endif # -ARM9 +endif # -USE_MY_RULE_BIN +endif # -NITRO_MAKEROM + +endif # -NITRO_FORCE_BUILD + +# .bnr .bsf +%.bnr: %.bsf + $(MAKEBANNER) $(MAKEBANNER_FLAGS) $< $@ + +%.nbfc %.nbfp: %.bmp + $(NTEXCONV) -no -bg -bgb -bgnc $< >/dev/null + +#---------------------------------------------------------------------------- +# MAKE TARGETS +#---------------------------------------------------------------------------- + +.PHONY: all default build install clean clobber full super-full + +BUILDCMDS = all default build + +#---------------------------------------------------------------------------- +SUBDIR_FLAGS += $(if $(NITRO_CODEGEN_ALL),NITRO_CODEGEN_ALL=False) + +define MAKE_SUBDIR + +$(foreach DIR,$(SUBDIRS),$(MAKE) $(SUBDIR_FLAGS) -C $(DIR) $(MAKECMDGOALS) $(AND)) true + +$(foreach FILE,$(SUBMAKES),$(MAKE) $(SUBDIR_FLAGS) -C $(dir $(FILE)) -f $(notdir $(FILE)) $(MAKECMDGOALS) $(AND)) true +endef + +ifeq ($(MAKEFILE),Makefile) +MAKEFILE_ = else - $(LD) $(LDFLAGS) $(LIBRARY_DIRS) @$(LDRES_FILE) $(LCFILE) -o $@ +MAKEFILE_ = /$(MAKEFILE) +endif + +define ECHO_CURDIR + $(ECHO) "==== $(CURDIR)$(MAKEFILE_)"; +endef + +define DO_INSTALL_FILES + $(INSTALL) -d $(1) $(AND) \ + $(foreach FILE, $(2), \ + if [ ! -e $(1)/$(notdir $(FILE)) -o \ + $(FILE) -nt $(1)/$(notdir $(FILE)) ]; \ + then \ + $(ECHO) " install: $(FILE) -> $(1)" $(AND) \ + $(INSTALL) $(FILE) $(1)/$(notdir $(FILE)); \ + fi $(AND) ) true +endef + +DO_INSTALL = $(call DO_INSTALL_FILES,$(INSTALL_DIR),$(INSTALL_TARGETS)) + +INSTALL_INDEX_SRC = $(firstword $(INSTALL_TARGETS)) +INSTALL_INDEX_DEST = $(INSTALL_DIR)/$(notdir $(INSTALL_INDEX_SRC)) + +define DO_INSTALL_WILDCARD + $(INSTALL) -d $(INSTALL_DIR) $(AND) \ + if [ ! -e $(INSTALL_INDEX_DEST) -o \ + $(INSTALL_INDEX_SRC) -nt $(INSTALL_INDEX_DEST) ]; \ + then \ + $(foreach FILE, $(INSTALL_TARGETS), \ + $(ECHO) " install: $(FILE) -> $(INSTALL_DIR)" $(AND) \ + $(INSTALL) $(FILE) $(INSTALL_DIR) $(AND) ) true; \ + fi +endef + +#---------------------------------------------------------------------------- +# make parallelly +#---------------------------------------------------------------------------- + +SUBDIRS_PREFIX = make-subdir-p- +SUBDIRS_PARALLEL = $(addprefix $(SUBDIRS_PREFIX),$(SUBDIRS_P)) + +$(SUBDIRS_PARALLEL):$(SUBDIRS_PREFIX)%: + $(MAKE) -C $(*F) $(MAKECMDGOALS) + +#---------------------------------------------------------------------------- +# make build +#---------------------------------------------------------------------------- +.PHONY: do-build + +build: + @$(MAKE_SUBDIR) + @$(ECHO_CURDIR) +ifneq ($(strip $(NEWDIRS)),) + @$(MKDIRP) $(NEWDIRS) +endif + @+$(REMAKE) do-build +ifdef INSTALL_TARGETS + @$(DO_INSTALL) +endif +ifeq ($(NITRO_CODEGEN_ALL),True) +ifeq ($(NITRO_CODEGEN),ARM) + @+$(REMAKE) NITRO_CODEGEN_ALL=False NITRO_CODEGEN=THUMB build +endif +endif + + +#---------------------------------------------------------------------------- +# make install +#---------------------------------------------------------------------------- + +install: + @$(MAKE_SUBDIR) + @$(ECHO_CURDIR) +ifdef INSTALL_TARGETS + @$(DO_INSTALL) +endif +ifeq ($(NITRO_CODEGEN_ALL),True) +ifeq ($(NITRO_CODEGEN),ARM) + @+$(REMAKE) NITRO_CODEGEN_ALL=False NITRO_CODEGEN=THUMB install +endif +endif + + +#---------------------------------------------------------------------------- +# make full +#---------------------------------------------------------------------------- + +define makefull + @echo [[[ make full $(1) $(CURDIR) ]]] + @+unset NITRO_DEBUG NITRO_RELEASE NITRO_FINALROM NITRO_CODEGEN_ALL; \ + $(foreach b,FINALROM RELEASE DEBUG, \ + $(foreach a,ARM THUMB, \ + date "+::: %Y/%m/%d %H:%M:%S $a-$b" $(AND) \ + $(REMAKE) NITRO_$b=TRUE NITRO_CODEGEN=$a NITRO_CODEGEN_ALL=False $(1) $(AND) \ + ) \ + ) true +endef + +full: + $(call makefull,build) + +full-install: + $(call makefull,install) + +#---------------------------------------------------------------------------- +# make super-full +#---------------------------------------------------------------------------- + +define makesuperfull + @echo [[[ make super-full $(1) $(CURDIR) ]]] + @+unset NITRO_DEBUG NITRO_RELEASE NITRO_FINALROM NITRO_CODEGEN_ALL; \ + $(foreach p,TS TEG, \ + $(foreach b,FINALROM RELEASE DEBUG, \ + $(foreach a,ARM THUMB, \ + date "+::: %Y/%m/%d %H:%M:%S $a-$b" $(AND) \ + $(REMAKE) NITRO_$b=TRUE NITRO_PLATFORM=$p NITRO_CODEGEN=$a NITRO_CODEGEN_ALL=False $(1) $(AND) \ + )\ + )\ + ) true +endef + +super-full: + $(call makesuperfull,build) + +super-full-install: + $(call makesuperfull,install) + +#---------------------------------------------------------------------------- +# Autotest using IS-NITRO-EMULATOR +#---------------------------------------------------------------------------- +ifdef IS_NITRO_DIR + +AUTOTESTLOG := $(ROOT)/autotest.log + +.PHONY: autotest do-autotest do-autotest-test + +autotest: + @+$(REMAKE) clobber + @+$(REMAKE) build NITRO_AUTOTEST=TRUE + @$(RM) $(AUTOTESTLOG) + @+$(REMAKE) do-autotest + @$(SED) -e 's/\r//g;s/$$/\r/g;' $(AUTOTESTLOG) > $(AUTOTESTLOG).tmp + @$(MV) $(AUTOTESTLOG).tmp $(AUTOTESTLOG) + +do-autotest: + @$(MAKE_SUBDIR) + @$(ECHO_CURDIR) +ifneq ($(TARGET_ROM),) + @+$(REMAKE) test-run +endif +endif + + +#---------------------------------------------------------------------------- +# make clobber & clean +#---------------------------------------------------------------------------- +.PHONY: clobber-installed + +clobber: + @$(MAKE_SUBDIR) + @$(ECHO_CURDIR) + -$(RM) $(GDIRT_CLEAN) $(LDIRT_CLEAN) $(EDIRT_CLEAN) + -$(RM) $(GDIRT_CLOBBER) $(LDIRT_CLOBBER) $(EDIRT_CLOBBER) +ifneq ($(GDIRT_INSTALLED),) +ifneq ($(NITRO_FORCE_BUILD),) + $(call makefull,clobber-installed) +else + @+$(REMAKE) clobber-installed +endif +endif + +clobber-installed: + -$(RM) $(GDIRT_INSTALLED) + + +#---------------------------------------------------------------------------- + +super-clobber: + @$(MAKE_SUBDIR) + @$(ECHO_CURDIR) + -$(RM) $(GDIRT_CLEAN) $(LDIRT_CLEAN) $(EDIRT_CLEAN) + -$(RM) $(GDIRT_CLOBBER) $(LDIRT_CLOBBER) $(EDIRT_CLOBBER) +ifneq ($(GDIRT_INSTALLED),) + $(call makesuperfull,clobber-installed) +endif + + +#---------------------------------------------------------------------------- + +clean: + @$(MAKE_SUBDIR) + @$(ECHO_CURDIR) + -$(RM) $(GDIRT_CLEAN) $(LDIRT_CLEAN) $(EDIRT_CLEAN) + + +#---------------------------------------------------------------------------- +# source file dependancies +#---------------------------------------------------------------------------- + +# +# dynamic dependancy generation +# like as $(OBJDIR)/main.o: main.c +# +DEP_SRCS_ALL = $(SRCS) $(SRCS_AUTOLOAD) $(SRCS_OVERLAY) + +define RuleCtoObj +$$(OBJDIR)/$$(notdir $$(basename $(1))).o: $(1) + +endef +endif # NITROSDK_MODULERULES_ + +# Put this sentance out of include-guard to avoid $(eval xxx) limitation +$(foreach FILE,$(DEP_SRCS_ALL),$(eval $(call RuleCtoObj,$(FILE)))) + + +ifndef NITROSDK_MODULERULES_ +# +# include dependancies file +# +ifeq ($(MAKECMDGOALS),do-build) +ifdef SRCS +-include $(DEPENDDIR)/*.d +endif endif #---------------------------------------------------------------------------- -TWLSDK_MODULERULES_ = TRUE -endif # TWLSDK_MODULERULES_ +# for IS-NITRO-EMULATOR +#---------------------------------------------------------------------------- +ifdef IS_NITRO_DIR +-include $(NITRO_BUILDTOOLSDIR)/modulerules.emtype.ISD +endif + +#---------------------------------------------------------------------------- +# Load add-ins' modulerules +#---------------------------------------------------------------------------- +-include $(NITRO_BUILDTOOLSDIR)/modulerules.add-ins.* +# yutaka +-include $(TWL_BUILDTOOLSDIR)/modulerules.add-ins.* + +#---------------------------------------------------------------------------- +NITROSDK_MODULERULES_ = TRUE +endif # NITROSDK_MODULERULES_ #----- End of modulerules ----- diff --git a/build/buildtools/modulerules.add-ins.twl b/build/buildtools/modulerules.add-ins.twl new file mode 100644 index 0000000..e2f8622 --- /dev/null +++ b/build/buildtools/modulerules.add-ins.twl @@ -0,0 +1,36 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlSDK - modulerules - common rules for build system +# File: modulerules +# +# Copyright 2007 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 TWLSDK_MODULERULES_ + +#---------------------------------------------------------------------------- +.PHONY: twllib + +twllib: + @$(MAKE) -C $(TWLSDK_ROOT)/build/libraries + +# .axf +$(BINDIR)/$(TARGET_BIN_BASENAME).axf: $(OBJS) $(LCFILE) $(MAKEFILE) $(LDEPENDS_NEF) $(EDEPENDS_NEF) $(ALIBRARIES) $(LDRES_FILE) $(CW_LIBCXX) +ifeq ($(NITRO_CCTYPE),RVCT) + $(LD) $(LDFLAGS) $(LIBRARY_DIRS) -o $@ $(GLIBRARIES) $(OBJS) +else + $(LD) $(LDFLAGS) $(LIBRARY_DIRS) @$(LDRES_FILE) $(LCFILE) -o $@ +endif + +#---------------------------------------------------------------------------- +TWLSDK_MODULERULES_ = TRUE +endif # TWLSDK_MODULERULES_ +#----- End of modulerules ----- diff --git a/build/buildtools/modulerules.cctype.CW b/build/buildtools/modulerules.cctype.CW new file mode 100644 index 0000000..6db5a62 --- /dev/null +++ b/build/buildtools/modulerules.cctype.CW @@ -0,0 +1,549 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: NitroSDK - buildtools - compiler dependant settings for CodeWarrior +# File: modulerules.cctype.CW +# +# Copyright 2003-2006 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: modulerules.cctype.CW,v $ +# Revision 1.71 2006/06/06 04:39:45 okubata_ryoma +# CWのコンパイラとリンカのバージョン情報を追記 +# +# Revision 1.70 2006/06/06 04:32:06 yasu +# build バージョンで 2〜3桁の場合は、100 倍する +# +# Revision 1.69 2006/06/06 01:02:28 yasu +# build バージョンにおいて小数点以下の値を拾うように変更 +# +# Revision 1.68 2006/05/10 02:07:35 yasu +# makelcf の -V オプションの対応 +# +# Revision 1.67 2006/05/01 01:15:43 okubata_ryoma +# CWバージョン比較方法の変更にともなう変更 +# +# Revision 1.66 2006/03/20 08:01:28 okubata_ryoma +# sed コマンドのバージョンによるビルドエラーを防ぐための修正 +# +# Revision 1.65 2006/02/21 00:11:15 okubata_ryoma +# Copyright fix +# +# Revision 1.64 2006/02/13 08:32:39 okubata_ryoma +# CW2.0betaへの対応 +# +# Revision 1.63 2005/09/17 06:17:51 yasu +# コンパイラのバージョン情報処理の修正 +# +# Revision 1.62 2005/09/17 04:56:24 yasu +# コンパイラのバージョン情報の更新 +# +# Revision 1.61 2005/08/23 05:12:25 yasu +# precompile ヘッダ作成時に SDK 関連でない -D オプションを排除する +# +# Revision 1.60 2005/08/08 00:06:56 yasu +# mongoose のビルド対策のため TARGET_BIN_BASENAME を定義し、TARGET_NAME と使い分ける +# +# Revision 1.59 2005/08/07 13:15:48 yasu +# ライブラリパスを vpath に設定 +# +# Revision 1.58 2005/07/26 07:29:58 yasu +# プリコンパイルヘッダのキャッシュ位置を変更した +# +# Revision 1.57 2005/07/26 00:40:56 seiki_masashi +# プリコンパイルヘッダの作成時に -include をダミーに置換 +# +# Revision 1.56 2005/07/25 05:02:02 yasu +# PCH の削除のトリガを make clean から make clobber に変更 +# +# Revision 1.55 2005/07/25 01:31:12 yasu +# .pch -> .mch への変更 +# +# Revision 1.54 2005/07/21 11:55:21 yasu +# EDEPENDS_NEF/BIN を追加 +# +# Revision 1.53 2005/07/14 05:11:49 yasu +# プリコンパイルヘッダを C と C++ で分別する +# +# Revision 1.52 2005/07/14 02:27:36 yasu +# NITRO_STD_PCHDR をモジュール毎に抑制できる仕組みの追加 +# +# Revision 1.51 2005/07/11 06:12:37 yasu +# pch ファイルの依存関係のチェックの追加 +# +# Revision 1.50 2005/07/08 13:25:23 yasu +# プリコンパイルヘッダのテストサポート +# +# Revision 1.49 2005/06/22 09:40:07 yasu +# ELIBRARIES のサポート +# +# Revision 1.48 2005/06/02 00:10:41 seiki_masashi +# copyright 表記の修正 +# +# Revision 1.47 2005/06/01 07:33:30 seiki_masashi +# #include のサーチパスの先頭に呼び出し元ファイルのあるディレクトリを追加 +# +# Revision 1.46 2004/12/27 03:51:22 yasu +# Change CC->MWCC , AS->MWAS, LD->MWLD and AR->MWAR +# +# Revision 1.45 2004/11/05 06:42:09 yasu +# Add version info for CW NITRO V1.0 +# +# Revision 1.44 2004/10/03 02:04:03 yasu +# Support component file list for compstatic tool +# +# Revision 1.43 2004/09/17 03:35:34 yasu +# Invalidate NITRO_COMPRESS for ARM7 build +# +# Revision 1.42 2004/09/09 11:41:32 yasu +# Support NITRO_DIGEST +# +# Revision 1.41 2004/09/08 00:06:26 yasu +# Set NITRO_STDOUT to '> /dev/null' if -s option defined +# +# Revision 1.40 2004/09/06 05:34:38 yasu +# Add -a option on compstatic +# +# Revision 1.39 2004/09/06 01:08:41 yasu +# Add -c option on compstatic +# +# Revision 1.38 2004/09/04 12:37:52 yasu +# Add OverlayTable for compstatic tool +# +# Revision 1.37 2004/09/01 07:30:03 yasu +# Support NITRO_COMPRESS +# +# Revision 1.36 2004/08/10 14:18:48 yasu +# Add dependancies for makelcf +# +# Revision 1.35 2004/08/10 00:13:46 yasu +# Support CodeWarrior 0.6.1 +# +# Revision 1.34 2004/07/26 08:11:08 yasu +# Rename ADDRESS_ARM7 -> ADDRESS_DTCM +# +# Revision 1.33 2004/07/26 04:59:02 yasu +# Add ADDRESS_ARM7 on makelcf +# +# Revision 1.32 2004/07/18 12:20:05 yasu +# Change ["] -> ['] of MAKELCF_DEFS for Mingw +# +# Revision 1.31 2004/07/18 06:10:46 yasu +# show makelcf command line on making *.autogen.lcf +# +# Revision 1.30 2004/07/13 12:34:19 yasu +# Check libcxx workaround on invoking linker +# +# Revision 1.29 2004/07/10 04:55:30 yasu +# support USE_MY_RULE_A, USE_MY_RULE_NEF +# +# Revision 1.28 2004/07/10 04:20:23 yasu +# Use response file to support overlay group +# +# Revision 1.27 2004/06/28 10:52:11 yasu +# Delete group setting +# +# Revision 1.26 2004/05/01 06:10:33 yada +# add build number rule for CW0.5 +# +# Revision 1.25 2004/04/21 11:22:06 yasu +# Support codecheck as workaround for blxeq/ne problem +# +# Revision 1.24 2004/04/20 03:49:38 yasu +# add LDEPENDS_BIN/NEF for dependancies +# +# Revision 1.23 2004/04/14 10:14:53 yasu +# delete LIBRARIES_STATIC +# +# Revision 1.22 2004/04/03 08:43:35 yasu +# with MINGW, support detect CW versions +# +# Revision 1.21 2004/04/03 08:01:43 yasu +# auto-detect CW verinfo and switch strb parameters +# +# Revision 1.20 2004/04/01 12:54:38 yasu +# support LIBRARIES_STATIC for makerom +# +# Revision 1.19 2004/03/23 09:28:57 yasu +# add $(MAKEFILE) for dependancy list of %.nef +# +# Revision 1.18 2004/03/18 02:29:44 yasu +# change condition to switch rom packing method (makerom or elftobin) +# +# Revision 1.17 2004/02/23 05:01:38 yasu +# axf->nef +# +# Revision 1.16 2004/02/17 09:22:48 yasu +# support dependancies with MinGW +# +# Revision 1.15 2004/02/16 01:24:24 yasu +# support file dependancies +# +# Revision 1.14 2004/02/05 07:09:01 yasu +# change SDK prefix iris -> nitro +# +# Revision 1.13 2004/01/15 10:49:31 yasu +# support overlay +# +# Revision 1.12 2003/12/10 05:12:48 yasu +# ソースファイル指定に xxxx/src.c の形式を使えるように変更 +# Makefile.srcs の追加 +# IS_NITRO_DIR が定義してある場合に IS Debugger ライブラリをリンクするよう修正 +# +# Revision 1.11 2003/12/02 04:53:06 yasu +# ヘッダの表記修正 +# +# Revision 1.10 2003/12/02 03:45:11 yasu +# IS-NITRO-EMULATOR 用ライブラリ向けの修正 +# +# Revision 1.9 2003/12/01 11:30:55 yasu +# ROM 作成ツールを objcopy -> elftobin へ変更した +# +# Revision 1.8 2003/11/28 02:01:12 yasu +# CW for NITRO の標準ライブラリを取り替えた +# +# Revision 1.7 2003/11/17 01:30:43 yasu +# C++ の定義を C の定義と分離 +# +# Revision 1.6 2003/11/11 03:06:31 yasu +# base.a の位置の指定は lcf ファイルで行なうことにしたので前回の修正を無効にした +# +# Revision 1.5 2003/11/11 02:12:16 yasu +# base.a を OBJS の前にリンクするように修正 +# +# Revision 1.4 2003/11/06 10:38:39 yasu +# ライブラリのサーチパスの設定ミスの修正 +# +# Revision 1.3 2003/11/05 09:14:17 yasu +# ライブラリ生成用ルール追加 +# +# Revision 1.2 2003/11/05 07:12:36 yasu +# コンパイルの依存ルールの仮完成 +# +# Revision 1.1 2003/10/29 06:47:28 yasu +# Support "make clean/clobber" only +# +# $NoKeywords: $ +#---------------------------------------------------------------------------- + +AINCLUDE_DIRS = $(LINCLUDES) $(EINCLUDES) $(GINCLUDES) +ALIBRARY_DIRS = $(LLIBRARY_DIRS) $(ELIBRARY_DIRS) $(GLIBRARY_DIRS) +ALIBRARIES = $(LLIBRARIES) $(ELIBRARIES) $(GLIBRARIES) + +# +# (make version 3.80) +# +# VPATH does not support the path name included white space like "C:/Program Files" +# Please, be careful !!! +# +ifdef MSYSTEM +NITRO_LIBVPATH_ = $(subst \:,\ ,$(subst $(SPACE),:,$(ALIBRARY_DIRS))) +else +CYGDRV ?= $(shell cygpath -u c:)/.. +ALIBVPATH = $(subst : ,,$(patsubst %:,$(CYGDRV)/%:,$(subst :,: ,$(ALIBRARY_DIRS)))) +endif + +vpath %.a $(ALIBVPATH) +vpath %.o $(ALIBVPATH) + +INCLUDE_DIRS = $(subst \ -I,\ ,$(addprefix -I,$(AINCLUDE_DIRS))) +LIBRARY_DIRS = $(subst \ -L,\ ,$(addprefix -L,$(ALIBRARY_DIRS))) +LIBRARIES = $(subst \ -l,\ ,$(addprefix -l,$(ALIBRARIES))) + +INCLUDES = -gccinc -I. $(INCLUDE_DIRS) + +ifdef MSYSTEM # for MinGW32 +QUOTE =' +else +QUOTE =" +endif + +#---------------------------------------------------------------------------- + +.PRECIOUS: $(OBJDIR)/%.o $(BINDIR)/%.nef $(LCFILE) $(PCHDR_H) $(PCHDR_PCH) + +# +# Generate dependency files +# +DEPEND_RULE = $(QUOTE)/ARM_EABI_Support/d;s/\\x0D//g;s/\\\\\\([^ ]\\)/\\/\\1/g;$(QUOTE) + +define MOVE_SRC_DEPEND + $(SED) -e $(DEPEND_RULE) $(*F).d > $(DEPENDDIR)/$(*F).d && $(RM) $(*F).d +endef + + +ifdef NITRO_STD_PCHDR +ifndef NITRO_NO_STD_PCHDR + +# .mch +PCHDR_SRC = $(ROOT)/include/nitro.h +PCHDR_CACHE = $(ROOT)/cache/include + +PCHDR_C_DEFS = $(sort $(filter -DSDK_%,$(CCFLAGS))) +PCHDR_C_NODEF = $(filter-out -D%,$(CCFLAGS)) +PCHDR_C_NAME = $(subst $(SPACE),,$(subst -DSDK_,.,$(subst =,-,$(PCHDR_C_DEFS)))) +PCHDR_C_BASE = $(PCHDR_CACHE)/$(notdir $(PCHDR_SRC))$(PCHDR_C_NAME).C +PCHDR_C_MCH = $(PCHDR_C_BASE).mch +PCHDR_C_DEPEND = $(PCHDR_C_BASE).depend +PCHDR_CCFLAGS = -include $(PCHDR_C_MCH) +CCFLAGS_NOLDEF = $(PCHDR_C_DEFS) $(PCHDR_C_NODEF) + +PCHDR_CXX_DEFS = $(sort $(filter -DSDK_%,$(CXXFLAGS))) +PCHDR_CXX_NODEF = $(filter-out -D%,$(CXXFLAGS)) +PCHDR_CXX_NAME = $(subst $(SPACE),,$(subst -DSDK_,.,$(subst =,-,$(PCHDR_CXX_DEFS)))) +PCHDR_CXX_BASE = $(PCHDR_CACHE)/$(notdir $(PCHDR_SRC))$(PCHDR_CXX_NAME).CXX +PCHDR_CXX_MCH = $(PCHDR_CXX_BASE).mch +PCHDR_CXX_DEPEND= $(PCHDR_CXX_BASE).depend +PCHDR_CXXFLAGS = -include $(PCHDR_CXX_MCH) +CXXFLAGS_NOLDEF = $(PCHDR_CXX_DEFS) $(PCHDR_CXX_NODEF) + +GDIRT_CLOBBER += $(PCHDR_CACHE)/$(notdir $(PCHDR_SRC)).* + +ifeq ($(MAKECMDGOALS),do-build) + +## $(call BUILD_PCHDR,$(BASE),$(CCFLAGS)) +define BUILD_PCHDR + @$(CP) $(PCHDR_SRC) $(1).h + ($(CD) $(dir $(1).mch) && \ + $(CC) $(subst -include ,-DSDK_PCHDR_DUMMY_,$(2)) $(INCLUDES) -MD -precompile $(notdir $(1).mch) $(1).h) + @($(ECHO) $(1).mch: $(PCHDR_SRC) \\ > $(1).depend && \ + $(SED) -e '1d' -e $(DEPEND_RULE) $(1).d >> $(1).depend && $(RM) $(1).d $(1).h) +endef + +# precomipled header for C +ifneq ($(strip $(OBJS_CC)),) +-include $(PCHDR_C_DEPEND) + +$(PCHDR_C_DEPEND): $(PCHDR_C_MCH) + +$(PCHDR_C_MCH): + $(call BUILD_PCHDR,$(PCHDR_C_BASE),$(CCFLAGS_NOLDEF)) +endif + +# precomipled header for C++ +ifneq ($(strip $(OBJS_CXX)),) +-include $(PCHDR_CXX_DEPEND) + +$(PCHDR_CXX_DEPEND): $(PCHDR_CXX_MCH) + +$(PCHDR_CXX_MCH): + $(call BUILD_PCHDR,$(PCHDR_CXX_BASE),$(CXXFLAGS_NOLDEF)) +endif + +endif # do-build +endif # NITRO_NO_STD_PCHDR +endif # NITRO_STD_PCHDR + +# .c +$(OBJS_CC):%.o: + $(CC) $(CCFLAGS) $(INCLUDES) $(PCHDR_CCFLAGS) -c $(shell cygpath -m $<) -MD -o $@ + @$(MOVE_SRC_DEPEND) + +# .cpp +$(OBJS_CXX):%.o: + $(CC) $(CXXFLAGS) $(INCLUDES) $(PCHDR_CXXFLAGS) -c $(shell cygpath -m $<) -MD -o $@ + @$(MOVE_SRC_DEPEND) + +# .s +$(OBJS_AS):%.o: + $(AS) $(ASFLAGS) $(INCLUDES) -c $(shell cygpath -m $<) -MD -o $@ + @$(MOVE_SRC_DEPEND) + +# .lcf .par +ifdef LCFILE_SPEC + +ADDRESS_DTCM ?= $(DEFAULT_ADDRESS_DTCM) + +# exporting +GLIBRARIES_LINK = $(filter-out $(LIBRARIES_UNLINK),$(ELIBRARIES) $(GLIBRARIES)) +LLIBRARIES_LINK = $(filter-out $(LIBRARIES_UNLINK),$(LLIBRARIES)) + +MAKELCF_DEFS = -DNITROSDK_ROOT='$(ROOT)' \ + -DTARGET_NAME='$(TARGET_NAME)' \ + -DOBJS_STATIC='$(OBJS_STATIC)' \ + -DOBJS_AUTOLOAD='$(OBJS_AUTOLOAD)' \ + -DOBJS_OVERLAY='$(OBJS_OVERLAY)' \ + -DGLIBS='$(GLIBRARIES_LINK)' \ + -DLLIBS='$(LLIBRARIES_LINK)' \ + -DCW_LIBS='$(CW_LIBS)' \ + -DOBJDIR='$(OBJDIR)' \ + -DLIBDIR='$(LIBDIR)' \ + -DBINDIR='$(BINDIR)' \ + -DPROC='$(CODEGEN_PROC)' \ + -DPLATFORM='$(NITRO_PLATFORM)' \ + -DCODEGEN='$(CODEGEN_ARCH)' \ + -DBUILD='$(NITRO_BUILD_DIR)' \ + -DADDRESS_DTCM='$(ADDRESS_DTCM)' + +MAKELCF_FORMAT = -V$(CW_MAJOR_VER) + +MAKELCF_OPTS = $(MAKELCF_FLAGS) $(MAKELCF_DEFS) $(MAKELCF_FORMAT) + +$(LCFILE_AUTOGEN): $(LCFILE_SPEC) $(LCFILE_TEMPLATE) $(MAKEFILE) $(NITRO_BUILDTOOLSDIR)/commondefs + $(MAKELCF) $(MAKELCF_OPTS) $< $(LCFILE_TEMPLATE) $@ + +$(LDRES_AUTOGEN): $(LCFILE_SPEC) $(LDRES_TEMPLATE) $(MAKEFILE) $(NITRO_BUILDTOOLSDIR)/commondefs + @$(MAKELCF) $(MAKELCF_OPTS) $< $(LDRES_TEMPLATE) $@ + +endif + +# compress/digest +ifeq ($(CODEGEN_PROC),ARM9) +ifdef NITRO_COMPRESS +COMPSTATIC_CMDS = -9 -c +#COMPSTATIC_CMDS = -7 -c +endif +ifdef NITRO_DIGEST +COMPSTATIC_CMDS += -a +endif +endif + +ifdef COMPSTATIC_CMDS +COMPSUFFIX ?= $(DEFAULT_COMPSUFFIX) +ifneq ($(COMPSUFFIX),) +COMPSTATIC_FLAGS += -e$(COMPSUFFIX) +endif +endif + + +# libcxx workaround +ifdef SDK_CW_WA_LIBCXX +CW_LIBCXX = $(CW_LIBCXX_DIR)/$(CW_LIBCXX_ARM) +$(CW_LIBCXX): $(ROOT)/build/buildsetup/libcxx/Makefile + $(MAKE) -f $< +endif + + +# .nef +ifndef USE_MY_RULE_NEF +ifneq ($(NITRO_MAKEROM),) +$(BINDIR)/$(TARGET_BIN_BASENAME).nef: $(OBJS) $(LCFILE) $(MAKEFILE) $(LDEPENDS_NEF) $(EDEPENDS_NEF) $(ALIBRARIES) $(LDRES_FILE) $(CW_LIBCXX) + $(LD) $(LDFLAGS) $(LIBRARY_DIRS) @$(LDRES_FILE) $(LCFILE) -o $@ +ifdef COMPSTATIC_CMDS + $(COMPSTATIC) $(COMPSTATIC_CMDS) $(COMPSTATIC_FLAGS) -f $(BINDIR)/component.files $(NITRO_STDOUT) +endif +else +$(BINDIR)/$(TARGET_BIN_BASENAME).nef: $(OBJS) $(LCFILE) $(MAKEFILE) $(LDEPENDS_NEF) $(EDEPENDS_NEF) $(ALIBRARIES) $(CW_LIBCXX) + $(LD) $(LDFLAGS) $(LIBRARY_DIRS) $(OBJS) $(LIBRARIES) $(LCFILE) -o $@ +endif +endif + +# .a +ifndef USE_MY_RULE_A +$(LIBDIR)/$(TARGET_LIB): $(OBJS) + $(AR) $(ARFLAGS) $(OBJS) -o $@ +endif + + +#---------------------------------------------------------------------------- +# Get SDK_CW_BUILD_VERSION SDK_CW_BUILD_NUMBER +# +# IRIS V0.2 Hotfix 1 +# SDK_CW_BUILD_VERSION_CC=2.0 +# SDK_CW_BUILD_VERSION_LD=2.0 +# SDK_CW_BUILD_NUMBER_CC=0038 +# SDK_CW_BUILD_NUMBER_LD=0050 +# +# NITRO V0.3 +# SDK_CW_BUILD_NUMBER_CC=0038 +# SDK_CW_BUILD_NUMBER_LD=0056 +# +# NITRO V0.4.1 +# SDK_CW_BUILD_NUMBER_CC=0043 +# SDK_CW_BUILD_NUMBER_LD=0057 +# +# NITRO V0.5 +# SDK_CW_BUILD_NUMBER_CC=0046 +# SDK_CW_BUILD_NUMBER_LD=0058 +# +# NITRO V0.5 + HotFix1 +# SDK_CW_BUILD_NUMBER_CC=0049 +# SDK_CW_BUILD_NUMBER_LD=0061 +# +# NITRO V0.6 +# SDK_CW_BUILD_NUMBER_CC=0050 +# SDK_CW_BUILD_NUMBER_LD=0062 +# +# NITRO V0.6.1 +# SDK_CW_BUILD_NUMBER_CC=0050 +# SDK_CW_BUILD_NUMBER_LD=0063 +# +# NITRO V0.7 +# SDK_CW_BUILD_NUMBER_CC=0050 +# SDK_CW_BUILD_NUMBER_LD=0063 +# +# NITRO V1.0 +# SDK_CW_BUILD_NUMBER_CC=0056 +# SDK_CW_BUILD_NUMBER_LD=0067 +# +# NITRO V1.0.2 +# SDK_CW_BUILD_NUMBER_CC=0068 +# SDK_CW_BUILD_NUMBER_LD=0068 +# +# NITRO V1.2 +# SDK_CW_BUILD_NUMBER_CC=0073 +# SDK_CW_BUILD_NUMBER_LD=0072 +# +# NITRO V1.2SP1 +# SDK_CW_BUILD_NUMBER_CC=0074 +# SDK_CW_BUILD_NUMBER_LD=0072 +# +# NITRO V1.2SP2+patch +# SDK_CW_BUILD_NUMBER_CC=0080 +# SDK_CW_BUILD_NUMBER_LD=0074 +# +# NITRO V1.2SP3 +# SDK_CW_BUILD_NUMBER_CC=0084 +# SDK_CW_BUILD_NUMBER_LD=0077 +# +# NITRO V1.2SP4 +# SDK_CW_BUILD_NUMBER_CC=0087 +# SDK_CW_BUILD_NUMBER_LD=7702 +# +# NITRO V2.0beta +# SDK_CW_BUILD_VERSION_CC=3.0 +# SDK_CW_BUILD_VERSION_LD=2.0 +# SDK_CW_BUILD_NUMBER_CC=0107 +# SDK_CW_BUILD_NUMBER_LD=0077 +# +# NITRO V2.0 +# SDK_CW_BUILD_NUMBER_CC=0114 +# SDK_CW_BUILD_NUMBER_LD=0082 +# +ifneq ($(findstring $(MAKECMDGOALS),do-build make-verinfo clean-verinfo),) + +.PHONY: make-verinfo +make-verinfo: $(SDK_VERINFO_CW_CC) $(SDK_VERINFO_CW_LD) + +$(SDK_VERINFO_CW_CC): $(MWCC) + @$(MWCC) -version | \ + $(SED) -e $(QUOTE)/^Version /!d;s/\(build [0-9]\{2,3\}\) /\100 /;s/^Version \([0-9.]*\).*build \([0-9]*\).*(build \([0-9]*\)).*/SDK_CW_BUILD_VERSION_CC=\1\nSDK_CW_BUILD_NUMBER_CC=\3\nSDK_CW_BUILD_NUMBER2_CC=\2/i;$(QUOTE) >$(SDK_VERINFO_CW_CC) + @$(TOUCH) -r $(MWCC) $(SDK_VERINFO_CW_CC) + +$(SDK_VERINFO_CW_LD): $(MWLD) + @$(MWLD) -version | \ + $(SED) -e $(QUOTE)/^Version /!d;s/\(build [0-9]\{2,3\}\) /\100 /;s/^Version \([0-9.]*\).*build \([0-9]*\).*(build \([0-9]*\)).*/SDK_CW_BUILD_VERSION_LD=\1\nSDK_CW_BUILD_NUMBER_LD=\3\nSDK_CW_BUILD_NUMBER2_LD=\2/i;$(QUOTE) >$(SDK_VERINFO_CW_LD) + @$(TOUCH) -r $(MWLD) $(SDK_VERINFO_CW_LD) + +endif + +.PHONY: clean-verinfo +clean-verinfo: + @$(RM) $(NITRO_BUILDTOOLSDIR)/verinfo.* + + +#---------------------------------------------------------------------------- +# Check codegen bug around blxeq/blxne +# + +.PHONY: codecheck + +codecheck: + @$(ECHO) --- checking codegen --- + @$(NITRO_TOOLSDIR)/bin/blxchecker + +#----- End of modulerules.cctype.CW -----