FUTURE = future.mli future.ml

nondeterminism: nondeterminism.ml
	ocamlc -thread -o nondeterminism unix.cma threads.cma nondeterminism.ml

counter: $(FUTURE) counter.ml
	ocamlc -thread unix.cma threads.cma -o counter counter.ml

pmap: $(FUTURE) pmap.ml
	ocamlc -thread unix.cma threads.cma -o pmap $(FUTURE) pmap.ml

# the following creates an executable called othreads
# if you invoke othreads like this:
#
# ./othreads -I +threads
#
# then you will enter an ocaml toplevel environment in which you can
# use the threads library

othreads: 
	ocamlmktop -thread -o othreads unix.cma threads.cma 

# as above, but includes the future module. invoke using:
#
# ./ftop -I +threads

ftop:  $(FUTURE)
	ocamlmktop -thread unix.cma threads.cma -o ftop $(FUTURE)

clean:
	rm -f *.cmo *.cmi nondeterminism counter pmap othreads ftop 