#
# Makefile for oglfw 0.3
#

OCAML = ocamlopt
CAMLIDL = camlidl
CAT = cat
RM = rm -f
MV = mv


OCAMLLIBS = unix.cmxa threads.cmxa

# Mingw (uncomment when compiling on Win32) 
LIBS = -cclib -lglfw -cclib -lopengl32 -cclib -lglu32 -cclib -lcamlidl -cclib -lole32
# Linux (uncomment when compiling on Linux)
# LIBS = -cclib  -L/usr/X11R6/lib -cclib -lglfw -cclib -lGLU -cclib -lGL -cclib -lX11 -cclib -lXxf86vm -cclib -lXext -cclib -lpthread -cclib -lm -cclib -lcamlidl 

BINDIR = bin
LIBDIR = lib

# Windows
OCAMLINC = -I lib -cclib -Ilib
# Linux
#OCAMLINC = -I lib -cclib -Ilib -cclib -I/usr/X11R6/include

LABLGLLIBS = -I +lablGL lablgl.cmxa

OGLFW = $(LIBDIR)/oglfw.c $(LIBDIR)/glfw.mli $(LIBDIR)/glfw.ml

EXAMPLEDIR = examples
EXAMPLESRC = $(EXAMPLEDIR)/keytest.ml $(EXAMPLEDIR)/listmodes.ml $(EXAMPLEDIR)/mthello.ml $(EXAMPLEDIR)/triangle.ml  $(EXAMPLEDIR)/mipmaps.ml 
EXAMPLES = $(BINDIR)/keytest.exe $(BINDIR)/listmodes.exe $(BINDIR)/mthello.exe $(BINDIR)/triangle.exe $(BINDIR)/mipmaps.exe 


all:  $(EXAMPLES) 

clean: 
	$(RM) *.o
	$(RM) $(BINDIR)/*.*
	$(RM) $(EXAMPLEDIR)/*.o $(EXAMPLEDIR)/*.cmx $(EXAMPLEDIR)/*.cmi
	$(RM) $(LIBDIR)/*.o $(LIBDIR)/*.cmx $(LIBDIR)/*.cmi

# Make examples

$(BINDIR)/keytest.exe: $(EXAMPLEDIR)/keytest.ml
	$(OCAML) $(OCAMLINC) -o $(BINDIR)/keytest.exe $(OGLFW) $(EXAMPLEDIR)/keytest.ml $(LIBS)

$(BINDIR)/listmodes.exe: $(EXAMPLEDIR)/listmodes.ml
	$(OCAML) $(OCAMLINC)  -o $(BINDIR)/listmodes.exe $(OGLFW) $(EXAMPLEDIR)/listmodes.ml $(LIBS)

$(BINDIR)/mthello.exe: $(EXAMPLEDIR)/mthello.ml
	$(OCAML) $(OCAMLINC) -thread -o $(BINDIR)/mthello.exe $(OCAMLLIBS) $(EXAMPLEDIR)/mthello.ml  $(LIBS)

$(BINDIR)/triangle.exe: $(EXAMPLEDIR)/triangle.ml
	$(OCAML) $(OCAMLINC) -o $(BINDIR)/triangle.exe  $(OGLFW) $(LABLGLLIBS) $(EXAMPLEDIR)/triangle.ml $(LIBS)

$(BINDIR)/mipmaps.exe: $(EXAMPLEDIR)/mipmaps.ml
	$(OCAML) $(OCAMLINC) -o $(BINDIR)/mipmaps.exe  $(OGLFW) $(LABLGLLIBS) $(EXAMPLEDIR)/mipmaps.ml $(LIBS)




