###############################################################################
#
#	            メイクファイルのヘッダー
#
#  $Id: Makefile_h.gnumk,v 1.2 2003/05/29 21:12:17 tong Exp $
#
###############################################################################

export PRJDIR=../
#.PATH: ..
include $(ROOT)/usr/include/make/PRdefs
# FORCE_CPP = 1
#include /usr/local/srd/PR/SRDdefs.mk
include srd.gnumk

SHELL = /bin/sh

LDIRT  =  *.rel

#LD = $(ROOT)/usr/lib/PR/nld

### ファイル削除マクロ ###
RM = \rm -rf

### ディレクトリ指定
PATCH_DIR  = ../PR/patch/PR

LIBDIR     = ../LIB
TOOLDIR    = ../TOOLS
SOUNDDIR   = ../SOUND
##SLIBDIR    = ../SLIB
SLIBDIR    = ../../home/hayakawa/prj/PR
##SOUNDDIR   = ../SOUND_DBG

MAPCNV     = $(TOOLDIR)/mapcnv
###############################################################################
#          条件コンパイルの設定
###############################################################################

VERSION =

######  早川テスト用  ######

ifdef  HAYAKAWA_LIB
VERSION += HAYAKAWA_LIB=
endif
ifdef  HAYAKAWA_LIB_TEST
VERSION += HAYAKAWA_LIB=
VERSION += HAYAKAWA_LIB_TEST=
endif
ifdef  HAYAKAWA_TEST
VERSION += HAYAKAWA_LIB=
VERSION += HAYAKAWA_TEST=
endif

ifdef  VMAKEOPT
VERSION += "VMAKEOPT=$(VMAKEOPT)"
endif

######  リモートによる分散コンパイル関連の設定  ######

RMAKEDIR       = $(PRJDIR)/SRC

RMAKEMACH_DATA = srd65
DATADIR        = $(PRJDIR)/SRC
RMAKEMACH_SRC  = srd68
SRCDIR         = $(PRJDIR)/SRC
RMAKEMACH_OVL1 = srd59
OVL1DIR        = $(PRJDIR)/SRC
RMAKEMACH_OVL2 = srd65
OVL2DIR        = $(PRJDIR)/SRC
RMAKEMACH_OVL3 = srd59
OVL3DIR        = $(PRJDIR)/SRC
RMAKEMACH_OVL4 = srd59
OVL4DIR        = $(PRJDIR)/SRC
RMAKEMACH_OVL5 = srd59
OVL5DIR        = $(PRJDIR)/SRC
RMAKEMACH_OVL6 = srd59
OVL6DIR        = $(PRJDIR)/SRC


ifndef  GET_USER
GET_USER       = tamago
endif
ifndef  GET_MACHINE
GET_MACHINE    = srd59
endif
ifndef  GET_DIR
GET_DIR        = ./
endif

######  対応システムの設定  ######
SYS_ROMCASSETTE=1                # ＲＯＭカセットシステム
##SYS_GATEWAY_N64=1                # ゲートウェイ６４システム
##SYS_N64DISK=1		         # ディスクシステム

######  生成ROMの国設定  ######
##JAPAN=1                        # 日本対応
##AMERICA=1                      # アメリカ対応
##EUROPE=1                       # ヨーロッパ対応
ifndef LOCALE
LOCALE = AMERICA
endif

######  生成ROMのバージョン設定  ######

ifndef VER
VER = PRODUCT_VERSION
endif

ifeq ($(VER), PRODUCT_VERSION)
VERSION += PRODUCT_VERSION=
else
ifeq ($(VER), CM_VERSION)
VERSION += CM_VERSION=
else
ifeq ($(VER), TOOL_VERSION)
VERSION += TOOL_VERSION=
FOR_ISVIEWER=1
else
DEVELOP_VERSION=1
VERSION += DEVELOP_VERSION=
FOR_ISVIEWER=1
endif
endif
endif

##if  (defined(SYS_ROMCASSETTE) || defined(SYS_GATEWAY_N64))
##if  (defined(PRODUCT_VERSION) || defined(CM_VERSION) || defined(TOOL_VERSION))
REALROM=1
##DEBUG_ROM=1          # 有効にすると ROM版で osSyncPrintf()が利用可能
##endif
##endif

ifeq ($(VER), PARTNER_VERSION)
FOR_PARTNER=1
endif

ifdef SOUND_OFF
VERSION += SOUND_OFF=
endif

ifdef UNUSE_EEPROM
VERSION += UNUSE_EEPROM=
endif

######  詳細なコンパイル条件の設定  ######

##if  SYS_ROMCASSETTE
LMAKEOPT = -DSYS_ROMCASSETTE=1         # ＲＯＭカセット対応
TARGET = ROM
##endif
##if  SYS_GATEWAY_N64
#LMAKEOPT = -DSYS_GATEWAY_N64=1         # ゲートウェイ６４対応
#TARGET = GWY
##endif
##if  SYS_N64DISK
#LMAKEOPT = -DSYS_N64DISK=1             # ディスクシステム対応
#TARGET = DSK
##endif

ifeq ($(LOCALE), JAPAN)
LMAKEOPT += -DJAPAN=1	               # 日本対応(NTSC)
LMAKEOPT += -DNTSC_VER=1
COUNTRY=JPN
endif
ifeq ($(LOCALE), AMERICA)
LMAKEOPT += -DAMERICA=1                # アメリカ対応(NTSC,MPAL)
LMAKEOPT += -DNTSC_VER=1
LMAKEOPT += -DMPAL_VER=1
COUNTRY=USA
endif
ifeq ($(LOCALE), EUROPE)
LMAKEOPT += -DEUROPE=1                 # ヨーロッパ対応(MPAL)
LMAKEOPT += -DPAL_VER=1
COUNTRY=EUR
endif

ifdef UNUSE_EEPROM
LMAKEOPT += -DUNUSE_EEPROM=1	        # EEPROMをアクセスしない
endif

LMAKEOPT += -DUSE_PADMGR -DUSE_IRQMGR # bglib関連
LMAKEOPT += -DBGLIB_FOR_YOSHI=1     # bglib関連
LMAKEOPT += -DUSE_ZBUFFER=1         # bglib関連
LMAKEOPT += -DUSE_CONTROLLER=1
LMAKEOPT += -DUSE_PARALLELDMA=0
LMAKEOPT += -DUSE_ZBUFF=0
LMAKEOPT += -DNOUSE_ZSORT_TEST=1
LMAKEOPT += -DSOUND=1
##LMAKEOPT += -DSCENE_BLOCKSIZE_NORMAL=1
LMAKEOPT += -DSCENE_BLOCKSIZE_256x256=1
##LMAKEOPT += -DFAST_MALLOC=1       # 高速 Malloc()
##LMAKEOPT += -DNORMAL_MALLOC=1     # 標準 Malloc()
##LMAKEOPT += -DTWO_SIDE_MALLOC=1   # ヒープの前方、後方両サイドからの Malloc()
LMAKEOPT += -DOPTIMUM_MALLOC=1      # 最適化 Malloc()
LMAKEOPT += -DUSE_CELLBLOCK_240=0   # (=0)ならセルブロックを120個まで使用
ifdef SYS_GATEWAY_N64
LMAKEOPT += -DUSE_SUPER_FREEZE	        # スーパーフリーズに使用
endif

ifeq ($(VER),PRODUCT_VERSION)
LMAKEOPT += -DPRODUCT_ROM=1
ifndef SYS_GATEWAY_N64
###LMAKEOPT += -DUSE_CIC6104=1             # CICの許可/不許可
LMAKEOPT += -DUSE_CIC6104=0             # CICの許可/不許可
endif
LMAKEOPT += -DUSE_FAULT=1	        # Faultマネージャーの使用
LMAKEOPT += -DDISABLE_FAULT_DISPLAY=0   # Fault情報の表示の有無
LMAKEOPT += -DUSE_CHECK_POINT=1	        # チェック処理を有効にする
LMAKEOPT += -DUSE_OVERLAY_RECORDER=1	# オーバレイ記録の有無
##LMAKEOPT += -DVIBPACK=1                 # 振動パック
LMAKEOPT += -DDEBUG=0
LMAKEOPT += -DCALL_SOUND=1              # サウンドの呼び出し
LMAKEOPT += -DITC_FLASH=1               # フラッシュ効果をITC基準に対応する
endif
ifeq ($(VER),CM_VERSION)
LMAKEOPT += -DCM_ROM=1
ifndef SYS_GATEWAY_N64
###LMAKEOPT += -DUSE_CIC6104=1             # CICの許可/不許可
LMAKEOPT += -DUSE_CIC6104=0             # CICの許可/不許可
endif
LMAKEOPT += -DUSE_FAULT=1	        # Faultマネージャーの使用
LMAKEOPT += -DDISABLE_FAULT_DISPLAY=0   # Fault情報の表示の有無
LMAKEOPT += -DUSE_CHECK_POINT=1	        # チェック処理を有効にする
LMAKEOPT += -DUSE_OVERLAY_RECORDER=1	# オーバレイ記録の有無
##LMAKEOPT += -DVIBPACK=1                 # 振動パック
LMAKEOPT += -DUSE_DBG_CONTROLLER=1      # デバッグ用コントローラの使用の有無
LMAKEOPT += -DDEBUG=0
LMAKEOPT += -DCALL_SOUND=1              # サウンドの呼び出し
LMAKEOPT += -DSOUND_BGM_OFF=0           # 撮影用にBGMを切る
LMAKEOPT += -DUSE_LOCALHEADER=0         # 個人のマクロ定義ヘッダーの使用の有無
LMAKEOPT += -DUSE_DEBUGMODE=1           # 
LMAKEOPT += -DITC_FLASH=1               # フラッシュ効果をITC基準に対応する
LMAKEOPT += -DFOR_EDITOR=0		# 雑誌社用のサービス機能の有無(有=1)
endif

ifeq ($(VER),TOOL_VERSION)
LMAKEOPT += -DFOR_MAPTOOL=1
LMAKEOPT += -DUSE_FAULT=1	        # Faultメッセージの表示
LMAKEOPT += -DUSE_CHECK_POINT=1	        # チェック処理を有効にする
LMAKEOPT += -DUSE_OVERLAY_RECORDER=1	        # オーバレイ記録の有無
LMAKEOPT += -DVIBPACK=1                 # 振動パック
LMAKEOPT += -DUSE_DBG_CONTROLLER=1      # デバッグ用コントローラの使用の有無
LMAKEOPT += -DUSE_APRINTF=1
LMAKEOPT += -DCALL_SOUND=1              # サウンドの呼び出し
LMAKEOPT += -DDEBUG=0
LMAKEOPT += -DTIME=1
LMAKEOPT += -DUSE_LOCALHEADER=0         # 個人のマクロ定義ヘッダーの使用の有無
LMAKEOPT += -DUNUSE_EEPROM=1	        # EEPROMをアクセスしない
LMAKEOPT += -DITC_FLASH=1               # フラッシュ効果をITC基準に対応する
endif

ifeq ($(VER),DEVELOP_VERSION)
LMAKEOPT += -DDEVELOP_PRG=1
LMAKEOPT += -DUSE_FAULT=1	        # Faultマネージャーの使用
LMAKEOPT += -DDISABLE_FAULT_DISPLAY=0   # Fault情報の表示の有無
LMAKEOPT += -DUSE_CHECK_POINT=1	        # チェック処理を有効/無効にする
LMAKEOPT += -DUSE_OVERLAY_RECORDER=1	# オーバレイ記録の有無
LMAKEOPT += -DVIBPACK=1                 # 振動パック
LMAKEOPT += -DDEBUG=1
LMAKEOPT += -DUSE_APRINTF=1
LMAKEOPT += -DTIME=0
LMAKEOPT += -DUSE_DBG_CONTROLLER=1      # デバッグ用コントローラの使用の有無
###LMAKEOPT += -DDEBUG_CIC=1               # CICのデバッグチェックを行う
LMAKEOPT += -DDEBUG_CIC=0               # CICのデバッグチェックを行う
LMAKEOPT += -DCALL_SOUND=1              # サウンドの呼び出し(デバッグのために) 
LMAKEOPT += -DITC_FLASH=1               # フラッシュ効果をITC基準に対応する
LMAKEOPT += -DUSE_DEBUGMODE=1           # 
LMAKEOPT += -DHIT_PERFORMANCE=1	        # ヨッシのパターンのヒット率計算を行う
LMAKEOPT += -DUSE_LOCALHEADER=1         # 個人のマクロ定義ヘッダーの使用の有無
LMAKEOPT += -DSYSTEM_INFO=1
##LMAKEOPT += -DUSE_VIEWER=1
LMAKEOPT += -DTEST=1
##LMAKEOPT += -DMAKE_DEMODATA=1	        # 有効のとき店頭デモデータの出力
endif

LMAKEOPT += -DNEW_AUDIO			#たぶん必要ない
ifdef SOUND_OFF
LMAKEOPT += -DSOUND=0
endif

ifdef FOR_PARTNER
LMAKEOPT += -DFOR_PARTNER=1		# Partner用のコードを吐く
endif
ifdef FOR_ISVIEWER
LMAKEOPT += -DFOR_ISVIEWER=1		# IS-VIEWER用のコードを吐く
endif
LMAKEOPT += -DF3DEX_GBI			# ３部マイクロコード用

###############################################################################
#          リンクライブラリーの設定
###############################################################################

LCINCS = -I$(PATCH_INCDIR) -I$(PATCH_INCDIR)/.. -I$(LIBDIR) -I$(SOUNDDIR)
LLDOPTS = $(MKDEPOPT) -L$(PATCH_LIBDIR)  
ifdef HAYAKAWA_LIB
HAYAKAWA_PR_DIR = ../../home/hayakawa/prj/PR
BG_INCDIR = $(HAYAKAWA_PR_DIR)/libbg
BG_LIBDIR = $(HAYAKAWA_PR_DIR)/libbg
LCINCS += \
	-I$(HAYAKAWA_PR_DIR)/libbg \
	-I$(HAYAKAWA_PR_DIR)/libu64 \
	-I$(HAYAKAWA_PR_DIR)/libc64
LLDOPTS += \
	-L$(HAYAKAWA_PR_DIR)/libbg \
	-L$(HAYAKAWA_PR_DIR)/libu64 \
	-L$(HAYAKAWA_PR_DIR)/libc64
PATCH_DIR = $(HAYAKAWA_PR_DIR)/COMMON/patch/PR
else
BG_INCDIR = $(COMMON_DIR)
BG_LIBDIR = $(COMMON_DIR)
endif
LCINCS  += -I$(COMMON_INCDIR) -I$(ROOT)/usr/include/PR
LLDOPTS += -L$(COMMON_LIBDIR) -L$(ROOT)/usr/lib --no-warn-mismatch

### ライブラリの設定
ULTRALIB =

##if !defined(FOR_ISVIEWER) && (defined(DEVELOP_VERSION) || defined(DEBUG_ROM))
#ULTRALIB += -lultra
##else
ULTRALIB += -lultra_rom
#ULTRALIB += -lultra_d
##endif

ifdef SYS_N64DISK
ifdef FOR_ISVIEWER
ULTRALIB += -lleoemu -lleo -lleofile
else
ULTRALIB += -lleo
endif
endif

ifeq ($(VER),PRODUCT_VERSION)
U64LIB = -lu64_rom_yoshi
C64LIB = -lc64_rom_yoshi
BG_LIB = -lbg_rom_yoshi
LMAKEOPT += -DUSE_MSGMGR=0 -DLIB_FOR_YOSHI
endif

ifeq ($(VER),CM_VERSION)
U64LIB = -lu64_rom_yoshi
C64LIB = -lc64_rom_yoshi
BG_LIB = -lbg_rom_yoshi
LMAKEOPT += -DUSE_MSGMGR=0 -DLIB_FOR_YOSHI
endif

ifeq ($(VER),TOOL_VERSION)
U64LIB = -lu64_rom_yoshi
C64LIB = -lc64_rom_yoshi
BG_LIB = -lbg_tool_yoshi
LMAKEOPT += -DUSE_MSGMGR=0 -DLIB_FOR_YOSHI
endif

ifeq ($(VER),DEVELOP_VERSION)
U64LIB = -lu64_d_yoshi
C64LIB = -lc64_d_yoshi
BG_LIB = -lbg_d_yoshi
##LMAKEOPT += -DUSE_DEBUGMODE=1 -DUSE_MSGMGR=1 # デバック用
LMAKEOPT += -DUSE_MSGMGR=1 # デバック用
endif

BG_LIB_NAME = lib$(BG_LIB).a

### サウンドライブラリの指定
SOUNDFILES = $(SOUNDDIR)/audio.o

##CHRDIR   = $(PRJDIR)/CHAR

###############################################################################
#          コンパイルオプションの設定
###############################################################################

##ifndef DEVELOP_VERSION
# オプティマイズ＋デバッグ情報なし
##ifndef GCC		
##OPTIMIZER = -O2 -g0                
##LWOFF     = ,828,826,852		# cc用
##endif
##ifdef GCC
##OPTIMIZER = -O2 -g0 -finline-functions
##endif
##endif

##ifdef DEVELOP_VERSION
# オプティマイズ＋デバッグ情報あり
##ifndef GCC
##OPTIMIZER = -O2 -g3                     
##LWOFF     = ,828,826,852		# cc用
##endif
##ifdef GCC
##OPTIMIZER = -O2 -finline-functions
##LWOFF     =
##endif
##endif
#LWOFF     = ,3262                      # CC用

#LCINCS	= -I$(PATCH_INCDIR) -I$(PATCH_INCDIR)/.. -I$(BG_INCDIR) -I$(COMMON_INCDIR) -I$(ZELDA_LIB) -I$(ROOT)/usr/include/PR -I. 
MAKEOPT +=  $(GMAKEOPT) $(LMAKEOPT) $(VMAKEOPT)
LCDEFS  = $(MAKEOPT)
#LCOPTS = -fno-pic -mcpu=4300 -nostdinc -I$(ROOT)/usr/include -I$(ROOT)/usr/include/PR -c -O2 -G 0

ifdef GCC			
CC = gcc  
endif
ifdef CCCC
CC = $(C++)                               ## <-- C++使用のときこれを有効に
LCOPTS =	$(LC++OPTS)               ## <-- C++使用のときこれを有効に
endif

LC++DEFS = $(LCDEFS)
LC++INCS = $(LCINCS)
#LC++OPTS = -non_shared -mips2 -fullwarn -G 0 -float -Xcpluscomm -xansi -smart
#LC++OPTS = -non_shared -fullwarn -G 0 -float -Xcpluscomm -xansi -smart
##ifdef DEVELOP_VERSION
##ifndef GCC			
#LCOPTS   += -trapuv
#LC++OPTS += -trapuv
#endif
#endif

LASINCS = $(LCINCS)
LASOPTS = -non_shared -G 0

LLDLIBS = $(BG_LIB) $(U64LIB) $(C64LIB) $(ULTRALIB)
GLDOPTS =				# デフォルトの内容を削除する

MAKEROMOPT = -m -I$(BG_INCDIR) -I$(BG_LIBDIR)/lib$(BG_LIB)
ifndef  DEBUG_ROM
ifdef  REALROM
#MAKEROMOPT += -s 128 -f 0xff		# -s ROM容量 -f 未使用領域コード
endif
endif

### Makedepend 機能を使用するときはコメントにする ###
MKDEPOPT =
