Fan’s development guide

Build system

Fan currently use omake , there are several relevant omakefiles:


  • OMakeroot

  • Add a general rule to support Fan

    public.USE_FAN       = false
    public.FAN_PLUGINS   =
    public.FAN           = fan
    public.FAN_PLUGIN_OPTIONS  = $`(mapprefix -plugin, $(FAN_PLUGINS))
  • OMakefile

  • ./pmake a simple omake wrapper with parallel


  • fan(.run) cold start, build fan from preprocessed files
  • coldtop fan toplevel FIXME
  • ftop fan toplevel with utop support
  • fan0(.run)
  • fan1
  • fan2
  • snapshot

Known issues

When you add a new file , and the build system can not track the dependency correctly, fore example

Unbound module Ast_gen

Try to pmake clean and build it again.

Test its correctness


when to bootstrapp?

how to test changes is right

  • at least –> hotbuild -> snapshot(source 1) –> cold build –> hot build –> snapshot (source 2)

    source(1,2) should reach a fix point, it means we can keep the loop

  • unittest