#CXXFLAGS		= -O2 -g -Wall -fmessage-length=0
#
#BINS			= Boot.bin Kernel.bin
#TARGET			= $(OS_NAME).iso
#				
#OS_NAME			= TryOS
#
#
#
#MODE = 

# ビルド構成
BUILD_CONFIG = Debug

# 全般
OS_NAME = TryOS
TARGET = $(OS_NAME).iso


# Boot
BOOT_NAME = TryBoot
BOOT_DIR = ../../Boot/
BOOT_IMG_NAME = $(BOOT_NAME).img
BOOT_IMG_PATH = $(BOOT_DIR)$(BUILD_CONFIG)/$(BOOT_IMG_NAME)
FD_IMG_NAME = FD.img
BOOT_CATALOG = Boot.catalog

# Kernel
KERNEL_NAME = TryKernel
KERNEL_DIR = ../../Kernel/
KERNEL_IMG_NAME = $(KERNEL_NAME).img
KERNEL_IMG_PATH = $(KERNEL_DIR)$(BUILD_CONFIG)/$(KERNEL_IMG_NAME)

# CLib
# TODO CLib関連の定義

# API
# TODO API関連の定義

# ISOFSファイルツリー
ISO_PATH_ROOT = ../ISORoot/
ISO_PATH_OS_DIR = $(ISO_PATH_ROOT)$(OS_NAME)/
ISO_PATH_BOOT_DIR = $(ISO_PATH_OS_DIR)Boot/
ISO_PATH_BOOT_IMG = $(ISO_PATH_BOOT_DIR)$(BOOT_IMG_NAME)
ISO_PATH_FD_IMG = $(ISO_PATH_BOOT_DIR)$(FD_IMG_NAME)
ISO_PATH_KERNEL_DIR = $(ISO_PATH_OS_DIR)Kernel/
ISO_PATH_KERNEL_IMG = $(ISO_PATH_KERNEL_DIR)$(KERNEL_IMG_NAME)
ISO_PATH_APPS_DIR = $(ISO_PATH_ROOT)Apps/


# ISO 9660ファイルシステムのイメージ作成オプション
MKISOFS_OPTIONS += -quiet
MKISOFS_OPTIONS += -b TryOS/Boot/FD.img
#MKISOFS_OPTIONS += -c $(BOOT_CATALOG)
MKISOFS_OPTIONS += -d
MKISOFS_OPTIONS += -l
MKISOFS_OPTIONS += -J
MKISOFS_OPTIONS += -R
MKISOFS_OPTIONS += -U
MKISOFS_OPTIONS += -no-bak
MKISOFS_OPTIONS += -V $(OS_NAME)
MKISOFS_OPTIONS += $(addprefix -m , $(DESELECTION))

# イメージコピーオプション
CP_OPTIONS += -a
CP_OPTIONS += -f
CP_OPTIONS += -p
CP_OPTIONS += -u

#QEMU実行オプション
QEMU_OPTIONS		+= -boot d
QEMU_OPTIONS		+= -usb



PHONY += all
all: $(TARGET)

PHONY += clean
clean:
	rm -f .*.bin
	rm -f $(OBJS) $(TARGET)
	rm -fr $(ISO_PATH_ROOT)

PHONY += run
run: all
	qemu -cdrom $(TARGET) $(QEMU_OPTIONS)


.PHONY: $(PHONY)



# isoファイル作成
$(TARGET): $(ISO_PATH_BOOT_IMG) $(ISO_PATH_KERNEL_IMG) $(ISO_PATH_FD_IMG)
	mkisofs $(MKISOFS_OPTIONS) -o $@ $(ISO_PATH_ROOT)

# ブート用FDイメージ作成（1.44MiB）
$(ISO_PATH_FD_IMG): $(ISO_PATH_BOOT_IMG) $(ISO_PATH_KERNEL_IMG)
	dd if=/dev/zero count=1 > .zero512.bin
	dd if=/dev/zero count=2880 > .zero144.bin
	# ファイルサイズはこんな感じでとれるが。。。
	# 文字列はやっ！
#	wc -c < $(ISO_PATH_KERNEL_IMG)\
#		| cat $(ISO_PATH_BOOT_IMG) -
	cat $(ISO_PATH_BOOT_IMG) $(ISO_PATH_KERNEL_IMG) .zero144.bin\
		| dd count=2880 > $@

# ブートイメージ作成
$(ISO_PATH_BOOT_IMG): $(BOOT_IMG_PATH)
	-mkdir -p $(ISO_PATH_BOOT_DIR)
	cp $(CP_OPTIONS) $^ $@

# カーネルイメージ作成
$(ISO_PATH_KERNEL_IMG): $(KERNEL_IMG_PATH)
	-mkdir -p $(ISO_PATH_KERNEL_DIR)
	cp $(CP_OPTIONS) $^ $@






####################################################
# ↓過去のもの



#
#PHONY += $(TARGET)
#$(TARGET):	$(FDD_IMG) fsbuild
#	mkisofs $(MKISOFS_OPTIONS) -b $(FDD_IMG) -c $(BOOT_CATALOG) -o $@ $(CD_ROOT_PATH)
#
## FDDイメージ作成
## BootとKernelを結合して、FDD1.44MBのイメージを作成
#PHONY += $(FDD_IMG)
#$(FDD_IMG): $(BOOT_IMG) $(KERNEL_IMG)
#	cat $+ > $@
#
## Bootイメージ作成
## Bootのmakeを実行します。
#PHONY += $(BOOT_IMG)
#$(BOOT_IMG):
#
## Kernelイメージ作成
## Kernelのmakeを実行します。
#PHONY += $(KERNEL_IMG)
#$(KERNEL_IMG):




