public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Jerone Young <jyoung5-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
To: Anthony Liguori <anthony-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
Cc: kvm-devel
	<kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>,
	Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
Subject: Re: [PATCH] Add cross compile to top level	configuration file
Date: Mon, 15 Oct 2007 15:35:49 -0500	[thread overview]
Message-ID: <1192480549.5811.27.camel@thinkpad> (raw)
In-Reply-To: <4713C9D5.3070001-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>


On Mon, 2007-10-15 at 15:13 -0500, Anthony Liguori wrote:
> Jerone Young wrote:
> > This patch is an improved version of patches sent last week to enable
> > the top level configuration file for cross compile. This currently
> > allows x86 & x86-64 to cross compile. But will soon be sending patches
> > for powerpc embedded once this is accepted. This patches to latest git
> > and is in git format ;-)
> >
> > Signed-off-by: Jerone Young <jyoung5-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
> >   
> > ------------------------------------------------------------------------
> 
> > diff --git a/configure b/configure
> > --- a/configure
> > +++ b/configure
> > @@ -3,32 +3,30 @@ prefix=/usr/local
> >  prefix=/usr/local
> >  kerneldir=/lib/modules/$(uname -r)/build
> >  want_module=1
> > -qemu_cc=$(ls /usr/bin/gcc3* /usr/bin/gcc-3* 2>/dev/null | tail -n1)
> > +cc=gcc
> > +qemu_cc=
> >  disable_gcc_check=
> > +cross_prefix=
> > +arch=`uname -m`
> > +target_exec=
> >  
> >  usage() {
> >      cat <<-EOF
> >  	Usage: $0 [options]
> >  
> >  	Options include:
> > -
> > +	    --arch=ARCH            architecture to compile for ($arch)
> > +	    --cross-prefix=PREFIX  prefix for cross compiler
> >  	    --prefix=PREFIX        where to install things ($prefix)
> >  	    --with-patched-kernel  don't use external module
> >  	    --kerneldir=DIR        kernel build directory ($kerneldir)
> > -	    --qemu-cc="$qemu_cc"   compiler for qemu (needs gcc3.x) ($qemu_cc)
> > +	    --qemu-cc=CC           compiler for qemu (needs to be gcc 3.x)
> > +	                           Not valid if used with --cross-prefix	
> >  	    --disable-gcc-check    don't insist on gcc-3.x
> > -                                   - this will break running without kvm
> > +	                           CAUTION: using this option may break build
> >  EOF
> >      exit 1
> >  }
> > -
> > -
> > -# prefer gcc if its version is 3.* ( over a compat-gcc )
> > -# do it before parsing command line arguments to enable the user
> > -#    to specify a specific gcc he/she likes.
> > -if gcc -v 2>&1 | grep -q 'gcc *version *3\.[2-4]\.[0-9]'; then
> > -	qemu_cc=gcc
> > -fi
> >  
> >  while [[ "$1" = -* ]]; do
> >      opt="$1"; shift
> > @@ -53,6 +51,12 @@ while [[ "$1" = -* ]]; do
> >  	--disable-gcc-check)
> >  	    disable_gcc_check=1
> >  	    ;;
> > +	--arch)
> > +	    arch="$arg"
> > +	    ;;
> > +	--cross-prefix)
> > +	    cross_prefix="$arg"
> > +            ;;
> >  	--help)
> >  	    usage
> >  	    ;;
> > @@ -62,39 +66,71 @@ while [[ "$1" = -* ]]; do
> >      esac
> >  done
> >  
> > -if [[ -z "$qemu_cc" ]]; then
> > -    echo "$0: cannot locate gcc 3.x. please install it or specify with --qemu-cc"
> > -    exit 1
> > +
> > +# if cc is not specified on the command line
> > +# look for gcc version 3.x 
> > +if [[ -z "$qemu_cc" ]] && [[ -z "$cross_prefix" ]]; then
> > +    #check for a gcc 3.x version on the system
> > +    cc_check=$(ls /usr/bin/gcc3* /usr/bin/gcc-3* 2>/dev/null | tail -n1)
> > +    #prefer gcc if its version is 3.* ( over a compat-gcc )
> > +    gcc_check=$(gcc -v 2>&1 | grep -q 'gcc *version *3\.[2-4]\.[0-9]')
> > +    if [[ -n "$cc_check" ]] && [[ -z "$gcc_check" ]] ; then
> > +        cc=$cc_check
> > +    fi
> >  fi
> >
> >   
> 
> The QEMU that's in git automatically finds the right GCC version so this 
> whole check isn't necessary anymore.

This is true. Figured that this was still there for a particular reason.
If this is the case then this can be removed.

> 
> Regards,
> 
> Anthony Liguori
> 
> > +#if qemu_cc is specfied on the command line, set cc=$qemu_cc
> > +if [[ -n "$qemu_cc" ]] && [[ -z "$cross_prefix" ]]; then 
> > +   cc=$qemu_cc
> > +fi 
> > +
> > +#set kenel directory
> >  libkvm_kerneldir="$kerneldir"
> >  if (( want_module )); then
> >      libkvm_kerneldir=$(readlink -f kernel)
> >  fi
> >  
> > -target_cpu() {
> > -    if [[ $(uname -m) = i?86 ]]; then
> > -	echo x86_64
> > -    else
> > -	uname -m
> > -    fi
> > -}
> > +#if arch is an x86 arch set to i386
> > +if [[ $arch = i?86 ]]; then
> > +  arch="i386"
> > +fi
> >  
> > -(cd user; ./configure --prefix="$prefix" --kerneldir="$libkvm_kerneldir")
> > -(cd qemu; ./configure --target-list=$(target_cpu)-softmmu --cc="$qemu_cc" \
> > +#see if using a cross compiler or not
> > +qemu_opts=
> > +user_opts=
> > +if [[ -z $cross_prefix ]]; then
> > +    qemu_opts+=" --cc=$cc"
> > +    user_opts+=" --cc=$cc"
> > +else
> > +    qemu_opts+=" --cross-prefix=$cross_prefix"
> > +    user_opts+=" --cross-prefix=$cross_prefix"
> > +fi
> > +
> > +#set parameters compiling
> > +if [ "$arch" = "i386" -o "$arch" = "x86_64" ]; then
> > +    target_exec="x86_64-softmmu"
> > +    qemu_opts+=" --enable-alsa"
> >   
> 
> Why are you only passing --enable-alsa only x86?

Because for our powerpc stuff we actually want different options. ALSA
is not a dependency we want.

> 
> > +fi
> > +
> > +qemudir=`pwd`/qemu
> > +
> > +#configure user dir
> > +(cd user; ./configure --prefix="$prefix" --kerneldir="$libkvm_kerneldir" \
> > +          $user_opts --arch="$arch")
> > +(cd qemu; ./configure --target-list=$target_exec \
> >      --disable-kqemu --extra-cflags="-I $PWD/../user" \
> >      --extra-ldflags="-L $PWD/../user" \
> >      --enable-kvm --kernel-path="$libkvm_kerneldir" \
> > -    --enable-alsa \
> >      ${disable_gcc_check:+"--disable-gcc-check"} \
> > -    --prefix="$prefix"
> > +    --prefix="$prefix" \
> > +    $qemu_opts --cpu="$arch"
> >   
> 
> I don't think this is right.  You're using two different --cpu options 
> for i386 and x86_64.  There really shouldn't be a --cpu option at all 
> for x86.

So the --cpu option is actually a hidden option in qemu & is not on the
qemu help page .. who know why it isn't but the it's in the code.

It makes since though that if you are going to specify cross-prefix=
then there is little reason to specify the cpu on the qemu line. As it
should detect everything from cross compiler.

I'll test this out and send a new patch with the 2 changes.

> 
> Regards,
> 
> Anthony Liguori
> 
> >  )
> >  
> >  
> > -
> >  cat <<EOF > config.mak
> > +ARCH=$arch
> >  PREFIX=$prefix
> >  KERNELDIR=$kerneldir
> >  WANT_MODULE=$want_module
> > +CC=$cross_prefix$cc
> >  EOF
> > -
> 
> 
> > -------------------------------------------------------------------------
> > This SF.net email is sponsored by: Splunk Inc.
> > Still grepping through log files to find problems?  Stop.
> > Now Search log events and configuration files using AJAX and a browser.
> > Download your FREE copy of Splunk now >> http://get.splunk.com/
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > kvm-devel mailing list
> > kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
> > https://lists.sourceforge.net/lists/listinfo/kvm-devel
> 
> 
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Splunk Inc.
> Still grepping through log files to find problems?  Stop.
> Now Search log events and configuration files using AJAX and a browser.
> Download your FREE copy of Splunk now >> http://get.splunk.com/
> _______________________________________________
> kvm-devel mailing list
> kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
> https://lists.sourceforge.net/lists/listinfo/kvm-devel


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/

  parent reply	other threads:[~2007-10-15 20:35 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-15 19:12 [PATCH] Add cross compile to top level configuration file Jerone Young
2007-10-15 20:13 ` Anthony Liguori
     [not found]   ` <4713C9D5.3070001-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
2007-10-15 20:35     ` Jerone Young [this message]
2007-10-15 20:51       ` Anthony Liguori
     [not found]         ` <4713D2BD.9040202-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
2007-10-16  2:30           ` Jerone Young
2007-10-16  3:08           ` [PATCH] [RESEND] " Jerone Young
2007-10-16  9:59             ` Avi Kivity
     [not found]               ` <47148B90.2020607-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-10-16 19:08                 ` Jerone Young
2007-10-16 19:58                   ` Avi Kivity
2007-10-16 10:30             ` Avi Kivity
2007-10-16  9:37           ` [PATCH] " Avi Kivity
2007-10-16 14:59       ` Anthony Liguori
     [not found]         ` <4714D1BA.6050504-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
2007-10-16 19:51           ` Jerone Young
2007-10-16 20:03             ` Anthony Liguori

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=1192480549.5811.27.camel@thinkpad \
    --to=jyoung5-r/jw6+rmf7hqt0dzr+alfa@public.gmane.org \
    --cc=anthony-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org \
    --cc=avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org \
    --cc=kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
    /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.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox