TIME = /usr/bin/time -f "%E (real)\t%U (user)\t%S(system)"
TIME = /opt/local/bin/gtime -f "%E (real)\t%U (user)\t%S(system)"

HFLAGS  = -dynamic
HOFLAGS = $(HFLAGS) -O2

REG =	soshf soslc sossr sostr sosstr
OPT =	soshf-o soslc-o sossr-o sostr-o sosstr-o
ALL =	$(REG) $(OPT)

all: $(ALL)

run: $(ALL)
	@for f in $(REG); do \
	    /bin/echo -n "./$$f: " ; \
	    $(TIME) ./$$f; \
	    /bin/echo -n "./$$f-o: " ; \
	    $(TIME) ./$$f-o; \
	    echo ; \
	done

soshf: soshf.hs
	ghc $(HFLAGS) -o $@ $<
	rm $@.o

soshf-o: soshf.hs
	ghc $(HOFLAGS) -o $@ $<

soslc: soslc.hs
	ghc $(HFLAGS) -o $@ $<
	rm $@.o

soslc-o: soslc.hs
	ghc $(HOFLAGS) -o $@ $<

sossr: sossr.hs
	ghc $(HFLAGS) -o $@ $<
	rm $@.o

sossr-o: sossr.hs
	ghc $(HOFLAGS) -o $@ $<

sostr: sostr.hs
	ghc $(HFLAGS) -o $@ $<
	rm $@.o

sostr-o: sostr.hs
	ghc $(HOFLAGS) -o $@ $<

sosstr: sosstr.hs
	ghc $(HFLAGS) -o $@ $<
	rm $@.o

sosstr-o: sosstr.hs
	ghc $(HOFLAGS) -o $@ $<

clean:
	rm -f $(ALL) *.o *.hi
