libssh: fix build with musl libc

libssh uses GNU extensions to the glob() API. Update the cmake test to
take that into account so that glob() is not used with musl libc.

Fixes:
http://autobuild.buildroot.net/results/0c2/0c2d17316fd6bd2bf1359e23a2a1273fa349cf2a/
http://autobuild.buildroot.net/results/936/936abac5362b33980fd1efe8b830409ee2f86f6b/
http://autobuild.buildroot.net/results/51b/51b1b136ab4209ee443c1b450a932341b2ff81b7/

Cc: Scott Fan <fancp2007@gmail.com>
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2018.11.x
Baruch Siach 2018-09-14 16:59:21 +03:00 committed by Thomas Petazzoni
parent 576a353277
commit 81e33bc77c
1 changed files with 44 additions and 0 deletions

View File

@ -0,0 +1,44 @@
From 3bb8b5e4517a720d178dbe5c53b4a444d718bcf1 Mon Sep 17 00:00:00 2001
From: Baruch Siach <baruch@tkos.co.il>
Date: Fri, 14 Sep 2018 15:19:48 +0300
Subject: [PATCH] cmake: check for GNU compatible glob support
The GLOB_TILDE flag is a GNU extension. musl libc does not implement
this extension, which leads to build failure:
.../libssh-0.8.1/src/config.c: In function 'local_parse_glob':
/home/buildroot/autobuild/run/instance-1/output/build/libssh-0.8.1/src/config.c:329:10: error: 'glob_t {aka struct <anonymous>}' has no member named 'gl_flags'; did you mean 'gl_offs'?
.gl_flags = 0,
^~~~~~~~
gl_offs
.../libssh-0.8.1/src/config.c:334:25: error: 'GLOB_TILDE' undeclared (first use in this function); did you mean '_IO_FILE'?
rt = glob(fileglob, GLOB_TILDE, NULL, &globbuf);
^~~~~~~~~~
_IO_FILE
Check for GLOB_TILDE directly to make sure the libc provides the
required extension.
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
---
Upstream status: https://www.libssh.org/archive/libssh/2018-09/0000020.html
ConfigureChecks.cmake | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake
index f91bd038f5a3..dac61bcf678e 100644
--- a/ConfigureChecks.cmake
+++ b/ConfigureChecks.cmake
@@ -156,7 +156,7 @@ check_function_exists(explicit_bzero HAVE_EXPLICIT_BZERO)
check_function_exists(memset_s HAVE_MEMSET_S)
if (HAVE_GLOB_H)
- check_function_exists(glob HAVE_GLOB)
+ check_symbol_exists(GLOB_TILDE "glob.h" HAVE_GLOB)
endif (HAVE_GLOB_H)
if (NOT WIN32)
--
2.18.0