ifdef OPT CMO = .cmo CMA = .cma COMP = ocamlc else CMO = .cmx CMA = .cmxa COMP = ocamlopt endif #MAKE = nmake -f Makefile.nt #EXE = .exe MAKE = make EXE = #.exe opt : $(MAKE) OPT=yes all OBJS = a.cmi b.cmi add/c.cmi a$(CMO) b$(CMO) add/c$(CMO) .SUFFIXES: .cmo .cmi .cmx .ml .mli .ml.cmo: ocamlc -I add -c $< .ml.cmx: ocamlopt -I add -c $< .mli.cmi: ocamlc -I add -c $< all : emrg$(EXE) x$(CMA) clean_objs appl$(EXE) # Create the emrg utitlity # emrg$(EXE) : emrg.cmo ocamlc -o emrg$(EXE) emrg.cmo # create the ML file (x.ml) out of the implementation # files x.ml : $(OBJS) emrg$(EXE) -copy -ml a.ml b.ml add/c.ml -o x.ml # create the MLI file (x.mli) out of the mli files # x.mli : emrg$(EXE) -mli a.mli b.mli add/c.mli -o x.mli # compile x.cmi : x.mli x$(CMO) : x.ml # Create the library # x$(CMA) : $(OBJS) x.cmi x$(CMO) $(COMP) -a -o x$(CMA) a$(CMO) b$(CMO) add/c$(CMO) x$(CMO) # remove the stand alone files (a.cm*, b.cm*) # clean_objs : rm -f a.cm* b.cm* add/*.cm* # Compile the application # appl$(EXE) : x$(CMA) appl$(CMO) $(COMP) -o appl$(EXE) x$(CMA) appl$(CMO) clean : rm -f *.cm* *.obj *.o *.exe emrg appl rm -f x.ml x.mli realclean : clean rm -f *~ add/*~ *.tar *.tar.gz chmod 644 * chmod 755 add depend : ocamldep *.ml *.mli > .depend tar : rm -f *.tar.gz tar -cf emrg.tar * gzip -f emrg.tar include .depend