diff --git a/trunk/build/buildtools/commondefs b/trunk/build/buildtools/commondefs index 2717efd..ec8d631 100644 --- a/trunk/build/buildtools/commondefs +++ b/trunk/build/buildtools/commondefs @@ -117,17 +117,235 @@ endif endif -#---------------------------------------------------------------------------- -# Utilities +#---------------------------------------------------------------- +# +# Utilities # - EMPTY := SPACE := $(EMPTY) $(EMPTY) +ifdef MSYSTEM # for MinGW32 +QUOTE =' +else +QUOTE =" +endif + + +define NEWLINE +$(EMPTY) + +endef + +#---------------------------------------------------------------------------- +# MAKE COMMAND SETTINGS +# +# --no-print-directory: No print directory when 'change directory' +# -r no builtin rules +# -R no builtin variables +# -j do make with multi-thread (not used now) +# + +MAKEFILE = $(firstword $(MAKEFILE_LIST)) +MAKEFLAGS_SHORT = $(filter-out --%,$(MAKEFLAGS)) + +MAKEFLAGS += -R -r + +ifdef SILENT +MAKEFLAGS += -s +endif + +# Check -w option +ifeq (,$(findstring w,$(MAKEFLAGS_SHORT))) +MAKEFLAGS += --no-print-directory +endif + +# Check -k option +ifeq (,$(findstring k,$(MAKEFLAGS_SHORT))) +AND = && +else +AND = ; +endif + +# Check -s option +ifneq (,$(findstring s,$(MAKEFLAGS_SHORT))) +STDOUT = > /dev/null +endif + +# Check -B option +MAKEFLAGS_OPTIONS = $(MAKEFLAGS) +MAKEFLAGS_ALWAYS = $(if $(findstring B,$(MAKEFLAGS_SHORT))$(findstring --always-make,$(MAKEFLAGS_OPTIONS)),TRUE,FALSE) + +#---------------------------------------------------------------------------- +# CYGWIN tools +# +CD := cd +CP := cp -rf +RM := rm -rf +MV := mv +MKDIRP := mkdir -p +SED := sed +INSTALL := install -p +TOUCH := touch +ECHO := echo +PERL := perl +OBJCOPY := objcopy -I elf32-little -O binary + +# デバッグ用フラグ +MAKEFLAGS_D ?= + +REMAKE := $(MAKE) -f $(MAKEFILE) $(MAKEFLAGS_D) + +LEX := flex +YACC := bison -y +CC_X86 := gcc -mno-cygwin +CXX_X86 := g++ -mno-cygwin +LD_X86 := gcc -mno-cygwin +AR_X86 := ar ruc +GREP ?= /bin/grep +MOUNT ?= /bin/mount +HEAD ?= /bin/head +AWK ?= /bin/gawk +CUT ?= /bin/cut +TR ?= /bin/tr + # /bin/true の代わりに builtin で真を返すコマンドを使う +TRUE ?= test true + +ifdef USE_ASH +export SHELL=ash +endif + +#---------------------------------------------------------------- +# +# cygpath +# + +CYGPATH ?= cygpath + +# 高速 cygpath は標準では無効 (make 3.80 では eval 関数に不具合があり動作しないため) +CYGPATH_NOCMD ?= FALSE + +# 自動判別する場合は上の定義を消す(動作未確認) +#ifndef CYGPATH_NOCMD +# +#MAKE_VERSION := $(shell $(MAKE) -v | $(HEAD) -1 | $(AWK) '{print $3}') +# +#ifndef MSYSTEM +# +#ifeq ($(shell(expr "$(MAKE_VERSION)" ">=" "3.81")),1) +#CYGPATH_NOCMD=TRUE +#else # MAKE_VERSION +#CYGPATH_NOCMD=FALSE +#endif # MAKE_VERSION +# +#endif # MSYSTEM +# +#endif # CYGPATH_NOCMD + + +# cygdrive path prefix を取得 + +ifeq ($(CYGPATH_MOUNTPOINT),) +CYGPATH_MOUNTPOINT := $(patsubst %/,%,$(dir $(shell $(CYGPATH) -u c:/))) +endif # CYGPATH_MOUNTPOINT + +ifeq ($(CYGPATH_NOCMD),TRUE) + +ifeq ($(CYGPATH_DRIVELIST),) +# 安全 +CYGPATH_DRIVELIST_ALL = $(shell DRIVES=`$(MOUNT) | $(GREP) 'type user' | $(CUT) -c1 | tr '\n' ' '` \ + && echo $${DRIVES} `echo $${DRIVES} | $(TR) '[a-z]' '[A-Z]'`) + +# 最小限で速い +CYGPATH_DRIVELIST_FAST = $(shell $(CYGPATH) -aw '$(CTRSDK_ROOT)c' \ + '$(CWFOLDER_CTR)c' '$(CWFOLDER_TWL)c' '$(CWFOLDER_NITRO)c' \ + '$(CTRSYSTEM_ROOT)c' \ + '$(IS_CTR_DIR)c' '$(IS_TWL_DIR)c' '$(IS_NITRO_DIR)c' \ + | $(CUT) -c1) + +CYGPATH_DRIVELIST := $(sort $(CYGPATH_DRIVELIST_FAST)) +#CYGPATH_DRIVELIST := $(sort $(CYGPATH_DRIVELIST_ALL)) +endif # CYGPATH_DRIVELIST + + +define cygpathm +$(strip $(eval VALUE=$(1))$(foreach DRIVE,$(CYGPATH_DRIVELIST),$(eval VALUE:=$$(patsubst $(CYGPATH_MOUNTPOINT)/$(DRIVE)/%,$(DRIVE):/%,$$(subst \,/,$$(VALUE)))))$(VALUE)) +endef # cygpathm + +define cygpathu +$(strip $(eval VALUE:=$(1))$(foreach DRIVE,$(CYGPATH_DRIVELIST),$(eval VALUE:=$$(patsubst $(DRIVE):/%,$(CYGPATH_MOUNTPOINT)/$(DRIVE)/%,$$(subst \,/,$$(VALUE)))))$(VALUE)) +endef # cygpathu + +define cygpathm_multi +$(foreach pathvar,$(1),$(call cygpathm,$(pathvar))) +endef # cygpathm_multi + +define cygpathu_multi +$(foreach pathvar,$(1),$(call cygpathu,$(pathvar))) +endef # cygpathu_multi + +define eupath +$(subst $(SPACE),\ ,$(call cygpathu,$(subst \ , ,$(1)))) +endef # eupath + +define empath +$(subst $(SPACE),\ ,$(call cygpathm,$(subst \ , ,$(1)))) +endef # empath + +else # CYGPATH_NOCMD + +define empath +$(subst $(SPACE),\ ,$(shell $(CYGPATH) -m $(subst \,\\,$(subst \ , ,$(1))))) +endef # empath + +ifdef MSYSTEM + +define eupath +$(call empath,$(1)) +endef #eupath + +define cygpathu +$(shell cygpath -m $(subst \,\\,$(subst \ , ,$(1)))) +endef + +else # MSYSTEM + +define eupath +$(subst $(SPACE),\ ,$(shell $(CYGPATH) -u $(subst \,\\,$(subst \ , ,$(1))))) +endef + +define cygpathu +$(shell cygpath -u $(subst \,\\,$(subst \ , ,$(1)))) +endef + +endif # MSYSTEM + +define cygpathm +$(shell cygpath -m $(subst \,\\,$(subst \ , ,$(1)))) +endef + +define cygpathu_multi +$(call cygpathu,$(1)) +endef + +define cygpathm_multi +$(call cygpathm,$(1)) +endef + +endif # CYGPATH_NOCMD + +export CYGPATH_MOUNTPOINT CYGPATH_DRIVELIST CYGPATH_NOCMD + +define encode_specialchar +$(subst $(SPACE),%20,$(1)) +endef + +define decode_specialchar +$(subst %20,$(SPACE),$(1)) +endef #---------------------------------------------------------------------------- # CTR-SDK path settings # --include $(CTR_BUILDTOOLSDIR)/commondefs.cygpath +#-include $(CTR_BUILDTOOLSDIR)/commondefs.cygpath ROOT := $(call eupath,$(CTRSDK_ROOT)) CTR_BUILDTOOLSDIR := $(ROOT)/build/buildtools @@ -348,61 +566,6 @@ GDIRT_CLOBBER_DIRS := endif -#---------------------------------------------------------------------------- -# MAKE COMMAND SETTINGS -# -# --no-print-directory: No print directory when 'change directory' -# -r no builtin rules -# -R no builtin variables -# -j do make with multi-thread (not used now) -# -MAKEFILE = $(firstword $(MAKEFILE_LIST)) -MAKEFLAGS_SHORT = $(filter -%,$(filter-out --%,$(MAKEFLAGS))) - -MAKEFLAGS += -R -r - -# Check -w option -ifeq (,$(findstring w,$(MAKEFLAGS_SHORT))) -MAKEFLAGS += --no-print-directory -endif - -# Check -k option -ifeq (,$(findstring k,$(MAKEFLAGS_SHORT))) -AND = && -else -AND = ; -endif - -# Check -s option -ifneq (,$(findstring s,$(MAKEFLAGS_SHORT))) -CTR_STDOUT = > /dev/null -endif - -#---------------------------------------------------------------------------- -# CYGWIN TOOLS -# - -CD := cd -CP := cp -rf -RM := rm -rf -MV := mv -MKDIRP := mkdir -p -SED := sed -INSTALL := install -p -TOUCH := touch -ECHO := echo -PERL := perl -OBJCOPY := objcopy -I elf32-little -O binary -REMAKE := $(MAKE) -f $(MAKEFILE) - -LEX := flex -YACC := bison -y -CC_X86 := gcc -mno-cygwin -CXX_X86 := g++ -mno-cygwin -LD_X86 := gcc -mno-cygwin -AR_X86 := ar ruc - - #---------------------------------------------------------------------------- # MY BUILD TOOLS # diff --git a/trunk/build/buildtools/modulerules.cctype.CW b/trunk/build/buildtools/modulerules.cctype.CW index a86cec3..2abc9e2 100644 --- a/trunk/build/buildtools/modulerules.cctype.CW +++ b/trunk/build/buildtools/modulerules.cctype.CW @@ -41,12 +41,6 @@ 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) diff --git a/trunk/build/buildtools/modulerules.cctype.RVCT b/trunk/build/buildtools/modulerules.cctype.RVCT index aa0153b..a31e957 100644 --- a/trunk/build/buildtools/modulerules.cctype.RVCT +++ b/trunk/build/buildtools/modulerules.cctype.RVCT @@ -41,12 +41,6 @@ LIBRARIES = $(subst \ -l,\ ,$(addprefix -l,$(ALIBRARIES))) INCLUDES = -I. $(INCLUDE_DIRS) -ifdef MSYSTEM # for MinGW32 -QUOTE =' -else -QUOTE =" -endif - #---------------------------------------------------------------------------- .PRECIOUS: $(OBJDIR)/%.o $(BINDIR)/%.nef $(LCFILE)