# Copyright 1999 by Gerd Stolpmann
#
# The package "findlib" is copyright by Gerd Stolpmann.
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this document and the "findlib" software (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to
# the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# The Software is provided ``as is'', without warranty of any kind, express
# or implied, including but not limited to the warranties of
# merchantability, fitness for a particular purpose and noninfringement.
# In no event shall Gerd Stolpmann be liable for any claim, damages or
# other liability, whether in an action of contract, tort or otherwise,
# arising from, out of or in connection with the Software or the use or
# other dealings in the software.

# Specifications for the "camlp4" preprocessor:
requires = ""
version = "@@VERSION@@"
description = "Base for Camlp4 syntax extensions"
directory = "+camlp4"

# For the toploop:
requires(byte,toploop) = "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"

package "lib" (
  requires = "camlp4 dynlink"
  version = "@@VERSION@@"
  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 = "@@VERSION@@"
  description = "Compatibilty name for camlp4.lib"
)

# dont use camlp4.lib and camlp4.fulllib together'
package "fulllib" (
  requires = "camlp4 dynlink"
  version = "@@VERSION@@"
  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 = "@@VERSION@@"
  description = "Syntax extension: Quotations to create AST nodes"
  requires = "camlp4.quotations.r"  # backward compat
  archive(syntax,preprocessor) = "-ignore foo"
  package "o" (
    requires = "camlp4"
    version = "@@VERSION@@"
    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 = "@@VERSION@@"
    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 = "@@VERSION@@"
  description = "Syntax extension: EXTEND the camlp4 grammar"
  archive(syntax,preprocessor) = "-parser Camlp4GrammarParser"
  archive(syntax,toploop) = "Camlp4Parsers/Camlp4GrammarParser.cmo"
)

package "listcomprehension" (
  requires = "camlp4"
  version = "@@VERSION@@"
  description = "Syntax extension for list comprehensions"
  archive(syntax,preprocessor) = "-parser Camlp4ListComprehension"
  archive(syntax,toploop) = "Camlp4Parsers/Camlp4ListComprehension.cmo"
)

package "macro" (
  requires = "camlp4"
  version = "@@VERSION@@"
  description = "Syntax extension: Conditional compilation"
  archive(syntax,preprocessor) = "-parser Camlp4MacroParser"
  archive(syntax,toploop) = "Camlp4Parsers/Camlp4MacroParser.cmo"
)

package "mapgenerator" (
  requires = "camlp4"
  version = "@@VERSION@@"
  description = "Syntax filter: Traverse data structure (map style)"
  archive(syntax,preprocessor) = "-filter Camlp4MapGenerator"
  archive(syntax,toploop) = "Camlp4Filters/Camlp4MapGenerator.cmo"
)

package "foldgenerator" (
  requires = "camlp4"
  version = "@@VERSION@@"
  description = "Syntax filter: Traverse data structure (fold style)"
  archive(syntax,preprocessor) = "-filter Camlp4FoldGenerator"
  archive(syntax,toploop) = "Camlp4Filters/Camlp4FoldGenerator.cmo"
)

package "metagenerator" (
  requires = "camlp4"
  version = "@@VERSION@@"
  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 = "@@VERSION@@"
  description = "Syntax filter: Remove location info from AST"
  archive(syntax,preprocessor) = "-filter Camlp4LocationStripper"
  archive(syntax,toploop) = "Camlp4Filters/Camlp4LocationStripper.cmo"
)

package "tracer" (
  requires = "camlp4"
  version = "@@VERSION@@"
  description = "Syntax filter: Trace execution"
  archive(syntax,preprocessor) = "-filter Camlp4Tracer"
  archive(syntax,toploop) = "Camlp4Filters/Camlp4Tracer.cmo"
)

package "exceptiontracer" (
  requires = "camlp4"
  version = "@@VERSION@@"
  description = "Syntax filter: Trace exception execution"
  archive(syntax,preprocessor) = "-filter Camlp4ExceptionTracer"
  archive(syntax,toploop) = "Camlp4Filters/Camlp4ExceptionTracer.cmo"
)

package "profiler" (
  requires = "camlp4"
  version = "@@VERSION@@"
  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"
)
