# 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 = "Compatibility 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 # We must have a non-empty archive, otherwise this pkg is ignored # for constructing the preprocessor command. We can pass -ignore arg # 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" )