SDL/Windows

From HaskellWiki
< SDL
Revision as of 11:08, 8 December 2015 by Henk-Jan van Tuyl (talk | contribs) (Added warning about GHC bug, C package and Haskell SDL2 package install instructions)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

How to install SDL2 on a Windows computer

Note: when you are using GHC 7.10.2 or earlier, using SDL2 will not be possible; you will get the following message when trying to install a package:

<command line>: can't load .so/.DLL for: mingw32.dll (addDLL: could not load DLL)

See GHC ticket 3242

You have to install the C package SDL2 first, then either the Haskell package SDL2 or hsSDL2

The C package

Download the precompiled SDL2 package and unzip it to e.g. C:\Libraries

If you want to compile from source, you will need

* pkg-config.exe
* Mingw-w64
* MSYS

If you are using SDL 2.0.3, install the debugged version of SDL_platform.h in the include directory.

Use the following settings

Set LIBRARY_DIR=C:\Libs\SDL2-2.0.3\i686-w64-mingw32
Set PATH=%LIBRARY_DIR%\bin;%PATH%
Set LIBRARY_PATH=%LIBRARY_DIR%\bin;C:\Programs\MinGW\lib;%LIBRARY_PATH%
Set C_INCLUDE_PATH=%LIBRARY_DIR%\include\SDL2;%LIBRARY_DIR%\include
Set PKG_CONFIG_PATH=%LIBRARY_DIR%\lib\pkgconfig;%PKG_CONFIG_PATH%
Set PKG_CONFIG_PATH=C:\Programs\GTK\lib\pkgconfig\;%PKG_CONFIG_PATH%


The Haskell package SDL2

cabal install sdl2


The Haskell package hsSDL2

Download and unpack the SDL2 development libraries (the .tar.gz files with mingw in the name) from:

Copy the bin, lib, include and share directories from the packages to a common directory, like C:\Libraries. If you downloaded SDL 2.0.3, replace the header file include/SDL_platform.h with the debugged version

Set environment variables like this:

  • To help consistency in the environment variables, we first do:
 Set LIBRARY_DIR=C:\Libraries
  • then:
 Set PATH=%LIBRARY_DIR%\bin;%PATH%
 Set LIBRARY_PATH=%LIBRARY_DIR%\lib
 Set C_INCLUDE_PATH=%LIBRARY_DIR%\include\SDL2;%LIBRARY_DIR%\include

If you don't have git yet, install it. Go to a directory where you want the Haskell library source code installed and fetch the Haskell libraries:

 git clone https://github.com/Lemmih/hsSDL2
 git clone https://github.com/jdeseno/hs-sdl2-image
 git clone https://github.com/osa1/hsSDL2-ttf
 git clone https://github.com/jdeseno/hs-sdl2-mixer

If you want to use a cabal sandbox:

 cabal sandbox init

Install the Haskell packages:

 cabal install .\hsSDL2
 cabal install .\hs-sdl2-image
 cabal install .\hsSDL2-ttf
 cabal install .\hs-sdl2-mixer


If you get any of the messages:

 cabal: Missing dependency on a foreign library:
 * Missing (or bad) header file: SDL_mixer.h
 configure: error: *** SDL not found! Get SDL from www.libsdl.org.

you should check if all installation steps were done properly.