From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony Liguori Subject: Re: [PATCH] Add cross compile to top level configuration file Date: Mon, 15 Oct 2007 15:13:09 -0500 Message-ID: <4713C9D5.3070001@codemonkey.ws> References: <1192475533.5811.6.camel@thinkpad> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: kvm-devel , Avi Kivity To: jyoung5-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org Return-path: In-Reply-To: <1192475533.5811.6.camel@thinkpad> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org Errors-To: kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org List-Id: kvm.vger.kernel.org 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 > > ------------------------------------------------------------------------ > 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. 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? > +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. Regards, Anthony Liguori > ) > > > - > cat < 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/