Message ID | 20171101193126.19730-1-danielhb@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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 >
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 >>
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
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 >
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
>>> 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 --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
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(-)