# ----------------------------------------------------------------------------
# Hyper Operating System V4 Advance
#  makefile for sh2-sample
#
# Copyright (C) 1998-2006 by Project HOS
# http://sourceforge.jp/projects/hos/
# ----------------------------------------------------------------------------


# --------------------------------------
#  %jp{eݒ}%en{setting}
# --------------------------------------

# %jp{^[Qbg}%en{target name}
TARGET ?= sample


# %jp{c[`}%jp{tools}
GCC_ARCH   ?= sh-elf-
CMD_CC     ?= $(GCC_ARCH)gcc
CMD_ASM    ?= $(GCC_ARCH)gcc
CMD_LINK   ?= $(GCC_ARCH)gcc
CMD_OBJCNV ?= $(GCC_ARCH)objcopy


# %jp{fBNg`}%en{directories}
TOP_DIR            = ../../../../..
KERNEL_DIR         = $(TOP_DIR)/kernel
KERNEL_CFGRTR_DIR  = $(TOP_DIR)/cfgrtr/build/gcc
KERNEL_MAKINC_DIR  = $(KERNEL_DIR)/build/common/gmake
KERNEL_BUILD_DIR   = $(KERNEL_DIR)/build/sh/sh2/gcc
HOSAPLFW_DIR       = $(TOP_DIR)/aplfw
HOSAPLFW_INC_DIR   = $(HOSAPLFW_DIR)
HOSAPLFW_BUILD_DIR = $(HOSAPLFW_DIR)/build/sh/sh2/gcc


# %jp{RtBM[^`}
KERNEL_CFGRTR = $(KERNEL_CFGRTR_DIR)/h4acfg-sh2


# %jp{J[ltbN̐ݒ}%en{kernel hook}
KERNEL_HOK_TSK = Yes
KERNEL_HOK_ISR = Yes


# %jp{ʒ`Ǎ}%en{common setting}
include $(KERNEL_MAKINC_DIR)/common.inc


# %jp{Cu`}%en{library}
HOSAPLFW_LIB = $(HOSAPLFW_BUILD_DIR)/hosaplfw.$(EXT_LIB)


# %jp{fobOł̒`ύX}%en{Debug}
ifeq ($(DEBUG),Yes)
TARGET := $(TARGET)dbg
HOSAPLFW_LIB = $(HOSAPLFW_BUILD_DIR)/hosaplfwdbg.$(EXT_LIB)
endif

# %jp{}bv}%en{memory map}
ifeq ($(MEMMAP),ext)
# %jp{O(j^vOpz)}
TARGET     := $(TARGET)ext
LINK_SCRIPT = link_ext.lds
else
# %jp{ROMs}%en{rom}
LINK_SCRIPT = link_rom.lds
endif


# %jp{IvVtO}%en{option flags}
CFLAGS  = -m2
AFLAGS  = -m2
LNFLAGS = -m2 -nostartfiles -Wl,-Map,$(TARGET).map,-T$(LINK_SCRIPT)


# %jp{o̓t@C}%en{output file}
TARGET_EXE = $(TARGET).$(EXT_EXE)
TARGET_MOT = $(TARGET).$(EXT_MOT)

# %jp{pXݒ}%en{add source directories}
INC_DIRS += $(HOSAPLFW_INC_DIR)
SRC_DIRS += . ..

# %jp{Cu̒ǉ}
LIBS  += $(HOSAPLFW_LIB)



# %jp{st@Cp̐ݒǍ}
include $(KERNEL_MAKINC_DIR)/makexe_d.inc

# %jp{gccp̐ݒǍ}
include $(KERNEL_MAKINC_DIR)/gcc_d.inc



# --------------------------------------
#  %jp{\[Xt@C}%en{source files}
# --------------------------------------

# %jp{AZut@C̒ǉ}%en{assembry sources}
ASRCS += ./vector.S
ASRCS += ./crt0.S

# %jp{Ct@C̒ǉ}%en{C sources}
CSRCS += ../kernel_cfg.c
CSRCS += ../main.c
CSRCS += ../boot.c
CSRCS += ../ostimer.c



# --------------------------------------
#  %jp{[`}%en{rules}
# --------------------------------------

.PHONY : all
all: kernel_make make_subprj makeexe_all $(TARGET_EXE) $(TARGET_MOT)

.PHONY : make_subprj
make_subprj:
	$(MAKE) -C $(HOSAPLFW_BUILD_DIR)

.PHONY : clean
clean: makeexe_clean
	rm -f $(TARGET_EXE) $(TARGET_EXE) $(OBJS) ../kernel_cfg.c ../kernel_id.h

.PHONY : mostlyclean
mostlyclean: clean kernel_clean
	$(MAKE) -C $(HOSAPLFW_BUILD_DIR) clean

.PHONY : depend
depend: makeexe_depend

.PHONY : mostlydepend
mostlydepend: depend kernel_depend
	$(MAKE) -C $(HOSAPLFW_BUILD_DIR) depend

.PHONY : srccpy
srccpy: makeexe_srccpy
	$(MAKE) -C $(KERNEL_BUILD_DIR) srccpy
	$(MAKE) -C $(HOSAPLFW_BUILD_DIR) srccpy

../kernel_cfg.c ../kernel_id.h: ../system.cfg $(KERNEL_CFGRTR)
	cpp -E ../system.cfg ../system.i
	$(KERNEL_CFGRTR) ../system.i -c ../kernel_cfg.c -i ../kernel_id.h

$(KERNEL_CFGRTR) : kernel_make


# %jp{st@Cp[Ǎ}
include $(KERNEL_MAKINC_DIR)/makexe_r.inc


# %jp{RpCˑ̃[`Ǎ}%en{rules for compiler}
include $(KERNEL_MAKINC_DIR)/gcc_r.inc



# --------------------------------------
#  %jp{ˑ֌W}%en{dependency}
# --------------------------------------

$(TARGET_EXE): $(LINK_SCRIPT)
$(OBJS_DIR)/sample.$(EXT_OBJ): ../sample.c ../kernel_id.h


# end of file

