#
#
#   Makefile
#
#

include ../include/dec.mk
SRC_TOP = ..

C_FILES   := $(wildcard *.c)

#
#   Rules
#

all: $(TMP_DIR)/$(KERNEL_FILENAME)

$(TMP_DIR)/%.bin: %.asm
	$(ECHO)  $(MSG_CREATING)$(@F)
	$(AS)    $(ASFLAGS) $< -o $@

$(TMP_DIR)/%.o: %.c
	$(ECHO)  $(MSG_CREATING)$(@F)
	$(CC)    $(CFLAGS) $(CPPFLAGS) $< -o $@

$(TMP_DIR)/%.asm_o: %.asm
	$(ECHO)  $(MSG_CREATING)$(@F)
	$(AS)    $(ASM_O_FLAGS) $< -o $@

$(TMP_DIR)/$(KERNEL_FILENAME):  $(TMP_DIR)/ipl.bin $(TMP_DIR)/boot2.bin                 \
                               $(subst $(TMP_DIR)/boot3.o,, $(addprefix $(TMP_DIR)/, $(C_FILES:.c=.o)))     \
                               $(TMP_DIR)/boot3.o $(TMP_DIR)/inthd.asm_o $(TMP_DIR)/assembly.asm_o     \
                               $(wildcard $(INC_DIR)/*) $(wildcard *.c) $(TMP_DIR)/boot3.o $(ASM_O_OBJECTS)
	$(ECHO)    $(MSG_CREATING)$(@F)
	$(LD)      $(LDFLAGS)    $(TMP_DIR)/boot3.o $(subst $(TMP_DIR)/boot3.o,, $(addprefix $(TMP_DIR)/, $(C_FILES:.c=.o))) $(TMP_DIR)/inthd.asm_o $(TMP_DIR)/assembly.asm_o -o $(TMP_DIR)/boot3.bin
	$(STRIP)   $(STRIPFLAGS) $(TMP_DIR)/boot3.bin
	$(CAT)     $(TMP_DIR)/ipl.bin $(TMP_DIR)/boot2.bin $(TMP_DIR)/boot3.bin  > $(TMP_DIR)/$(KERNEL_FILENAME)
	$(WRITEIPLINFO) $(TMP_DIR)/$(KERNEL_FILENAME)

