Man Linux: Main Page and Category List

NAME

       ocamldsort - Dependency sorter for OCaml source files

SYNOPSIS

       ocamldsort [ -pp  pre-command ] [ -d dep-command ]
                [ -mli ] [ -nox ] [ -obj | -byte | -opt ] [ filename ] ...

DESCRIPTION

       The  ocamldsort(1)  command  scans a set of Objective Caml source files
       (.ml and .mli files), sorts them according to  their  dependencies  and
       prints  the  sorted  files  in  order  to link their corresponding .cmo
       files.

       For ocamldsort(1) to work it must get a list of dependencies  generated
       by  ocamldep(1),  if  the  standard  input  to  ocamldsort(1)  has been
       redirected then ocamldsort assumes  that  this  is  a  dependency  file
       generated  by  ocamldep(1).   Otherwise ocamldsort calls ocamldep(1) to
       generate the dependency list itself. In either case the source files to
       be sorted should be given as arguments to the ocamldsort(1) command.

       ocamldsort(1)  can be used to compile and link simple projects with one
       command, such as:

       ocamlc $(ocamldsort *.ml)

       if your project doesn’t contain .mli files or:

       ocamlc -c $(ocamldsort -mli *.ml *.mli) && ocamlc $(ocamldsort -byte *.ml)

       if it contains .mli files.

       However for larger projects where separate  compilation  is  desirable,
       ocamldsort(1)  can  also  be  used  from  within  a makefile. Here is a
       typical makefile example:

       TARGET=my_program
       OCAMLC=ocamlc
       OCAMLOPT=ocamlopt
       OCAMLDEP=ocamldep
       OCAMLDSORT=ocamldsort

       PPFLAGS=-pp camlp4o

       MLY=$(shell echo *.mly)
       MLL=$(shell echo *.mll)
       GENERATED_ML=$(MLY:.mly=.ml) $(MLL:.mll=.ml)

       include .generated .depend .ocamldsort

       $(TARGET): $(CMO_FILES)
            $(OCAMLC) $(COMPFLAGS) $(LIBS) $^ -o $@

       $(TARGET).opt: $(CMX_FILES)
            $(OCAMLOPT) $(COMPFLAGS) $(LIBS_OPT) $^ -o $@

       .generated: $(GENERATED_ML)
            @touch .generated

       .depend: .generated
            $(OCAMLDEP) *.ml *.mli > $@

       .ocamldsort: .depend
            echo CMO_FILES=‘< .depend $(OCAMLDSORT) -byte *.ml‘ > .ocamldsort
            echo CMX_FILES=‘< .depend $(OCAMLDSORT) -opt *.ml‘ >> .ocamldsort

       distclean: clean
            rm -f .generated .depend .ocamldsort
            rm -f $(GENERATED_ML)
            rm -f *~
            rm -f $(TARGET)

       clean:
            rm -f *.cmo *.cmi *.cmx *.o

       .SUFFIXES: .mli .ml .cmi .cmo .cmx .mll .mly

       %.cmi:%.mli
            $(OCAMLC) $(PPFLAGS) $(COMPFLAGS) -c $<

       %.cmo:%.ml
            $(OCAMLC) $(PPFLAGS) $(COMPFLAGS) -c $<

       %.cmi %.cmo:%.ml
            $(OCAMLC) $(PPFLAGS) $(COMPFLAGS) -c $<

       %.cmx %.o:%.ml
            $(OCAMLOPT) $(PPFLAGS) $(COMPFLAGS)  -c $<

       %.ml:%.mll
            $(OCAMLLEX) $<

       %.mli %.ml:%.mly
            $(OCAMLYACC) -v $<

OPTIONS

       The following command-line options are recognized by ocamlsort(1):

       -I directory
              Add the given directory to the list of directories searched  for
              source files.

       -pp pre-command
              Command to preprocess file.

       -d dep-command
              Command to compute dependencies.  ocamldep(1) by default.

       -mli   Sort files using mli dependencies.

       -nox   Ignore  filenames  containg ‘*’ so that unexpanded wildcards are
              ignored.

       -obj   Print  bytecode  filenames  (.cmo  and  .cmi)  (deprecated:  use
              -byte).

       -byte  Print bytecode filenames (.cmo and .cmi).

       -opt   Print opt filenames (.cmx and .cmi).

       -v     Output version information and exit.

       -help, --help
              Output help and exit.

SEE ALSO

       ocamldep(1).