# Copyright (c) 2011, Mickaël Delahaye <mickael.delahaye@gmail.com>
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.

OCAMLC ?= ocamlc
OCAMLOPT ?= ocamlopt

OCLOCKPATH = $(shell if which ocamlfind 2>&1 > /dev/null; then \
  ocamlfind query oclock 2> /dev/null; else echo +oclock; fi)
OCAMLC += -I $(OCLOCKPATH)
OCAMLOPT += -I $(OCLOCKPATH)

EXAMPLES=realtime getcputime

all: $(EXAMPLES:%=%.byte) $(EXAMPLES:%=%.opt)

# Generic Ocaml compilation
%.cmo:%.ml
	$(OCAMLC) -c $<
%.cmi:%.mli
	$(OCAMLC) -c $<
%.cmx:%.ml
	$(OCAMLOPT) -c $<

# Generic linking
%.byte:%.cmo
	$(OCAMLC) -o $@ oclock.cma $<
%.opt:%.cmx
	$(OCAMLOPT) -o $@ oclock.cmxa $<

# Cleaning
clean:
	$(RM) *.cmo *.cmi *.cmx *.o
distclean: clean
	$(RM) *.byte *.opt

# Phony targets
.PHONY: clean distclean all
