#	Makefile for extipl
#
#  Need "nasm"(8086 assembler) to compile the extipl.
#  You can get the nasm from "http://www.web-sites.co.uk/nasm/".
#
#  $Id: Makefile,v 1.7 2002/03/25 13:48:52 takamiti Exp $
#

PREFIX	?= /usr/local

BINDIR	?= $(PREFIX)/sbin
MANDIR	?= $(PREFIX)/man
JMANDIR	?= $(PREFIX)/man/ja

MAN8	?= $(MANDIR)/man8
CAT8	?= $(MANDIR)/cat8
JMAN8	?= $(JMANDIR)/man8
JCAT8	?= $(JMANDIR)/cat8

DOCDIR	?= $(PREFIX)/share/doc
ENGDIR	 = $(DOCDIR)/extipl/English
JPNDIR   = $(DOCDIR)/extipl/Japanese

CC	?= gcc
#CFLAGS += -DDEBUG

# 8086 assembler
ASM86	= nasm

PERL	= perl

PROGS	= extipl

TEMPL	= extndipl.templ
ANTARES	= antares.bin antaresA.bin
AQUILA	= altair.bin altairA.bin
TAURUS	= aldebaran.bin 
GEMINI	= pollux.bin polluxA.bin castor.bin

GEMINIFLAGS = -dWRTBL_ENABLE -dVERBOSE -dHOOKUP13
 #
 # WRTBL_ENABLE		(default: YES)
 #	set active-flag enable(write partition table if "Mark active and Boot")
 #
 # HOOKUP13		(default: YES)
 #	trap DISK BIOS(int13h) and swap drive-number, if necessary.
 #
 # VERBOSE		(default: YES)
 #	show starting message and count-down before boot
 #
 # SAVE_EACH_HDD	(default: NO)
 #	your defined-system-name write(save) to 2nd sector of each HDD.
 #	if enable this flag, Old datas in 2nd sector of each HDD is damaged.
 #

ASMDEBUG = -dCOM_DEBUG

INNERIPLS = $(ANTARES) $(AQUILA) $(TAURUS) $(GEMINI)

all: $(PROGS)

.SUFFIXES: .asm .bin .c .com
.asm.bin :
	$(ASM86) -f bin -o $@ -l $*.lst $<
	@ls -l $@
.asm.com :
	$(ASM86) $(GEMINIFLAGS) $(ASMDEBUG) -f bin -o $@ -l $*_com.lst $<
	@ls -l $@
.c :
	$(CC) $(CFLAGS) -o $@ $<

extipl  : extipl.c  extipl.h sysident.h extndipl.src

extndipl.src : bin2src $(TEMPL) $(INNERIPLS)
	./bin2src -o $@ $(TEMPL)

bin2src : bin2src.c extipl.h


install:
	@test -d $(BINDIR) || (set -x; mkdir -p -m 0755 $(BINDIR))
	install -c -s -o root -m 700 extipl $(BINDIR)
	sed -e 's#!!DOCDIR!!#$(DOCDIR)#g' extipl.8.in | gzip > extipl.8.gz
	@test -d $(MAN8) || (set -x; mkdir -p -m 0755 $(MAN8))
	install -o root -m 644 extipl.8.gz $(MAN8)
	@test -d $(ENGDIR) || (set -x; mkdir -p -m 0755 $(ENGDIR))
	install -c -o root -m 644 ../doc/English/*.txt  $(ENGDIR)
	@test -d $(JPNDIR) || (set -x; mkdir -p -m 0755 $(JPNDIR))
	install -c -o root -m 644 ../doc/Japanese/*.txt $(JPNDIR)

install-jman:
	sed -e 's#!!DOCDIR!!#$(DOCDIR)#g' extipl.8j.in | gzip > extipl.8j.gz
	@test -d $(JMAN8) || (set -x; mkdir -p -m 0755 $(JMAN8))
	install -o root -m 644 extipl.8j.gz $(JMAN8)/extipl.8.gz

uninstall:
	rm -rf $(DOCDIR)/extipl
	rm -f $(BINDIR)/extipl $(MAN8)/extipl.8* $(CAT8)/extipl.8*
	rm -f $(JMAN8)/extipl.8* $(JCAT8)/extipl.8*

clean:
	rm -f $(PROGS) bin2src extndipl.src extipl.8*.gz \
		*~ *.bak *.lst *.o *.bin *.com *.core _BootSec.*

clean-all:
	rm -f $(PROGS) bin2src extndipl.src extipl.8*.gz sysidtbl.inc version.inc\
		*~ *.bak *.lst *.o *.bin *.com *.core _BootSec.*


## ===================================================
##	ipl: gemini
## ===================================================
GEMININC = biosdef.inc gemini.inc gemini.key sysidtbl.inc hookup13.inc version.inc
DEBUGINC = debugmcr.inc debugsub.inc

pollux.bin : pollux.asm $(GEMININC)
	$(ASM86) $(GEMINIFLAGS) -f bin -o $@ -l $*.lst pollux.asm

polluxA.bin : pollux.asm $(GEMININC)
	$(ASM86) $(GEMINIFLAGS) -DFDTEST -f bin -o $@ -l $*.lst pollux.asm

castor.bin : castor.asm $(GEMININC)
	$(ASM86) $(GEMINIFLAGS) -f bin -o castor0.bin -l $*.lst castor.asm
	dd if=castor0.bin of=$@ bs=512 skip=1 2>/dev/null
	@rm -f castor0.bin

sysidtbl.inc : sysident.h
	$(PERL) ./cnvsysid.pl sysident.h > $@

version.inc : extipl.h takevers.sh
	./takevers.sh > $@

# for debug 
pollux.com : pollux.asm $(GEMININC) $(DEBUGINC)
castor.com : castor.asm $(GEMININC) $(DEBUGINC)


## ===================================================
##	ipl: taurus
## ===================================================
aldebaran.bin : pollux.asm $(GEMININC)
	$(ASM86) -dTAURUS -f bin -o $@ -l $*.lst pollux.asm


## ===================================================
##	ipl: scorpius
## ===================================================
ANTARESINC = biosdef.inc ipldef.inc

antares.bin : antares.asm $(ANTARESINC)
	$(ASM86) -f bin -o $@ -l $*.lst antares.asm

antaresA.bin : antares.asm $(ANTARESINC)
	$(ASM86) -dFDTEST -f bin -o $@ -l $*.lst antares.asm


## ===================================================
##	ipl: aquila
## ===================================================
AQUILAINC = biosdef.inc ipldef.inc

altair.bin : altair.asm $(AQUILAINC)
	$(ASM86) -f bin -o $@ -l $*.lst altair.asm

altairA.bin : altair.asm $(AQUILAINC)
	$(ASM86) -dFDTEST -f bin -o $@ -l $*.lst altair.asm


# end of Makefile
