summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2017-09-05 23:32:59 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2017-09-05 23:33:59 -0700
commit2890b02100598a5e2d1c8d2cc0104fac86e7ddf2 (patch)
tree8a0bf6a37bc04b3286de978a3c616d9987dd07b5
parent8ffefc19a6d30f3979a13fa9d37007aeaca40fdf (diff)
downloadgnulib-2890b02100598a5e2d1c8d2cc0104fac86e7ddf2.tar.gz
libc-config: port to MSVC
Problems reported by Gisle Vanem in: http://lists.gnu.org/archive/html/bug-gnulib/2017-09/msg00016.html * lib/libc-config.h (__inline): Don't define if HAVE___INLINE. (libc_hidden_proto): Stick to Standard C syntax for varargs macro. * m4/__inline.m4: New file. * modules/libc-config (Files): Add it. (Depends-on): Use it.
-rw-r--r--ChangeLog9
-rw-r--r--lib/libc-config.h6
-rw-r--r--m4/__inline.m422
-rw-r--r--modules/libc-config2
4 files changed, 36 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 448bad2c19..63eb16db07 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
2017-09-05 Paul Eggert <eggert@cs.ucla.edu>
+ libc-config: port to MSVC
+ Problems reported by Gisle Vanem in:
+ http://lists.gnu.org/archive/html/bug-gnulib/2017-09/msg00016.html
+ * lib/libc-config.h (__inline): Don't define if HAVE___INLINE.
+ (libc_hidden_proto): Stick to Standard C syntax for varargs macro.
+ * m4/__inline.m4: New file.
+ * modules/libc-config (Files): Add it.
+ (Depends-on): Use it.
+
glob: Use enum for __glob_pattern_type result
From a patch proposed by Adhemerval Zanella in:
https://sourceware.org/ml/libc-alpha/2017-09/msg00212.html
diff --git a/lib/libc-config.h b/lib/libc-config.h
index 2ebb8756e1..93a8db043c 100644
--- a/lib/libc-config.h
+++ b/lib/libc-config.h
@@ -150,8 +150,8 @@
/* <cdefs.h> __inline is too pessimistic for non-GCC. */
#undef __inline
-#ifndef __GNUC__
-# if 199901 <= __STDC_VERSION__
+#ifndef HAVE___INLINE
+# if 199901 <= __STDC_VERSION__ || defined inline
# define __inline inline
# else
# define __inline
@@ -172,7 +172,7 @@
/* A substitute for glibc <libc-symbols.h>, good enough for Gnulib. */
#define attribute_hidden
-#define libc_hidden_proto(name, attrs...)
+#define libc_hidden_proto(name, ...)
#define libc_hidden_def(name)
#define libc_hidden_weak(name)
#define libc_hidden_ver(local, name)
diff --git a/m4/__inline.m4 b/m4/__inline.m4
new file mode 100644
index 0000000000..95c34a9094
--- /dev/null
+++ b/m4/__inline.m4
@@ -0,0 +1,22 @@
+# Test for __inline keyword
+dnl Copyright 2017 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl___INLINE],
+[
+ AC_CACHE_CHECK([whether the compiler supports the __inline keyword],
+ [gl_cv_c___inline],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[typedef int foo_t;
+ static __inline foo_t foo (void) { return 0; }]],
+ [[return foo ();]])],
+ [gl_cv_c___inline=yes],
+ [gl_cv_c___inline=no])])
+ if test $gl_cv_c___inline = yes; then
+ AC_DEFINE([HAVE___INLINE], [1],
+ [Define to 1 if the compiler supports the keyword '__inline'.])
+ fi
+])
diff --git a/modules/libc-config b/modules/libc-config
index 8df46fec90..7706165d20 100644
--- a/modules/libc-config
+++ b/modules/libc-config
@@ -4,10 +4,12 @@ System definitions for code taken from the GNU C Library
Files:
lib/cdefs.h
lib/libc-config.h
+m4/__inline.m4
Depends-on:
configure.ac:
+gl___INLINE
Makefile.am: