| php: force cross-compilation |
| |
| In its configure script, PHP detects whether we're cross-compiling or |
| not, by compiling and running a simple C program. Depending on whether |
| cross-compiling has been detected or not, then PHP enables or disables |
| the AC_TRY_RUN tests (which verify the availability of something by |
| *executing* a program, which, by definition, cannot work in |
| cross-compilation mode). |
| |
| This works just fine when the target architecture is ARM or PowerPC |
| and the build machine is x86 or x86_64. Unfortunately, when the target |
| architecture is x86_64 and the build machine is also x86_64, the |
| cross-compilation mode detection concludes that we are not |
| cross-compiling, because it succeeds in running this small program. |
| |
| However, while it succeeds in running this basic small program, some |
| other programs executed later through AC_TRY_RUN tests do not work, |
| because they have target library dependencies that are not available |
| on the build machine. For example, the libxml2 test fails to *run* |
| because libxml2 is not available on the build machine, only in the |
| target/staging directories. So trying to run a program linked against |
| libxml2, on the build machine, simply doesn't make sense. |
| |
| We fix this problem by just forcing PHP to think that we're |
| cross-compiling (which is always the case with Buildroot, as we're at |
| the moment never building PHP for the host). Unfortunately, the |
| configure.in file dates back from the autoconf 2.13 era, so the |
| configure script does not understand the ac_cv_prog_cc_cross cache |
| variable, and we cannot easily regenerate the configure script using |
| our package autoconf version. The easiest solution is therefore to |
| simply patch the configure script to make the cross-compilation test |
| fail: we replace the execution of the program by a call to false, |
| which always fail, leading the configure script to understand that we |
| *are* cross-compiling. |
| |
| Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> |
| |
| Index: b/configure |
| =================================================================== |
| --- a/configure |
| +++ b/configure |
| @@ -2387,7 +2387,7 @@ |
| if { (eval echo configure:2388: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then |
| ac_cv_prog_cc_works=yes |
| # If we can't run a trivial program, we are probably using a cross compiler. |
| - if (./conftest; exit) 2>/dev/null; then |
| + if (false; exit) 2>/dev/null; then |
| ac_cv_prog_cc_cross=no |
| else |
| ac_cv_prog_cc_cross=yes |