bug-autoconf
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[sr #110268] AC_RUN_IFELSE does not execute the test program although it


From: Bruno Haible
Subject: [sr #110268] AC_RUN_IFELSE does not execute the test program although it could
Date: Wed, 15 Jul 2020 03:58:11 -0400 (EDT)
User-agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0

URL:
  <https://savannah.gnu.org/support/?110268>

                 Summary: AC_RUN_IFELSE does not execute the test program
although it could
                 Project: Autoconf
            Submitted by: haible
            Submitted on: Wed 15 Jul 2020 09:58:09 AM CEST
                Category: None
                Priority: 5 - Normal
                Severity: 4 - Important
                  Status: None
                 Privacy: Public
             Assigned to: None
        Originator Email: 
             Open/Closed: Open
         Discussion Lock: Any
        Operating System: None

    _______________________________________________________

Details:

This is a regression, compared to 2.69.

In situations where a platform is used as a development environment - with
program execution capability - for a different platform, AC_RUN_IFELSE now
does not execute the test program although it could; it falls back to the
cross-compilation guess instead.

This affects in particular
1) native Windows (mingw or MSVC) compilation in a Cygwin environment,
2) cross-compilation to Linux with a different architecture, on Linux.

Details about the environments:
1) See
https://git.savannah.gnu.org/gitweb/?p=gettext.git;a=blob;f=INSTALL.windows
2) For example, cross-compilation to Linux/m68k from Linux/x86_64 (Ubuntu
16.04). See
https://git.savannah.gnu.org/gitweb/?p=libffcall.git;a=blob;f=porting-tools/emulation/qemu-m68k.txt
. The configure command I use is:

configure --prefix=/inst-m68k --host=m68k-linux CPPFLAGS="-I/inst-m68k/include
-Wall" LDFLAGS="-L/inst-m68k/lib"


The behaviour of AC_RUN_IFELSE is specified in the Autoconf documentation:
"If cross-compilation mode is enabled (this is the case if either the compiler
being used does not produce executables that run on the system where
@command{configure} is being run, or if the options @code{--build} and
@code{--host} were both specified and their values are different), then the
test program is not run."
This documentation has not changed since 2.69, and it makes perfect sense: it
generally allows to determine actual program behaviour, and it has a way to
disable it (in cases where that's needed).

In my case, the generated executables DO run in the environment, and I did NOT
specify a --build option. Therefore AC_RUN_IFELSE should execute the test
program.

Instead, what I see when configuring a gnulib testdir, generated with
+verbose+
  ./gnulib-tool --create-testdir --dir=../testdir-posixb --with-c++-tests
--single-configure `./posix-modules`
-verbose-
through
+verbose+
  ./configure --prefix=/inst-m68k --host=m68k-linux
CPPFLAGS="-I/inst-m68k/include -Wall" LDFLAGS="-L/inst-m68k/lib" -C 2>&1 | tee
log1
-verbose-
for Linux/m68k is that all AC_RUN_IFELSE invocation used the cross-compilation
branch, not the test program:

+verbose+
$ diff testdir-posix/build-m68k/config.cache
testdir-posixb/build-m68k/config.cache |head
16a17
> ac_cv_c_decl_report=${ac_cv_c_decl_report=error}
65c66
< ac_cv_func_chown_works=${ac_cv_func_chown_works=yes}
---
> ac_cv_func_chown_works=${ac_cv_func_chown_works='guessing yes'}
107c108
< ac_cv_func_getgroups_works=${ac_cv_func_getgroups_works=yes}
---
> ac_cv_func_getgroups_works=${ac_cv_func_getgroups_works='guessing yes'}
...
-verbose-
See attached file config.cache.diff.




    _______________________________________________________

File Attachments:


-------------------------------------------------------
Date: Wed 15 Jul 2020 09:58:09 AM CEST  Name: config.cache.diff  Size: 31KiB  
By: haible

<http://savannah.gnu.org/support/download.php?file_id=49488>

    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/support/?110268>

_______________________________________________
  Message sent via Savannah
  https://savannah.gnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]