From b4f29807225cf3744c2f4f971902fbdd7486fc19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Valverde?= Date: Fri, 26 May 2023 13:29:23 +0100 Subject: [PATCH] CMake: Fix a try_run() test when cross-compiling Upstream-Status: Backport Signed-off-by: Armin Kuster --- ConfigureChecks.cmake | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake index dd8268e077..d8bca54115 100644 --- a/ConfigureChecks.cmake +++ b/ConfigureChecks.cmake @@ -122,26 +122,30 @@ check_type_size("ssize_t" SSIZE_T) # Check if the libc vsnprintf() conforms to C99. If this fails we may # need to fall-back on GLib I/O. # -check_c_source_runs(" - #include - int main(void) - { - /* Check that snprintf() and vsnprintf() don't return - * -1 if the buffer is too small. C99 says this value - * is the length that would be written not including - * the nul byte. */ - char buf[3]; - return snprintf(buf, sizeof(buf), \"%s\", \"ABCDEF\") > 0 ? 0 : 1; - }" - HAVE_C99_VSNPRINTF -) -if (NOT HAVE_C99_VSNPRINTF) - message(FATAL_ERROR +# If cross-compiling we can't check so just assume this requirement is met. +# +if(NOT CMAKE_CROSSCOMPILING) + check_c_source_runs(" + #include + int main(void) + { + /* Check that snprintf() and vsnprintf() don't return + * -1 if the buffer is too small. C99 says this value + * is the length that would be written not including + * the nul byte. */ + char buf[3]; + return snprintf(buf, sizeof(buf), \"%s\", \"ABCDEF\") > 0 ? 0 : 1; + }" + HAVE_C99_VSNPRINTF + ) + if (NOT HAVE_C99_VSNPRINTF) + message(FATAL_ERROR "Building Wireshark requires a C99 compliant vsnprintf() and this \ target does not meet that requirement. Compiling for ${CMAKE_SYSTEM} \ using ${CMAKE_C_COMPILER_ID}. Please report this issue to the Wireshark \ developers at wireshark-dev@wireshark.org." - ) + ) + endif() endif() # -- 2.25.1