<li>Compile and run a [https://raw.github.com/jodonoghue/wxHaskell/master/samples/wxcore/HelloWorld.hs sample wxcore application]:

+

<br><pre>ghc --make HelloWorld.hs

+

cabal-macosx HelloWorld

+

./HelloWorld.app/Contents/MacOS/HelloWorld

+

</pre>(see note 2012-04-24-MacPorts if you use MacPorts)

+

</li>

+

</ol>

−

== 64 bit (2012-03-07) ==

+

== Known working configurations ==

−

'''Warning: this information may be obsolete by the time you read it, please check with the wxHaskell mailing list for the latest story'''

+

{|

+

!|Date

+

!|Arch

+

!|OS/XCode

+

!|GHC

+

!|Haskell Platform

+

!|wxWidgets

+

!|wxHaskell

+

|-

+

|2012-04

+

|Intel 64-bit

+

|Lion (10.7.3), XCode 4.3

+

|7.4.1

+

|

+

|2.9.3 (HomeBrew)

+

|0.90 (see notes)

+

|-

+

|2012-04

+

|Intel 64-bit

+

|Lion (10.7.3), Xcode 4.3

+

|7.0.4

+

|2011.4.0.0

+

|2.9.3 (HomeBrew)

+

|0.90

+

|-

+

|2012-04

+

|Intel 32-bit

+

|Snow Leopard (10.6.8), Xcode 3.2.6

+

|7.0.4

+

|2011.4.0.0

+

|2.9.3 (MacPorts)

+

|0.90 (see notes)

+

|-

+

|2012-11

+

|Intel 64-bit

+

|Mountain Lion (10.8.2), Xcode 4.5.2

+

|7.4.2

+

|2012.4.0.0

+

|2.9.4

+

|0.90.0.1 (see notes)

+

|}

−

If you are using a 64 bit version of GHC, you will need

+

== Notes ==

−

* wxWidgets 2.9

+

These notes tend to be a bit ephemeral and are thus dated to help you figure out if they may still apply or not.

−

* ...with the Cocoa UI (not Carbon, no 64 bit support)

+

−

* the wxHaskell branch at http://darcsden.com/kowey/wxhaskell-osx64

+

* 2012-04-24 MacPorts: If you use MacPorts, you may run into a problem with the iconv library. Tell GHC that you prefer the system libraries first: <code>ghc HelloWorld.hs -L/usr/lib</code>

+

* 2012-04-17: The MacPorts version of wxWidgets 2.9.3 can be used. I added a few flags to the Portfile, but they are probably not necessary.

+

* 2012-04-14: On MacOS X Lion, to install wxWidgets 2.9 with HomeBrew, you may need to run <code>brew install wxmac --use-llvm --devel</code>

== Using wxHaskell on MacOS X platforms ==

== Using wxHaskell on MacOS X platforms ==

−

Even though graphical applications on MacOS X look great, it is a still a developers nightmare to get them working :-). Furthermore, the MacOS X port of wxWidgets is the least mature and still has some quirks. This page describes how to circumvent some of the pitfalls.

+

Even though graphical applications on MacOS X look great, it is a still a developers nightmare to get them working :-). This page describes how to circumvent some of the pitfalls.

−

+

<ul>

<ul>

−

<li>The installation of wxWidgets provided with OSX Tiger will not work, as it does not have the wxThread symbols that wxHaskell does want to link against.</li>

+

<li>Executables generated with GHC do not work when executed directly if they use the graphical API; they need to be upgraded into so called [https://en.wikipedia.org/wiki/Application_Bundle application bundles] for MacOS X. Use the [https://github.com/gimbo/cabal-macosx cabal-macosx] package to automate this. It can be integrated with Cabal and/or used as a standalone <code>macosx-app</code> script.

−

<li><p>Haskell applications need the <tt>readline</tt> library which is not installed by default on the MacOS X. [http://www.cs.uu.nl/people/arthurb Arthur Baars] provided a simple [http://wxhaskell.sourceforge.net/download/Readline4.3.dmg installer for the readline library].</p>

+

−

<p>Graphical applications generated with GHC do not work if executed directly ‚Äì they need to be upgraded into MacOS X ''applications''. The <tt>macosx-app</tt> script does this for you. It is provided with binary releases and resides in the <tt>bin</tt> directory of a source release. Creating a program now consists of the following steps:</p>

+

−

<pre>&gt; cd samples/wx

+

−

&gt; ghc -package wx -o helloworld HelloWorld.hs

+

−

&gt; /usr/local/wxhaskell/bin/macosx-app -v helloworld

+

−

&gt; open helloworld.app</pre>

+

−

If you can't find macosx-app on your system, please refer to the instructions at this [http://stackoverflow.com/questions/3029385/wxhaskell-on-os-x Stack Overflow question].

+

</li>

</li>

−

<li><p>Due to complicated MacOS X restrictions, graphical wxHaskell applications do not work directly when used from GHCi. Fortunately, Wolfgang Thaller has kindly provided an ingenious [http://wxhaskell.sourceforge.net/download/EnableGUI.hs Haskell module] that solves this problem. Just import the (compiled) module [http://wxhaskell.sourceforge.net/download/EnableGUI.hs <tt>EnableGUI</tt>] in your program and issue the following command to run <tt>main</tt> from your GHCi prompt:</p>

+

<li><p>''Note: The following no longer applies to <code>wxcore >= 0.90.0.1</code>.''</p>

+

<p>Due to complicated MacOS X restrictions, graphical wxHaskell applications do not work directly when used from GHCi. Fortunately, Wolfgang Thaller has kindly provided an ingenious [http://wxhaskell.sourceforge.net/download/EnableGUI.hs Haskell module] that solves this problem. Just import the (compiled) module [http://wxhaskell.sourceforge.net/download/EnableGUI.hs <tt>EnableGUI</tt>] in your program and issue the following command to run <tt>main</tt> from your GHCi prompt:</p>

<pre>&gt; enableGUI &gt;&gt; main</pre>

<pre>&gt; enableGUI &gt;&gt; main</pre>

<p>Compiling and using enableGUI needs some command line flags:</p>

<p>Compiling and using enableGUI needs some command line flags:</p>

Line 45:

Line 110:

*Main&gt; main</pre>

*Main&gt; main</pre>

</li>

</li>

−

<li><p>The dynamic link libraries used by wxHaskell can not always be found. If your application seems to start (the icon bounces) but terminates mysteriously, you need to set the dynamic link library search path to the wxHaskell library directory. For example:</p>

+

</ul>

+

+

== Troubleshooting ==

+

+

See [[../Troubleshooting]] for help getting your wxhaskell applications running

+

+

<ul><li><p>The dynamic link libraries used by wxHaskell can not always be found. If your application seems to start (the icon bounces) but terminates mysteriously, you need to set the dynamic link library search path to the wxHaskell library directory. For example:</p>

#* 2009-04-01: we don't know for sure yet. <code>macosx-app</code> is just a shell script that runs <code>Rez</code> and also creates an application bundle. If you are a MacOS developer, especially a wxWidgets one, we would love some help answering this question.

3 Notes

These notes tend to be a bit ephemeral and are thus dated to help you figure out if they may still apply or not.

2012-04-24 MacPorts: If you use MacPorts, you may run into a problem with the iconv library. Tell GHC that you prefer the system libraries first: ghc HelloWorld.hs -L/usr/lib

2012-04-17: The MacPorts version of wxWidgets 2.9.3 can be used. I added a few flags to the Portfile, but they are probably not necessary.

2012-04-14: On MacOS X Lion, to install wxWidgets 2.9 with HomeBrew, you may need to run brew install wxmac --use-llvm --devel

4 Using wxHaskell on MacOS X platforms

Even though graphical applications on MacOS X look great, it is a still a developers nightmare to get them working :-). This page describes how to circumvent some of the pitfalls.

Executables generated with GHC do not work when executed directly if they use the graphical API; they need to be upgraded into so called application bundles for MacOS X. Use the cabal-macosx package to automate this. It can be integrated with Cabal and/or used as a standalone macosx-app script.

Note: The following no longer applies to wxcore >= 0.90.0.1.

Due to complicated MacOS X restrictions, graphical wxHaskell applications do not work directly when used from GHCi. Fortunately, Wolfgang Thaller has kindly provided an ingenious Haskell module that solves this problem. Just import the (compiled) module EnableGUI in your program and issue the following command to run main from your GHCi prompt:

5 Troubleshooting

The dynamic link libraries used by wxHaskell can not always be found. If your application seems to start (the icon bounces) but terminates mysteriously, you need to set the dynamic link library search path to the wxHaskell library directory. For example: