[Mono-osx] How to add mono/dumbarton as a bundled framework

Jesus Garcia daschewie at gmail.com
Wed Oct 25 08:58:56 EDT 2006


This link might be helpful: http://doc.trolltech.com/4.1/deployment-mac.html

It shows how to alter the Qt Framework bundle using otool. The altered
bundle can then be added as a private Framework to your Application
without the need for weeklinks. This my work with Mono and Dumbarton.

Thanks, Jesus

On 10/25/06, Allan Hsu <allan at counterpop.net> wrote:
> Sorry I didn't get back to you when you sent me this question
> yesterday, but, ironically, I was at the Mono developer's meeting in
> Boston and there was no internet access:)
>
> Here is how we do it at imeem:
>
> We build our own universal version of Mono because there are a couple
> problems right now with the current release builds of Mono for OS X.
> Hopefully, after talking to Wade and Miguel this week (and some
> followup work), we'll fix the current problems with linking against
> the official builds as well as seeing what can be done about getting
> official universal install packages. For now, if you're just testing,
> you could probably just use one of the older platform-specific
> release builds that links properly.
>
> We include the Dumbarton framework project file in our main Xcode
> project file, done by "add->existing files..." in the context menu
> for the main project in "Groups & Files". It's important that you
> either set your default build products folder in Xcode or manually
> set the the build products folder in your project, the Dumbarton
> project, and the Judy project inside Dumbarton all to the same folder.
>
> In our release builds, we copy the Dumbarton framework and portions
> of Mono into the application bundle. In order to fix the sorts of
> linking problems you're experiencing, we use install_name_tool to
> change the install names referenced by the application executable and
> all of the dynamic librariesto @executable_path relative install
> names. So instead of what you're trying to do, we link to the Mono
> libraries in /Library/Frameworks/Mono/ and the included Dumbarton
> framework project at build time, copy them into the application
> bundle, and then rewrite the install names of the copied libraries.
> The install_name_tool manpage explains how to use the tool in detail.
>
> At runtime, you'll have to tell Dumbarton where to look for your
> embedded version of Mono, otherwise the runtime will not look in your
> application bundle for the GAC. This is the code that we use:
>
> NSString *libraryPath = [[[NSBundle mainBundle] bundlePath]
> stringByAppendingPathComponent:@"Contents/Libraries"];
> NSString *monoRootPath = [libraryPath
> stringByAppendingPathComponent:@"Mono"];
> [DBMonoEnvironment setAssemblyRoot:[monoRootPath
> stringByAppendingPathComponent:@"lib"]];
> [DBMonoEnvironment setConfigDir:[monoRootPath
> stringByAppendingPathComponent:@"etc"]];
>
> We don't do anything with weak linking.
>
> I hope this helps. I just returned from Boston a few hours ago and
> I'm very tired, so I may have missed something. I've been meaning to
> write some tools to make this process easier and include samples with
> the Dumbarton example code, but I haven't gotten around to it yet.
>
>         -Allan
>
> On Oct 25, 2006, at 2:04 AM, Eoin Norris wrote:
>
> >
> > This query is more for people who have used ObjectiveC# or Dumbarton.
> >
> > I have created an application that runs on my Intel box, talking via
> > dumbarton to the mono layer , and back. Mono does the business code
> > and all UI is in Cocoa.
> >
> > I need to get to beta test sometime next week - with external testers
> > - and I need to either bite the bullet and bundle the frameworks
> > within the bundle ( preferably a universal version) or just do it via
> > an installer, installing the frameworks in /Library/Frameworks -
> > which is ugly for the Mac.
> >
> > I thought I had a fair idea how to do this, however I ran into
> > dumbarton problems.
> >
> > The developer documentation from apple suggests that you should build
> > the frameworks within the project. This not what I want to do with
> > the mono framework, specially as I am unsure how to build it.
> >
> > So for now I link against the mono 1.1.17.1  version ( which is intel
> > only on my machine) without building it.
> >
> > So the final build phase is:
> >
> > 1) copy dumbarton.framework and mono.framework to the application
> > bundle/contents/frameworks/ directory via a script
> > 2) add -weak-link dumbarton and -weak-link mono to the linker flags
> > 3) Change the mono specific  linker flags ( which i dont really
> > understand) to point to the bundled frameworks
> >
> > i.e. -L"$TARGET_BUILD_DIR/$FULL_PRODUCT_NAME/Contents/Frameworks/
> > Mono.framework/Versions/Current/lib/pkgconfig/../../lib" and
> > -L""$TARGET_BUILD_DIR/$FULL_PRODUCT_NAME/Contents/Frameworks/
> > Mono.framework/Versions/Current/lib" -lmono -lm -lgmodule-2.0 -
> > lgthread-2.0 -lglib-2.0 -lintl -liconv
> >
> > So that is the main target sorted I think, but I am not exactly sure.
> > However I add Dumbarton as a bundled framework too, but do not build
> > it either.
> >
> > On launching the result is :
> >
> > dyld: Library not loaded: /Library/Frameworks/Mono.framework/Versions/
> > 1.1.17.1/lib/libmono.0.0.0.dylib
> >    Referenced from: /Library/Frameworks/Dumbarton.framework/Versions/
> > A/Dumbarton
> >    Reason: image not found
> >
> > clearly a reference to the mono.framework from dumbarton. This gives
> > rise to a circular problem, how do I build the dumbarton framework to
> > point to a mono.framework ( weak-linked?) within a bundle which would
> > not have been built yet, until after it the dumbarton framework is
> > linked ( I think it is clear tha I have probably have to build
> > dumbarton as part of my project.)
> >
> > Thanks in advance
> >
> > _______________________________________________
> > Mono-osx mailing list
> > Mono-osx at lists.ximian.com
> > http://lists.ximian.com/mailman/listinfo/mono-osx
>
> --
> Allan Hsu <allan at counterpop dot net>
> 1E64 E20F 34D9 CBA7 1300  1457 AC37 CBBB 0E92 C779
>
>
>
> _______________________________________________
> Mono-osx mailing list
> Mono-osx at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-osx
>


More information about the Mono-osx mailing list