[Omake] Changes in MenhirMulti or OCamlGeneratedFiles
Nick Kidd
kidd at cs.wisc.edu
Thu Mar 22 14:29:19 PDT 2007
Hi,
By commenting out the lines:
OCamlGeneratedFiles(tokens.mli tokens.ml)
OCamlGeneratedFiles(parser.mli parser.ml ir_lexer.ml)
the project builds fine. Am I not supposed to use OCamlGeneratedFiles
with Menhir? If so, I apologize for the spam...
Thanks,
-Nick
On Mar 22, 2007, at 2:36 PM, Nicholas Kidd wrote:
> Hi,
>
> I recently upgraded to omake 0.9.8.1 via GODI. That all worked
> fine; however, omake now fails to build my project. It is detecting
> a deadlock on a generated file 'parser.mli'. Was there a change in
> detecting dependencies or in the MenhirMulti rules?
>
> The project generates the files tokens.ml(i) using Menhir's --
> tokens-only flag, which is then used by module Keywords. Module
> Parser uses both modules Tokens and Keywords, but I do not see the
> cyclic dependency that omake is finding.
>
> Below is omake's depenency output followed by the OMakefile. I'm
> not sure if this will help. Are there additional commands that I
> can run to determine what is causing this dependency?
>
> Thanks,
> -Nick
>
> PS. I have always found it necessary to include the ".mly" suffix
> on files passed to MenhirMulti.
>
> *** omake: reading OMakefiles
> *** omake: finished reading OMakefiles (0.0 sec)
> dependencies:
> target: <phony <.DEFAULT>>
> scanner dependencies:
> static dependencies: esl2cpds esl2cpds.opt
> build dependencies: esl2cpds esl2cpds.opt
> dependencies are merged from: <phony <.DEFAULT>>
> targets that depend on this node at this point:
>
> --- Complete dependency listing ---
>
> target: esl2cpds.opt
> scanner dependencies:
> static dependencies: action.cmx action.o atomicSet.cmx
> atomicSet.o esl.cmx esl.o ir.cmx ir.o ir_lexer.cmx ir_lexer.o
> keywords.cmx keywords.o
> parser.cmx parser.o scenario.cmx scenario.o sig.cmx sig.o
> tokens.cmx tokens.o wpds.cmx wpds.o
> build dependencies: action.cmx action.o atomicSet.cmx
> atomicSet.o esl.cmx esl.o ir.cmx ir.o ir_lexer.cmx ir_lexer.o
> keywords.cmx keywords.o
> parser.cmx parser.o scenario.cmx scenario.o sig.cmx sig.o
> tokens.cmx tokens.o wpds.cmx wpds.o
> dependencies are merged from: esl2cpds.opt
> targets that depend on this node at this point: <phony
> <.DEFAULT>> esl2cpds
> target: esl2cpds
> scanner dependencies:
> static dependencies: esl2cpds.opt
> build dependencies: esl2cpds.opt
> dependencies are merged from: esl2cpds
> targets that depend on this node at this point: <phony
> <.DEFAULT>>
> *** omake: 34/95 targets are up to date
> *** omake: blocked (0.1 sec, 0/2 scans, 0/3 rules, 1/95 digests)
> *** omake: deadlock on parser.mli
> *** omake: is a dependency of <phony <OCamlGeneratedFilesTarget>>
> *** omake: is a dependency of <phony <OCamlGeneratedFilesTarget>>
> *** omake: is a dependency of <scanner scan-ocaml-keywords.mli>
> *** omake: is a dependency of keywords.cmi
> *** omake: is a dependency of parser.mli
> *** omake error:
> File /unsup/godi-01-2007/@sys/godi/lib/omake/build/OCaml.om:
> line 700, characters 33-109
> failed on target: parser.mli
>
>
>
> ----------------------------------------------------------------------
> ----
> # default is -warn-error A
> OCAMLFLAGS = -w Aez #-warn-error Aez
> USE_OCAMLFIND = true
> if $(not $(OCAMLFIND_EXISTS))
> eprintln(This project requires ocamlfind, but is was not found.)
> eprintln(You need to install ocamlfind and run "omake --
> configure".)
> exit 1
>
> MENHIR_ENABLED = true
> ################################################
> # OMake's Menhir doesn't allow the flags to be passed to Menhir.
> MENHIR_BASE = $(MENHIR_FLAGS) --comment
>
> MENHIR_FLAGS = $(MENHIR_BASE) --only-tokens
> MenhirMulti(tokens, tokens.mly ir_tokens.mly)
> OCamlGeneratedFiles(tokens.mli tokens.ml)
>
>
> ################################################
> # Reset flags, add '--external-tokens' flag.
> MENHIR_FLAGS = $(MENHIR_BASE) --external-tokens Tokens
> MenhirMulti(parser, ir_tokens.mly tokens.mly ir_parser.mly parser.mly)
> OCamlGeneratedFiles(parser.mli parser.ml ir_lexer.ml)
>
>
> ################################################
> BASEFILES= sig action wpds atomicSet scenario
> MAIN = esl2cpds
> MFILES= $(BASEFILES) ir tokens keywords esl parser ir_lexer $(MAIN)
>
> .DEFAULT: $(OCamlProgram $(MAIN), $(MFILES))
>
> .PHONY: all clean doc
> all: $(MAIN)
>
> # Cleanup
> clean:
> rm -f \
> $(filter-proper-targets $(glob $(addsuffix .*, $(MFILES)))) \
> $(MAIN)$(EXE)
>
> _______________________________________________
> Omake mailing list
> Omake at metaprl.org
> https://lists.metaprl.org/mailman/listinfo/omake
More information about the Omake
mailing list