OASISFormat: 0.4
Name:        containers
Version:     1.2
Homepage:    https://github.com/c-cube/ocaml-containers
Authors:     Simon Cruanes
License:     BSD-2-clause
LicenseFile: LICENSE
Plugins:     META (0.3), DevFiles (0.3)
OCamlVersion: >= 4.00.1
BuildTools:  ocamlbuild
AlphaFeatures: ocamlbuild_more_args

# cygwin fails with anything else
XOCamlbuildExtraArgs: "-j 1"

Synopsis:    A modular standard library focused on data structures.
Description:
    Containers is a standard library (BSD license) focused on data structures,
    combinators and iterators, without dependencies on unix. Every module is
    independent and is prefixed with 'CC' in the global namespace. Some modules
    extend the stdlib (e.g. CCList provides safe map/fold_right/append, and
    additional functions on lists).

    It also features optional libraries for dealing with strings, and
    helpers for unix and threads.

Flag "unix"
  Description:  Build the containers.unix library (depends on Unix)
  Default:      true

Flag "thread"
  Description:  Build modules that depend on threads
  Default:      true

Flag "bench"
  Description:  Build and run benchmarks
  Default:      true

Library "containers"
  Path:             src/core
  Modules:          CCVector, CCHeap, CCList, CCOpt, CCPair,
                    CCFun, CCHash, CCInt, CCBool, CCFloat, CCArray, CCRef, CCSet,
                    CCOrd, CCRandom, CCString, CCHashtbl, CCMap, CCFormat, CCIO,
                    CCInt64, CCChar, CCResult, CCParse, CCArray_slice,
                    CCListLabels, CCArrayLabels, CCEqual,
                    Containers
  BuildDepends:     bytes, result
  # BuildDepends:     bytes, bisect_ppx

Library "containers_unix"
  Path:             src/unix
  Modules:          CCUnix
  BuildDepends:     bytes, result, unix
  FindlibParent:    containers
  FindlibName:      unix

Library "containers_sexp"
  Path:             src/sexp
  Modules:          CCSexp, CCSexp_lex
  BuildDepends:     bytes, result
  FindlibParent:    containers
  FindlibName:      sexp

Library "containers_data"
  Path:             src/data
  Modules:          CCMultiMap, CCMultiSet, CCTrie, CCFlatHashtbl, CCCache,
                    CCPersistentHashtbl, CCDeque, CCFQueue, CCBV, CCMixtbl,
                    CCMixmap, CCRingBuffer, CCIntMap, CCPersistentArray,
                    CCMixset, CCGraph, CCHashSet, CCBitField,
                    CCHashTrie, CCWBTree, CCRAL,
                    CCImmutArray, CCHet, CCZipper
  BuildDepends:     bytes
  # BuildDepends:     bytes, bisect_ppx
  FindlibParent:    containers
  FindlibName:      data

Library "containers_iter"
  Path:             src/iter
  Modules:          CCKTree, CCKList, CCLazy_list
  FindlibParent:    containers
  FindlibName:      iter

Library "containers_thread"
  Path:             src/threads/
  Modules:          CCPool, CCLock, CCSemaphore, CCThread, CCBlockingQueue,
                    CCTimer
  FindlibName:      thread
  FindlibParent:    containers
  Build$:           flag(thread)
  Install$:         flag(thread)
  BuildDepends:     containers, threads
  XMETARequires:    containers, threads

Library "containers_top"
  Path:             src/top/
  Modules:          Containers_top
  FindlibName:      top
  FindlibParent:    containers
  BuildDepends:     compiler-libs.common, containers, containers.data,
                    containers.unix, containers.sexp, containers.iter

Document containers
  Title:                Containers docs
  Type:                 ocamlbuild (0.3)
  BuildTools+:          ocamldoc
  Build$:               flag(docs) && flag(unix)
  Install:              true
  XOCamlbuildPath:      .
  XOCamlbuildExtraArgs:
    "-docflags '-colorize-code -short-functors -charset utf-8'"
  XOCamlbuildLibraries:
    containers, containers.iter, containers.data,
    containers.thread, containers.unix, containers.sexp

Executable run_benchs
  Path:             benchs/
  Install:          false
  CompiledObject:   best
  Build$:           flag(bench)
  MainIs:           run_benchs.ml
  BuildDepends:     containers, qcheck,
                    containers.data, containers.iter, containers.thread,
                    sequence, gen, benchmark

Executable run_bench_hash
  Path: benchs/
  Install: false
  CompiledObject: best
  Build$: flag(bench)
  MainIs: run_bench_hash.ml
  BuildDepends: containers

PreBuildCommand: make qtest-gen

Executable run_qtest
  Path:             qtest/
  Install:          false
  CompiledObject:   best
  MainIs:           run_qtest.ml
  Build$:           flag(tests) && flag(unix)
  BuildDepends:     containers, containers.iter,
                    containers.sexp, containers.unix, containers.thread,
                    containers.data,
                    sequence, gen, unix, oUnit, qcheck

Test all
  Command:      ./run_qtest.native
  TestTools:    run_qtest
  Run$:         flag(tests) && flag(unix)

Executable id_sexp
  Path:             examples/
  Install:          false
  CompiledObject:   best
  MainIs:           id_sexp.ml
  BuildDepends:     containers.sexp

SourceRepository head
  Type: git
  Location: https://github.com/c-cube/ocaml-containers
  Browser: https://github.com/c-cube/ocaml-containers/tree/master/src
