# SET THIS TO YOUR SOURCECODE ROOTDIRECTORY
ROOTDIR=/freedo~1/sources

# remove this if you don't want the program to be verbose
debug = # -DDEBUG -D_DEBUG -D_DEBUG_ -g

# remove this if you don't want to include the Kernel Debugger
kdebugger = -D_INCLUDE_DEBUGGER_

cflags=-Wall -Wstrict-prototypes -O2 -fno-builtin -funsigned-char
#cflags=-Wall -Wno-unused -fno-builtin

lflags=-oformat coff-go32 -Map image.map 

INC=$(ROOTDIR)/include

export 

SUBDIRS=lib kernel devices debugger fs
LIB=lib/lib.a
KERNEL=kernel/start.o kernel/memmgmt.o kernel/except.o kernel/irq.o \
       kernel/schedule.o kernel/waitq.o kernel/kprint.o kernel/dma.o
DEVICES=devices/devices.o devices/timer.o devices/keyboard.o \
	devices/console.o devices/lpt.o devices/ramdisk.o \
	devices/floppy.o
FS=fs/minifs.o

ifdef kdebugger
DEBUGGER=debugger/debugger.o debugger/unassmbl.o
endif

.c.o :
	gcc -c -I$(INC) $(cflags) $(debug) $(kdebugger) $<

.s.o :
	gcc -c $<

all : image # loader.exe

clean:
	$(MAKE) -C debugger clean
	$(MAKE) -C devices clean
	$(MAKE) -C kernel clean
	$(MAKE) -C lib clean
	$(MAKE) -C fs clean
	del *.o
	del *.map

new: clean all

image : subdir
	ld -s $(lflags) -o image $(KERNEL) $(DEBUGGER) $(DEVICES) $(FS) $(LIB)
#	strip image

loader.exe:	loader/loader.cpp #loader/ldr_asm.obj
		mk.bat

subdir:
ifdef kdebugger
	$(MAKE) -C debugger 
endif
	$(MAKE) -C devices 
	$(MAKE) -C kernel 
	$(MAKE) -C lib 
	$(MAKE) -C fs
#	for i in $(SUBDIRS); do $(MAKE) -C $$i; done

dep :
	$(MAKE) -C debugger dep
	$(MAKE) -C devices dep
	$(MAKE) -C kernel dep
	$(MAKE) -C lib dep
	$(MAKE) -C fs dep

ifeq (depend,$(wildcard depend))
include depend
endif

