# Fichier : Makefile # Auteur : Florent Hivert ####################################################### MLC = ocamlc MLCOPT = ocamlopt MLFLAGS = # -g : debug, -p : profile, -i : interface MLTAGS = ocamltags #### Fichiers #### SRCS = rational.ml polynomials.ml INTERFS = signatures.mli $(SRCS:%.ml=%.mli) MLOBJS = $(SRCS:%.ml=%.cmo) NATOBJS = $(SRCS:%.ml=%.cmx) MLTRGLIB = poly.cma NATTRGLIB = $(MLTRGLIB:%.cma=%.cmxa) MLSTDLIB = nums.cma NATSTDLIB = $(MLSTDLIB:%.cma=%.cmxa) MAIN_FILES = poly.cma OPT_FILES = $(MAIN_FILES:%=%.opt) #### Cible principale #### .PHONY: clean all all: $(MAIN_FILES) $(MLTRGLIB) opt: $(OPT_FILES) $(NATTRGLIB) mlobjs: ${MLOBJS} natobjs: ${NATOBJS} #### Cibles automatiques #### .PRECIOUS : %.cmi %.cmo %.cmx %.cmi : %.mli $(MLC) -c $(MLFLAGS) $< %.cmo %.cmi : %.ml $(MLC) -c $(MLFLAGS) $< %.cmx : %.ml %.cmi $(MLCOPT) -c $(MLFLAGS) $< %.cma : $(MLOBJS) $(MLC) -a $(MLFLAGS) $(MLOBJS) -o $@ %.cmxa : $(NATOBJS) $(MLCOPT) -a $(MLFLAGS) $(NATOBJS) -o $@ % : %.ml $(MLTRGLIB) $(MLC) $(MLFLAGS) $(MLSTDLIB) $(MLTRGLIB) $< -o $(<:%.ml=%) %.opt : %.ml $(NATTRGLIB) $(MLCOPT) $(MLFLAGS) $(NATSTDLIB) $(NATTRGLIB) $< -o $(<:%.ml=%.opt) #### Dépendances #### dep: rm -f .depend ocamldep $(SRCS) $(INTERFS) > .depend .depend: ocamldep $(SRCS) $(INTERFS) > .depend -include .depend #### Cibles diverses #### check: rbtest test ./rbtest; ./test check.opt: rbtest.opt test.opt ./rbtest.opt; ./test.opt clean: rm -f *.cmi *.cmo *.cmx *.o *.cma *.a *.cmxa .depend \ $(MAIN_FILES) $(OPT_FILES) rm -rf doc tags: $(MLTAGS) *.ml *.mli doc: test.ml $(MLOBJS) mkdir -p doc ocamldoc -d doc -html -sort $(MLFLAGS) \ $(INTERFS) $(MAIN_FILES:%=%.ml) $(SRCS) # ocamldoc -d docinfo -texi -sort $(SRCS) # ocamldoc -latex -sort $(SRCS)