Patchwork [v2] configure: Default to 'cc', not 'gcc'

login
register
mail settings
Submitter Peter Maydell
Date Dec. 7, 2012, 3:39 p.m.
Message ID <1354894753-22302-1-git-send-email-peter.maydell@linaro.org>
Download mbox | patch
Permalink /patch/204529/
State New
Headers show

Comments

Peter Maydell - Dec. 7, 2012, 3:39 p.m.
Default to 'cc' as our compiler, rather than 'gcc'. We used to have
to insist on gcc when we still kept the CPU env in a fixed global
register, but this is no longer necessary and we will now compile OK
on clang as well as gcc.  Using 'cc' should generally result in us
using the most standard and maintained system compiler for the
platform.  (For instance on newer MacOS X 'gcc' exists but is an
elderly compiler provided mostly for legacy reasons, and 'cc'
(which is clang) is definitely the better choice.) On Linux there
will generally be no user-visible change since cc will be gcc.

This changeover necessitates a slight reworking of how we set the
'cc' variable, because GNU cross toolchains generally provide a
'${cross_prefix}gcc' but not a '${cross_prefix}cc'.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
MacOS X is the main aim here but BSDs would probably also prefer
to default to 'cc'. Previous macos-specific version of this patch:
http://patchwork.ozlabs.org/patch/199685/

 configure |   13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)
Blue Swirl - Dec. 8, 2012, 8:03 p.m.
Thanks, applied.

On Fri, Dec 7, 2012 at 3:39 PM, Peter Maydell <peter.maydell@linaro.org> wrote:
> Default to 'cc' as our compiler, rather than 'gcc'. We used to have
> to insist on gcc when we still kept the CPU env in a fixed global
> register, but this is no longer necessary and we will now compile OK
> on clang as well as gcc.  Using 'cc' should generally result in us
> using the most standard and maintained system compiler for the
> platform.  (For instance on newer MacOS X 'gcc' exists but is an
> elderly compiler provided mostly for legacy reasons, and 'cc'
> (which is clang) is definitely the better choice.) On Linux there
> will generally be no user-visible change since cc will be gcc.
>
> This changeover necessitates a slight reworking of how we set the
> 'cc' variable, because GNU cross toolchains generally provide a
> '${cross_prefix}gcc' but not a '${cross_prefix}cc'.
>
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
> MacOS X is the main aim here but BSDs would probably also prefer
> to default to 'cc'. Previous macos-specific version of this patch:
> http://patchwork.ozlabs.org/patch/199685/
>
>  configure |   13 +++++++++++--
>  1 file changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/configure b/configure
> index 994f731..88c8f15 100755
> --- a/configure
> +++ b/configure
> @@ -116,7 +116,7 @@ audio_drv_list=""
>  audio_card_list="ac97 es1370 sb16 hda"
>  audio_possible_cards="ac97 es1370 sb16 cs4231a adlib gus hda"
>  block_drv_whitelist=""
> -host_cc="gcc"
> +host_cc="cc"
>  libs_softmmu=""
>  libs_tools=""
>  audio_pt_int=""
> @@ -250,7 +250,16 @@ done
>  # Using uname is really, really broken.  Once we have the right set of checks
>  # we can eliminate its usage altogether.
>
> -cc="${CC-${cross_prefix}gcc}"
> +# Preferred compiler:
> +#  ${CC} (if set)
> +#  ${cross_prefix}gcc (if cross-prefix specified)
> +#  system compiler
> +if test -z "${CC}${cross_prefix}"; then
> +  cc="$host_cc"
> +else
> +  cc="${CC-${cross_prefix}gcc}"
> +fi
> +
>  ar="${AR-${cross_prefix}ar}"
>  objcopy="${OBJCOPY-${cross_prefix}objcopy}"
>  ld="${LD-${cross_prefix}ld}"
> --
> 1.7.9.5
>
>

Patch

diff --git a/configure b/configure
index 994f731..88c8f15 100755
--- a/configure
+++ b/configure
@@ -116,7 +116,7 @@  audio_drv_list=""
 audio_card_list="ac97 es1370 sb16 hda"
 audio_possible_cards="ac97 es1370 sb16 cs4231a adlib gus hda"
 block_drv_whitelist=""
-host_cc="gcc"
+host_cc="cc"
 libs_softmmu=""
 libs_tools=""
 audio_pt_int=""
@@ -250,7 +250,16 @@  done
 # Using uname is really, really broken.  Once we have the right set of checks
 # we can eliminate its usage altogether.
 
-cc="${CC-${cross_prefix}gcc}"
+# Preferred compiler:
+#  ${CC} (if set)
+#  ${cross_prefix}gcc (if cross-prefix specified)
+#  system compiler
+if test -z "${CC}${cross_prefix}"; then
+  cc="$host_cc"
+else
+  cc="${CC-${cross_prefix}gcc}"
+fi
+
 ar="${AR-${cross_prefix}ar}"
 objcopy="${OBJCOPY-${cross_prefix}objcopy}"
 ld="${LD-${cross_prefix}ld}"