Personal tools

WxHaskell/Windows

From HaskellWiki

< WxHaskell(Difference between revisions)
Jump to: navigation, search
m (wxWidgets 2.9 and wxHaskell 0.90.x)
m (wxWidgets 2.8 and wxHaskell 0.13.x)
(14 intermediate revisions by one user not shown)
Line 6: Line 6:
 
! wxWidgets
 
! wxWidgets
 
|-
 
|-
|| 7 || 2011.2.0.1 || 2.9.3
+
|| 7 || 2011.2.0.1 || 2.9.5
 
|-
 
|-
 
|}
 
|}
Line 12: Line 12:
   
 
Prerequisites:
 
Prerequisites:
* [http://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer MinGW] 5.1.6 and [http://downloads.sourceforge.net/mingw/MSYS-1.0.11.exe MSYS] 1.0.11 (these are the latest versions at the time of writing). You must select the C++ compiler option when installing MinGW.
+
* [http://sourceforge.net/projects/mingw/files/OldFiles/MinGW%205.1.6/ MinGW 5.1.6] and [http://downloads.sourceforge.net/mingw/MSYS-1.0.11.exe MSYS] 1.0.11 (a recent version of MinGW will result in incompatible DLLs). You must select the C++ compiler option when installing MinGW.
  +
   
 
Environment variables:
 
Environment variables:
   
* CABAL_DIR: C:\Users\XXX\AppData\Roaming\cabal (Windows XP: C:\Documents and Settings\XXX\Application Data\cabal, or: %APPDATA%\cabal)
+
* GHC_VERSION: 7.6.3 (some recent version)
* GHC_VERSION: 7.0.3 (for our convenience)
 
 
* WXC_VERSION: 0.90.0.2
 
* WXC_VERSION: 0.90.0.2
* WXWIN: C:\wxWidgets-2.9.3
+
* WXWIN: C:\wxWidgets-2.9.5
 
* WXCFG: gcc_dll\mswu
 
* WXCFG: gcc_dll\mswu
* PATH: (add these) %WXWIN%\lib\gcc_dll;%WXWIN%;%CABAL_DIR%\wxc-%WXC_VERSION%\%GHC_VERSION%
+
* PATH: (add these) %WXWIN%\lib\gcc_dll;%WXWIN%;%APPDATA%\cabal\wxc-%WXC_VERSION%\%GHC_VERSION%
  +
  +
If you are using cabal-dev, you must add the following to your search path:
  +
* wxdirect\dist\build\wxdirect
  +
* wxc\dist\build
  +
to ensure that wxdirect.exe and wxc.dll can be found.
   
 
Steps:
 
Steps:
   
 
<ol>
 
<ol>
<li> Download [http://wxwidgets.org/downloads wxWidgets 2.9.3 source]
+
<li> Download [http://wxwidgets.org/downloads wxWidgets 2.9.5 source]
<li> Extract to C:\wxWidgets-2.9.3
+
<li> Extract to C:\wxWidgets-2.9.5
<li> [http://wiki.wxwidgets.org/Compiling_wxWidgets_with_MinGW Build wxWidgets-2.9.3]
+
<li> [http://wiki.wxwidgets.org/Compiling_wxWidgets_with_MinGW Build wxWidgets-2.9.5]
<br>I (who?) compiled it as follows: edit <tt>wxwidgets-src-dir\build\msw\config.gcc</tt> so that the following values are set:
+
<br>Edit <tt>wxwidgets-src-dir\build\msw\config.gcc</tt> so that the following values are set:
 
<pre>
 
<pre>
 
SHARED ?= 1
 
SHARED ?= 1
Line 36: Line 36:
 
<pre>
 
<pre>
 
cd wxwidgets-src-dir\build\msw
 
cd wxwidgets-src-dir\build\msw
  +
sh
 
mingw32-make -f makefile.gcc
 
mingw32-make -f makefile.gcc
 
</pre>
 
</pre>
<li> Download [https://sourceforge.net/projects/wxhaskell/files/wx-config-win/ wx-config.exe] (a new version for wxWidgets > 2.9) and copy it somewhere into your path, for instance via
+
<li> Download [https://sourceforge.net/projects/wxhaskell/files/wx-config-win/ wx-config.exe] (a new version for wxWidgets > 2.9) and copy it somewhere into your search path, for instance via
 
<pre>
 
<pre>
 
cp wx-config.exe %CABAL_DIR%\bin
 
cp wx-config.exe %CABAL_DIR%\bin
Line 44: Line 45:
 
<li> Install the wxHaskell libraries
 
<li> Install the wxHaskell libraries
 
<pre>
 
<pre>
  +
cabal update
  +
cabal install wx
  +
</pre>
  +
Or, if you want to install the dependencies separately for some reason:
  +
<pre>
  +
cabal update
 
cabal install wxdirect
 
cabal install wxdirect
 
cabal install wxc
 
cabal install wxc
Line 50: Line 57:
 
</pre>
 
</pre>
 
</ol>
 
</ol>
  +
   
 
=== DLLs ===
 
=== DLLs ===
   
In order to run a wxHaskell application, the following wxWidgets DLLs must be in the search path:
+
In order to run a wxHaskell application, Windows must be able to find the following wxWidgets DLLs (see [http://msdn.microsoft.com/en-us/library/7d83bc18(v=vs.71).aspx Search Path Used by Windows to Locate a DLL]):
   
(If you built wxWidgets in directory wxWidgets-2.9.3,
+
(If you built wxWidgets in directory wxWidgets-2.9.5,
the following files can be found in wxWidgets-2.9.3\lib\gcc_dll\ (change revision as needed))
+
the following files can be found in wxWidgets-2.9.5\lib\gcc_dll\ (change revision as needed))
* wxbase293u_gcc_custom.dll
+
* wxbase295u_gcc_custom.dll
* wxbase293u_net_gcc_custom.dll
+
* wxbase295u_net_gcc_custom.dll
* wxbase293u_xml_gcc_custom.dll
+
* wxbase295u_xml_gcc_custom.dll
* wxmsw293u_adv_gcc_custom.dll
+
* wxmsw295u_adv_gcc_custom.dll
* wxmsw293u_aui_gcc_custom.dll
+
* wxmsw295u_aui_gcc_custom.dll
* wxmsw293u_core_gcc_custom.dll
+
* wxmsw295u_core_gcc_custom.dll
* wxmsw293u_gl_gcc_custom.dll
+
* wxmsw295u_gl_gcc_custom.dll
* wxmsw293u_html_gcc_custom.dll
+
* wxmsw295u_html_gcc_custom.dll
* wxmsw293u_propgrid_gcc_custom.dll
+
* wxmsw295u_propgrid_gcc_custom.dll
* wxmsw293u_ribbon_gcc_custom.dll
+
* wxmsw295u_ribbon_gcc_custom.dll
* wxmsw293u_richtext_gcc_custom.dll
+
* wxmsw295u_richtext_gcc_custom.dll
* wxmsw293u_stc_gcc_custom.dll
+
* wxmsw295u_stc_gcc_custom.dll
* wxmsw293u_xrc_gcc_custom.dll
+
* wxmsw295u_xrc_gcc_custom.dll
   
 
The following file can be found in directory wxc\dist\build\, after building package wxc in directory wxc:
 
The following file can be found in directory wxc\dist\build\, after building package wxc in directory wxc:
Line 86: Line 94:
 
* libaprutil-1.dll
 
* libaprutil-1.dll
   
These DLLs can be obtained by installing [http://sourceforge.net/projects/xampp/ XAMPP]; the DLLs are in the directories:
+
These DLLs can be obtained by installing [http://sourceforge.net/projects/xampp/files/XAMPP%20Windows/1.7.4/ XAMPP 1.7.4]; the DLLs are in the directories:
 
* xampp\perl\site\lib\auto\APR\UUID
 
* xampp\perl\site\lib\auto\APR\UUID
 
* xampp\perl\bin
 
* xampp\perl\bin
Line 92: Line 100:
   
 
If there are still DLLs missing, you can find out which, using [http://cygwin.com/cygwin-ug-net/using-utils.html cygcheck] from the [http://www.cygwin.com/ Cygwin project]. Note, that you will get problems if you have both MinGW and Cygwin in your search path; it is best to specify the full path to cygcheck.exe, or copy cygcheck.exe to some location in the search path.
 
If there are still DLLs missing, you can find out which, using [http://cygwin.com/cygwin-ug-net/using-utils.html cygcheck] from the [http://www.cygwin.com/ Cygwin project]. Note, that you will get problems if you have both MinGW and Cygwin in your search path; it is best to specify the full path to cygcheck.exe, or copy cygcheck.exe to some location in the search path.
  +
Sample command:
  +
C:\programs\cygwin\bin\cygcheck.exe .\h.exe
  +
(the .\ must be specified)
   
 
== wxWidgets 2.8 and wxHaskell 0.13.x ==
 
== wxWidgets 2.8 and wxHaskell 0.13.x ==
Line 102: Line 113:
 
* <code>cabal install wx</code>
 
* <code>cabal install wx</code>
   
Note that the best way to refer to WxWidgets in your PATH is probably to use the WXWIN variable that you set, eg. <code>%WXWIN%/lib/gcc_dll</code>
+
Note that the best way to refer to WxWidgets in your PATH is probably to use the WXWIN variable that you set, eg. <code>%WXWIN%\lib\gcc_dll</code>
   
 
The guide has been tested with the following configurations. Others may work too:
 
The guide has been tested with the following configurations. Others may work too:

Revision as of 08:53, 31 August 2013

Contents

1 wxWidgets 2.9 and wxHaskell 0.90.x

Windows Haskell Platform wxWidgets
7 2011.2.0.1 2.9.5


Prerequisites:

  • MinGW 5.1.6 and MSYS 1.0.11 (a recent version of MinGW will result in incompatible DLLs). You must select the C++ compiler option when installing MinGW.


Environment variables:

  • GHC_VERSION: 7.6.3 (some recent version)
  • WXC_VERSION: 0.90.0.2
  • WXWIN: C:\wxWidgets-2.9.5
  • WXCFG: gcc_dll\mswu
  • PATH: (add these) %WXWIN%\lib\gcc_dll;%WXWIN%;%APPDATA%\cabal\wxc-%WXC_VERSION%\%GHC_VERSION%

If you are using cabal-dev, you must add the following to your search path:

  • wxdirect\dist\build\wxdirect
  • wxc\dist\build

to ensure that wxdirect.exe and wxc.dll can be found.

Steps:

  1. Download wxWidgets 2.9.5 source
  2. Extract to C:\wxWidgets-2.9.5
  3. Build wxWidgets-2.9.5
    Edit wxwidgets-src-dir\build\msw\config.gcc so that the following values are set:
     SHARED ?= 1
     BUILD ?= release
    

    Then (in cmd.exe, not bash):

     cd wxwidgets-src-dir\build\msw
     sh
     mingw32-make -f makefile.gcc
    
  4. Download wx-config.exe (a new version for wxWidgets > 2.9) and copy it somewhere into your search path, for instance via
    cp wx-config.exe %CABAL_DIR%\bin
    
  5. Install the wxHaskell libraries
    cabal update
    cabal install wx
    

    Or, if you want to install the dependencies separately for some reason:

    cabal update
    cabal install wxdirect
    cabal install wxc
    cabal install wxcore
    cabal install wx
    


1.1 DLLs

In order to run a wxHaskell application, Windows must be able to find the following wxWidgets DLLs (see Search Path Used by Windows to Locate a DLL):

(If you built wxWidgets in directory wxWidgets-2.9.5, the following files can be found in wxWidgets-2.9.5\lib\gcc_dll\ (change revision as needed))

  • wxbase295u_gcc_custom.dll
  • wxbase295u_net_gcc_custom.dll
  • wxbase295u_xml_gcc_custom.dll
  • wxmsw295u_adv_gcc_custom.dll
  • wxmsw295u_aui_gcc_custom.dll
  • wxmsw295u_core_gcc_custom.dll
  • wxmsw295u_gl_gcc_custom.dll
  • wxmsw295u_html_gcc_custom.dll
  • wxmsw295u_propgrid_gcc_custom.dll
  • wxmsw295u_ribbon_gcc_custom.dll
  • wxmsw295u_richtext_gcc_custom.dll
  • wxmsw295u_stc_gcc_custom.dll
  • wxmsw295u_xrc_gcc_custom.dll

The following file can be found in directory wxc\dist\build\, after building package wxc in directory wxc:

  • wxc.dll (be sure to recompile and copy this one when you compile your application with a new compiler)

Furthermore, the following DLLs need to be in the search path (these can be found in directory "Haskell Platform\2012.2.0.0\mingw\bin\", or in ghc-7.4.2\mingw\bin\ if you installed the compiler only (change revision as needed)):

  • libgcc_s_dw2-1.dll
  • libstdc++-6.dll
  • mingwm10.dll

Some wxHaskell applications also require the following DLLs:

  • uuid.dll
  • perl510.dll
  • libapr-1.dll
  • libapriconv-1.dll
  • libaprutil-1.dll

These DLLs can be obtained by installing XAMPP 1.7.4; the DLLs are in the directories:

  • xampp\perl\site\lib\auto\APR\UUID
  • xampp\perl\bin
  • xampp\apache\bin

If there are still DLLs missing, you can find out which, using cygcheck from the Cygwin project. Note, that you will get problems if you have both MinGW and Cygwin in your search path; it is best to specify the full path to cygcheck.exe, or copy cygcheck.exe to some location in the search path. Sample command:

 C:\programs\cygwin\bin\cygcheck.exe .\h.exe

(the .\ must be specified)

2 wxWidgets 2.8 and wxHaskell 0.13.x

Follow SkyTreeBird's guide. It which walks you through the basic steps

  • wx-config
  • wxPack
  • setting up environment variables
  • cabal install wx

Note that the best way to refer to WxWidgets in your PATH is probably to use the WXWIN variable that you set, eg. %WXWIN%\lib\gcc_dll

The guide has been tested with the following configurations. Others may work too:

Windows Haskell Platform wxWidgets
XP 2010.2.0.0 2.8.10
7 2011.2.0.1 2.8.12


2.1 DLLs

In order to run a wxHaskell application, the following DLLs must be in the search path:

  • mingwm10.dll; this can be found in directory "Haskell Platform\2012.2.0.0\mingw\bin\", or in ghc-7.4.2\mingw\bin\ if you installed just the compiler (change revision as needed)
  • wxmsw28u_gcc_custom.dll


2.2 Troubleshooting installation with cabal

These remarks refer to wx-0.13.2 and Haskell Platform 2011.4.0.0 on Windows 7.

Cabal package wx depends on wxcore which depends on wxdirect. By default cabal installs on a per user base, thus wxdirect.exe will be installed to c:\Users\<YOUR NAME>\AppData\Roaming\cabal\bin\. This folder must be in your PATH for cabal install wxcore to succeed.

Package wxcore-0.13.2 does not work well with wx-config revision 21 2006-10-19 (downloaded from here on Feb 2nd 2012). If cabal install wxcore fails with an output containing "Usage: wx-config [options]" try this:

  • cabal unpack wxcore
  • cd wxcore-0.13.2
  • edit Setup.hs and comment out/remove the line containing "wx-config" ["--version"]
  • runhaskell.exe Setup.hs configure --user
  • runhaskell.exe Setup.hs build
  • runhaskell.exe Setup.hs install

Finally call cabal install wx.

3 See also