
CC=g++-4.7
CFLAGS=--std=c++0x -O2 -g
LD=g++-4.7
LDFLAGS=
OBJPATH=/tmp/laziness_tests/obj
BINPATH=/tmp/laziness_tests/bin


build: $(OBJPATH) $(BINPATH) build-test_r build-test_lazy build-test_list

run: build
	$(BINPATH)/test_r &&\
	$(BINPATH)/test_lazy &&\
	$(BINPATH)/test_list

build-test_r: $(OBJPATH)/test_r.o $(OBJPATH)/test_base.o
	$(LD) $(LDFLAGS) $(OBJPATH)/test_r.o $(OBJPATH)/test_base.o -o $(BINPATH)/test_r

build-test_lazy: $(OBJPATH)/test_lazy.o $(OBJPATH)/test_base.o
	$(LD) $(LDFLAGS) $(OBJPATH)/test_lazy.o $(OBJPATH)/test_base.o -o $(BINPATH)/test_lazy

build-test_list: $(OBJPATH)/test_list.o $(OBJPATH)/test_base.o
	$(LD) $(LDFLAGS) $(OBJPATH)/test_list.o $(OBJPATH)/test_base.o -o $(BINPATH)/test_list

$(OBJPATH)/test_r.o: test_r.cc test_base.h ../r.h
	$(CC) $(CFLAGS) -c -o $(OBJPATH)/test_r.o test_r.cc

$(OBJPATH)/test_lazy.o: test_lazy.cc test_base.h ../lazy.h ../delegate.h ../r.h
	$(CC) $(CFLAGS) -c -o $(OBJPATH)/test_lazy.o test_lazy.cc

$(OBJPATH)/test_list.o: test_list.cc test_base.h ../list.h ../lazy.h ../delegate.h ../r.h
	$(CC) $(CFLAGS) -c -o $(OBJPATH)/test_list.o test_list.cc

$(OBJPATH)/test_base.o: test_base.cc test_base.h
	$(CC) $(CFLAGS) -c -o $(OBJPATH)/test_base.o test_base.cc

clean:
	rm -rf $(OBJPATH) $(BINPATH)

$(OBJPATH):
	mkdir -p $(OBJPATH)

$(BINPATH):
	mkdir -p $(BINPATH)

