Boost logo

Boost-Build :

Subject: Re: [Boost-build] 4-way fat binaries
From: Vladimir Prus (ghost_at_[hidden])
Date: 2008-12-08 11:14:45


On Sunday 07 December 2008 19:16:30 Michael Jackson wrote:
>
> On Dec 7, 2008, at 8:15 AM, Vladimir Prus wrote:
>
> > On Sunday 07 December 2008 15:35:24 Michael Jackson wrote:
> >>
> >> On Dec 7, 2008, at 3:29 AM, Vladimir Prus wrote:
> >>
> >>>
> >>> [Mat, Rene, I CC you as the resident OSX experts here]
> >>>
> >>> I've checked in the patch from
> >>>
> >>> https://svn.boost.org/trac/boost/ticket/1679
> >>>
> >>> that implements 4-way fat binaries on OSX. The command line syntax
> >>> is:
> >>>
> >>> bjam architecture=combined address-model=32_64
> >>>
> >>> Because I go and document this, anybody has comments about the
> >>> naming? For one
> >>> thing, should we use
> >>>
> >>> bjam architecture=x86_ppc address-model=32_64
> >>>
> >>> instead, as 'combined' seems somewhat vague. (Of course, we'll keep
> >>> 'combined' for
> >>> backward compatibility)
> >>>
> >>> Thanks,
> >>> Volodya
> >>>
> >>> --
> >>> Vladimir Prus
> >>> http://vladimir_prus.blogspot.com
> >>> Boost.Build V2: http://boost.org/boost-build2
> >>
> >> As and OS X Developer, the first time I tried to build boost as a
> >> Universal Binary it took me longer than it should have because
> >> boost.build didn't use the naming conventions that Apple had laid
> >> out,
> >> "Universal" or "Fat Binary". "Combined" just is not recognized on
> >> OS X
> >> as a proper "word" that describes Universal binary.
> >>
> >> Having said that, I understand that this needs to be "cross-
> >> platform" so my personal vote is for arch=i386,x86_64,ppc,ppc64
> >> style.
> >> It covers _all_ the combinations.
> >
> > This might be good, but it's fairly incompatible with how things works
> > on other platforms Boost.Build support and would make things slightly
> > better on OSX by default, but confusing for cross-platform
> > development.
> >
> > Besides, if you want to separately build x86 32 bit and x86 64 bit
> > binaries,
> > how do you specify that?
> >
> >> Just as a corner case of your first suggestion, what if I want to
> >> build a 32bit i386 and a 64 bit PPC. What would the correct arguments
> >> be?
> >
> > Right now, it's
> >
> > architecture=x86/address-model=32 architecture=ppc/address-model=64
> >
> > In a future version, this will be
> >
> > architecture=x86 address-model=32 -- architecture=ppc address-
> > model=64
> >
> >> I humbly suggest: bjam arch=i386;ppc;x86_64;ppc64
> >
> > Did you mean to use different separators? ';' used to separate two
> > different
> > kinds of things is somewhat confusing.
> >
> > - Volodya
> > _______________________________________________
> > Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost-build
>
> From a user interface perspective, you are separating 2 variables
> that really go together. The arch and the addressing model need to be
> together. It is less confusing that way. By having them separate you
> leave open the possibility of someone listing the archs first then the
> addressing models second.

What is "first" and "second" and why the order matters?

> There is no indication that architecture=x86
> address-model=32 are actually related to each other when if fact they
> are very much related.
>
> So maybe something like
> bjam -arch=i386,32 -arch=ppc,64 -arch=sparc,64
>
> But those variables really need to be put together.

I'm afraid I don't understand why the need to be put together. These
are two variables that can be adjusted independently, and, for native
compiler cases, a sensible default exists for 32-or-64 option.

- Volodya


Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk