Thank you Kenneth,

That's an extremely detailed and complete set of notes. It is very much
appreciated.

Best regards
Jeremy

On 12 January 2012 14:52, Frodo Kenny <frodoken...@gmail.com> wrote:

> Nice work. I was still on GHC 6.10 to be able to use wxhaskell with ghci.
>
> Here are some notes and patches for OS X. I'm running Lion (10.7.2) and
> getting wxwidgets running actually took the most time.
>
>
> 1) wxwidgets
>
>
> First of all, Haskell and wxwidgets must use the same architecture, i.e.
> both 32-bit or both 64-bit.
>
> The standard build is 64-bit, but wxwidgets includes the QuickTime
> framework which is only available in 32-bit. It builds and ghc only gives a
> warning, but ghci will give an error
> (/System/Library/Frameworks/QuickTime.framework/QuickTime: mach-o, but
> wrong architecture).
>
> To build 32-bit you can use "--enable-macosx_arch=i386".
>
> It looks like quicktime is only used for PICT support, which is disabled
> in 64-bit builds anyway, so I made a patch that disables quicktime for both
> 32 and 64 bit cocoa builds.
>
> By further disabling the ppc architecture, we can make a universal
> 32/64-bit binary with:
>
> =remove -arch ppc in configure
>
> =remove -framework QuickTime in configure
>
> =remove PICT by __LP64__ -> __WXOSX_COCOA__ in bitmap.c, fontenum.c,
> metafile.cpp
>
>
> > ./configure --disable-debug --disable-dependency-tracking
> --with-osx_cocoa --disable-webkit
> --with-macosx-sdk=/Developer/SDKs/MacOSX10.6.sdk
> --with-macosx-version-min=10.6 --enable-universal_binary
>
> > make install
>
>
> Note that on lion with the latest Xcode, 10.6 is the lowest sdk version.
>
>
> I use Homebrew so I attached a formula for it. To install homebrew:
>
>
> > /usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)"
>
>
> Then put "wxosx.rb" in /usr/local/Library/Formula and run:
>
>
> > brew install wxosx
>
>
>
> 2) wxhaskell
>
>
> installing wxc gives:
>
> > cd wxc
>
> > cabal install
>
> - error wxEVT_WEBKIT_ was not declared…
>
> so I disabled webkit in wxwidgets above.
>
>
> -ld: file not found: undefined
>
> =change "-Wl,undefined" to "-Wl,-undefined" in linkCxxOpts in Setup.hs
>
>
> installing wxcore
>
> -* Missing C library: wxc
>
> name is wxc.so instead of libwxc.dylib
>
> =change for sharedLibName: OSX -> "lib" ++ addExtension basename ".dylib"
> in Setup.hs
>
>
> > ghc --make HelloWorld.hs
>
> Undefined symbols for architecture x86_64:
>
>   "_expEVT_DIALUP_DISCONNECTED
>
> I don't know where this is coming from (dialupman is enabled in wxwidgets)
> so I commented out the DIALUP lines in wxc_glue.h
>
>
> > ./HelloWorld
>
> - dlopen(dist/build/libwxc.dylib) failed
>
> The final problem is that a dylib contains an absolute paths used for
> linking, and the library is expected to be found at that locations. To set
> this path we must pass the "-install_name" argument when linking
> libwxc.dylib
>
> =      OSX -> ["-dynamiclib",
>
>                   "-o " ++ out_dir </> sharedLibName ver basename,
>
>                   "-install_name " ++ basepath </> sharedLibName ver
> basename,
>
>                   "-Wl,-undefined,dynamic_lookup"]
>
> in "linkCxxOpts", thus needing an extra "basepath" argument
>
> this is found by adding
>
> =        inst_lib_dir = libdir $ absoluteInstallDirs pkg_descr
> local_bld_info NoCopyDest
>
> to "myBuildHook" and also using an extra argument for "linkSharedLib".
>
>
> 3) using wxhaskell
>
>
> "ghc --make" seems to work with the limited testing that I did
>
>
> ghci error: +[NSUndoManager(NSInternal) _endTopLevelGroupings] is only
> safe to invoke on the main thread.
>
>
> ghci creates a new thread for each computation and under os x the gui
> apparently must run on the main (first) thread.
>
> This is solved by:
>
> > ghci -fno-ghci-sandbox
>
> However, keyboard input is not directed to the gui but to the ghci
> terminal…
>
> There used to be an EnableGUI module to fix this (
> http://www.haskell.org/haskellwiki/WxHaskell/MacOS_X), but that does not
> seem to work anymore.
>
> The window can be closed and restarted from ghci though. However, the
> window does not actually disappear until ghci is exited.
>
> Does anybody know how this was working/can be fixed?
>
>
> Hope this is useful.
>
>
> Regards,
>
> Kenneth
>
>
>
>
> ------------------------------------------------------------------------------
> RSA(R) Conference 2012
> Mar 27 - Feb 2
> Save $400 by Jan. 27
> Register now!
> http://p.sf.net/sfu/rsa-sfdev2dev2
> _______________________________________________
> wxhaskell-devel mailing list
> wxhaskell-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wxhaskell-devel
>
>
------------------------------------------------------------------------------
RSA(R) Conference 2012
Mar 27 - Feb 2
Save $400 by Jan. 27
Register now!
http://p.sf.net/sfu/rsa-sfdev2dev2
_______________________________________________
wxhaskell-devel mailing list
wxhaskell-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wxhaskell-devel

Reply via email to