ifeq ($(strip $(KOS_BASE)),)
$(warning Please set KOS variables in your environment. For example:)
$(warning source /opt/toolchains/dc/kos/environ.sh)
$(error   Failed to find KallistiOS installation)
endif


#---------------------------------------------------------------------------------
# Configurable options
#---------------------------------------------------------------------------------
BUILD_DIR	:= build/dc
SOURCE_DIRS	:= src third_party/bearssl src/dreamcast
TARGET 		:= ClassiCube-dc
RUN_PROGRAM	?= flycast

default: $(TARGET).cdi


#---------------------------------------------------------------------------------
# Code generation
#---------------------------------------------------------------------------------
CFLAGS	:= -g -DNDEBUG -O3 -fipa-pta -fno-pie -flto=auto -fomit-frame-pointer -fbuiltin -ffast-math -ffp-contract=fast -mfsrra -mfsca -pipe -fno-math-errno -DPLAT_DREAMCAST
LDFLAGS	:= -g
LIBS	:= -lm -lppp -lkosfat


#---------------------------------------------------------------------------------
# Compiler tools
#---------------------------------------------------------------------------------
CC		:= kos-cc
OBJCOPY := sh-elf-objcopy
LINK	:= $(CC)

CDI4DC		:= cdi4dc
SCRAMBLE 	:= $(KOS_BASE)/utils/scramble/scramble


#---------------------------------------------------------------------------------
# Executable generation
#---------------------------------------------------------------------------------
ISO_DIR	:= $(BUILD_DIR)/ISO_FILES

OEXT		:= .elf
GEN_FILES 	:= $(TARGET).cdi $(TARGET).iso $(TARGET)-scr.bin $(TARGET).bin
include misc/makefiles/common_build.mk
	
$(TARGET).bin: $(TARGET).elf
	$(OBJCOPY) -R .stack -O binary $< $@

# https://dcemulation.org/phpBB/viewtopic.php?t=105269
$(TARGET)-scr.bin: $(TARGET).bin
	$(SCRAMBLE) $< $@
	
$(TARGET).iso: $(TARGET)-scr.bin
	mkdir -p $(ISO_DIR)/audio $(ISO_DIR)/maps $(ISO_DIR)/texpacks $(ISO_DIR)/texturecache
	cp $< $(ISO_DIR)/1ST_READ.BIN
	cp misc/cc_textures.zip $(ISO_DIR)/texpacks/default.zip
	cp misc/dreamcast/IP.BIN IP.BIN
	mkisofs -G IP.BIN -C 0,11702 -J -l -r -quiet -o $@ $(ISO_DIR)
# genisoimage -V ClassiCube -G IP.BIN -joliet -rock -l -o $@ $(ISO_DIR)

$(TARGET).cdi: $(TARGET).iso
	$(CDI4DC) $< $@


#---------------------------------------------------------------------------------
# common targets
#---------------------------------------------------------------------------------
include misc/makefiles/common_targets.mk
