On 12 January 2012 15:09, Jeremy O'Donoghue <jeremy.odonog...@gmail.com> wrote: > Thank you Kenneth, > > That's an extremely detailed and complete set of notes. It is very much > appreciated.
I'd also like to offer my thanks, this is extremely useful to us. > > 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. This never occurred to me, well spotted. We should check this, so I've created a ticket: https://sourceforge.net/tracker/?func=detail&aid=3472972&group_id=73133&atid=536848 >> >> 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 I'm not an OS X person, so this doesn't really mean anything to me; is it something which should be on the wiki? >> >> >> >> 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". Thank you very much for the patch, but I have one tiny request: I can't apply wxhaskell-osx.patch because the structure doesn't match the one on my system. Could you record it with darcs and send the patch bundle as an attachment (darcs send -o mypatch.dpatch) http://darcs.net/manual/Darcs_commands.html#SECTION00661000000000000000 http://darcs.net/manual/Darcs_commands.html#SECTION00664000000000000000 Also, if you record the patches your name will forever be attached to them and you will received the karma you deserve :) >> >> >> 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 Another good tip for the wiki perhaps? I wonder if there is a way to indicate at a package level that this is required? >> >> 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. I'm a little confused by this statement? Do you mean: You can close the window, and ghci returns to the prompt, but the actual window manager window remains? Dave, >> >> 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 > ------------------------------------------------------------------------------ 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