On Tue, Feb 15, 2011 at 11:44 PM, Bruno Voisin <span dir="ltr"><<a href="mailto:bvoisin@me.com">bvoisin@me.com</a>></span> wrote:<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<div class="im">
> 3) What to do about universal binaries<br>
<br>
</div>Several problems arise:<br>
<br>
- You need to relaunch the Xcode installer and select an option to install the 10.4 SDK, if the plan is to provide a version running on Tiger. I don't remember how the option is spelled out.<br></blockquote><div><br>

</div><div>I would suggest putting Tiger on hold for the moment and getting something that runs on ppc, i386 and x86_64 that works for Leopard and above.  This combination would probably be enough to cover the majority of Apple hardware/software combinations.  If Tiger support turns out to be easy to add, the it should be added.  If it turns out to be a pain in the rear, then someone who really, really wants TeXworks to run on Tiger will have to step up and demonstrate exactly how much they want it by supporting a Tiger build.</div>

<div><br></div><div>Another possibility is to produce two binaries: one ppc for 10.4/10.5 and one i386/x86_64 for 10.5/10.6.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">


- You need to have access to Macs allowing 32- and 64-bit builds. I don't remember if the plan is to provide PPC builds; if this is the case, you need a PPC Mac.<br></blockquote><div><br></div><div>Shouldn't be necessary for building.  The gcc compiler included in XCode is capable of generating ppc, ppc64, i386 and x86_64 binaries regardless of the architecture of the host machine.  Access to a PPC mac would still be nice, and I would say necessary, for testing purposes.</div>

<div> </div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
- Jonathan mentioned "passing appropriate configure options or setting environment variables", such that the builds are universal, and Adam Maxwell on the MacTeX list was more specific: "you'll have to build the libraries for all architectures, then lipo them together (or take a chance and use the -arch option to gcc with multiple architectures)". This is far, far, far from trivial.<br>


<br>
For example, here's how Dick Koch described to me, in an off-list message, the way he builds Ghostscript for inclusion in MacTeX. I don't think Dick will mind my posting his description here:<br>
<br>
> As others reported, the standard<br>
><br>
>       configure<br>
>       make<br>
>       sudo make install<br>
><br>
> works fine. I "blow away" my old /usr/local before doing this. Afterward,<br>
> I only keep the contents of /usr/local/bin, /usr/local/share/ghostscript/8.71, and<br>
> /usr/local/share/man. Ghostscript fonts aren't part of the standard distribution, so<br>
> I find those separately on the internet and install in /usr/local/share/ghostscript/fonts.<br>
><br>
> The only tricky thing is something which won't interest you. I compile ghostscript eight times:<br>
><br>
>       Intel Leopard (with X11)<br>
>       PPC Leopard (with X11)<br>
>       Intel Leopard (without X11)<br>
>       PPC Leopard (without X11)<br>
><br>
>       Intel Tiger (with X11)<br>
>       PPC Panther (with X11)<br>
>       Intel Tiger (without X11)<br>
>       PPC Panther (without X11)<br>
><br>
> Then I lipo these together in pairs, and install the four binary files in /usr/local/bin.<br>
> At installation time, I determine whether the machine has Leopard or an earlier system, and remove<br>
> two of the four pairs. The end result is gs-X11 and gs-noX11 in /usr/local/bin.<br>
> At install time, the symbolic link gs is created pointing to the correct binary depending<br>
> on whether X11 is installed.<br>
<br>
Not trivial!<br>
<br>
On top of this (without the X11 or not X11 stuff, which is irrelevant for TeXworks), you'd need to also take care of providing both 32- and 64-bit binaries on architectures which support them (or choose between the two).</blockquote>

<div><br></div><div>TeXworks may get lucky in this area in that it's dependency list is small which minimizes the potential for problems.  For Universal binaries:</div><div><br></div><div>Qt: Explicitly supported by the build system</div>

<div>Poppler: Includes a CMake-based build system.  CMake includes explicit support for generating universal binaries via the CMAKE_OSX_ARCHITECTURES.</div><div><br></div><div>hunspell:</div><div>fontconfig (if needed, which is the current state of things):</div>

<div><br></div><div>Appear to build fine following the procedures laid out in Technical Note 2137:</div><div><br></div><div>    <a href="http://developer.apple.com/library/mac/#technotes/tn2005/tn2137.html">http://developer.apple.com/library/mac/#technotes/tn2005/tn2137.html</a></div>

<div><br></div><div>Namely, the following works:</div><div><br></div><div>    export CFLAGS='-arch ppc -arch i386 -arch x86_64'</div><div><meta charset="utf-8">    export CXXFLAGS='-arch ppc -arch i386 -arch x86_64'</div>

<div><meta charset="utf-8">    export CPPFLAGS='-arch ppc -arch i386 -arch x86_64'</div><div><br></div><div>    ./configure --disable-dependency-tracking $OTHER_CONFIG_ARGS</div><div><br></div><div>The `--disable-dependency-tracking` is the important bit as it prevents the makefiles from passing `-M` flags to the compiler which are not supported during universal builds.  When build in the above manner, I get universal binaries that pass `make check`.  Whether the results are portable is an untested question.</div>

<div><br></div><div>Hope this helps.</div><div><br></div><div>-Charlie</div><div><br></div></div><br>