mailing list of musl libc
 help / color / mirror / code / Atom feed
From: Isaac Dunham <idunham@lavabit.com>
To: musl@lists.openwall.com
Subject: Re: installation on bi-arch system
Date: Sun, 17 Jun 2012 16:06:13 -0700	[thread overview]
Message-ID: <20120617160613.7f599078@newbook> (raw)
In-Reply-To: <9015794.u7FZ5h2CIA@linuix>

On Sun, 17 Jun 2012 19:24:01 +0200
Bruno Haible <bruno@clisp.org> wrote:

> Hi,
> 
> Trying to install musl-0.9.1 as a 32-bit library on a bi-arch x86_64
> glibc system. The usual way to configure packages for this
> configuration is
>   ./configure CC="gcc -m32"
> or
>   CC="gcc -m32" ./configure
> See
> <http://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Preset-Output-Variables.html>.
> But this does not work with musl's configure script:
> 
> $ CC="gcc -m32" ./configure --prefix=/arch/x86-linux/inst-musl
> --exec-prefix=/arch/x86-linux/inst-musl CC="gcc -m32" checking for C
> compiler... gcc -m32 checking whether compiler is gcc... no
> checking target system type... unknown
> ./configure: unable to detect target arch; try ./configure
> --target=...

1. musl does not use autoconf, just a handwritten shell script that
accepts similar arguments.
2. I had always thought it was CC=gcc CFLAGS=-m32 ...
3. ./configure uses 
 $ type "$CC"
 to detect whether using $CC will work.
This means that all options must be set in CFLAGS.
Even if $CC did get accepted, gcc -m32 -dumpmachine (how musl detects
$ARCH) may not give i?86-linux-*, thus failing the configure.
> As a workaround, I have to create a wrapper script that invokes "gcc
> -m32 ..." and pass that as CC. This should not be needed.
See 2. Also note the --target= option (--target=i386 in this case).
--target=i386 should properly set CFLAGS to include -march=i486 -m32
(unless otherwise specified in CFLAGS).


> Additionally, the musl-gcc script that gets created by "make install"
> looks like this:
> 
> #!/bin/sh
> exec gcc "$@" -specs "/arch/x86-linux/inst-musl/lib/musl-gcc.specs"
> 
> When invoked with option "-c", it produces 64-bit .o files. To produce
> 32-bit .o files, it should read like this:
> 
> #!/bin/sh
> exec gcc-32 "$@" -specs "/arch/x86-linux/inst-musl/lib/musl-gcc.specs"
> 
> or like this:
> 
> #!/bin/sh
> exec gcc -m32 "$@" -specs
> "/arch/x86-linux/inst-musl/lib/musl-gcc.specs"
Again, I thought the standard was CFLAGS=-m32.
The approach you're proposing won't work when someone has both
architectures cross-building musl. (Although really, the spec file has
to be modified before that works, and that in turn would call for a
multiarch build target, which means VPATH/out-of-tree builds or a
change in object naming...)
> Bruno
> 



  reply	other threads:[~2012-06-17 23:06 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-17 17:24 Bruno Haible
2012-06-17 23:06 ` Isaac Dunham [this message]
2012-06-18  0:00   ` Rich Felker

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120617160613.7f599078@newbook \
    --to=idunham@lavabit.com \
    --cc=musl@lists.openwall.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).