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

include ../Makefile.inc

SLIRP       = $(SLSH) $(SLIRPSCRIPT) $(SLIRP_DEBUG) -refscalars -nopop \
			-mapnames datum_copy ksink_datum_copy \
			-rename "ksink_print_error" Print_Error

MODULE_DEPS = $(GLUE).o ksink.o

EXAMPLE_SCRIPT = example.sl

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

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

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

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

ksink.o: ksink.c ksink.h
	@echo
	$(C_COMPILE) ksink.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 $@
