diff mbox series

[v4] configure: do CC check before verifying host CPU

Message ID 20171101193126.19730-1-danielhb@linux.vnet.ibm.com
State New
Headers show
Series [v4] configure: do CC check before verifying host CPU | expand

Commit Message

Daniel Henrique Barboza Nov. 1, 2017, 7:31 p.m. UTC
When executing 'configure' in a fresh QEMU clone, in a fresh
OS install running in a ppc64le host, this is the error
shown:

-----

../configure --enable-trace-backend=simple --enable-debug
    --target-list=ppc64-softmmu

ERROR: Unsupported CPU = ppc64le, try --enable-tcg-interpreter

-----

This isn't true, ppc64le host CPU is supported. This happens because,
in a fresh install, we don't have a C compiler to autodetect
the $cpu variable to "ppc64".

Since we need a C compiler to properly get the value of $cpu
in this and other cases, this patch changes the location of the C
compiler check right after setting the preferred CC.

Signed-off-by: Daniel Henrique Barboza <danielhb@linux.vnet.ibm.com>
---
 configure | 34 +++++++++++++++++-----------------
 1 file changed, 17 insertions(+), 17 deletions(-)

Comments

Philippe Mathieu-Daudé Nov. 1, 2017, 7:36 p.m. UTC | #1
Maybe "configure: check $CC available before verifying host CPU" ?

On 11/01/2017 04:31 PM, Daniel Henrique Barboza wrote:
> When executing 'configure' in a fresh QEMU clone, in a fresh
> OS install running in a ppc64le host, this is the error
> shown:
> 
> -----
> 
> ../configure --enable-trace-backend=simple --enable-debug
>     --target-list=ppc64-softmmu
> 
> ERROR: Unsupported CPU = ppc64le, try --enable-tcg-interpreter
> 
> -----
> 
> This isn't true, ppc64le host CPU is supported. This happens because,
> in a fresh install, we don't have a C compiler to autodetect
> the $cpu variable to "ppc64".
> 
> Since we need a C compiler to properly get the value of $cpu
> in this and other cases, this patch changes the location of the C
> compiler check right after setting the preferred CC.
> 
> Signed-off-by: Daniel Henrique Barboza <danielhb@linux.vnet.ibm.com>

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> ---
>  configure | 34 +++++++++++++++++-----------------
>  1 file changed, 17 insertions(+), 17 deletions(-)
> 
> diff --git a/configure b/configure
> index 285d123dbf..a641bf18b6 100755
> --- a/configure
> +++ b/configure
> @@ -467,6 +467,23 @@ else
>    cc="${CC-${cross_prefix}gcc}"
>  fi
>  
> +write_c_skeleton() {
> +    cat > $TMPC <<EOF
> +int main(void) { return 0; }
> +EOF
> +}
> +
> +# check that the C compiler works.
> +write_c_skeleton;
> +if compile_object ; then
> +  : C compiler works ok
> +else
> +    error_exit "\"$cc\" either does not exist or does not work"
> +fi
> +if ! compile_prog ; then
> +    error_exit "\"$cc\" cannot build an executable (is your linker broken?)"
> +fi
> +
>  if test -z "${CXX}${cross_prefix}"; then
>    cxx="c++"
>  else
> @@ -537,12 +554,6 @@ EOF
>    compile_object
>  }
>  
> -write_c_skeleton() {
> -    cat > $TMPC <<EOF
> -int main(void) { return 0; }
> -EOF
> -}
> -
>  if check_define __linux__ ; then
>    targetos="Linux"
>  elif check_define _WIN32 ; then
> @@ -1593,17 +1604,6 @@ if test -z "$werror" ; then
>      fi
>  fi
>  
> -# check that the C compiler works.
> -write_c_skeleton;
> -if compile_object ; then
> -  : C compiler works ok
> -else
> -    error_exit "\"$cc\" either does not exist or does not work"
> -fi
> -if ! compile_prog ; then
> -    error_exit "\"$cc\" cannot build an executable (is your linker broken?)"
> -fi
> -
>  if test "$bogus_os" = "yes"; then
>      # Now that we know that we're not printing the help and that
>      # the compiler works (so the results of the check_defines we used
>
Daniel Henrique Barboza Nov. 1, 2017, 7:41 p.m. UTC | #2
On 11/01/2017 05:36 PM, Philippe Mathieu-Daudé wrote:
> Maybe "configure: check $CC available before verifying host CPU" ?

If the maintainer is willing to amend the patch before pushing, works 
for me!


Daniel

>
> On 11/01/2017 04:31 PM, Daniel Henrique Barboza wrote:
>> When executing 'configure' in a fresh QEMU clone, in a fresh
>> OS install running in a ppc64le host, this is the error
>> shown:
>>
>> -----
>>
>> ../configure --enable-trace-backend=simple --enable-debug
>>      --target-list=ppc64-softmmu
>>
>> ERROR: Unsupported CPU = ppc64le, try --enable-tcg-interpreter
>>
>> -----
>>
>> This isn't true, ppc64le host CPU is supported. This happens because,
>> in a fresh install, we don't have a C compiler to autodetect
>> the $cpu variable to "ppc64".
>>
>> Since we need a C compiler to properly get the value of $cpu
>> in this and other cases, this patch changes the location of the C
>> compiler check right after setting the preferred CC.
>>
>> Signed-off-by: Daniel Henrique Barboza <danielhb@linux.vnet.ibm.com>
> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>
>> ---
>>   configure | 34 +++++++++++++++++-----------------
>>   1 file changed, 17 insertions(+), 17 deletions(-)
>>
>> diff --git a/configure b/configure
>> index 285d123dbf..a641bf18b6 100755
>> --- a/configure
>> +++ b/configure
>> @@ -467,6 +467,23 @@ else
>>     cc="${CC-${cross_prefix}gcc}"
>>   fi
>>   
>> +write_c_skeleton() {
>> +    cat > $TMPC <<EOF
>> +int main(void) { return 0; }
>> +EOF
>> +}
>> +
>> +# check that the C compiler works.
>> +write_c_skeleton;
>> +if compile_object ; then
>> +  : C compiler works ok
>> +else
>> +    error_exit "\"$cc\" either does not exist or does not work"
>> +fi
>> +if ! compile_prog ; then
>> +    error_exit "\"$cc\" cannot build an executable (is your linker broken?)"
>> +fi
>> +
>>   if test -z "${CXX}${cross_prefix}"; then
>>     cxx="c++"
>>   else
>> @@ -537,12 +554,6 @@ EOF
>>     compile_object
>>   }
>>   
>> -write_c_skeleton() {
>> -    cat > $TMPC <<EOF
>> -int main(void) { return 0; }
>> -EOF
>> -}
>> -
>>   if check_define __linux__ ; then
>>     targetos="Linux"
>>   elif check_define _WIN32 ; then
>> @@ -1593,17 +1604,6 @@ if test -z "$werror" ; then
>>       fi
>>   fi
>>   
>> -# check that the C compiler works.
>> -write_c_skeleton;
>> -if compile_object ; then
>> -  : C compiler works ok
>> -else
>> -    error_exit "\"$cc\" either does not exist or does not work"
>> -fi
>> -if ! compile_prog ; then
>> -    error_exit "\"$cc\" cannot build an executable (is your linker broken?)"
>> -fi
>> -
>>   if test "$bogus_os" = "yes"; then
>>       # Now that we know that we're not printing the help and that
>>       # the compiler works (so the results of the check_defines we used
>>
Peter Maydell Nov. 1, 2017, 7:41 p.m. UTC | #3
On 1 November 2017 at 19:31, Daniel Henrique Barboza
<danielhb@linux.vnet.ibm.com> wrote:
> When executing 'configure' in a fresh QEMU clone, in a fresh
> OS install running in a ppc64le host, this is the error
> shown:
>
> -----
>
> ../configure --enable-trace-backend=simple --enable-debug
>     --target-list=ppc64-softmmu
>
> ERROR: Unsupported CPU = ppc64le, try --enable-tcg-interpreter
>
> -----
>
> This isn't true, ppc64le host CPU is supported. This happens because,
> in a fresh install, we don't have a C compiler to autodetect
> the $cpu variable to "ppc64".
>
> Since we need a C compiler to properly get the value of $cpu
> in this and other cases, this patch changes the location of the C
> compiler check right after setting the preferred CC.
>
> Signed-off-by: Daniel Henrique Barboza <danielhb@linux.vnet.ibm.com>
> ---
>  configure | 34 +++++++++++++++++-----------------
>  1 file changed, 17 insertions(+), 17 deletions(-)
>
> diff --git a/configure b/configure
> index 285d123dbf..a641bf18b6 100755
> --- a/configure
> +++ b/configure
> @@ -467,6 +467,23 @@ else
>    cc="${CC-${cross_prefix}gcc}"
>  fi
>
> +write_c_skeleton() {
> +    cat > $TMPC <<EOF
> +int main(void) { return 0; }
> +EOF
> +}
> +
> +# check that the C compiler works.
> +write_c_skeleton;
> +if compile_object ; then
> +  : C compiler works ok
> +else
> +    error_exit "\"$cc\" either does not exist or does not work"
> +fi
> +if ! compile_prog ; then
> +    error_exit "\"$cc\" cannot build an executable (is your linker broken?)"
> +fi
> +

I think that currently we try to make "--help" work
even if you don't have a working C compiler. Does this
break that?

thanks
-- PMM
Daniel Henrique Barboza Nov. 1, 2017, 7:46 p.m. UTC | #4
On 11/01/2017 05:41 PM, Peter Maydell wrote:
> On 1 November 2017 at 19:31, Daniel Henrique Barboza
> <danielhb@linux.vnet.ibm.com> wrote:
>> When executing 'configure' in a fresh QEMU clone, in a fresh
>> OS install running in a ppc64le host, this is the error
>> shown:
>>
>> -----
>>
>> ../configure --enable-trace-backend=simple --enable-debug
>>      --target-list=ppc64-softmmu
>>
>> ERROR: Unsupported CPU = ppc64le, try --enable-tcg-interpreter
>>
>> -----
>>
>> This isn't true, ppc64le host CPU is supported. This happens because,
>> in a fresh install, we don't have a C compiler to autodetect
>> the $cpu variable to "ppc64".
>>
>> Since we need a C compiler to properly get the value of $cpu
>> in this and other cases, this patch changes the location of the C
>> compiler check right after setting the preferred CC.
>>
>> Signed-off-by: Daniel Henrique Barboza <danielhb@linux.vnet.ibm.com>
>> ---
>>   configure | 34 +++++++++++++++++-----------------
>>   1 file changed, 17 insertions(+), 17 deletions(-)
>>
>> diff --git a/configure b/configure
>> index 285d123dbf..a641bf18b6 100755
>> --- a/configure
>> +++ b/configure
>> @@ -467,6 +467,23 @@ else
>>     cc="${CC-${cross_prefix}gcc}"
>>   fi
>>
>> +write_c_skeleton() {
>> +    cat > $TMPC <<EOF
>> +int main(void) { return 0; }
>> +EOF
>> +}
>> +
>> +# check that the C compiler works.
>> +write_c_skeleton;
>> +if compile_object ; then
>> +  : C compiler works ok
>> +else
>> +    error_exit "\"$cc\" either does not exist or does not work"
>> +fi
>> +if ! compile_prog ; then
>> +    error_exit "\"$cc\" cannot build an executable (is your linker broken?)"
>> +fi
>> +
> I think that currently we try to make "--help" work
> even if you don't have a working C compiler. Does this
> break that?
Just checked, configure --help isn't broken with this change:


$ ../configure --help

Usage: configure [options]
Options: [defaults in brackets after descriptions]

Standard options:
   --help                   print this message
(...)


Thanks,

Daniel

>
> thanks
> -- PMM
>
Peter Maydell Nov. 1, 2017, 11:41 p.m. UTC | #5
On 1 November 2017 at 19:46, Daniel Henrique Barboza
<danielhb@linux.vnet.ibm.com> wrote:
> On 11/01/2017 05:41 PM, Peter Maydell wrote:
>> I think that currently we try to make "--help" work
>> even if you don't have a working C compiler. Does this
>> break that?
>
> Just checked, configure --help isn't broken with this change:

Did you test with gcc uninstalled again? It's hard to see
how it could work -- if the compile test fails we'll call
error_exit, which (as the name suggests) exits. Your patch
moves the compiler check from after we handle --help to
before it...

thanks
-- PMM
Philippe Mathieu-Daudé Nov. 2, 2017, 1:22 a.m. UTC | #6
>>> I think that currently we try to make "--help" work
>>> even if you don't have a working C compiler. Does this
>>> break that?
>>
>> Just checked, configure --help isn't broken with this change:
> 
> Did you test with gcc uninstalled again? It's hard to see
> how it could work -- if the compile test fails we'll call
> error_exit, which (as the name suggests) exits. Your patch
> moves the compiler check from after we handle --help to
> before it...

$ CC=asdf ./configure --help

ERROR: "asdf" either does not exist or does not work

Oops.
diff mbox series

Patch

diff --git a/configure b/configure
index 285d123dbf..a641bf18b6 100755
--- a/configure
+++ b/configure
@@ -467,6 +467,23 @@  else
   cc="${CC-${cross_prefix}gcc}"
 fi
 
+write_c_skeleton() {
+    cat > $TMPC <<EOF
+int main(void) { return 0; }
+EOF
+}
+
+# check that the C compiler works.
+write_c_skeleton;
+if compile_object ; then
+  : C compiler works ok
+else
+    error_exit "\"$cc\" either does not exist or does not work"
+fi
+if ! compile_prog ; then
+    error_exit "\"$cc\" cannot build an executable (is your linker broken?)"
+fi
+
 if test -z "${CXX}${cross_prefix}"; then
   cxx="c++"
 else
@@ -537,12 +554,6 @@  EOF
   compile_object
 }
 
-write_c_skeleton() {
-    cat > $TMPC <<EOF
-int main(void) { return 0; }
-EOF
-}
-
 if check_define __linux__ ; then
   targetos="Linux"
 elif check_define _WIN32 ; then
@@ -1593,17 +1604,6 @@  if test -z "$werror" ; then
     fi
 fi
 
-# check that the C compiler works.
-write_c_skeleton;
-if compile_object ; then
-  : C compiler works ok
-else
-    error_exit "\"$cc\" either does not exist or does not work"
-fi
-if ! compile_prog ; then
-    error_exit "\"$cc\" cannot build an executable (is your linker broken?)"
-fi
-
 if test "$bogus_os" = "yes"; then
     # Now that we know that we're not printing the help and that
     # the compiler works (so the results of the check_defines we used