#
#  Amiga Linux/m68k Loader
#
#  Makefile
#

RELEASE =	0.7

CC =		gcc -O2 -c -Wall -fomit-frame-pointer
ASM =		$(CC)
LINK =		gcc
PICCC =		$(CC) -fPIC -S
FIXPIC =	./fixpic
PICLINK =	ld -oformat binary -Bstatic
BISON =		bison -d
FLEX =		flex
INSTALL =	install
RM =		rm -f
LN =            ln -s
LATEX =		latex
DVIPS =		dvips
TAR =		tar
GZIP =		gzip

SRCDIR =	/usr/src/amiga-lilo-$(VERS)
LINUXSRC =	/usr/src/linux


OBJS =		lilo loader lilo.dvi lilo.ps
DEBUGOBJS =	dumpmapfile


All:		$(OBJS)


debug:		$(DEBUGOBJS)


lilo:		lilo.o bootcode.o conf.tab.o lex.yy.o
		$(LINK) lilo.o bootcode.o conf.tab.o lex.yy.o -o lilo

loader:		loader.pic.o linuxboot.pic.o
		$(PICLINK) loader.pic.o linuxboot.pic.o -o loader -lc

dumpmapfile:	dumpmapfile.o
		$(LINK) dumpmapfile.o -o dumpmapfile

lex.yy.c:	conf.l
		$(FLEX) conf.l

conf.tab.c:	conf.y
		$(BISON) conf.y

loader.s:	loader.c loader.h bootlib.h lilo.h linuxboot.h
		$(PICCC) loader.c

loader.pic.s:	loader.s
		$(FIXPIC) loader.s

linuxboot.s:	linuxboot.c linuxboot.h
		$(PICCC) -DUSE_RAMDISK -DMODIFY_BOOTINFO linuxboot.c

linuxboot.pic.s:	linuxboot.s
		$(FIXPIC) linuxboot.s

linuxboot.h:	$(LINUXSRC)/arch/m68k/boot/amiga/linuxboot.h
		$(LN) $(LINUXSRC)/arch/m68k/boot/amiga/linuxboot.h

linuxboot.c:	$(LINUXSRC)/arch/m68k/boot/amiga/linuxboot.c
		$(LN) $(LINUXSRC)/arch/m68k/boot/amiga/linuxboot.c


lilo.o:		lilo.c lilo.h linuxboot.h
bootcode.o:	bootcode.S
conf.tab.o:	conf.tab.c lilo.h linuxboot.h
lex.yy.o:	lex.yy.c lilo.h linuxboot.h conf.tab.h
dumpmapfile.o:	dumpmapfile.c lilo.h linuxboot.h


lilo.ps:	lilo.dvi
		$(DVIPS) lilo.dvi -o lilo.ps

lilo.dvi:	lilo.tex
		$(LATEX) lilo.tex
		$(LATEX) lilo.tex


install:	$(OBJS)
		$(INSTALL) -m 700 lilo $(DESTDIR)/sbin
		$(INSTALL) -d -m 700 $(DESTDIR)/boot
		$(INSTALL) -m 600 loader $(DESTDIR)/boot
		$(INSTALL) -m 644 lilo.8 $(DESTDIR)/usr/man/man8
		$(INSTALL) -m 644 lilo.conf.5 $(DESTDIR)/usr/man/man5
		$(INSTALL) -d -m 755 $(DESTDIR)/usr/lib/lilo
		$(INSTALL) -m 644 lilo.dvi $(DESTDIR)/usr/lib/lilo
		$(INSTALL) -m 644 lilo.ps $(DESTDIR)/usr/lib/lilo


clean:
		$(RM) $(OBJS) $(DEBUGOBJS) conf.tab.* lex.yy.c loader.s
		$(RM) loader.pic.s linuxboot.s linuxboot.pic.s linuxboot.h
		$(RM) linuxboot.c *.aux *.log *.o *.toc


DISTOBJS =	$(SRCDIR)/bootcode.S $(SRCDIR)/bootlib.h $(SRCDIR)/lilo.h \
		$(SRCDIR)/lilo.c $(SRCDIR)/conf.l $(SRCDIR)/conf.y \
		$(SRCDIR)/loader.h $(SRCDIR)/loader.c $(SRCDIR)/fixpic \
		$(SRCDIR)/lilo.conf.example $(SRCDIR)/lilo.tex \
		$(SRCDIR)/Makefile $(SRCDIR)/dumpmapfile.c \
		$(DESTDIR)/sbin/lilo $(DESTDIR)/boot/loader \
		$(DESTDIR)/usr/man/man8/lilo.8 \
		$(DESTDIR)/usr/man/man5/lilo.conf.5 \
		$(DESTDIR)/usr/lib/lilo/lilo.dvi \
		$(DESTDIR)/usr/lib/lilo/lilo.ps

DIST =		amiga-lilo-$(RELEASE).tar.gz

dist:
		make install
		make clean
		$(TAR) cvf - $(DISTOBJS) | $(GZIP) -9v > $(DIST)
