Building ~~~~~~~~ HSQL uses Cabal build system. There is one base package called 'hsql' and multiple database specific packages in single bundle. The base package contains all functions and types which are common for all database frontends. First you have to build the base package and after that only these frontend packages which you are interested in. The supported databases and the corresponding packages are: Database frontend | Cabal package ------------------------------------------- ODBC | hsql-odbc MySQL | hsql-mysql PostgreSQL | hsql-postgresql SQLite | hsql-sqlite SQLite3 (SQLite >= 3.0) | hsql-sqlite3 MSI (Microsoft Installer) | hsql-msi Oracle | hsql-oracle The Cabal manual has detailed instructions about package building and installation. The basic steps are: $ runghc Setup.lhs configure $ runghc Setup.lhs build $ runghc Setup.lhs install Note: Cabal-1.0.1 has a bug. If the .cabal or .buildinfo has any directories in extra-lib-dirs then they are ignored from install command. This might be a problem for MySQL and PostgreSQL. The work-around is to edit manually .installed-pkg-config after install step. You have to update the library-dirs field and to register the package again using: $ ghc-pkg update .installed-pkg-config Windows specific ~~~~~~~~~~~~~~~~ Under Unix/Linux the configurations options for SQLite, PostgreSQL and MySQL are retrieved using pkg-config, pg_config and mysql_config tools. Usually these tools aren't available under Windows. Windows users may have to setup the include and library directories manually. You can use Setup.lhs as usual from Command Prompt or cygwin: C:\HSQL\'frontend'> runghc Setup.lhs configure The configure step will create 'frontend'.buildinfo file in the current directory. You have to open this file and to fill in the right paths and library names. After that you can build and install the package as usual.