# ----------------------------------------------------------------------------
# Hyper Operating System
#
# Copyright (C) 1998-2008 by Project HOS
# http://sourceforge.jp/projects/hos/
# ----------------------------------------------------------------------------


# %jp{^[Qbg}
TARGET = sample

# %jp{fBNg}
OS_DIR             = ..\..\..\..\..
KERNEL_DIR         = $(OS_DIR)\kernel
KERNEL_CFGRTR_DIR  = $(OS_DIR)\cfgrtr\build\msc
KERNEL_MAKINC_DIR  = $(KERNEL_DIR)\build\common\nmake
KERNEL_BUILD_DIR   = $(KERNEL_DIR)\build\arm\lpc2000\armcc
HOSAPLFW_DIR       = $(OS_DIR)\aplfw
HOSAPLFW_INC_DIR   = $(HOSAPLFW_DIR)
HOSAPLFW_BUILD_DIR = $(HOSAPLFW_DIR)\build\arm\arm_v4t\armcc


# %jp{ʒ`Ǎ}
!include $(KERNEL_MAKINC_DIR)\common.inc


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


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


# %jp{fobOł̒`ύX}
!if "$(DEBUG)" == "Yes"
HOSAPLFW_LIB = $(HOSAPLFW_BUILD_DIR)\hosaplfwdbg.$(EXT_LIB)
!endif


# %jp{}bv}
!if "$(MEMMAP)" == "ext"
# %jp{O}
TARGET      = $(TARGET)ext
SECTION_RO = 0x80008000
SECTION_RW = 0x80010000
!else
!if "$(MEMMAP)" == "ram"
# %jp{RAM}
SECTION_RO = 0x00000000
SECTION_RW = 0x80010000
!else
# %jp{ROM}
AFLAGS      = $(AFLAGS) --predefine="ROM_AT_ADDRESS_ZERO SETL {TRUE}"
SECTION_RO = 0x00000000
SECTION_RW = 0x80010000
!endif
!endif



# %jp{tOݒ}
CFLAGS  = --cpu=ARM7TDMI-S --apcs=inter --thumb
AFLAGS  = --cpu=ARM7TDMI-S --apcs=inter --thumb
LNFLAGS = --ro_base=$(SECTION_RO) --rw_base=$(SECTION_RW) --first=vectors.o --entry=$(SECTION_RO)


# %jp{o̓t@C}
TARGET_EXE = $(TARGET).$(EXT_EXE)
TARGET_BIN = $(TARGET).$(EXT_BIN)
TARGET_HEX = $(TARGET).$(EXT_HEX)


# %jp{RpCˑ̐ݒǍ}
!include $(KERNEL_MAKINC_DIR)\armcc_d.inc

# %jp{st@Cʒ`̓Ǎ}
!include $(KERNEL_MAKINC_DIR)\makexe_d.inc


# %jp{CN[hfBNg}
INC_DIRS = $(INC_DIRS) $(HOSAPLFW_INC_DIR)


# %jp{\[XfBNg}
SRC_DIRS = $(SRC_DIRS) . ..


# %jp{AZut@C̒ǉ}
ASRCS = $(ASRCS) .\vectors.s
ASRCS = $(ASRCS) .\startup.s
ASRCS = $(ASRCS) .\uish.s


# %jp{Ct@C̒ǉ}
CSRCS = $(CSRCS) ..\kernel_cfg.c
CSRCS = $(CSRCS) ..\main.c
CSRCS = $(CSRCS) ..\boot.c
CSRCS = $(CSRCS) ..\ostimer.c


# %jp{IuWFNgt@C̒ǉ}
OBJS = $(OBJS) $(OBJS_DIR)\vectors.$(EXT_OBJ)
OBJS = $(OBJS) $(OBJS_DIR)\startup.$(EXT_OBJ)
OBJS = $(OBJS) $(OBJS_DIR)\uish.$(EXT_OBJ)
OBJS = $(OBJS) $(OBJS_DIR)\kernel_cfg.$(EXT_OBJ)
OBJS = $(OBJS) $(OBJS_DIR)\main.$(EXT_OBJ)
OBJS = $(OBJS) $(OBJS_DIR)\boot.$(EXT_OBJ)
OBJS = $(OBJS) $(OBJS_DIR)\ostimer.$(EXT_OBJ)


# %jp{Cut@C̒ǉ}
LIBS = $(LIBS) $(HOSAPLFW_LIB)



# --------------------------------------
#  %jp{[}
# --------------------------------------

all: make_subproject kernel_make make_subprj makeexe_all $(OBJS_DIR)\kernel_cfg.c srcobjcp $(TARGET_EXE)

make_subproject:
	$(CMD_CD) $(HOSAPLFW_BUILD_DIR)
	$(MAKE)
	$(CMD_CD) $(MAKEDIR)

clean: makeexe_clean
	-$(CMD_RM) $(TARGET_EXE) $(TARGET_EXE) $(OBJS) ..\kernel_cfg.c ..\kernel_id.h

mostlyclean: clean kernel_clean
	$(CMD_CD) $(HOSAPLFW_BUILD_DIR)
	$(MAKE) clean
	$(CMD_CD) $(MAKEDIR)


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

$(OBJS_DIR)\kernel_cfg.c: ..\kernel_cfg.c
	$(CMD_CP) ..\kernel_cfg.c $(OBJS_DIR)
	$(CMD_CP) ..\kernel_id.h $(OBJS_DIR)


# %jp{st@Cʃ[̓Ǎ}
!include $(KERNEL_MAKINC_DIR)\makexe_r.inc

# %jp{RpCˑ̃[`Ǎ}
!include $(KERNEL_MAKINC_DIR)\armcc_r.inc



# %jp{Rs[}
srcobjcp:
	$(CMD_CP) ..\*.c $(OBJS_DIR)
	$(CMD_CP) .\*.s $(OBJS_DIR)



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

$(OBJS_DIR)\vectors.$(EXT_OBJ)		:	$(OBJS_DIR)\vectors.s
$(OBJS_DIR)\startup.$(EXT_OBJ)		:	$(OBJS_DIR)\startup.s
$(OBJS_DIR)\uish.$(EXT_OBJ)			:	$(OBJS_DIR)\uish.s
$(OBJS_DIR)\kernel_cfg.$(EXT_OBJ)	:	$(OBJS_DIR)\kernel_cfg.c ..\kernel_id.h
$(OBJS_DIR)\main.$(EXT_OBJ)			:	$(OBJS_DIR)\main.c       ..\kernel_id.h
$(OBJS_DIR)\boot.$(EXT_OBJ)			:	$(OBJS_DIR)\boot.c       ..\kernel_id.h ..\boot.h
$(OBJS_DIR)\ostimer.$(EXT_OBJ)		:	$(OBJS_DIR)\ostimer.c    ..\kernel_id.h ..\ostimer.h


# end of file
