# 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 -O2 -fomit-frame-pointer
LD=/gcc/compilers/linux/2.2.2/ld
CFLAGS=-Wall -DKERNEL -b linux -nostdinc -I$(KERNELHDRS) -O6 \
	-fomit-frame-pointer
LDFLAGS=-Ttext $(KERNADDR)

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

KERNELHDRS	=/dev/linux/include

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

all:	bootstrap Version vmlinux

bootstrap: tools/bootstrap.o tools/get_nlist.o
	$(HOSTCC) -Wall -Dlinux -I$(KERNELHDRS) -o tmp \
		tools/bootstrap.o tools/get_nlist.o
	blink from tmp to bootstrap
	rm tmp

Version:
	@/bin/sh makever.sh
	@echo \\#define UTS_RELEASE \\"0.01.pl0-`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) -Wall -Dlinux -I$(KERNELHDRS) -o $@ -c $<

tools/get_nlist.o: tools/get_nlist.c
	$(HOSTCC) -Wall -Dlinux -I$(KERNELHDRS) -o $@ -c $<

linuxsubdirs:
	cd /dev/linux/kernel && $(MAKE)
	cd /dev/linux/mm && $(MAKE)
	cd /dev/linux/lib && $(MAKE)
	cd /dev/linux/fs && $(MAKE)
	cd /dev/linux && return 0

clean:
	rm -f vmlinux bootstrap System.map
	rm -f init/*.o tools/*.o
	for i in $(SUBDIRS); do (cd $$i && $(MAKE) clean); done
