#
#	Makefile
#
#	* Tue Dec  4 04:41:51 JST 2001 Naoyuki Sawa
#	- 作成開始。
#	* Sat May 25 15:43:00 JST 2002 Naoyuki Sawa
#	- ライブラリ構築用に特化したバージョンを作成。
#	- アプリケーション構築用に特化したバージョンを作成。
#	* Tue Jul  2 12:55:00 JST 2002 Naoyuki Sawa
#	- 自作ツールのマクロ定義を追加。
#	- lib,srf,pexの出力ファイル名を$@で指定。
#	- DEBUGシンボル定義時は、CFLAGSだけでなくLDFLAGSにも-gを追加。
#	  -gを指定しないと、リンク時にデバッグ情報が削除されてしまう。
#	* Sat Jul 20 21:16:00 JST 2002 Naoyuki Sawa
#	- データコンバート用の記述を追加しました。
#	* Mon Jul 22 21:10:00 JST 2002 Naoyuki Sawa
#	- データコンバート用の記述にdppcmcnvを追加しました。
#	* Mon Jul 23 04:25:00 JST 2002 Naoyuki Sawa
#	- これまでライブラリ構築用とアプリケーション構築用のMakefileを
#	  別々に管理していましたが、共通部分をclip.mkに分離し、
#	  異なる部分だけをそれぞれのMakefileに残すようにしました。
#	* Sun Jul 28 22:14:00 JST 2002 Naoyuki Sawa
#	- $(PROJECT).pexの依存ファイルに$(ICON)を追加しました。
#	* Tue Nov 19 12:30:00 JST 2002 Naoyuki Sawa
#	- 高速RAM対応のために、大幅な改造を行いました。
#	  詳細については、各部分のコメントを参照してください。
#	* Sat Feb 22 13:47:00 JST 2003 Naoyuki Sawa
#	- 圧縮ファイルの定義（DATA）とアクションを追加しました。
#	  圧縮ファイルの生成は「make all」で行われますが、
#	  インストールは「make install］では行われません。
#	  インストールするには別途「make install_dat」を行ってください。
#	* Thu Feb 27 19:08:00 JST 2003 Naoyuki Sawa
#	- APP_LDFLAGS修正。clip.libのリンク指示位置をもう一つ追加。
#	* Tue Apr 1 19:00:00 JST 2003 Naoyuki Sawa
#	- 高速RAM転送モジュールの分割に対応。
#	* Sun May 4 18:05:00 JST 2003 Naoyuki Sawa
#	- ZIP圧縮ファイルのマクロ名「DATA」を「ZIP」に変更しました。
#	  拡張子やルール名も、datからzipへ変更しました。
#	- FPKファイルの定義（FPK）とアクションを追加しました。
#	* Sun Sep 15 15:33:00 JST 2003 Naoyuki Sawa
#	- S1C33用GCC3.xコンパイラドライバ(c33-pcc.exe)を使うために、マクロPCC33を定義しました。
#	* Sat Nov 22 06:00:00 JST 2003 Naoyuki Sawa
#	- トレース出力の使用/使用なしを選択するための、TRACEマクロ定義を追加しました。
#	  トレース出力を使用する場合は「TRACE=1」としてください。
#	  トレース出力を使用しない場合は「TRACE=0」とするか、またはコメントアウトしてください。
#	* Sun May 23 10:02:00 JST 2004 Naoyuki Sawa
#	- ADPCM可変周波数を16000[Hz]以外に変更するための、ADPCM_Vマクロを用意しました。
#	  ADPCM_Vマクロが定義されていると、指定周波数のクォリティでADPCMデータを作成します。
#	  (音質の変化のみです。音が高くなったり低くなったりするのではありません。)
#	  ADPCM_Vマクロが定義されていなければ、これまで通り16000[Hz]のADPCMデータを作成します。
#	* Sat Jul 26 06:10:00 JST 2004 Naoyuki Sawa
#	- LZH圧縮ファイルの生成規則とクリーンアップ規則を追加しました。
#	* Fri Sep 3 19:00:00 JST 2004 Naoyuki Sawa
#	- 自作ツールの詳細メッセージ出力を抑制するための、QUIETシンボルを追加しました。
#	  QUIETシンボルを定義すると、詳細メッセージ出力を抑制します。　
#	  QUIETシンボルを定義しなければ、これまでどおり詳細メッセージを出力します。
#	* Mon Dec 27 12:13:00 JST 2004 Naoyuki Sawa
#	- スタックレイアウトの大幅な変更を行いました。
#	* Wed Jun 01 20:49:00 JST 2005 Naoyuki Sawa
#	- clip.libとfram.libの分離に伴い、APP_LDFLAGSを変更しました。
#	* Sun Dec 18 04:21:00 JST 2005 Naoyuki Sawa
#	- make cleanで、Visual C++の生成ファイルも削除するよう、処理を追加しました。
#	* Wed Feb 22 00:00:00 JST 2006 Naoyuki Sawa
#	- APP_CFLAGS から -I$(CLIP) -b オプションを削除しました。
#	  今後は clip.mk にて、共通に設定されます。
#	* Mon Mar 27 03:05:00 JST 2006 Naoyuki Sawa
#	- [アプリケーション定義の高速RAMルーチン の構成例]を追加し、初期設定としました。
#	* Tue Jun 27 06:56:15 JST 2006 Naoyuki Sawa
#	- Expatのライブラリ(expat.lib)リンクを追加しました。
#	* Mon Jul 17 21:34:16 JST 2006 Naoyuki Sawa
#	- pexファイルの末尾にリソースを添付するための、RESOURCEマクロ定義を追加しました。
#	  また、$(PROJECT).pexの生成ルールに、リソースを添付するための処理を追加しました。
#	* Fri Jul 28 00:37:23 JST 2006 Naoyuki Sawa
#	//- 自作のMetasequoiaプラグイン(ExportClipMesh)を使って出力した、XML形式のメッシュ、または、
#	//  ワイヤーフレームデータファイルから、C言語形式への変換規則記述例を追加しました。
#	//- 共通のclip.mkにて*.xmlから*.cへの暗黙の生成規則を定義するのではなく、
#	//  プロジェクト毎のMakefileにて個別に変換規則を記述することにした理由は、
#	//  clip.mkに書いたコメント(2006/07/28)を参照してください。
#	//→2006/09/27 以上の記述はもう旧くなりました。
#	* Wed Dec 20 17:50:03 JST 2006 Naoyuki Sawa
#	- dppcmcnv.exeの-x[rate]オプション(2-bit ADPCM)追加に伴い、Makefileからdppcmcnv.exeへのオプション指定方法を変更しました。
#	  これまでは、ADPCM_Vマクロが指定されていれば4-bit ADPCM可変周波数、それ以外は4-bit ADPCM固定周波数としていましたが、
#	  今後は、dppcmcnv.exeへの形式オプションを直接DPPCMCNV_FLAGSマクロにて指定し、柔軟に対応できるよう変更しました。
#	  ADPCM_Vマクロは、もう、意味をなさなくなったので、注意してください。
#	* Tue Feb 27 13:46:29 JST 2007 Naoyuki Sawa
#	- cleanの対象に、*.pgdと*.ppdも含めました。
#	  これまではプロジェクト毎に設定していましたが、*.pgdや*.ppdがオリジナルであるケースはまず有り得ないと判断したからです。
#	  *.pgdはgrp\*.bmpから、*.ppdはsnd\*.wavから生成するので、常に削除しても安全と判断し、標準でcleanの対象としました。
#	* Sat May 05 20:50:47 JST 2007 Naoyuki Sawa
#	- clip/clip.mkのLDFLAGSに-lcrefを追加したことに伴い、clean:の対象に*.crfを追加しました。
#	* Tue Jan 08 11:47:29 JST 2008 Naoyuki Sawa
#	- カスタムスタートアップルーチン(cstart.o)を使うための変更を行いました。
#	* Sun Aug 10 23:36:59 JST 2008 Naoyuki Sawa
#	- tool/ExportPieceClipが、<vector>要素を固定小数点でなく浮動小数点で出力するよう変更したことに追従し、
#	  MESHLOAD_FLAGSマクロと、WIRELOAD_FLAGSマクロを追加しました。
#	  浮動小数点のまま読み込んで浮動小数点MESH(WIRE)を出力する場合は、「-f」を指定してください。
#	  固定小数点に変換して固定小数点MESH(WIRE)を出力する場合は、「-x」を指定してください。
#	  どちらも指定しなければ、「-f」(浮動小数点)と同じ扱いとなります。
#	* Fri Jan 15 19:19:21 JST 2010 Naoyuki Sawa
#	- clip.libを、clip1.libとclip2.libに分割したことに追従しました。
#

#DEBUG=1
#TRACE=1
#QUIET=1
CLIP=..\clip
#CLIP=..

#############################################################################
#	マクロ定義
#############################################################################

# プロジェクト名を指定してください。
# プロジェクト名はターゲットファイルのベース名となります。
PROJECT = towrresc

# メニューに表示するタイトルを指定してください。
#CAPTION = $(PROJECT)
CAPTION = "ﾀﾜｰﾘﾝｸﾞﾚｽｷｭｰﾓﾄﾞｷ"

# アイコンファイル名を指定してください。
# アイコンファイルがなければICONの定義をコメントアウトしてください。
ICON = $(PROJECT).pid

# pexファイルの末尾に添付する、リソースファイル名を指定してください。
# リソースファイルが無ければ、RESOURCEの定義をコメントアウトしてください。
# 以下はfpkファイルを添付する例ですが、リソースファイル形式は何でも構いません。
#RESOURCE = $(PROJECT).fpk

# 高速RAMに転送するモジュールを列挙してください。
# 必ず先頭にframtop.oを記述してください。その他のモジュールは選択可能です。
# [最小構成]
#FRAM_OBJS = framtop.o
# [汎用モジュールの最大構成（実際には全部高速RAMに置くのは無理です）]
#FRAM_OBJS = framtop.o \
#            framfix.o framldir.o framdraw.o framfont.o framline.o \
#            framdprm.o framds11.o framds12.o framds13.o framds14.o framds15.o \
#                       framds21.o framds22.o framds23.o framds24.o framds25.o \
#            frammod1.o frammod2.o
# [MP3プレイヤー構成]
#FRAM_OBJS = framtop.o frammp3.o
# [Z80エミュレーション構成]
#FRAM_OBJS = framtop.o framz80.o framz80a.o
# [Z80(高速版)エミュレーション構成]
#FRAM_OBJS = framtop.o framz8c.o framz8ca.o
# [AYプレイヤー構成]
#FRAM_OBJS = framtop.o framz80.o framz80a.o framay3.o
# [MOS6502エミュレーション構成]
#FRAM_OBJS = framtop.o framm65.o framm65a.o
# [MOS6502(高速版)エミュレーション構成]
#FRAM_OBJS = framtop.o fram65c.o fram65ca.o
# [W65C02エミュレーション構成]
#FRAM_OBJS = framtop.o framw65.o framw65a.o
# [SIDプレイヤー構成]
#FRAM_OBJS = framtop.o framm65.o framm65a.o framsid.o frampsid.o
# [SAPプレイヤー構成]
#FRAM_OBJS = framtop.o framm65.o framm65a.o frampky.o framsap.o
# [S-SMP(SPC700)エミュレーション構成]※未完成
#FRAM_OBJS = framtop.o framssm.o framssma.o
# [SPCプレイヤー構成]※未完成
#FRAM_OBJS = framtop.o framssm.o framssma.o framsds.o framspc.o
# [VGMプレイヤー構成]
#FRAM_OBJS = framtop.o framsn7.o framvgm.o
# [DMG-CPUエミュレーション構成]
#FRAM_OBJS = framtop.o framdmg.o framdmga.o
# [DMG-CPU(高速版)エミュレーション構成]
#FRAM_OBJS = framtop.o framdmc.o framdmca.o
# [GBSプレイヤー構成]
#FRAM_OBJS = framtop.o framdmg.o framdmga.o framdms.o framgbs.o
# [M6800エミュレーション構成]
#FRAM_OBJS = framtop.o framm68.o framm68a.o
# [M62プレイヤー構成]
#FRAM_OBJS = framtop.o framm68.o framm68a.o framay3.o
# [M6809エミュレーション構成]
#FRAM_OBJS = framtop.o framm69.o framm69a.o
# [WSGプレイヤー構成]
#FRAM_OBJS = framtop.o framm69.o framm69a.o framwsg.o
# [HuC6280エミュレーション構成]
#FRAM_OBJS = framtop.o framc62.o framc62a.o
# [HESプレイヤー構成]
#FRAM_OBJS = framtop.o framc62.o framc62a.o framp62.o framhes.o
# [YMプレイヤー構成]
#FRAM_OBJS = framtop.o framay3.o framym.o
# [SPCプレイヤーV2構成]
#FRAM_OBJS = framtop.o framsp2a.o
# [S3Mプレイヤー構成]
#FRAM_OBJS = framtop.o frams3m.o
# [XMプレイヤー構成]
#FRAM_OBJS = framtop.o framxm.o
# [ITプレイヤー構成]※未完成
#FRAM_OBJS = framtop.o framit.o
# [GYMプレイヤー構成]
#FRAM_OBJS = framtop.o framn2.o framn2a.o framsn7.o framgym.o
# [ベクタスキャン構成]
#FRAM_OBJS = framtop.o framfix.o framline.o
# [TMS9918エミュレーション構成(16諧調必須、描画ルーチン不要)]
#FRAM_OBJS = framtop.o framldir.o framt18.o framt18a.o
# [PPUエミュレーション構成(16諧調必須、描画ルーチン不要)]
#FRAM_OBJS = framtop.o framldir.o framppu.o framppua.o
# [PPUエミュレーション(1/4解像度)構成(16諧調必須、描画ルーチン不要)]
#FRAM_OBJS = framtop.o framldir.o frampp4.o frampp4a.o
# [APUエミュレーション構成]
#FRAM_OBJS = framtop.o framldir.o framapu.o framapua.o
# [DMG-Videoエミュレーション構成]
#FRAM_OBJS = framtop.o framdmv.o framdmva.o
# [DMG-Sound(高速版)エミュレーション構成]
#FRAM_OBJS = framtop.o framdms2.o
# [TIAエミュレーション構成(16諧調必須、描画ルーチン不要)]
#FRAM_OBJS = framtop.o framldir.o framtia.o framtiaa.o
# [SUPERVISION Video/Soundエミュレーション構成]
#FRAM_OBJS = framtop.o framsv.o framsva.o
# [Signetics 2650エミュレーション構成]
#FRAM_OBJS = framtop.o frams26.o frams26a.o
# [Signetics 2637 UVIエミュレーション構成(16諧調必須、描画ルーチン不要)]
#FRAM_OBJS = framtop.o framldir.o framuvi.o framuvia.o
# [CP1610エミュレーション構成]
#FRAM_OBJS = framtop.o framc16.o framc16a.o
# [STICエミュレーション構成(16諧調必須、描画ルーチン不要)]
#FRAM_OBJS = framtop.o framldir.o framsti.o framstia.o
# [高速切替・16色表示構成]
#FRAM_OBJS = framtop.o framldir.o framdraw.o
# [2D当り判定ルーチン高速化構成]
#FRAM_OBJS = framtop.o framfix.o framht2.o
# [2-bit ADPCM Decoder構成]
#FRAM_OBJS = framtop.o framadp.o
# [単精度浮動小数点演算高速化構成]
#FRAM_OBJS = framtop.o framflt1.o framflt2.o framflt3.o
# [S1C17702エミュレーション構成]
#FRAM_OBJS = framtop.o framc17.o
# [高速切替・16色表示＋高速フォント＋MODドライバ の構成例]
#FRAM_OBJS = framtop.o framldir.o framdraw.o framfont.o frammod1.o frammod2.o
# [アプリケーション定義の高速RAMルーチン の構成例]
FRAM_OBJS = framtop.o fram.o

# オブジェクトファイルを列挙してください。
# - 高速RAM転送モジュール内の関数は、どうせ遠距離呼び出しになるので、
#   高速RAMに転送しないモジュール同士の呼び出し距離を遠くしないよう、
#   モジュールリストの中間ではなく端（最初か最後）に置くのが適切です。
OBJS =	$(FRAM_OBJS) \
	main.o \
	bg-1.o \
	pat-1.o \
	case-2.o \

# ライブラリファイルを列挙してください。
# * Tue Jan 08 11:47:29 JST 2008 Naoyuki Sawa
# - これまでは、APP_LDFLAGSの中でライブラリファイルを指定していたのを、LIBSに分離しました。
#   ライブラリファイルについての過去のコメントは、APP_LDFLAGSのコメントを参照してください。
# * Fri Jan 15 19:19:21 JST 2010 Naoyuki Sawa
# - clip.libを、clip1.libとclip2.libに分割したことに追従しました。
LIBS =	$(CLIP)\clip1.lib \
	$(CLIP)\clip2.lib \
	$(CLIP)\fram.lib \
	$(CLIP)\gsm\libgsm.lib \
	$(CLIP)\zlib\libz.lib \
	$(CLIP)\expat\expat.lib \
	$(CLIP)\clip1.lib \
	$(CLIP)\clip2.lib \
	$(CLIP)\fram.lib \

# FPKファイルに圧縮せずまとめるデータファイルを列挙してください。
# データファイルがなければFPKの定義をコメントアウトしてください。
#FPK =	

# ZIPファイルに圧縮してまとめるデータファイルを列挙してください。
# データファイルがなければZIPの定義をコメントアウトしてください。
#ZIP =	

# LZHファイルに圧縮してまとめるデータファイルを列挙してください。
# データファイルがなければLZHの定義をコメントアウトしてください。
#LZH =	

# ヘッダファイルを列挙してください。
#HEADERS = *.h

## スタックをSRAM上に取る場合は、スタックサイズを指定してください。
## 高速RAM上に取る場合は、STACKLENの定義をコメントアウトしてください。
## * Tue Nov 19 12:30:00 JST 2002 Naoyuki Sawa
## - CLiPライブラリが高速RAMにコードを転送するようになったので、
##   もう、STACKLENの定義をコメントアウトしてはいけません。
##   スタックサイズの調整は不可能です。
##   →2003/04/01 やっぱり可能です。下のコメントを読んでください。
## * Tue Apr 1 20:00:00 JST 2003 Naoyuki Sawa
## - プロジェクト毎に高速RAM転送モジュールを選択できるようになりました。
##   高速RAM転送モジュールを小さく抑えれば、高速RAM上にスタックも取れます。
##   高速RAM上にスタックを取る場合は、STACKLENの定義をコメントアウトしてください。
##   スタックの成長がコード領域を破壊しないよう、充分注意してください。
#STACKLEN = 0x1000
#
## * Sun Sep 14 22:23:00 Naoyuki Sawa
## - システムスタックサイズを変更する場合は、SYSSTACKを定義してください。
##   SYSSTACKを定義しなければ、システムスタックサイズは既定値が用いられます。
##   2003/09/14現在のところ、システムスタックサイズの既定値は1.5KBです。
## - SYSSTACKがSTACKLENを超えないよう注意してください。
##   STACKLEN未定義時のスタックサイズは4KBなので、STACKLEN未定義時は
##   SYSSTACKが4KB(=0x1000)を超えないよう注意してください。
## - 全スタックサイズからシステムスタックを引いた残りがユーザースタックとなるので、
##   実際には、システムスタックサイズが全スタックサイズの半分を超えると危険です。
##SYSSTACK = 0x0600
#
#↓2004/12/27 スタックレイアウトの大幅な変更を行いました。
#
# * Mon Dec 27 12:13:00 JST 2004 Naoyuki Sawa
# - スタックレイアウトの大幅な変更を行いました。
# - これまでは、システムスタックとユーザースタックは両方とも高速RAMに配置するか、
#   または両方ともSRAMに配置するしかありませんでした。
#   しかしながら、システムスタックはアプリケーションの動作にほとんど影響しないため、
#   システムスタックをSRAMに配置し、ユーザースタックを高速RAMに配置したいと考えました。
#   そこで、次のように仕様を変更しました。
# - システムスタックは常にSRAMに配置します。
#   SRAM上のシステムスタックサイズは、SYSSTACKにてバイト数を指示してください。
#   SYSSTACKを0とすることはできません。(起動時エラーとなります)
# - ユーザースタックは高速RAMまたはSRAMに配置します。
# - ユーザースタックをSRAMに配置する場合は、USRSTACKにてバイト数を指示してください。
# - ユーザースタックを高速RAMに配置する場合は、USRSTACKを定義しないか、または0としてください。
#   高速RAMの前半に高速RAM転送コードを配置した残りが、ユーザースタックとなります。
#   高速RAM転送コードが大きすぎて、ユーザースタック領域が小さすぎる場合は、起動時エラーとなります。
# - シンプルライブラリの場合は、SYSSTACK、USRSTACKどちらも定義しないでください。
#   システムスタックを高速RAMに配置する、通常のシンプルライブラリのスタックレイアウトとなります。
#
# <例> システムスタック=SRAM:1.5KB、ユーザースタック=SRAM:2.5KB
#	SYSSTACK = 0x600
#	USRSTACK = 0xa00
#
# <例> システムスタック=SRAM:1.5KB、ユーザースタック=高速RAM
#	SYSSTACK = 0x600
#	(USRSTACK = 0x0) ... 定義してもしなくても可
#
# ★ユーザースタックを高速RAMに配置する場合は、高速RAM転送コードを少なめにしてください!!★
# ★高速RAM転送コードが多いとユーザースタックが充分確保できず、起動時エラーとなります。 ★
#
SYSSTACK = 0x600
#USRSTACK = 0xa00

# * Sun Sep 15 15:33:00 JST 2003 Naoyuki Sawa
# - P/ECE開発環境付属のコンパイラドライバpcc33.exeの代わりに、
#   S1C33用GCC3.xコンパイラドライバc33-pcc.exeを使う場合は、PCC33マクロを定義してください。
#   PCC33マクロが定義されていなければ、pcc33.exeを使います。
# - c33-pcc.exeに対して、clip.mk既定の「-O2」ではなく「-Os（サイズ最適化）」を指定する場合は、
#   APP_CFLAGSに「-Os」の指定を追加してください。
#   c33-pcc.exe経由でc33-gcc.exeに「-O2」「-Os」の両方のオプションが渡されます。
#   c33-gcc.exeは、複数の最適化オプションが指定された場合、後で指定された方を採用します。
#   「-O2」よりも「-Os」が後で指定されているので、「-O2」は無視され「-Os」が有効になります。
#PCC33 = c33-pcc

## * Sun May 23 10:02:00 JST 2004 Naoyuki Sawa
## - ADPCMデータを16000[Hz]以外の音質で作成する場合は、ADPCM_Vマクロを定義してください。
##   16000[Hz]で作成する場合は、定義不要です。
##ADPCM_V = 8000
#↓* Wed Dec 20 17:50:03 JST 2006 Naoyuki Sawa
#↓- dppcmcnv.exeの-x[rate]オプション(2-bit ADPCM)追加に伴い、Makefile上のdppcmcnv.exeオプション指定方法を変更しました。
#↓  これまでは、ADPCM_Vマクロが指定されていれば4-bit ADPCM可変周波数、それ以外は4-bit ADPCM固定周波数としていましたが、
#↓  今後は、dppcmcnv.exeへの形式指定オプションを直接DPPCMCNV_FLAGSマクロにて指定し、柔軟に対応できるよう変更しました。
#↓  ADPCM_Vマクロは、もう、意味をなさなくなったので、注意してください。
#DPPCMCNV_FLAGS = -fp8
#DPPCMCNV_FLAGS = -fp16
DPPCMCNV_FLAGS = -fa
#DPPCMCNV_FLAGS = -fv8000
#DPPCMCNV_FLAGS = -fx8000

# * Sun Aug 10 23:36:59 JST 2008 Naoyuki Sawa
# - tool/ExportPieceClipが、<vector>要素を固定小数点でなく浮動小数点で出力するよう変更したことに追従し、
#   MESHLOAD_FLAGSマクロと、WIRELOAD_FLAGSマクロを追加しました。
#   浮動小数点のまま読み込んで浮動小数点MESH(WIRE)を出力する場合は、「-f」を指定してください。
#   固定小数点に変換して固定小数点MESH(WIRE)を出力する場合は、「-x」を指定してください。
#   どちらも指定しなければ、「-f」(浮動小数点)と同じ扱いとなります。
#MESHLOAD_FLAGS = -f
MESHLOAD_FLAGS = -x
#WIRELOAD_FLAGS = -f
WIRELOAD_FLAGS = -x

# プロジェクト別のコンパイラ・リンカオプションを定義してください。
# （インクルードパス、ライブラリパス、ライブラリファイルの列挙等）
# * Tue Nov 19 12:30:00 JST 2002 Naoyuki Sawa
# - ライブラリ指定を「-ll$(CLIP) clip.lib」から「$(CLIP)\clip.lib」に変更。
#   libz.lib、libgsm.libも同様です。
# - 高速RAMセクションの定義を追加。
#   CLiPライブラリ使用プロジェクトは必ず高速RAMを使うようになりました。
# * Mon Nov 26 07:39:00 JST 2002 Naoyuki Sawa
# - libz.lib内のunzip.cがfread/fopen等を使っています。
#   標準のio.lib内のfread/fopenではなく、clip.lib:clipio.oで解決されるよう、
#   ★★★必ずclip.libのリンクを最後に指定してください!!★★★
# * Thu Feb 27 19:08:00 JST 2003 Naoyuki Sawa
# - 前述の方法（clip.libを最後にリンク）だけでは不完全でした。
#   アプリケーション→zlib→CLiPの経路で参照される関数はこれでOKなのですが、
#   アプリケーション→CLiP→zlibの経路で参照される関数がリンクされません。
#   例えば、clipzlib.o内のmy_unzip()などがそうで、
#   アプリケーションがZIPファイル展開のためにmy_unzip()を使い、
#   zlibやunzipライブラリの関数を一度も直接使わなければ、
#   clip.libのリンク時に既にlibz.libのリンク処理は終わってしまっているので、
#   my_unzip()が参照しているlibz.lib内の関数が解決できず、エラーになります。
# - この問題を防ぐため、多少変則的ですが、libgsm.libとlibz.libの前後に
#   clip.libのリンクを二回指定することにしました。こうしておけば、
#   アプリケーション→zlib(gsm)→CLiPの経路で参照される関数も、
#   アプリケーション→CLiP→zlib(gsm)の経路で参照される関数も、
#   正しくリンクできるようです。
# * Tue Apr 1 19:00:00 JST 2003 Naoyuki Sawa
# - 高速RAMエリアのアドレス指定を、直接指定からFRAM_ADDRシンボルへ変更。
#   詳しくは、clip.mkのコメントを参照してください。（同じ日付のコメントです）
# * Tue Apr 1 20:00:00 JST 2003 Naoyuki Sawa
# - 高速RAM転送モジュールのリンク指定は、共通のclip.mkへ移しました。
#   FRAM_OBJSが定義されていたら、clip.mk内で適切なリンク指定が追加されます。
# * Wed Jun 01 20:49:00 JST 2005 Naoyuki Sawa
# - これまで全てのモジュールをclip.libに含めていたのを、clip.libとfram.libに分離しました。
#   この変更に伴い、APP_LDFLAGSにfram.libの指定を追加しました。(clip.libと同様に二か所)
# - fram.libを分離した理由は、一つのlibファイルに含まれるグローバルシンボルが多すぎると、
#   lib33.exeがエラー終了するみたいだからです。
#   これまで、全モジュールをclip.libに含めてきましたが、さらにモジュールを追加したところ
#   lib33.exeがエラー終了するように鳴りました。
#   関数を一部staticにするとエラーが回避できるため、原因を上述のように推測しました。
# - 今回、libを二つに分けたため、当分は大丈夫だと思います。
#   いずれまたグローバルシンボルが増えすぎたら、さらに分割する必要があるかも知れません。
# * Wed Feb 22 00:00:00 JST 2006 Naoyuki Sawa
# - APP_CFLAGS から -I$(CLIP) -b オプションを削除しました。
#   今後は clip.mk にて、共通に設定されます。
# * Tue Jun 27 06:56:15 JST 2006 Naoyuki Sawa
# - Expatのライブラリ(expat.lib)リンクを追加しました。
# * Tue Jan 08 11:47:29 JST 2008 Naoyuki Sawa
# - これまでは、APP_LDFLAGSの中でライブラリファイルを指定していたのを、LIBSに分離しました。
#   カスタムスタートアップルーチン(cstart.o)を使うために、リンカオプションとライブラリファイルの指定を分離する必要が生じたためです。
APP_CFLAGS  =
APP_LDFLAGS =

#############################################################################
#	アクション
#############################################################################

# ターゲット
all: srf fpk zip lzh
srf: $(PROJECT).srf
pex: $(PROJECT).pex
fpk: $(PROJECT).fpk
zip: $(PROJECT).zip
lzh: $(PROJECT).lzh
run: srf
	run $(PROJECT).srf
install: pex
	isd =w $(PROJECT).pex
install_fpk: fpk
	isd =w $(PROJECT).fpk
install_zip: zip
	isd =w $(PROJECT).zip
install_lzh: lzh
	isd =w $(PROJECT).lzh
clean:
	@if exist *.$$  del *.$$
	@if exist *.ps  del *.ps
	@if exist *.ms  del *.ms
	@if exist *.o   del *.o
	@if exist *.sym del *.sym
	@if exist *.map del *.map
	@if exist *.crf del *.crf
	@if exist *.srf del *.srf
	@if exist *.pex del *.pex
	@if exist *.fpk del *.fpk
	@if exist *.zip del *.zip
	@if exist *.lzh del *.lzh
	@if exist *.pgd del *.pgd
	@if exist *.ppd del *.ppd
#{{Win32プロジェクトと共存している場合のために、Visual C++の生成ファイルも削除します。
	@if exist *.aps del *.aps
	@if exist *.ncb del *.ncb
	@if exist *.opt del *.opt
	@if exist *.plg del *.plg
	@if exist Debug rmdir /s /q Debug
	@if exist Release rmdir /s /q Release
#}}Win32プロジェクトと共存している場合のために、Visual C++の生成ファイルも削除します。

# アクション
#$(PROJECT).srf: $(OBJS)
#	$(LD) -e$@ $(OBJS) $(LDFLAGS)
#↓ * Tue Jan 08 11:47:29 JST 2008 Naoyuki Sawa
#↓ - カスタムスタートアップルーチン(cstart.o)を使うための変更を行いました。
$(PROJECT).srf: $(OBJS)
	$(LD) -e$@ $(LDFLAGS) $(OBJS) $(LIBS)
$(PROJECT).pex: $(PROJECT).srf $(ICON) $(RESOURCE)
ifdef ICON
	ppack -e -o$@ -n$(CAPTION) -i$(ICON) $(PROJECT).srf
else
	ppack -e -o$@ -n$(CAPTION)           $(PROJECT).srf
endif
ifdef RESOURCE
	$(DPEXRES) a $@ $(RESOURCE)
endif
$(PROJECT).fpk: $(FPK)
ifdef FPK
	$(DFPCK) c $@ $(FPK)
endif
$(PROJECT).zip: $(ZIP)
ifdef ZIP
	$(MINIZIP) -o -l9 -w9 $@ $(ZIP)
endif
$(PROJECT).lzh: $(LZH)
ifdef LZH
	if exist $@ del $@
	$(LHA) a -xr2p $@ $(LZH)
endif

#############################################################################
#	依存関係
#############################################################################

# * 同じターゲットに対する依存関係行はいくつも定義できます。
#   ターゲットが依存するファイルは、それらをマージした結果となります。
#   clip.mkの中でOBJSは全ての*.hファイルに依存すると宣言しているので、
#   この場合、clippce.oは全ての*.hに加えて、clipxxxx.cにも依存します。
#clippce.o: clipxxxx.c

# * Fri Jul 28 00:37:23 JST 2006 Naoyuki Sawa
# // - 自作のMetasequoiaプラグイン(ExportClipMesh)を使って出力した、XML形式のメッシュ、または、
# //   ワイヤーフレームデータファイルから、C言語形式への変換規則記述例を追加しました。
# //
# // メッシュデータファイル毎の、明示的な生成規則の記述例です。
# //sample.c: sample.xml
# //	$(MESHLOAD) $< > $@
# //
# // ワイヤーフレームデータファイル毎の、明示的な生成規則の記述例です。
# //sample.c: sample.xml
# //	$(WIRELOAD) $< > $@
# //
# // プロジェクト内の*.xmlから*.cへの変換が、すべてメッシュデータファイルの変換ならば、
# // 以下のように、暗黙の生成規則を記述しても構いません。
# //.xml.c:
# //	$(MESHLOAD) $< > $@
# //
# // プロジェクト内の*.xmlから*.cへの変換が、すべてワイヤーフレームデータファイルの変換ならば、
# // 以下のように、暗黙の生成規則を記述しても構いません。
# //.xml.c:
# //	$(WIRELOAD) $< > $@
# //→2006/09/27 以上の記述はもう旧くなりました。

main.o: main.c *.h
fram.o: fram.c *.h

#############################################################################
# * clip.mkの中でシンボル定義の有無によって処理を分けているので、
#   clip.mkのインクルードは最後に行わなければいけません。
include $(CLIP)\clip.mk
