On Oct 28, 2008, at 9:08 AM, Stephen Fisher wrote:

> It would be nice to have a PPC version available.  Maybe we could  
> build
> GLib/GTK and friends on the Intel buildbot for the PPC architecture.

That might be possible - but it's a bit tricky.

For one thing, if you build and install GLib, the glibconfig.h header  
has some configuration-time characteristics of the machine embedded in  
it, so, while you could build a fat^WUniversal version of GLib, so  
that you can link either a PPC or x86 binary against the same library,  
you'd have to manually tweak glibconfig.h to make a "fat" version of  
it that, for example, uses #ifdef/#if to decide how G_BYTE_ORDER, and  
all the "xxx_TO_LE" and "xxx_TO_BE" macros should be defined (and, if  
we want 3-way or 4-way universal, how G_GINT64_xxx and G_GUINT64_xxx  
and G_GSIZE_xxx and G_GSSIZE_xxx and so on are defined).

glibconfig.h is installed under /usr/lib or /usr/local/lib or...,  
rather than /usr/include or /usr/local/include or...; my guess is  
that's so that "include" can be shared across architectures ("lib"  
can't, unless you have some fat-binary notion such as NeXTStEP and OS  
X have).  *If* it's possible to configure glib to have different  
versions of "lib" (configuring with --libdir= might do that), that  
might work...

...as long as the resulting builds for PPC and x86 (and PPC64 and  
x86_64, if we go four-way for Leopard) can arrange to look for the  
libraries inside the application bundle itself, rather than having the  
PPC and x86 versions look for them in different places.

The second problem is that the configuration-time characteristics in  
question are done by running a program to, for example, probe the byte  
order of the machine.  Thus, *those* programs would have to be  
compiled for PPC and run through Rosetta.

If you run the configuration script with the CFLAGS environment  
variable set to include "-arch ppc", that might handle this; I tried  
that with libpcap and tcpdump and, from looking at the config.log  
file, it appears that the test programs were built with "-arch ppc".   
It *also* meant that the Makefile set CFLAGS to include "-arch ppc",  
so it built for PPC.

(Note that the resulting tcpdump crashed and burned, because Rosetta  
doesn't know anything about BPF.)

The configure scripts reported a host system type of "i686-apple- 
darwin9.5.0", so any place where the configure script checks  
"$host_arch" or whatever it's called won't work, unless that's also  
forced.  (Note: "host", in current GNU autotools, refers to the  
machine for which you're building the application; "target" refers to  
the target for which the generated application will generate code if  
it's a compiler or assembler or linker or....  I think this is for a  
"Canadian Cross":

        http://www.airs.com/ian/configure/configure_6.html

where you might, for example, build, on a Linux/x86 machine, a  
compiler that runs on Solaris/SPARC and generates code for an embedded  
MIPS target.)

So this might be doable.
_______________________________________________
Wireshark-dev mailing list
[email protected]
https://wireshark.org/mailman/listinfo/wireshark-dev

Reply via email to