From: Jeremy O'D. <jer...@gm...> - 2012-01-12 15:09:51
|
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 <fro...@gm...> 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 > wxh...@li... > https://lists.sourceforge.net/lists/listinfo/wxhaskell-devel > > |