
MODULE_NAME	= triv
OTHER_CLEAN	= $(TEST_OUTPUT) $(GLUE).c $(TEST_BASELINE)

include ../Makefile.inc

SLIRP       = $(SLSH) -n $(SLIRPSCRIPT) $(SLIRP_DEBUG) -refscalars -nopop \
			-mapnames datum_copy triv_datum_copy \
			-rename "triv_print_error" Print_Error

MODULE_DEPS = $(GLUE).o triv.o

EXAMPLE_SCRIPT = example.sl

demo:	$(MODULE)
	@echo
	@echo Now running the example script ...
	@echo
	$(SLSH) -n $(EXAMPLE_SCRIPT)

$(MODULE): $(MODULE_DEPS)
	@echo
	$(ELF_LINK_CMD) -o $@ $(MODULE_DEPS) $(SLANGLIB)
	@echo

$(GLUE).o: $(GLUE).c
	@echo
	$(ELF_COMPILE) $(GLUE).c

$(GLUE).c: slirprc triv.h
	@echo
	@echo Generating code ...
	@echo
	$(SLIRP) triv.h
	@# Now verify SLIRP idempotence
	@$(SLIRP) triv.h 2>/dev/null

triv.o: triv.c triv.h
	@echo
	$(ELF_COMPILE) triv.c

TEST_OUTPUT   = test.out
TEST_BASELINE = test.ref
TEST_SCRIPT   = ./test.sl

test: $(TEST_BASELINE) $(MODULE) $(TEST_OUTPUT)
	diff $(TEST_BASELINE) $(TEST_OUTPUT)

$(TEST_OUTPUT): $(MODULE) $(TEST_SCRIPT) $(EXAMPLE_SCRIPT) ../examples-common.sl
	$(SLSH) $(TEST_SCRIPT) > $(TEST_OUTPUT) 2>&1

$(TEST_BASELINE): slang1.ref slang2.ref
	cp slang`echo $(SLANG_VERSION) | cut -c1`.ref $@
