dnl This file is input of the m4 macro processor.
`# Specifications for the "camlp4" preprocessor:'
`requires = ""'
`version = "[distributed with Ocaml]"'
`description = "Base for Camlp4 syntax extensions"'
`directory = "+camlp4"'
`# For the toploop:'
`requires(byte,toploop) = "'camlp4_dynlink`"'
`archive(byte,toploop,camlp4o) = "camlp4o.cma"'
`archive(byte,toploop,camlp4r) = "camlp4r.cma"'
`# For the preprocessor itself:'
`archive(syntax,preprocessor,camlp4o) = "-parser o -parser op -printer p"'
`archive(syntax,preprocessor,camlp4r) = "-parser r -parser rp -printer p"'
`preprocessor = "'camlp4_cmd`"'
`package "lib" ('
` requires = "camlp4 'camlp4_dynlink`"'
` version = "[distributed with Ocaml]"'
` description = "Camlp4 library"'
` archive(byte) = "camlp4lib.cma"'
` archive(byte,toploop) = "" # already contained in camlp4*.cma'
` archive(native) = "camlp4lib.cmxa"'
`)'
`package "gramlib" ('
` requires = "camlp4.lib"'
` version = "[distributed with Ocaml]"'
` description = "Compatibilty name for camlp4.lib"'
`)'
`# don't use camlp4.lib and camlp4.fulllib together'
`package "fulllib" ('
` requires = "camlp4 'camlp4_dynlink`"'
` version = "[distributed with Ocaml]"'
` description = "Camlp4 library"'
` error(pkg_camlp4.lib) = "camlp4.lib and camlp4.fulllib are incompatible"'
` archive(byte) = "camlp4fulllib.cma"'
` archive(byte,toploop) = "" # already contained in camlp4*.cma'
` archive(native) = "camlp4fulllib.cmxa"'
`)'
`package "quotations" ('
` version = "[distributed with Ocaml]"'
` description = "Syntax extension: Quotations to create AST nodes"'
` requires = "camlp4.quotations.r" # backward compat'
dnl We must have a non-empty archive, otherwise this pkg is ignored
dnl for constructing the preprocessor command. We can pass -ignore arg
dnl to camlp4 as dummy argument:
` archive(syntax,preprocessor) = "-ignore foo"'
` package "o" ('
` requires = "camlp4"'
` version = "[distributed with Ocaml]"'
` description = "Syntax extension: Quotations to create AST nodes (original syntax)"'
` archive(syntax,preprocessor) = "-parser Camlp4QuotationCommon -parser Camlp4OCamlOriginalQuotationExpander"'
` archive(syntax,toploop) = "Camlp4Parsers/Camlp4QuotationCommon.cmo Camlp4Parsers/Camlp4OCamlOriginalQuotationExpander.cmo"'
` )'
` package "r" ('
` requires = "camlp4"'
` version = "[distributed with Ocaml]"'
` description = "Syntax extension: Quotations to create AST nodes (revised syntax)"'
` archive(syntax,preprocessor) = "-parser Camlp4QuotationCommon -parser Camlp4OCamlRevisedQuotationExpander"'
` archive(syntax,toploop) = "Camlp4Parsers/Camlp4QuotationCommon.cmo Camlp4Parsers/Camlp4OCamlRevisedQuotationExpander.cmo"'
` )'
`)'
`package "extend" ('
` requires = "camlp4"'
` version = "[distributed with Ocaml]"'
` description = "Syntax extension: EXTEND the camlp4 grammar"'
` archive(syntax,preprocessor) = "-parser Camlp4GrammarParser"'
` archive(syntax,toploop) = "Camlp4Parsers/Camlp4GrammarParser.cmo"'
`)'
`package "listcomprehension" ('
` requires = "camlp4"'
` version = "[distributed with Ocaml]"'
` description = "Syntax extension for list comprehensions"'
` archive(syntax,preprocessor) = "-parser Camlp4ListComprehension"'
` archive(syntax,toploop) = "Camlp4Parsers/Camlp4ListComprehension.cmo"'
`)'
`package "macro" ('
` requires = "camlp4"'
` version = "[distributed with Ocaml]"'
` description = "Syntax extension: Conditional compilation"'
` archive(syntax,preprocessor) = "-parser Camlp4MacroParser"'
` archive(syntax,toploop) = "Camlp4Parsers/Camlp4MacroParser.cmo"'
`)'
`package "mapgenerator" ('
` requires = "camlp4"'
` version = "[distributed with Ocaml]"'
` description = "Syntax filter: Traverse data structure (map style)"'
` archive(syntax,preprocessor) = "-filter Camlp4MapGenerator"'
` archive(syntax,toploop) = "Camlp4Filters/Camlp4MapGenerator.cmo"'
`)'
`package "foldgenerator" ('
` requires = "camlp4"'
` version = "[distributed with Ocaml]"'
` description = "Syntax filter: Traverse data structure (fold style)"'
` archive(syntax,preprocessor) = "-filter Camlp4FoldGenerator"'
` archive(syntax,toploop) = "Camlp4Filters/Camlp4FoldGenerator.cmo"'
`)'
`package "metagenerator" ('
` requires = "camlp4"'
` version = "[distributed with Ocaml]"'
` description = "Syntax filter: Generate AST generator for data structure"'
` archive(syntax,preprocessor) = "-filter Camlp4MetaGenerator"'
` archive(syntax,toploop) = "Camlp4Filters/Camlp4MetaGenerator.cmo"'
`)'
`package "locationstripper" ('
` requires = "camlp4"'
` version = "[distributed with Ocaml]"'
` description = "Syntax filter: Remove location info from AST"'
` archive(syntax,preprocessor) = "-filter Camlp4LocationStripper"'
` archive(syntax,toploop) = "Camlp4Filters/Camlp4LocationStripper.cmo"'
`)'
`package "tracer" ('
` requires = "camlp4"'
` version = "[distributed with Ocaml]"'
` description = "Syntax filter: Trace execution"'
` archive(syntax,preprocessor) = "-filter Camlp4Tracer"'
` archive(syntax,toploop) = "Camlp4Filters/Camlp4Tracer.cmo"'
`)'
`package "exceptiontracer" ('
` requires = "camlp4"'
` version = "[distributed with Ocaml]"'
` description = "Syntax filter: Trace exception execution"'
` archive(syntax,preprocessor) = "-filter Camlp4ExceptionTracer"'
` archive(syntax,toploop) = "Camlp4Filters/Camlp4ExceptionTracer.cmo"'
`)'
`package "profiler" ('
` requires = "camlp4"'
` version = "[distributed with Ocaml]"'
` description = "Syntax filter: Count events during execution"'
` archive(syntax,preprocessor) = "-filter Camlp4Profiler"'
` archive(syntax,toploop) = "Camlp4Filters/Camlp4Profiler.cmo"'
` archive(byte) = "camlp4prof.cmo"'
` archive(native) = "camlp4prof.cmx"'
`)'