mirror of
https://github.com/rvtr/twl_wrapsdk.git
synced 2025-10-31 06:11:10 -04:00
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/twl_wrapsdk/trunk@221 4ee2a332-4b2b-5046-8439-1ba90f034370
720 lines
21 KiB
Makefile
720 lines
21 KiB
Makefile
#! make -f
|
||
#----------------------------------------------------------------------------
|
||
# Project: NitroSDK - modulerules - common rules for build system
|
||
# File: modulerules
|
||
#
|
||
# 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
|
||
# 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,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 NITROSDK_MODULERULES_
|
||
|
||
#----------------------------------------------------------------------------
|
||
# Implicit RULES
|
||
#----------------------------------------------------------------------------
|
||
.SUFFIXES: # Delete all suffix rules
|
||
|
||
ifneq ($(NITRO_FORCE_BUILD),)
|
||
|
||
# yutaka
|
||
#VPATH = $(SRCDIR)
|
||
vpath %.c $(foreach dir,$(SRCDIR),$(shell cygpath -u $(dir)))
|
||
vpath %.cpp $(foreach dir,$(SRCDIR),$(shell cygpath -u $(dir)))
|
||
vpath %.s $(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
|
||
#
|
||
|
||
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)
|
||
|
||
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=''
|
||
|
||
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
|
||
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 nightly
|
||
#----------------------------------------------------------------------------
|
||
|
||
define makenightly
|
||
@echo [[[ make nightly $(1) $(CURDIR) ]]]
|
||
@+unset TWL_DEBUG TWL_RELEASE TWL_FINALROM TWL_CODEGEN_ALL; \
|
||
$(foreach b,RELEASE, \
|
||
$(foreach a,ARM THUMB, \
|
||
date "+::: %Y/%m/%d %H:%M:%S $a-$b" $(AND) \
|
||
$(REMAKE) TWL_$b=TRUE TWL_CODEGEN=$a TWL_CODEGEN_ALL=FALSE $(1) $(AND) \
|
||
) \
|
||
) true
|
||
endef
|
||
|
||
nightly:
|
||
$(call makenightly,build)
|
||
|
||
nightly-install:
|
||
$(call makenightly,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
|
||
|
||
#----------------------------------------------------------------------------
|
||
# 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 -----
|