#■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■#
#	ファイル名	：	/Makefile
#	概要		：	統括のMakefileです。
#	詳細		：	すべてのコマンドはここに記述してあります。
#					OSのisoイメージの生成規則があります。
#	責任者		：	佐合 秀昭
#■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■#



#■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■#
#	変数定義
#■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■#
ROOT				= 


#QEMU実行オプション
# -s			ポート1234でgdbの接続を待ちます。デバッグに使用する。
# -S			スタートアップで、停止した状態にする。デバッグなどに使用する。
# -boot d		CD-ROMから起動します。
# -usb			USBドライバーを使用可能にします。
QEMU_OPTIONS		+= -s
QEMU_OPTIONS		+= -S
QEMU_OPTIONS		+= -boot d
QEMU_OPTIONS		+= -usb


#*******************************************************************************
#	mkisofs
#*******************************************************************************
#ISO 9660ファイルシステムに入れるパス。
CD_ROOT_PATH		= ./

#ブート・イメージ
BOOT_IMG			= $(OS_DIR)$(OS_NAME).img

#ブート・カタログのファイルパス
BOOT_CATALOG		= $(OS_DIR)Boot/BootCatalog/Boot.catalog

#CDのボリュームラベル
VOLUME_LABEL		= "$(OS_NAME)"

#除外ファイル、ディレクトリリスト
#ワイルドカードで指定します。
DESELECTION			+= .*.o
DESELECTION			+= .*.d
DESELECTION			+= *.map
DESELECTION			+= *.lst
DESELECTION			+= *.bin
DESELECTION			+= .cproject
DESELECTION			+= .project


#ISO 9660ファイルシステムのイメージ作成オプション
#-quiet			: 詳細な出力をさせないようにする。進捗状況が出力されない。
#-b				: ブートセクタイメージの指定
#-c				: ブート・カタログのパスを指定する。
#-gui			: GUIのために動きを切替える。現在のところこれにより出力が詳細になるが、将来的には他の効果も持つらしい。。
#-I				: ISO9660のレベルを2にする。
#-J				: Jolietディレクトリレコードを生成する。Jolietは、WindowsがISO 9660を拡張したファイルシステム。
#-R				: Rock Ridgeに対応。
#-no-bak		: バックアップファイルを含まないようにする。(.bakや#を含むファイルなど。)
#-V				: ボリュームラベル
MKISOFS_OPTIONS		+= -quiet
MKISOFS_OPTIONS		+= -b $(BOOT_IMG)
MKISOFS_OPTIONS		+= -c $(BOOT_CATALOG)
MKISOFS_OPTIONS		+= -d
MKISOFS_OPTIONS		+= -gui
MKISOFS_OPTIONS		+= -l
MKISOFS_OPTIONS		+= -J
MKISOFS_OPTIONS		+= -R
MKISOFS_OPTIONS		+= -no-bak
MKISOFS_OPTIONS		+= -V $(VOLUME_LABEL)
MKISOFS_OPTIONS		+= $(addprefix -m , $(DESELECTION))


#*******************************************************************************
#	cdrecord
#*******************************************************************************
#CDイメージ名
CD_ISO			= $(OS_NAME).iso

#CDドライブ
DEV_CDD			= /dev/cdrom

#ブランクオプション
BLANK_OPTIONS	+= blank=fast

#一般オプション
GENERAL_OPTIONS	+=

#トラックオプション
TRACK_OPTIONS	+= -data
TRACK_OPTIONS	+= -eject



#■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■#
#	インクルード
#■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■#
include	$(ROOT)Common.mk



#■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■#
#	コマンド
#■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■#
#*******************************************************************************
#	デフォルトコマンド
#*******************************************************************************
PHONY += default _default
default:
	@make -s _$@
_default: _run


#*******************************************************************************
#	イメージ作成
#*******************************************************************************
PHONY += image img _image _img
image img:
	@make -s _$@
_image _img: $(CD_ISO)


#*******************************************************************************
#	ソースファイル以外削除後、イメージ作成
#*******************************************************************************
PHONY += remake _remake
remake:
	@make -s _$@
_remake: _delete _image


#*******************************************************************************
#	実行！
#*******************************************************************************
PHONY += run _run
run:
	@make -s _$@
_run: _image
	qemu -cdrom $(CD_ISO) $(QEMU_OPTIONS)


#*******************************************************************************
#	ソースファイル以外削除後、実行
#*******************************************************************************
PHONY += rerun _rerun
rerun:
	@make -s _$@
_rerun: _delete _run


#*******************************************************************************
#	イメージ書き込み(CD-R)
#*******************************************************************************
PHONY += installr insr _installr _insr
installr insr:
	@make -s _$@
_installr _insr: _remake
	cdrecord $(GENERAL_OPTIONS) dev=$(DEV_CDD) $(TRACK_OPTIONS) $(CD_ISO)


#*******************************************************************************
#	イメージ書き込み(CD-RW)
#*******************************************************************************
PHONY += installrw insrw _installrw _insrw
installrw insrw:
	@make -s _$@
_installrw _insrw: _remake _blank
	cdrecord $(GENERAL_OPTIONS) dev=$(DEV_CDD) $(TRACK_OPTIONS) $(CD_ISO)


#*******************************************************************************
#	CD-RW初期化
#*******************************************************************************
PHONY += blank blk _blank _blk
blank blk:
	@make -s _$@
_blank _blk:
	cdrecord $(BLANK_OPTIONS)



#■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■#
#	ファイル生成規則
#■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■#
#*******************************************************************************
#	CDイメージ作成		OSイメージ(.bin) + ファイル/アプリケーション -> CDイメージ(.iso)
#*******************************************************************************
PHONY += $(CD_ISO)
$(CD_ISO):
	make -C $(OS_DIR) _image

	@echo -e "\tmkisofs\t$@"
	rm -f $@
	mkisofs $(MKISOFS_OPTIONS) -o $@ $(CD_ROOT_PATH)


.PHONY:	$(PHONY)
#■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■#
#	End of file
#■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■#

