Building macports ppc libraries and binaries on intel
Ryan Schmidt
ryandesign at macports.org
Sun Jul 27 11:48:33 PDT 2008
Hi Harry.
On Jul 27, 2008, at 13:26, Harry van der Wolf wrote:
> As Macports does not build all ports as universal and as some of
> the universal ports are not correct anyway due to the endian
> "problem" of MacPorts(*), I wanted to set up two parallel macports
> trees in user space using the ./configure option "--with-install-
> user=USER" with my own userid, thereby also removing the sudo part
> of the port command.
> So I built from source (1.6) a parallell tree in /Users/Shared/
> macports_universal/ppc and one in /Users/Shared/macports_universal/
> i386 (see attached Setenv-unversal.txt for all scripts and the 1_-
> build_parallel_macports_trees for building the parellel trees).
> I myself are on Intel (Intel Macbook) but I like to built in the "/
> Users/Shared/macports_universal/ppc" tree for PPC.
> I have tried lots of options but without result. Also ports built
> in the ppc tree are i386 builds (lipo -info <lib or binary>).
> In macports.conf I tried with:
> os.endian bigEndian
> os.arch ppc (also powerpc and )
> os.version 7.0
I would not expect os.* to be configurable parameters. They're
informative only.
> I also tried with all kind of (obviously incorrect) "command line"
> options like configure.cflags-append "-isysroot /Developer/SDKs/
> MacOSX10.4u.sdk -arch ppc" and configure.ldflags-append " -arch
> ppc", but without result. I tried the same in macports.conf (in
> the .../ppc/etc/macports/macports.conf) and also using the
> extra_env settings like CFLAGS="-isysroot /Developer/SDKs/
> MacOSX10.4u.sdk -arch ppc", but nothing works.
>
> Is it possible to build ports on intel for ppc at all?
> How do I setup my system to accomplish this?
The correct solution is to use the +universal variant to build
universal binaries.
Using MacPorts trunk (a.k.a. MacPorts 1.7.0) you can configure which
architectures you want to include in a universal build and which SDK
to use. But changing this from the defaults is not guaranteed to work
(i.e. will probably fail a lot of the time) so I don't recommend
changing it.
> *: Macports builds universal packages (that support it) correctly
> for ppc or i386 but always uses the endianness of the build
> platform. For example: when building glib2, cairo, pango and gtk on
> Intel universally (a common option) it will build the ppc "side"
> also with little_endian instead of big_endian (same for tiff by the
> way). This will result in seemingly correct builds, but these
> "universal" builds will not work on "the other platform".
Please don't generalize that MacPorts "always uses the endianness of
the build platform". That is not correct. In any case, this is not
the fault of MacPorts base. MacPorts base does the right thing to
build ports universal. If an individual port doesn't get the
endianness right, then that individual port is broken. Most ports
that have universal variants should work correctly. It's just not
tested often because most of us do not have both a PowerPC and an
Intel Mac. Since you do have both, you can help us to fix the broken
ports.
I recently fixed the glib2 port, which may also fix the gtk2 port?
I'm not sure. Please test. See:
http://trac.macports.org/ticket/15816
I'm surprised you were able to build cairo universal at all; as far
as I was aware, this is impossible at this time. See:
http://trac.macports.org/ticket/15451
For any other ports that do not build correctly universal, please
file tickets against those ports. Each port needs to be fixed
individually.
More information about the macports-users
mailing list