TOP = ..
include $(TOP)/ARCH

#CC_VER = -V 2.8.1
OBJDIR = obj
PROG = kernel.gdb
ifndef INITPROG
INITPROG = simple
endif
DEFS = -DKERNEL
NOLIB = yes

ifdef ENABLE_IDE
DEFS += -DENABLE_IDE
endif

system = `uname`

# for some reason when you say make the entry point FOO, OpenBSD really makes it
# FOO+0x20, probably to account for the a.out header. Linux and GNU ld on
# OpenBSD does not do this.

ifdef LINUX
LOAD_DIRECTIVE = -Ttext F0100020
endif
ifdef FREEBSD
LOAD_DIRECTIVE = -Ttext F0100020
endif
ifdef OPENBSD
ifdef GNULD
LOAD_DIRECTIVE = -Ttext F0100020
else
LOAD_DIRECTIVE = -Ttext F0100000
endif
endif

ifdef FREEBSD
Z = -z
endif
ifdef LINUX
Z = -z
endif
ifdef OPENBSD
Z = -z
endif

Z = 

# might have to punt -dc -dp for freebsd too...
LDFLAGS = $(DBG) -dc -dp -static $(Z) $(LOAD_DIRECTIVE) -nostdlib -e start

EXTRAINC = 
INC = -nostdinc -I$(TOP) $(EXTRAINC)
EXTRATRG = kernel bochs.img
EXTRACLN = $(OBJDIR)/kernel $(OBJDIR)/initprog.h
UNUSEDOK = pmap.c
UNINITOK = 

## locore.S must be first, so it's the 
## first code in the text segment!!!
##
VPATH += kern
SRCFILES += locore.S init.c console.c pmap.c printf.c env.c kclock.c



#POST_LINK = cp kernel kernel.gdb && strip -x kernel

DOINSTALL=yes
INSTALLPREFIX=boot
EXTRAINSTALLPREFIX=boot
EXTRAINSTALL=kernel

include $(TOP)/GNUmakefile.global

##  Get embedded binaries from user directory
vpath %.b.s $(patsubst %.b.o, $(TOP)/user/%, $(EXTRAOBJ))

EXTRACLN += bochs.img bochs.img.tmp

bochs.img: kernel ../tools/bootloader/bootloader.S ../tools/bootloader/main.c
	dd if=/dev/zero	of=bochs.img~ count=10000
	dd if=$(TOP)/tools/bootloader/bootloader of=bochs.img~ conv=notrunc
	dd if=kernel of=bochs.img~ seek=1 conv=notrunc
	mv bochs.img~ bochs.img
