vpath周りの修正 (CWの-cオプションにが必ずフルパスになります)

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/twl_wrapsdk/trunk@21 4ee2a332-4b2b-5046-8439-1ba90f034370
This commit is contained in:
yutaka 2007-04-12 08:48:31 +00:00
parent 873c7cdb9b
commit 0a30f97eca
4 changed files with 1258 additions and 17 deletions

View File

@ -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)

View File

@ -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 -----

View File

@ -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 -----

View File

@ -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 バージョンで 23桁の場合は、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 -----