aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2019-02-04 03:43:38 +0100
committerJustin M. Keyes <justinkz@gmail.com>2019-02-04 13:16:59 +0100
commit45f25f7e0b3f105faebf5e215e5c128346463046 (patch)
tree658cd7ff2874f3ff3fa98a9279cf5f8e5737463a
parentf2c6164b04709b83b60483642ed9b6f33cf01951 (diff)
downloadrneovim-45f25f7e0b3f105faebf5e215e5c128346463046.tar.gz
rneovim-45f25f7e0b3f105faebf5e215e5c128346463046.tar.bz2
rneovim-45f25f7e0b3f105faebf5e215e5c128346463046.zip
build: PRAGMA_DIAG_PUSH_IGNORE_MISSING_PROTOTYPES
On Travis CI, -Wmissing-prototypes gives strange error: In file included from ../src/nvim/eval.c:5965: /home/travis/build/neovim/neovim/build/src/nvim/auto/funcs.generated.h.gperf:215:1: error: conflicting types for 'find_internal_func_gperf' find_internal_func_gperf (register const char *str, register unsigned int len) ^ ../src/nvim/eval.c:5962:20: note: previous declaration is here const VimLFuncDef *find_internal_func_gperf(register const char *str, ^
-rw-r--r--src/nvim/assert.h6
-rw-r--r--src/nvim/eval.c6
-rw-r--r--src/nvim/macros.h21
3 files changed, 26 insertions, 7 deletions
diff --git a/src/nvim/assert.h b/src/nvim/assert.h
index 6e8e57c183..34734f294d 100644
--- a/src/nvim/assert.h
+++ b/src/nvim/assert.h
@@ -80,7 +80,7 @@
# undef STATIC_ASSERT_PRAGMA_END
# define STATIC_ASSERT_PRAGMA_END \
- _Pragma("GCC diagnostic pop") \
+ _Pragma("GCC diagnostic pop")
// the same goes for clang in C99 mode, but we suppress a different warning
#elif defined(__clang__) && __has_extension(c_static_assert)
@@ -90,11 +90,11 @@
# undef STATIC_ASSERT_PRAGMA_START
# define STATIC_ASSERT_PRAGMA_START \
_Pragma("clang diagnostic push") \
- _Pragma("clang diagnostic ignored \"-Wc11-extensions\"") \
+ _Pragma("clang diagnostic ignored \"-Wc11-extensions\"")
# undef STATIC_ASSERT_PRAGMA_END
# define STATIC_ASSERT_PRAGMA_END \
- _Pragma("clang diagnostic pop") \
+ _Pragma("clang diagnostic pop")
// TODO(aktau): verify that this works, don't have MSVC on hand.
#elif _MSC_VER >= 1600
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 8ca764ba68..4ab699cdb7 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -5958,11 +5958,9 @@ static int get_env_tv(char_u **arg, typval_T *rettv, int evaluate)
#pragma function (floor)
#endif
-// silence -Wmissing-prototypes for funcs.generated.h
-const VimLFuncDef *find_internal_func_gperf(register const char *str,
- register size_t len);
-
+PRAGMA_DIAG_PUSH_IGNORE_MISSING_PROTOTYPES
# include "funcs.generated.h"
+PRAGMA_DIAG_POP
#endif
/*
diff --git a/src/nvim/macros.h b/src/nvim/macros.h
index d447bff765..61009528a8 100644
--- a/src/nvim/macros.h
+++ b/src/nvim/macros.h
@@ -198,4 +198,25 @@
# define IO_COUNT(x) (x)
#endif
+///
+/// PRAGMA_DIAG_PUSH_IGNORE_MISSING_PROTOTYPES
+///
+#if defined(__clang__) && __clang__ == 1
+# define PRAGMA_DIAG_PUSH_IGNORE_MISSING_PROTOTYPES \
+ _Pragma("clang diagnostic push") \
+ _Pragma("clang diagnostic ignored \"-Wmissing-prototypes\"")
+# define PRAGMA_DIAG_POP \
+ _Pragma("clang diagnostic pop")
+#elif defined(__GNUC__)
+# define PRAGMA_DIAG_PUSH_IGNORE_MISSING_PROTOTYPES \
+ _Pragma("GCC diagnostic push") \
+ _Pragma("GCC diagnostic ignored \"-Wmissing-prototypes\"")
+# define PRAGMA_DIAG_POP \
+ _Pragma("GCC diagnostic pop")
+#else
+# define PRAGMA_DIAG_PUSH_IGNORE_MISSING_PROTOTYPES
+# define PRAGMA_DIAG_POP
+#endif
+
+
#endif // NVIM_MACROS_H