CC=gcc
CFLAGS=-O2 -DDEBUG
INCS=
CSW=-c

.s.o:
	@cp $*.s x.c
	@$(CC) $(CFLAGS) -traditional -E x.c -o x.s
	$(CC) $(CFLAGS) $(INCS) $(CSW) x.s -o $*.o

.c.o:
	$(CC) $(CFLAGS) $(INCS) $(CSW) $*.c

SRCS =	__panic.c crt0.c gen_glue.c v1.c v2.c v3.c v4.c v5.c v6.c v7.c v8.c v9.c

OBJS1 =	__panic.o v1.o v2.o v3.o v4.o v5.o v6.o v7.o v8.o v9.o
OBJS2 =	crt0.o gen_glue.o bcrt0.o

OBJS = $(OBJS1) $(OBJS2)

.done:	gen_glue crt0.o bcrt0.o rcrt0.o gcrt0.o libcrt.a
	touch .done

crt0.o:	crt0.c ../library/version.h
	$(CC) $(CFLAGS) $(INCS) $(CSW) -DCRT0 crt0.c

bcrt0.o: crt0.c ../library/version.h
	$(CC) $(CFLAGS) -fbaserel -DBASECRT0 $(INCS) $(CSW) crt0.c -o bcrt0.o

rcrt0.o: crt0.c ../library/version.h
	$(CC) $(CFLAGS) -fbaserel -DBASECRT0 -DRCRT0 $(INCS) $(CSW) crt0.c -o rcrt0.o

moncrt0.o: crt0.c ../library/version.h
	$(CC) $(CFLAGS) $(INCS) $(CSW) -DMCRT0 crt0.c -o moncrt0.o
	ld.bsd -x -r moncrt0.o
	mv a.out moncrt0.o

gcrt0.o: moncrt0.o gmon.o
	ld.bsd -x -r -o gcrt0.o moncrt0.o gmon.o

gmon.o: gmon.c gmon.h
	$(CC) $(CFLAGS) $(INCS) $(CSW) -fno-omit-frame-pointer gmon.c -o gmon.o
	ld.bsd -x -r gmon.o
	mv a.out gmon.o


gen_glue.o: gen_glue.c ../library/syscall.def

gen_glue: gen_glue.o
	$(CC) gen_glue.o -o gen_glue

libcrt.a .LIBRARY : $(OBJS1)


#use this as `rm', since the sksh rm doesn't know the `-f' flag
RM=dh4:c/rm
#not made by default !
libc.a: libcrt.a glue/libglue.a ../static_library/libstatic.a
	-mkdir ram:obj
#	-$(RM) -v ram:obj/*	# not by default, don't like rm's in Makefiles...
	cp libcrt.a glue/libglue.a ../static_library/libstatic.a /ram
	@cd /ram/obj; echo Unpacking archives ; \
		ar x :libcrt.a; ar x :libglue.a; \
		ar x :libstatic.a; \
		$(RM) -f ram:libc.a; \
		echo Running ar on ram:obj/ ; ar qcT ram:libc.a *; \
		echo Running ranlib on ram:libc.a, which may take a while; ranlib ram:libc.a; \
		cp ram:libc.a gcc:lib/libc.a.new; \
		echo Now verify gcc:lib/libc.a.new and possibly rename it to libc.a.
# you have to rename libc.a.new to libc.a yourself....

#not made by default !
libbc.a: libcrt.a glue/libglue.ba ../static_library/libstatic.ba
	-mkdir ram:objb
#	-$(RM) -v ram:objb/*	# not by default, don't like rm's in Makefiles...
	cp libcrt.a glue/libglue.ba ../static_library/libstatic.ba /ram
	@cd /ram/objb; echo Unpacking archives ; \
		ar x :libcrt.a; ar x :libglue.ba; \
		ar x :libstatic.ba; \
		$(RM) -f ram:libbc.a; \
		echo Running ar on ram:objb/ ; ar qcT ram:libbc.a *; \
		echo Running ranlib on ram:libbc.a, which may take a while; ranlib ram:libbc.a; \
		cp ram:libbc.a gcc:lib/libbc.a.new; \
		echo Now verify gcc:lib/libbc.a.new and possibly rename it to libbc.a.
# you have to rename libbc.a.new to libbc.a yourself....
