#
# makefile to make the mini compiler with mcdl
#
VERSION = 2.3

MACHINE = $(shell uname -m)

OSTYPE = $(shell uname -s)

OSREL = $(shell uname -r)

TOP = $(HOME)/mini

BDIR = $(TOP)/bin

ETCDIR = $(TOP)/etc

CC = gcc

VBTREE = /vol1/marcs
#VBTREE = /usr/local/kun
#VBTREE = /home/local/marcs
#VBTREE = $(HOME)
#VBTREE = /home/vb/vbpub

MCDL = $(VBTREE)/bin/mcdl

MCDL_INC_PATH = $(shell $(MCDL) -ip)

MCDL_LIB_PATH = $(shell $(MCDL) -lp)

MCDL_CFLAGS = -v

PRELUDE = mini-std.prl

LIBS =

LDFLAGS = -L$(MCDL_LIB_PATH)

LDLIBS = -lmrts -lm

SRCS =	main.k3 \
	ast.k3 \
	lexer.k3 \
	parser.k3 \
	tokens.k3 \
	ident.k3 \
	checker.k3 \
	imc.k3 \
	imcgen.k3 \
	tgtgencommon.k3 \
	tgtgenintel.k3 \
	tgtgensparc.k3 \
	tgtgen.k3 \
	options.k3 \
	errors.k3

OBJS =	main.o

EXTSRCS =

DOC =

PROG = mini-compile

MAKEFILE = Makefile

JUNK =	tmp core config.k3 main.c

.SUFFIXES: .k3

help:
	@echo "Possible make targets:"
	@echo "all		Create local running programs."
	@echo "clean		Free disk space."
	@echo "install		Install relevant files."

all: $(PROG)

install: $(PROG)
	cp $(PROG) $(BDIR)
	strip $(BDIR)/$(PROG)

clean:
	rm -f $(JUNK) $(OBJS) $(PROG)

# Non-standard make rules
###
$(PROG): $(OBJS) $(LIBS)
	$(CC) -o $@ $(LDFLAGS) $(OBJS) $(LIBS) $(LDLIBS)

main.o: $(SRCS) config.k3
	$(MCDL) $(MCDL_CFLAGS) main.k3
	$(CC) -c $(CFLAGS) -I$(MCDL_INC_PATH) main.c

# generation of config.k3
config.k3: $(MAKEFILE)
	echo 'MODULE config.' > $@
	echo '' >> $@
	echo 'DEFINES' >> $@
	echo '   FUNCTION get default machine name (TEXT>),' >> $@
	echo '   FUNCTION get default os type (TEXT>),' >> $@
	echo '   FUNCTION get default os release (TEXT>),' >> $@
	echo '   FUNCTION get default prelude directory (TEXT>),' >> $@
	echo '   FUNCTION get prelude name (TEXT>),' >> $@
	echo '   FUNCTION get mini version (TEXT>).' >> $@
	echo '' >> $@
	echo 'FUNCTION get default machine name (TEXT>):' >> $@
	echo '   [ "'$(MACHINE)'" -> TEXT ].' >> $@
	echo '' >> $@
	echo 'FUNCTION get default os type (TEXT>):' >> $@
	echo '   [ "'$(OSTYPE)'" -> TEXT ].' >> $@
	echo '' >> $@
	echo 'FUNCTION get default os release (TEXT>):' >> $@
	echo '   [ "'$(OSREL)'" -> TEXT ].' >> $@
	echo '' >> $@
	echo 'FUNCTION get default prelude directory (TEXT>):' >> $@
	echo '   [ "'$(ETCDIR)'" -> TEXT ].' >> $@
	echo '' >> $@
	echo 'FUNCTION get prelude name (TEXT>):' >> $@
	echo '   [ "'$(PRELUDE)'" -> TEXT ].' >> $@
	echo '' >> $@
	echo 'FUNCTION get mini version (TEXT>):' >> $@
	echo '   [ "'$(VERSION)'" -> TEXT ].' >> $@
