automake
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Cross-compiling support (was: Multilib support)


From: Stepan Kasal
Subject: Cross-compiling support (was: Multilib support)
Date: Fri, 22 Sep 2006 11:47:16 +0200
User-agent: Mutt/1.4.2.1i

Hello,

On Thu, Sep 21, 2006 at 04:34:35PM +0200, Ralf Corsepius wrote:
> On Thu, 2006-09-21 at 21:36 +0800, Tzu-Chien Chiu wrote:
> > I've read configure.ac and Makefile.am of texinfo. Here is how it works.
[...]

I'm afraid you have not understood the trick.
Perhaps you could try to cross-compile texinfo, watching how the
build works.

> Normally with autoconf/automake, you need 2 different build-directories,
> each individually being configured for one host, because
> autoconf/automake only support one host at a time per configure script.
> 
> To be able to support this, you'll need to implement a toptevel
> configure script, which configures sub-directories this way. [...]

And the trick in Texinfo is based on this, of course.
But the native build is performed in a subdirectory of the main build
directory.

So when cross-compiling, a secondary configure is run from the main
one, configuring for a native build.  And an Automake conditional
(TOOLS_ONLY) is used to limit the native build only to the tools
which are needed for the ``bootstrap''.

> > [...] When building native tools, the variables CC, AR, and
> > RANLIB copied from the their BUILD_* environment variable
> > counterparts.

Yes.

> > The users have to manually set BUILD_CC, BUILD_AR, BUILD_RANLIB before
> > running 'configure', right?

No.

> > I thought there would be AC_PROG_*-like macros for these?

The configure.ac contains AC_PROG_CC.
When configure is run for a native build, this macro searches
for a native C compiler.  So when the main configure invokes itself
recursively for the build of native tools, this macro finds the
native compiler.

Actually, the recursive call looks like this:

CC="${BUILD_CC}" AR="${BUILD_AR}" RANLIB="${BUILD_RANLIB}" \
    ${confdir}/configure --build=${build} --host=${build}

But this does not mean tha BUILD_CC has to be set!
If BUILD_CC is empty, this just makes CC empty.  AC_PROG_CC then does
its work.  (The variable CC overrides the test only if it is nonempty.)

Yes, I agree this is tricky, yet I think this aproach is appropriate
for a small project.

Have a nice day,
        Stepan Kasal




reply via email to

[Prev in Thread] Current Thread [Next in Thread]