# Makefile for Amiga Linux main source directory
#
# Copyright 1993 by Hamish Macdonald
#
# This file is subject to the terms and conditions of the GNU General Public
# License.  See the file "README.legal" in the main directory of this archive
# for more details.

KERNADDR	*= 0xC0000000
HOSTCC		 = gcc
LD		 = /gcc/compilers/linux/2.2.2/ld
KERNELHDRS	*= include
INCFLAGS	*= -nostdinc -I$(KERNELHDRS)
CFLAGS		 = -Wall -DKERNEL -b linux $(INCFLAGS) -O2 -mc68020
HOSTFLAGS	*=-O2 -fomit-frame-pointer -mc68020 -Wall -Dlinux \
		      -I$(KERNELHDRS)

LDFLAGS 	 = -Ttext $(KERNADDR)

BOOTOBJS	 = tools/bootstrap.o tools/get_nlist.o tools/bootmisc.o

ARCHIVES	 = kernel/kernel.o mm/mm.o fs/fs.o # net/net.o
FILESYSTEMS	 = fs/filesystems.a
DRIVERS 	 = kernel/blk_drv/blk_drv.a kernel/chr_drv/chr_drv.a
MATH		 =
LIBS		 = lib/lib.a
SUBDIRS 	*= kernel lib mm fs # net

.c.o:
	$(CC) $(CFLAGS) -c -o $*.o $<
.s.o:
	$(CC) $(CFLAGS) -c -o $*.o $<

all:	Version vmlinux

bootstrap: $(BOOTOBJS)
	$(HOSTCC) $(HOSTFLAGS) -o tmp $(BOOTOBJS)
	blink from tmp to bootstrap
	$(RM) $(RMFLAGS) tmp

Version:
	@/bin/sh makever.sh
	@echo \\#define UTS_RELEASE \\"0.01.pl2-`cat .version`\\" > tools/version.h
	@echo \\#define UTS_VERSION \\"`date +%D`\\" >> tools/version.h
	@echo \\#define LINUX_COMPILE_TIME \\"`date +%T`\\" >> tools/version.h
	@echo \\#define LINUX_COMPILE_BY \\"`whoami`\\" >> tools/version.h
	@echo \\#define LINUX_COMPILE_HOST \\"`hostname`\\" >> tools/version.h

vmlinux: init/head.o init/main.o tools/version.o linuxsubdirs
	$(LD) $(LDFLAGS) -M init/head.o init/main.o tools/version.o \
		$(ARCHIVES) \
		$(FILESYSTEMS) \
		$(DRIVERS) \
		$(MATH) \
		$(LIBS) \
		-o vmlinux > System.map

init/head.o: init/head.s

tools/version.o: tools/version.c tools/version.h

tools/bootstrap.o: tools/bootstrap.c
	$(HOSTCC) $(HOSTFLAGS) -o $@ -c $<

tools/bootmisc.o: tools/bootmisc.c
	$(HOSTCC) $(HOSTFLAGS) -o $@ -c $<

tools/get_nlist.o: tools/get_nlist.c
	$(HOSTCC) $(HOSTFLAGS) -o $@ -c $<

linuxsubdirs:
	@for i in $(SUBDIRS); do (cd $(MAKEDIR)/$$i && echo $$i && $(MAKE)) || exit; done

clean:
	$(RM) $(RMFLAGS) System.map
	$(RM) $(RMFLAGS) init/*.o tools/*.o
	for i in $(SUBDIRS); do (cd $(MAKEDIR)/$$i && $(MAKE) clean); done

clobber: clean
	$(RM) $(RMFLAGS) vmlinux bootstrap

depend dep:
	for i in init/*.c;do (echo -n init/;$(CPP) -M $(INCFLAGS) $$i); \
		done > .depend
	for i in $(SUBDIRS); do (cd $(MAKEDIR)/$$i && $(MAKE) dep) \
		|| exit; done


.INCLUDE .IGNORE: ".depend"
