TOOLPATH = ../z_tools/
AR      = $(TOOLPATH)ar
AS      = $(TOOLPATH)as
AFLAGS  =
CC      = 
CF32    = $(TOOLPATH)gcc -m32 -D_PEKOE32_ -mpush-args
CF64    = $(TOOLPATH)xgcc -m64 -z nodefaultlib -mpush-args -falign-functions=2 
CFBASE  = -Wall -mno-red-zone -nostdlib -fno-exceptions -fno-builtin -fno-rtti -c -O3
CFLAGS  = $(CF64) $(CFBASE)
LD      = 
#LF32   = /bin/ld --format pe-i386 --oformat pe-i386 -m i386pe -e ___crtLeaf32 -T ../env/link32.txt
LF32    = $(TOOLPATH)ld32 -e ___crtLeaf32
LF64    = $(TOOLPATH)ld64 -e __crtLeaf64 -Map kernel.map -T $(TOOLPATH)link64.txt
LFBASE  = --gc-sections
LFLAGS  = $(LF64) $(LFBASE)
MAKE    = make
BIM2BIN = $(TOOLPATH)bim2bin.exe
ELF2COM = $(TOOLPATH)elf2com.exe
BINDCOM = $(TOOLPATH)bindcom.exe
EDIMG   = $(TOOLPATH)edimg.exe
OBJCOPY = $(TOOLPATH)objcopy
LIB64   = $(TOOLPATH)lib/pekoe64.a
CRT64   = $(TOOLPATH)lib/crt64.o
LIB32   = $(TOOLPATH)lib/pekoe32.a
CRT32   = $(TOOLPATH)lib/crt32.o
LIBGUI  = $(TOOLPATH)lib/pekoegui.a
CFINCLUDE = -I$(TOOLPATH)include
DELE    = rm -f
COPY    = cp
CAT     = cat
BXSHARE = bin

ALL_TARGET=OSLDR

all: $(ALL_TARGET)

clean:
	-rm -f $(ALL_TARGET) *.o *.elf *.bin

boot2.bin: boot2.nas
	yasm -o boot2.bin -f bin boot2.nas

kernel.o: kernel.cpp
	$(CC) $(CF64) $(CFBASE) $(CFINCLUDE) -o kernel.o kernel.cpp

kernel.elf: kernel.o $(LIB64)
	$(LD) $(LF64) $(LFBASE) -e start_kernel -o kernel.elf kernel.o $(LIB64)

OSLDR: kernel.elf boot2.bin
	$(CAT) boot2.bin kernel.elf > $(ALL_TARGET)

run: OSLDR
	$(COPY) $(TOOLPATH)bochs/pekoe.img $(TOOLPATH)bochs/op.img
	$(TOOLPATH)fat_write $(TOOLPATH)bochs/op.img OSLDR OSLDR
	$(MAKE) -C $(TOOLPATH)bochs
