Universal Pain

August 14th, 2008 by Tastic

As of recently, Pentagram has received more of my attention. I maintain the Mac OS X builds, and I’ve been wanting to change the process for quite some time. A little over two years ago, I set up the builds with Xcode, used the pre-built copies of the SDL and SDL_ttf frameworks, and created an Xcode project to build libpng as a framwork. The finished application bundle included these and all was well, but still I was unhappy.

I would prefer to simply use configure and make like all the normal linux users and yet still create my application bundles with all the universal goodness that is now expected on Macs. This would also allow me to have tighter control over build settings, a well know list of dependencies, and the ability to provide x86_64 binaries sooner.

So I worked out a fairly complex but slick way to build all of my dependencies from source and Pentagram itself for multiple architectures. What I got a the end of the day… um… er… couple of weeks was a few new shiny Pentagram.app bundles for each supported architecture (i386 and ppc for now).

And now for the combining of them. Well, slightly easier said than done. The lipo command used to create universal binaries only deals with the individual Mach-O files in your bundles. I wanted a future-proof method to combine any generic bundles. Surely some sort of script like that exists, but I was not successful in finding one.

So I did what all evil SOBs like me do and made one. I wrote a somewhat complete bash script and dubbed it “uberlipo”. Version 1.0 is up on the downloads page and it has a BSD-style license. I’ll put up a static page describing it in more detail shortly. Enjoy.

Bread & Butter

Leave a Reply