name="batteries"
version="2.0"
description="Batteries Included, the stdlib of choice"
requires    ="unix,num,bigarray,str"
requires(mt)+="threads"
archive(toploop)   ="batteries.cma batteriesConfig.cmo batteriesHelp.cmo batteriesPrint.cmo"
archive(toploop,mt)+="batteriesThread.cma"
archive(byte)      ="batteries.cma"
archive(byte,mt)   +="batteriesThread.cma"
archive(native)    ="batteries.cmxa"
archive(native,mt) +="batteriesThread.cmxa"

package "pa_string" (
        description = "pseudo-native Unicode strings (container)"
	version     = "2.0"
	package "syntax" (
                requires="camlp4"
		description = "pseudo-native Unicode strings (syntax extension)"
		version     = "2.0"
		archive(syntax, preprocessor) = "pa_strings.cma"
		archive(syntax, toploop)      = "pa_strings.cma"
	)
)

package "pa_comprehension" (
	description = "comprehension expressions (container)"
	version     = "2.0"
	package "syntax" (
                requires = "camlp4"
		description = "comprehension expressions (syntax extension)"
		version                       = "2.0"
		archive(syntax, preprocessor) = "pa_comprehension.cmo"
		archive(syntax, toploop)      = "pa_comprehension.cmo"
	)
)

package "pa_llist" (
        descriptions = "lazy list syntax (container)"
        version = "2.0"
        package "syntax" (
                requires = "camlp4"
                description = "lazy list syntax (syntax extension)"
                version = "2.0"
                archive(syntax, preprocessor) = "pa_llist.cmo"
                archive(syntax, toploop) = "pa_llist.cmo"
        )
)

package "syntax" (
        version = "2.0"
        description = "Standard extensions to the OCaml language, full package"
        # the direct approach (requiring the .syntax packages) doesn't work:
        # you get "When using -syntax, the META variable 'preprocessor' must
        # be set" even when we require camlp4 or set preprocessor here, so
        # we use a brute-force approach
        requires = "camlp4"
        requires(toploop) = "camlp4, batteries"
        archive(syntax, preprocessor) = "pa_strings.cma pa_comprehension.cmo pa_llist.cmo"
	archive(syntax, toploop)      = "pa_strings.cma pa_comprehension.cmo pa_llist.cmo"
)
