MKOCTFILE ?= mkoctfile
CC = g++

all: assert_octave.o randomize cost/cost_auto_test permute/permute_tests

test: all
	./permute/permute_tests
	./cost/cost_auto_test


# These holds custom assertions helpful when working with GNU Octave API
assert_octave.o: %.o: %.cc %.h
	$(MKOCTFILE) $< -c

# Testing cost
cost/normal_test.o: %.o: %.cc
	$(MKOCTFILE) $< -c -o $@

cost/util.o: %.o: %.cc %.h
	$(MKOCTFILE) $< -c -o $@

cost/cost_spikespec_event_test.o: %.o: %.cc ../Cost_spikespec_event_fcn.o
	$(MKOCTFILE) $< -c -o $@

cost/cost_auto_test: cost/cost_auto_test.cc cost/normal_test.o \
                     cost/util.o cost/cost_spikespec_event_test.o
	$(MKOCTFILE) --link-stand-alone $< assert_octave.o cost/normal_test.o \
	cost/util.o cost/cost_spikespec_event_test.o ../*.o -lcgreen++ -o $@

# Testing permute
permute/permute_random_tests.o: %.o :%.cc ../Permute_random_fcn.h \
                                     ../Permute_random_fcn.cc
	$(MKOCTFILE) -c $< -o $@

permute/permute_event_tests.o: %.o: %.cc ../Permute_event_fcn.h
	$(MKOCTFILE) -c $< -o $@
permute/permute_tests: permute/permute_tests.cc \
                       permute/permute_random_tests.o permute/permute_event_tests.o
	$(MKOCTFILE) --link-stand-alone $< assert_octave.o ../*.o permute/*.o \
	              -lcgreen++ -o $@

# Call the make in the randomize folder to update any potential changes
randomize:
	cd .. && $(MAKE)

clean:
	rm -rf *.o cost/*.o cost/cost_auto_test permute/*.o permute/permute_tests
