########################################################################################
# Makefile for custom interpreter
# B. Boser,  1/95

MATLAB_LIB = /usr/sww/matlab/extern/lib/dec_risc/libmat.a

# Sather compile flags
SAFLAGS = -check all -C_flag /usr/sww/lib/libgetline.a -C_flag $(MATLAB_LIB)

TARGET	= si

I_DIR	= ../Interpreter
L_DIR   = ../Library.sa
G_DIR	= ../Graph
B_DIR	= ../Boot

CS	= cs
AWK	= gawk
SI	= $(B_DIR)/$(TARGET)

########################################################################################
# make interpreter with the interface specified in CLASSES
#
$(TARGET):	mg.sa $(SOURCES) glue.o
	@echo compiling interpreter ...
	@$(CS) $(I_DIR)/main.sa mg.sa glue.o \
		-com $(I_DIR)/inter.commands \
		-com $(L_DIR)/base.commands \
		-o $(TARGET) $(SOURCES) $(SAFLAGS) \
		-only_reachable

mg.sa:		CLASSES omit.txt
	@echo generating dummy main.sa to constuct type graph ...
	echo 'SYSTEM::dummy_main("CLASSES", "main.sa")' | $(SI)
	@echo computing type graph ...
	@$(CS) $(I_DIR)/mg.short.sa main.sa \
		-com $(I_DIR)/inter.commands \
		-com $(L_DIR)/base.commands \
		-only_check -only_reachable $(SOURCES) $(SAFLAGS) -show ifc \
		| tee features.txt
	@echo generating interface.sig from features.txt ...
	$(AWK) -f $(G_DIR)/interface.awk CLASSES features.txt >interface.sig
	@echo running interpreter to produce mg.sa ...
	echo 'SYSTEM::interface("CLASSES", "interface.sig", "mg.sa")' | $(SI)

test:		$(TARGET)
	@echo "#TEST_SI.all" | $(TARGET) -com ../Library.si/base.commands >test.out

########################################################################################
# c stuff
#
glue.o:		$(I_DIR)/glue.c
		gcc -c -o glue.o $(I_DIR)/glue.c
