#
#
#  Resea (x86/Makefile)
#
#

SRC_TOP = ../..
include $(SRC_TOP)/dec.mk

DELETE_TARGET = $(wildcard *.bin) $(wildcard *.obj) $(wildcard *.o)

ASM_BIN_FILES  := ipl.asm boot1.asm boot2.asm boot3.asm
ASM_OBJ_FILES  := assembly.asm intHandler.asm
C_FILES        := $(wildcard *.c)

IPL_BIN    := ipl.bin
BOOT1_BIN  := boot1.bin
BOOT2_BIN  := boot2.bin
BOOT3_BIN  := boot3.bin
BOOT4_BIN  := boot4.bin

ASMBIN_FLAGS = -f bin -s
ASMOBJ_FLAGS = -f elf32 -s
CFLAGS       = -c -std=c99 -Wa,--32 -m32 -Os -pipe              \
               -Wall -Wunused -Wcast-qual  -Wcast-align         \
               -Winit-self                                      \
               -Wunsafe-loop-optimizations                      \
               -Wmissing-include-dirs -Wunknown-pragmas         \
               -fno-common -fno-builtin -fno-builtin-function   \
               -fno-stack-protector -mno-red-zone               \
               -nostdlib  -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-3dnow
LINKFLAGS +=  -melf_i386

all: $(KERNEL_BIN)

$(BOOT4_BIN): $(C_FILES:.c=.o) $(ASM_OBJ_FILES:.asm=.obj)
	$(LINK)    $(LINKFLAGS) -o $(BOOT4_BIN) -Map /tmp/resea.map -T boot4.ld $(C_FILES:.c=.o) $(ASM_OBJ_FILES:.asm=.obj) ../net/net.a
	$(ELF2BIN) $(BOOT4_BIN)

$(KERNEL_BIN): $(ASM_BIN_FILES:.asm=.bin) $(BOOT4_BIN)
	cat $(IPL_BIN) $(BOOT1_BIN) $(BOOT2_BIN) $(BOOT3_BIN) $(BOOT4_BIN) > $(KERNEL_BIN)
	$(ADDPADDING) $(KERNEL_BIN) $(KERNEL_BIN_FILESIZE)

clean:
	$(DELETE) $(DELETE_TARGET)

