ocamlbuild , a tool for automatic compilation of OCaml projects - - PowerPoint PPT Presentation

ocamlbuild a tool for automatic compilation of ocaml
SMART_READER_LITE
LIVE PREVIEW

ocamlbuild , a tool for automatic compilation of OCaml projects - - PowerPoint PPT Presentation

ocamlbuild , a tool for automatic compilation of OCaml projects ocamlbuild , a tool for automatic compilation of OCaml projects Berke Durak Nicolas Pouillard Berke.Durak@inria.fr Nicolas.Pouillard@inria.fr June 6, 2007 Berke Durak, Nicolas


slide-1
SLIDE 1
  • camlbuild, a tool for automatic compilation of OCaml projects
  • camlbuild, a tool for automatic compilation
  • f OCaml projects

Berke Durak Nicolas Pouillard

Berke.Durak@inria.fr Nicolas.Pouillard@inria.fr

June 6, 2007

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 1 / 28

slide-2
SLIDE 2
  • camlbuild, a tool for automatic compilation of OCaml projects

Introduction

Outline

1 Introduction 2 Regular OCaml projects 3 Dealing with exceptions to standard rules 4 Writing an ocamlbuild plugin 5 General features 6 Conclusion

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 2 / 28

slide-3
SLIDE 3
  • camlbuild, a tool for automatic compilation of OCaml projects

Introduction

Why such a tool?

To make our OCaml life easier

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 3 / 28

slide-4
SLIDE 4
  • camlbuild, a tool for automatic compilation of OCaml projects

Introduction

Why such a tool?

To make our OCaml life easier To stop writing poor MakefileS

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 3 / 28

slide-5
SLIDE 5
  • camlbuild, a tool for automatic compilation of OCaml projects

Introduction

Why such a tool?

To make our OCaml life easier To stop writing poor MakefileS To have a tool that Just worksTM

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 3 / 28

slide-6
SLIDE 6
  • camlbuild, a tool for automatic compilation of OCaml projects

Introduction

What does ocamlbuild handle?

Regular OCaml projects of arbitrary size Trivially handled using the command line options.

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 4 / 28

slide-7
SLIDE 7
  • camlbuild, a tool for automatic compilation of OCaml projects

Introduction

What does ocamlbuild handle?

Regular OCaml projects of arbitrary size Trivially handled using the command line options. Mostly regular OCaml projects with common exceptions Requires writing one tag file ( tags) that declares those exceptions.

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 4 / 28

slide-8
SLIDE 8
  • camlbuild, a tool for automatic compilation of OCaml projects

Introduction

What does ocamlbuild handle?

Regular OCaml projects of arbitrary size Trivially handled using the command line options. Mostly regular OCaml projects with common exceptions Requires writing one tag file ( tags) that declares those exceptions. Almost any project Accomplished by writing an ocamlbuild plugin.

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 4 / 28

slide-9
SLIDE 9
  • camlbuild, a tool for automatic compilation of OCaml projects

Introduction

What does ocamlbuild provide?

Automated whole-project compilation Minimal recompilation Lots of useful targets (doc, debugging, profiling...) Supports multiple build directories Automatic and safe cleaning A source directory uncluttered by object files A portable tool shipped with OCaml

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 5 / 28

slide-10
SLIDE 10
  • camlbuild, a tool for automatic compilation of OCaml projects

Introduction

What does ocamlbuild provide?

Automated whole-project compilation Minimal recompilation Lots of useful targets (doc, debugging, profiling...) Supports multiple build directories Automatic and safe cleaning A source directory uncluttered by object files A portable tool shipped with OCaml Saves time and money!

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 5 / 28

slide-11
SLIDE 11
  • camlbuild, a tool for automatic compilation of OCaml projects

Regular OCaml projects

Outline

1 Introduction 2 Regular OCaml projects 3 Dealing with exceptions to standard rules 4 Writing an ocamlbuild plugin 5 General features 6 Conclusion

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 6 / 28

slide-12
SLIDE 12
  • camlbuild, a tool for automatic compilation of OCaml projects

Regular OCaml projects

What’s a regular OCaml project?

It’s a project that needs no exceptions from the standard rules: Has compilation units (ml and mli files) May have parsers and lexers (mly and mll files) May use packages, libraries and toplevels (ml{pack,lib,top}) May link with external libraries Has one main OCaml unit from which these units are reachable

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 7 / 28

slide-13
SLIDE 13
  • camlbuild, a tool for automatic compilation of OCaml projects

Regular OCaml projects

How difficult is it to build regular projects by hand?

OCaml has subtle compilation rules Interfaces (.mli) can be absent, yet buildable (.mly) Native and bytecode suffixes and settings differ Native packages are difficult to do (-for-pack) Linkage order must be correctly computed Include directories must be ordered

  • camldep gives partial information (too conservative)

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 8 / 28

slide-14
SLIDE 14
  • camlbuild, a tool for automatic compilation of OCaml projects

Regular OCaml projects

How does ocamlbuild manage all that?

It has a lot of hand-crafted Ocaml-specific compilation logic!

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 9 / 28

slide-15
SLIDE 15
  • camlbuild, a tool for automatic compilation of OCaml projects

Regular OCaml projects

How does ocamlbuild manage all that?

It has a lot of hand-crafted Ocaml-specific compilation logic! A dynamic exploration approach Start from the given targets Attempt to discover dependencies using ocamldep

  • camldep cannot always be trusted: backtrack if necessary

Launch compilations and discover more dependencies

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 9 / 28

slide-16
SLIDE 16
  • camlbuild, a tool for automatic compilation of OCaml projects

Regular OCaml projects

Demo...

Many projects can be compiled with a single command: Menhir: ocamlbuild -lib unix back.native Hevea: ocamlbuild latexmain.native Ergo: ocamlbuild main.native Ocamlgraph: ocamlbuild -cflags -for-pack,Ocamlgraph demo.native ... To be fair... Some of these projects require that a version.ml or stdlib.ml file be generated beforehand.

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 10 / 28

slide-17
SLIDE 17
  • camlbuild, a tool for automatic compilation of OCaml projects

Dealing with exceptions to standard rules

Outline

1 Introduction 2 Regular OCaml projects 3 Dealing with exceptions to standard rules 4 Writing an ocamlbuild plugin 5 General features 6 Conclusion

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 11 / 28

slide-18
SLIDE 18
  • camlbuild, a tool for automatic compilation of OCaml projects

Dealing with exceptions to standard rules

What’s an exception?

Files that need specific flags Warnings to be enabled or disabled Debugging (-g), profiling (-p), type annotation, recursive types, -linkall, -thread, -custom... Units that need external C libraries Binaries that need external OCaml libraries Directories that must be included or excluded Dependencies that cannot be discovered

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 12 / 28

slide-19
SLIDE 19
  • camlbuild, a tool for automatic compilation of OCaml projects

Dealing with exceptions to standard rules

Make and exceptions

The make tool can’t handle exceptions very well Needs exceptions to be encoded as specific rules This generally makes rules and exceptions tightly bound by variables This creates non-modular makefiles that don’t scale

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 13 / 28

slide-20
SLIDE 20
  • camlbuild, a tool for automatic compilation of OCaml projects

Dealing with exceptions to standard rules

The tags, our way to specify exceptions

The tags file is made of lines Each line is made of a pattern and a list of signed tags A line adds or removes tags from matching files Patterns are boolean combinations of shell-like globbing expressions

"funny.ml": rectypes <**/*.ml*>: warn A, warn error A, debug, dtypes <**/*.cmx>: inline(9) "foo.ml" or "bar.ml": warn v, warn error v "vendor.ml":

  • warn A, -warn error A

<main.{byte,native}>: use unix "main.byte": use dynlink, linkall "test": not hygienic <satsolver.cm[io]>: precious

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 14 / 28

slide-21
SLIDE 21
  • camlbuild, a tool for automatic compilation of OCaml projects

Dealing with exceptions to standard rules

How tags and rules give commands

Files are tagged using tagging rules

"foo/bar.ml": rectypes

Rules then produce commands with tagged holes

let tagged hole = tags for(ml)++"ocaml"++"compile"++"byte" in Cmd(S[A"ocamlc";A"-c";T tagged hole;P ml;A"-o";P cmo])

These holes are filled by command fragments (such as flags)

flag ["ocaml"; "compile"; "byte"; "rectypes"] (A"-rectypes")

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 15 / 28

slide-22
SLIDE 22
  • camlbuild, a tool for automatic compilation of OCaml projects

Dealing with exceptions to standard rules

Tags and dependencies

One can define dependencies triggered by combinations of tags

dep ["ocaml"; "link"; "byte"; "program"; "plugin:foo"] ["plugin/pluginlib.cma"; "plugin/plugin foo.cmo"]

By tagging files we make things happen

"test.byte": plugin:foo

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 16 / 28

slide-23
SLIDE 23
  • camlbuild, a tool for automatic compilation of OCaml projects

Writing an ocamlbuild plugin

Outline

1 Introduction 2 Regular OCaml projects 3 Dealing with exceptions to standard rules 4 Writing an ocamlbuild plugin 5 General features 6 Conclusion

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 17 / 28

slide-24
SLIDE 24
  • camlbuild, a tool for automatic compilation of OCaml projects

Writing an ocamlbuild plugin

Not a specific language, but plain OCaml code

Plugins are compiled on the fly Dynamic configuration is feasible With a plugin one can: Extend rules (add new ones, override old ones) Add flags and dependencies based on tags Tag files Change options Define the directory structure precisely Help ocamldep Specify external libraries

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 18 / 28

slide-25
SLIDE 25
  • camlbuild, a tool for automatic compilation of OCaml projects

Writing an ocamlbuild plugin

A plugin example

Let’s read it in live...

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 19 / 28

slide-26
SLIDE 26
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

Outline

1 Introduction 2 Regular OCaml projects 3 Dealing with exceptions to standard rules 4 Writing an ocamlbuild plugin 5 General features 6 Conclusion

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 20 / 28

slide-27
SLIDE 27
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

Parallel execution where applicable

You select the maximum number of jobs (-j N) Rules know how to ask for parallel targets The system keeps things scheduled correctly Example: Separate compilation of byte code (Optimal scheduling would require a static graph)

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 21 / 28

slide-28
SLIDE 28
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:00 0 (0) STARTING

  • ------- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-29
SLIDE 29
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:00 1 (0) back.ml.depends O------- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-30
SLIDE 30
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:00 8 (0) keyword.mli.depends O-b---i- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-31
SLIDE 31
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:00 16 (0) mark.cmi O-B---I- /

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-32
SLIDE 32
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:00 20 (0) stringSet.cmi O-B---I- /

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-33
SLIDE 33
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:00 24 (0) time.mli.depends O-b---i- /

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-34
SLIDE 34
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:00 32 (0) stdlib.ml.depends O-b---i- -

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-35
SLIDE 35
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:00 35 (0) stringSet.cmx ONb---i- -

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-36
SLIDE 36
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:00 37 (0) settings.cmx ONb---i- -

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-37
SLIDE 37
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:00 44 (0) lineCount.cmx ONb---i- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-38
SLIDE 38
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:00 45 (0) interface.ml.depends Onb---i- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-39
SLIDE 39
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:00 45 (0) interface.ml.depends Onb---i- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-40
SLIDE 40
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:01 52 (0) stringMap.ml.depends Onb---i- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-41
SLIDE 41
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:01 53 (0) printer.cmx ONb---i- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-42
SLIDE 42
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:01 53 (0) printer.cmx ONb---i- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-43
SLIDE 43
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:01 57 (0) time.cmx ONb---i- /

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-44
SLIDE 44
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:01 64 (0) partialGrammar.cmi OnB---I- /

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-45
SLIDE 45
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:01 67 (0) parameters.ml.depends Onb---i- /

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-46
SLIDE 46
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:01 72 (0) misc.ml.depends Onb---i- -

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-47
SLIDE 47
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:01 74 (0) keyword.ml.depends Onb---i- -

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-48
SLIDE 48
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:01 77 (0) error.cmi OnB---I- -

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-49
SLIDE 49
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:01 82 (0) parameters.cmx ONb---i- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-50
SLIDE 50
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:01 84 (0) action.cmx ONb---i- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-51
SLIDE 51
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:01 87 (0) parser.mli.depends Onb---i- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-52
SLIDE 52
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:02 96 (0) parserAux.cmx ONb---i- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-53
SLIDE 53
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:02 103 (0) tarjan.ml.depends Onb---i- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-54
SLIDE 54
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:02 106 (0) unionFind.cmx ONb---i- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-55
SLIDE 55
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:02 108 (0) lexer.mll Onb---i- /

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-56
SLIDE 56
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:02 108 (0) lexer.mll Onb---i- /

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-57
SLIDE 57
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:02 110 (0) lexer.cmo OnB---i- -

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-58
SLIDE 58
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:02 111 (0) parser.cmx ONb---i- -

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-59
SLIDE 59
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:02 112 (0) partialGrammar.cmx ONb---i- -

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-60
SLIDE 60
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:02 114 (0) lexer.cmx ONb---i- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-61
SLIDE 61
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:02 116 (0) codeBits.mli.depends Onb---i- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-62
SLIDE 62
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:03 118 (0) preFront.cmx ONb---i- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-63
SLIDE 63
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:03 120 (0) tokenType.cmx ONb---i- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-64
SLIDE 64
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:03 123 (0) inliner.cmi OnB---I- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-65
SLIDE 65
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:03 126 (0) traverse.cmx ONb---i- /

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-66
SLIDE 66
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:03 126 (0) traverse.cmx ONb---i- /

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-67
SLIDE 67
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:03 129 (0) code.cmi OnB---I- /

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-68
SLIDE 68
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:03 131 (0) lr1.mli.depends Onb---i- /

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-69
SLIDE 69
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:03 134 (0) lookahead.mli.depends Onb---i- -

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-70
SLIDE 70
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:03 137 (0) gMap.ml.depends Onb---i- -

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-71
SLIDE 71
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:03 144 (0) lr1.cmi OnB---I- -

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-72
SLIDE 72
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:03 146 (0) item.ml.depends Onb---i- -

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-73
SLIDE 73
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:03 149 (0) patricia.cmi OnB---I- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-74
SLIDE 74
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:03 151 (0) patricia.cmx ONb---i- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-75
SLIDE 75
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:03 151 (0) patricia.cmx ONb---i- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-76
SLIDE 76
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:04 154 (0) front.cmi OnB---I- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-77
SLIDE 77
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:04 164 (0) listMonad.ml.depends Onb---i- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-78
SLIDE 78
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:04 167 (0) listMonad.cmx ONb---i- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-79
SLIDE 79
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:04 170 (0) infer.cmi OnB---I- /

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-80
SLIDE 80
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:04 171 (0) lexmli.mll Onb---i- /

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-81
SLIDE 81
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:04 172 (0) lexmli.ml.depends Onb---i- /

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-82
SLIDE 82
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:04 174 (0) lexdep.mll Onb---i- -

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-83
SLIDE 83
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:04 177 (0) interface.cmx ONb---i- -

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-84
SLIDE 84
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:04 178 (0) IO.ml.depends Onb---i- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-85
SLIDE 85
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:04 181 (0) lexmli.cmx ONb---i- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-86
SLIDE 86
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:04 183 (0) IO.cmx ONb---i- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-87
SLIDE 87
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:05 187 (0) infer.cmx ONb---i- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-88
SLIDE 88
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:05 190 (0) dot.cmi OnB---I- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-89
SLIDE 89
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:05 193 (0) compressedBitSet.cmi OnB---I- /

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-90
SLIDE 90
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:05 195 (0) dot.cmx ONb---i- /

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-91
SLIDE 91
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:05 197 (0) grammar.cmx ONb---i- /

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-92
SLIDE 92
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:05 197 (0) grammar.cmx ONb---i- /

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-93
SLIDE 93
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:05 197 (0) grammar.cmx ONb---i- -

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-94
SLIDE 94
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:05 200 (0) infiniteArray.cmi OnB---I- -

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-95
SLIDE 95
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:05 201 (0) item.cmx ONb---i- -

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-96
SLIDE 96
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:05 204 (0) breadth.mli.depends Onb---i- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-97
SLIDE 97
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:05 208 (0) invariant.ml.depends Onb---i- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-98
SLIDE 98
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:06 212 (0) invariant.cmx ONb---i- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-99
SLIDE 99
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:06 213 (0) inliner.cmx ONb---i- |

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-100
SLIDE 100
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:06 214 (0) code.cmx ONb---i- /

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-101
SLIDE 101
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example 00:00:06 216 (0) back.native ONbP--iL -

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-102
SLIDE 102
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example Finished, 216 targets (0 cached) in 00:00:06.

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-103
SLIDE 103
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example Finished, 216 targets (0 cached) in 00:00:06.

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-104
SLIDE 104
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example Finished, 216 targets (0 cached) in 00:00:06.

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-105
SLIDE 105
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example Finished, 216 targets (0 cached) in 00:00:06.

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-106
SLIDE 106
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example Finished, 216 targets (0 cached) in 00:00:06.

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-107
SLIDE 107
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example Finished, 216 targets (0 cached) in 00:00:06.

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-108
SLIDE 108
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example Finished, 216 targets (0 cached) in 00:00:06.

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-109
SLIDE 109
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example Finished, 216 targets (0 cached) in 00:00:06.

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-110
SLIDE 110
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

A status bar for your visual comfort

Compilation tools echo commands and their output This creates a long and boring output that scrolls too fast Here you can keep an eye on what is going on! It succinctly displays time, number of targets, and tags Command outputs are correctly multiplexed A trace of the commands executed is kept in a log file This log file can be used as the basis of a shell script Example Finished, 216 targets (0 cached) in 00:00:06.

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 22 / 28

slide-111
SLIDE 111
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

Hygiene and sterilization

  • camlbuild has a Hygiene Squad (HS) that checks your source

tree for cleanliness It has preconceived but useful cleanliness notions Files dirty by default: .cmi, .cmo, .cma, .cmx...

  • camllex/ocamlyacc files: .ml if .mll, .ml&.mli if .mly...

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 23 / 28

slide-112
SLIDE 112
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

Hygiene and sterilization

  • camlbuild has a Hygiene Squad (HS) that checks your source

tree for cleanliness It has preconceived but useful cleanliness notions Files dirty by default: .cmi, .cmo, .cma, .cmx...

  • camllex/ocamlyacc files: .ml if .mll, .ml&.mli if .mly...

If unsatisfied, the HS produces a sterilization script Read it carefully (or work with versioning) Run at your own risks

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 23 / 28

slide-113
SLIDE 113
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

Hygiene and sterilization

  • camlbuild has a Hygiene Squad (HS) that checks your source

tree for cleanliness It has preconceived but useful cleanliness notions Files dirty by default: .cmi, .cmo, .cma, .cmx...

  • camllex/ocamlyacc files: .ml if .mll, .ml&.mli if .mly...

If unsatisfied, the HS produces a sterilization script Read it carefully (or work with versioning) Run at your own risks HS can be told of exceptions Files or directories tagged as not hygienic or precious.

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 23 / 28

slide-114
SLIDE 114
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

Some supported tools

Menhir as an ocamlyacc replacement Enabled with the use menhir global tag or the -use-menhir

  • ption

Handles implicit dependencies using –infer

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 24 / 28

slide-115
SLIDE 115
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

Some supported tools

Menhir as an ocamlyacc replacement Enabled with the use menhir global tag or the -use-menhir

  • ption

Handles implicit dependencies using –infer Ocamldoc to build your doc Separated construction using (-dump/-load) Handles HTML, LaTeX, Man, Dot, TeXi

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 24 / 28

slide-116
SLIDE 116
  • camlbuild, a tool for automatic compilation of OCaml projects

General features

Some supported tools

Menhir as an ocamlyacc replacement Enabled with the use menhir global tag or the -use-menhir

  • ption

Handles implicit dependencies using –infer Ocamldoc to build your doc Separated construction using (-dump/-load) Handles HTML, LaTeX, Man, Dot, TeXi Camlp4 aware Tags allow to setup any installed Camlp4 preprocessor Fine grained dependencies help a lot...

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 24 / 28

slide-117
SLIDE 117
  • camlbuild, a tool for automatic compilation of OCaml projects

Conclusion

Outline

1 Introduction 2 Regular OCaml projects 3 Dealing with exceptions to standard rules 4 Writing an ocamlbuild plugin 5 General features 6 Conclusion

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 25 / 28

slide-118
SLIDE 118
  • camlbuild, a tool for automatic compilation of OCaml projects

Conclusion

Resume

  • camlbuild can be used in three ways:

With only command-line options for fully regular projects With the tags file for intermediate projects With a plugin for the most complex projects

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 26 / 28

slide-119
SLIDE 119
  • camlbuild, a tool for automatic compilation of OCaml projects

Conclusion

Resume

  • camlbuild can be used in three ways:

With only command-line options for fully regular projects With the tags file for intermediate projects With a plugin for the most complex projects

  • camlbuild saves your time by:

Building your project gently Compiling only as necessary Running commands in parallel Keeping your house clean Letting you concentrate on your code!

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 26 / 28

slide-120
SLIDE 120
  • camlbuild, a tool for automatic compilation of OCaml projects

Conclusion

Acknowledgments

For enlightening discussions about OCaml internals: Xavier Leroy Damien Doligez

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 27 / 28

slide-121
SLIDE 121
  • camlbuild, a tool for automatic compilation of OCaml projects

Conclusion

Acknowledgments

For enlightening discussions about OCaml internals: Xavier Leroy Damien Doligez For his insights about OCaml dependencies: Alain Frisch

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 27 / 28

slide-122
SLIDE 122
  • camlbuild, a tool for automatic compilation of OCaml projects

Conclusion

Acknowledgments

For enlightening discussions about OCaml internals: Xavier Leroy Damien Doligez For his insights about OCaml dependencies: Alain Frisch For letting this happen: Michel Mauny

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 27 / 28

slide-123
SLIDE 123
  • camlbuild, a tool for automatic compilation of OCaml projects

Conclusion

Conclusion

  • camlbuild is not perfect but already damn useful

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 28 / 28

slide-124
SLIDE 124
  • camlbuild, a tool for automatic compilation of OCaml projects

Conclusion

Conclusion

  • camlbuild is not perfect but already damn useful

Try it now! It’s in OCaml 3.10!

Berke Durak, Nicolas Pouillard

  • camlbuild, a tool for automatic compilation of OCam

June 6, 2007 28 / 28