packages feed

Takusen-0.8.6: Takusen.cabal

-- setup configure -fodbc -foracle -fpostgres -fsqlite
-- setup build
-- setup install
--
-- setup configure -fbuildtests
-- setup build
-- setup install
Name:           Takusen
Version:        0.8.6
License:        BSD3
License-file:   LICENSE
Author:         Alistair Bayley, Oleg Kiselyov
Copyright:      2003-2009, Alistair Bayley, Oleg Kiselyov
Maintainer:     alistair@abayley.org, oleg@pobox.com
Stability:      experimental
Homepage:       http://code.haskell.org/takusen
Package-url:    http://code.haskell.org/takusen
Category:       Database
Build-type:     Custom
Cabal-Version:  >= 1.6
Synopsis:       Database library with left-fold interface, for PostgreSQL, Oracle, SQLite, ODBC.
Description:   
    Takusen is a DBMS access library. Like HSQL and HDBC, we support
    arbitrary SQL statements (currently strings, extensible to anything
    that can be converted to a string).
    .
    Takusen's unique selling point is safety and efficiency.
    We statically ensure all acquired database resources - such
    as cursors, connections, and statement handles - are released, exactly
    once, at predictable times. Takusen can avoid loading the whole result
    set in memory, and so can handle queries returning millions of rows in
    constant space. Takusen also supports automatic marshalling and
    unmarshalling of results and query parameters. These benefits come
    from the design of query result processing around a left-fold
    enumerator.
    .
    Currently we fully support ODBC, Oracle, Sqlite, and PostgreSQL.


Extra-tmp-files: 
      Database/Oracle/OCIFunctions_stub.c
      Database/Oracle/OCIFunctions_stub.h
      Database/PostgreSQL/PGFunctions_stub.c
      Database/PostgreSQL/PGFunctions_stub.h
Extra-source-files: README.txt


Flag odbc
  Description: ODBC backend
  Default:     False
Flag oracle
  Description: Oracle OCI backend
  Default:     False
Flag postgres
  Description: PostgreSQL backend
  Default:     False
Flag sqlite
  Description: SQLite3 backend
  Default:     False
Flag buildtests
  Description: Build test executables
  Default:     False


Executable takusen_tests
  If !flag(buildtests)
    Buildable: False
  else
    -- If we want to build test exe, then it needs Takusen installed.
    Build-Depends:  Takusen
  Main-Is: Main.lhs
  Other-modules: 
        Database.Enumerator
      , Database.InternalEnumerator
      , Database.Util
      , Database.Test.Enumerator
      , Database.Test.Util
      , Database.Test.Performance
      , Database.ODBC.Enumerator
      , Database.ODBC.OdbcFunctions
      , Database.ODBC.Test.Enumerator
      , Database.ODBC.Test.OdbcFunctions
      , Database.Oracle.Enumerator
      , Database.Oracle.OCIConstants
      , Database.Oracle.OCIFunctions
      , Database.Oracle.Test.Enumerator
      , Database.Oracle.Test.OCIFunctions
      , Database.PostgreSQL.Enumerator
      , Database.PostgreSQL.PGFunctions
      , Database.PostgreSQL.Test.Enumerator
      , Database.PostgreSQL.Test.PGFunctions
      , Database.Sqlite.Enumerator
      , Database.Sqlite.SqliteFunctions
      , Database.Sqlite.Test.Enumerator
      , Database.Sqlite.Test.SqliteFunctions
      , Control.Exception.MonadIO
      , Control.Exception.Extensible
      , Foreign.C.UTF8
      , Foreign.C.Test.UTF8
      , Test.MiniUnit
  Build-Depends:  base, mtl, time, QuickCheck==1.*, random
  -- ghc-6.6 has System.Time in base.
  -- Later versions has it in a separate package.
  if impl(ghc >= 6.8)
    Build-Depends:  old-time
  Extensions: CPP DeriveDataTypeable ScopedTypeVariables
  if impl(ghc>=6.9)
    cpp-options: -DUSE_NEW_EXCEPTIONS
    build-depends: base>=4&&<5
  else
    build-depends: base<4

Executable miniunit_tests
  If !flag(buildtests)
    Buildable: False
  Main-Is: Test/Main.hs
  Other-modules: 
      Control.Exception.MonadIO
    , Control.Exception.Extensible
    , Test.MiniUnit
    , Test.MiniUnitTest
  Build-Depends:  base, mtl
  Extensions: CPP DeriveDataTypeable ScopedTypeVariables
  if impl(ghc>=6.9)
    cpp-options: -DUSE_NEW_EXCEPTIONS
    build-depends: base>=4&&<5
  else
    build-depends: base<4


Library

  If flag(buildtests)
    Buildable: False

  Exposed-modules:
        Database.Enumerator
      , Database.Util
      --, Database.Stub.Enumerator
      , Control.Exception.MonadIO
      , Foreign.C.UTF8

  If flag(odbc)
    Exposed-modules:
        Database.ODBC.Enumerator
      , Database.ODBC.OdbcFunctions
    If os(windows)
      extra-libraries: odbc32
      ld-options: --enable-stdcall-fixup
    Else
      If os(darwin)
        extra-libraries: iodbc
      Else
        extra-libraries: odbc

  If flag(oracle)
    Exposed-modules:
        Database.Oracle.Enumerator
      , Database.Oracle.OCIConstants
      , Database.Oracle.OCIFunctions
    Build-Tools: sqlplus
    If os(windows)
      Extra-Libraries: oci
    Else
      Extra-Libraries: clntsh

  If flag(postgres)
    Exposed-modules:
        Database.PostgreSQL.Enumerator
      , Database.PostgreSQL.PGFunctions
    Build-Tools: pg_config
    Extra-Libraries: pq

  If flag(sqlite)
    Exposed-modules:
        Database.Sqlite.Enumerator
      , Database.Sqlite.SqliteFunctions
    If os(windows)
      Build-Tools: sqlite3
    else
      PkgConfig-Depends: sqlite3
      Build-Tools: sqlite3
    Extra-Libraries: sqlite3

  Build-Depends:  base, mtl, time
  -- ghc-6.6 has System.Time in base.
  -- Later versions has it in a separate package.
  if impl(ghc >= 6.8)
    Build-Depends:  old-time
  -- Many modules use CPP to switch between new and old exceptions.
  -- DeriveDataTypeable is because we can't switch it on/off with #define;
  -- for ghc-6.6 it is rendered as -fglasgow-exts anyway.
  Extensions: CPP DeriveDataTypeable
  -- We need the USE_NEW_EXCEPTIONS flag as this is used in
  -- Control.Exception.Extensible is choose between defining our own
  -- extensible exceptions, or re-exporting what's in base-4.
  if impl(ghc>=6.9)
    cpp-options: -DUSE_NEW_EXCEPTIONS
    build-depends: base>=4&&<5
  else
    build-depends: base<4
  if impl(ghc >= 6.10)
    -- doesn't work with Data.Time on older ghcs, due to some missing header file
    Ghc-Options: -O2
  Other-modules: 
        Database.InternalEnumerator
      , Control.Exception.Extensible
      -- Modules in Other-modules are passed to Haddock with --hide=<module-name>.
  Ghc-Prof-Options: -prof -auto-all