

######################################################################

# pour pouvoir compiler xlurette, il faut installer lablgtg I.
# Pour ce faire, la regle suivante devrait pouvoir marcher.
lablgtk: /tmp/lablgtk-1.2.7.tar.gz
	cd /tmp && \
	tar xvfz lablgtk-1.2.7.tar.gz && \
	cd lablgtk-1.2.7 && \
	make configure USE_DOTOPT=1 && \
	make && \
	make opt && \
	sudo make install

/tmp/lablgtk-1.2.7.tar.gz:
	cd /tmp ; wget http://www.math.nagoya-u.ac.jp/~garrigue/soft/olabl/dist/lablgtk-1.2.7.tar.gz


#####################################################################




ifndef LURETTE_PATH
LURETTE_PATH := ..
endif

-include $(LURETTE_PATH)/Makefile.common.source


ifndef BIN_INSTALL_DIR 
  BIN_INSTALL_DIR := ../$(PRE_RELEASE_DIR)/bin
endif

ifeq ($(WIN32),cygwin)
  EXE = .exe
else
  EXE :=
endif

THREAD=


LABLGTK=lablgtk

# MAKE_MODE=unix

all: opt cp

mlglade: xlurette.glade
	mlglade xlurette.glade

cat: mlglade
	mv xlurette_glade_interface.ml xlurette_glade_interface.ml0
	cat xlurette_glade_interface.ml0 \
	  | sed -e 's/\"pixmaps\//((Unix.getenv \"PIXMAP_DIR\") \^  \"/'  \
	  | sed -e 's/.xpm\"/.xpm\")/' \
	  | sed -e 's/~lower:666./~lower:(float_of_int min_int)/' \
	  | sed -e 's/~upper:666./~upper:(float_of_int max_int)/' \
	  > xlurette_glade_interface.ml


OCAMLLIB=/cygdrive/c/TEMP/ocaml/lib
cmo:  xlurette_glade_main.ml cat
	ocamlc.opt -c -I +$(LABLGTK) -I $(OCAMLLIB)  -I $(HOME)/$(HOSTTYPE)/lib -labels -c xlurette_glade_interface.ml
	ocamlc.opt -c -I +$(LABLGTK) -I $(OCAMLLIB)  -I $(HOME)/$(HOSTTYPE)/lib -labels -c xlurette_glade_callbacks.ml
	ocamlc.opt -c -pp "camlp4o" -I $(OCAMLLIB) -I +$(LABLGTK) $(THREAD) -I $(HOME)/$(HOSTTYPE)/lib -c xlurette_glade_main.ml


do:
	ocamlc.opt -verbose $(THREAD) -I $(HOME)/$(HOSTTYPE)/lib -I /usr/local/lib \
	   -I +$(LABLGTK) -I +str -o xlurette_exe$(EXE)  str.cma unix.cma  $(LABLGTK).cma gtkInit.cmo  \
	   xlurette_glade_callbacks.cmo xlurette_glade_interface.cmo xlurette_glade_main.cmo

# sous windows, il me faut utiliser la version mingw de ocaml parce que 
# les binaires labgtk ne sont dispo que pour cette version.
# Par ailleurs, on est oblig d'utiliser la version bytecode
# pour la meme raison. Arf.
win:  
	ocamlc.opt   \
		-I +str -I +lablgtk -o xlurette_exe$(EXE)  \
		str.cma unix.cma  $(LABLGTK).cma gtkInit.cmo  \
		xlurette_glade_callbacks.cmo xlurette_glade_interface.cmo \
		xlurette_glade_main.cmo



debug: dummy
	mlglade xlurette.glade
	mv xlurette_glade_interface.ml xlurette_glade_interface.ml0
	cat xlurette_glade_interface.ml0 \
	  | sed -e 's/\"pixmaps\//((Unix.getenv \"PIXMAP_DIR\") \^  \"/'  \
	  | sed -e 's/.xpm\"/.xpm\")/' \
	  > xlurette_glade_interface.ml
	ocamlc.opt -g -c -I +$(LABLGTK) -I $(HOME)/$(HOSTTYPE)/lib -labels -c xlurette_glade_interface.ml
	ocamlc.opt -g -c -I +$(LABLGTK) -I $(HOME)/$(HOSTTYPE)/lib -labels -c xlurette_glade_callbacks.ml
	ocamlc.opt -g -c -pp "camlp4o" -I +$(LABLGTK) $(THREAD) -I $(HOME)/$(HOSTTYPE)/lib -c xlurette_glade_main.ml
	ocamlc.opt -g $(THREAD) -I $(HOME)/$(HOSTTYPE)/lib \
	   -I +$(LABLGTK) -I +str -o xlurette_debug  str.cma unix.cma  $(LABLGTK).cma gtkInit.cmo  \
	   xlurette_glade_callbacks.cmo xlurette_glade_interface.cmo xlurette_glade_main.cmo

opt: dummy
	mlglade xlurette.glade
	mv xlurette_glade_interface.ml xlurette_glade_interface.ml0
	cat xlurette_glade_interface.ml0 \
	  | sed -e 's/\"pixmaps\//((Unix.getenv \"PIXMAP_DIR\") \^  \"/' \
	  | sed -e 's/.xpm\"/.xpm\")/' \
	  | sed -e 's/~lower:666./~lower:(float_of_int min_int)/' \
	  | sed -e 's/~upper:666./~upper:(float_of_int max_int)/' \
	  > xlurette_glade_interface.ml
	ocamlopt.opt -verbose -c -I +$(LABLGTK) -labels -c xlurette_glade_interface.ml
	ocamlopt.opt -verbose -c -I +$(LABLGTK) -labels -c xlurette_glade_callbacks.ml
	ocamlopt.opt -verbose -c -pp "camlp4o" -I  +$(LABLGTK) $(THREAD) -c xlurette_glade_main.ml
	ocamlopt.opt -verbose -I +$(LABLGTK) -I +str  -labels -o xlurette_exe$(EXE) \
		str.cmxa unix.cmxa $(LABLGTK).cmxa gtkInit.cmx \
	   	xlurette_glade_callbacks.cmx xlurette_glade_interface.cmx xlurette_glade_main.cmx


THREAD= -I +threads threads.cmxa gtkThread.cmx

opt_static: dummy
	mlglade xlurette.glade
	mv xlurette_glade_interface.ml xlurette_glade_interface.ml0
	cat xlurette_glade_interface.ml0 \
	  | sed -e 's/\"pixmaps\//((Unix.getenv \"PIXMAP_DIR\") \^  \"/'  \
	  | sed -e 's/.xpm\"/.xpm\")/' \
	  > xlurette_glade_interface.ml
	ocamlopt.opt  -verbose -c -I +$(LABLGTK) -labels -c xlurette_glade_interface.ml
	ocamlopt.opt  -verbose -c -I +$(LABLGTK) -labels -c xlurette_glade_callbacks.ml
	ocamlopt.opt  -verbose -c -pp "camlp4o" -I  +$(LABLGTK) $(THREAD) -c xlurette_glade_main.ml
	make xxx

xxx:
	ocamlopt.opt  -verbose -I +$(LABLGTK) -I +threads -I +str -labels -o xlurette_exe$(EXE) \
		 \
		str.cmxa unix.cmxa $(LABLGTK).cmxa  gtkInit.cmx threads.cmxa  gtkThread.cmx   \
	       -cclib -ldl  -cclib -lm -cclib -lc \
		-cclib -lxcb-aux  -cclib -lxcb-xlib   -cclib -lxcb  -cclib -lXau -cclib -lXdmcp \
		-ccopt -static xlurette_glade_callbacks.cmx \
		xlurette_glade_interface.cmx xlurette_glade_main.cmx


# -I/usr/include/gtk-1.2 -I/usr/include/glib-1.2 -I/usr/lib/glib/include
# -L/usr/lib -lgtk -lgdk -rdynamic -lgmodule -lglib -ldl -lXi -lXext -lX11 -lm

verimag: 
	cp xlurette_exe /usr/local/tools/lustre-misc/lurette/bin/


cp: 
ifeq ($(HOST_TYPE),cygwin)
	cp xlurette_exe.exe ../cygwin/bin
else
	cp xlurette_exe $(BIN_INSTALL_DIR)/
endif

clean:
	rm -f *.cm* *.o a.out xlurette_exe$(EXE) xlurette_exe.opt$(EXE) xlurette_glade_interface.ml*  xlurette_glade_callbacks.ml*
dummy:



xlurette2.ml :
	lablgladecc2 xlurette2.glade  > xlurette2.ml

