# The default OCamlPackage in omake/build/OCaml.om gives noisy warnings when
#   NATIVE_ENABLED is false.
# This version specializes that code for NATIVE_ENABLED being false, and that somehow
#  eliminates the warnings.
# --jd 2009-02-16
public.QuietOCamlPackage(name, files) =
               # XXX: JYH: these variables should be marked private in 0.9.9
               protected.OFILES   = $(addsuffix $(EXT_OBJ), $(files))
               protected.CMOFILES = $(addsuffix .cmo, $(files))
               protected.CMXFILES = $(addsuffix .cmx, $(files))

               protected.OBJ       = $(file $(name)$(EXT_OBJ))
               protected.CMO       = $(file $(name).cmo)
               protected.CMX       = $(file $(name).cmx)
               protected.CMI       = $(file $(name).cmi)
               protected.MLI       = $(file $(name).mli)

               protected.BYTE_TARGETS   = $(CMO)
               protected.TARGETS = $(CMI)

               if $(BYTE_ENABLED)
                   TARGETS += $(BYTE_TARGETS)
                   export

               #
               # Link commands
               #
               protected.BYTE_DEPS = $(CMOFILES)
               $(BYTE_TARGETS): $(CMOFILES)
                  section rule
                     if $(target-exists $(MLI))
                         BYTE_DEPS += $(CMI)
                         export
                     else
                         BYTE_TARGETS += $(CMI)
                         export
                     $(BYTE_TARGETS): $(BYTE_DEPS)
                        $(OCAMLFIND) $(OCAMLC) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLFLAGS) \
                            $(OCAMLCFLAGS) $(OCAML_LIB_FLAGS) -pack -o $(CMO) $(OCamlLinkSort $(CMOFILES))

               $(CMI):
                  section rule
                         if $(target-exists $(MLI))
                            $(CMI): $(MLI) :scanner: scan-ocaml-$(name).mli
                                $(OCamlC) -c $<
                         else
                            $(BYTE_TARGETS) $(CMI): $(BYTE_DEPS)
                               $(OCAMLFIND) $(OCAMLC) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLFLAGS) \
                                   $(OCAMLCFLAGS) $(OCAML_LIB_FLAGS) -pack -o $(CMO) $(OCamlLinkSort $(CMOFILES))

#                $(CMI):
#                   section rule
#                          if $(target-exists $(MLI))
#                             $(CMI): $(MLI) :scanner: scan-ocaml-$(name).mli
#                                 $(OCamlC) -c $<
#                          elseif $(NATIVE_ENABLED)
#                             $(NATIVE_TARGETS) $(CMI): $(NATIVE_DEPS)
#                                $(OCAMLFIND) $(OCAMLOPTLINK) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLFLAGS) \
#                                    $(OCAMLOPTFLAGS) $(OCAML_LIB_FLAGS) -pack -o $(CMX) $(OCamlLinkSort $(CMXFILES))
#                          else
#                             $(BYTE_TARGETS) $(CMI): $(BYTE_DEPS)
#                                $(OCAMLFIND) $(OCAMLC) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLFLAGS) \
#                                    $(OCAMLCFLAGS) $(OCAML_LIB_FLAGS) -pack -o $(CMO) $(OCamlLinkSort $(CMOFILES))
               return $(TARGETS)

read-sources(root, file) =
    accum[] =
    println($"accum: $(accum)")
    lex($(root)/$(file))
    default
        # empty
    case $"[[:graph:]]+" g
        accum[] += $(root)/$0
        export
    return $(accum)

.SUBDIRS: core beluga beli
