TARGETS = zytouch-daemon zytouch-calibrate

CC = gcc
CFLAGS = -std=gnu99 -g -O2 -Wall -Wextra -Werror -Wstrict-prototypes -Wmissing-prototypes

OCAMLOPT = ocamlopt $(OFLAGS)
OFLAGS = -warn-error A

OCAML_INC =  -I +lablgtk2 -I +cairo -I +extlib -I calibrate
OCAML_LIBS = $(OCAML_INC) extLib.cmxa str.cmxa unix.cmxa lablgtk.cmxa cairo_lablgtk.cmxa cairo.cmxa gtkInit.cmx

mkdir_p=mkdir -p --
bindir=/usr/bin/
etcdir=/etc/

all : $(TARGETS)

clean :
	(cd calibrate && rm -f *.o *.cm*)
	(cd daemon && rm -f *.o)

install : $(TARGETS)
	test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
	install --owner=root --group=root zytouch-calibrate $(DESTDIR)$(bindir)
	install --owner=root --group=root zytouch-daemon $(DESTDIR)$(bindir)
	test -z "$(etcdir)" || $(mkdir_p) "$(DESTDIR)$(etcdir)"
	install --owner=root --group=root etc/zytouchd.conf $(DESTDIR)$(etcdir)
	install --owner=root --group=root etc/zytouchd_v3.conf $(DESTDIR)$(etcdir)

zytouch-calibrate : calibrate/version.cmx calibrate/util.cmx calibrate/config.cmx calibrate/orientation.cmx calibrate/tscalibrate.cmx
	$(OCAMLOPT) $(OFLAGS) $(OCAML_LIBS) $+ -o $@

zytouch-daemon : daemon/config.o daemon/util.o daemon/debug.o daemon/zytouch_usb.o daemon/zytouchd.o
	$(CC) $+ -lX11 -lXtst -lusb -lm -o $@

#---------------------------------------------------------------------
# Dependancies.

config.cmx: util.cmx 
orientation.cmx: config.cmx 
tscalibrate.cmx: version.cmx util.cmx orientation.cmx config.cmx 

%.cmx : %.ml
	$(OCAMLOPT) -c $(OCAML_INC) $< -o $@

%.mli : %.ml
	$(OCAMLC) -i $(OCAML_INC) $+

