changeset 8164:5ea509f95b49

New module 'link-warning'.
author Bruno Haible <bruno@clisp.org>
date Sat, 17 Feb 2007 22:21:32 +0000
parents e717b8d5a144
children b8956234db55
files ChangeLog build-aux/link-warning.h lib/string_.h modules/link-warning modules/string
diffstat 5 files changed, 61 insertions(+), 28 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2007-02-17  Bruno Haible  <bruno@clisp.org>
+
+	* modules/link-warning: New file.
+	* build-aux/link-warning.h: New file, extracted from lib/string_.h.
+	* lib/string_.h (GL_LINK_WARNING): Remove definition.
+	* modules/string (Depends-on): Add link-warning.
+	(Makefile.am): Copy the contents of build-aux/link-warning.h into
+	string.h.
+
 2007-02-17  Bruno Haible  <bruno@clisp.org>
 
 	* lib/string_.h (memmem, mempcpy, memrchr, stpcpy, stpncpy, strcasecmp,
new file mode 100644
--- /dev/null
+++ b/build-aux/link-warning.h
@@ -0,0 +1,28 @@
+/* GL_LINK_WARNING("literal string") arranges to emit the literal string as
+   a linker warning on most glibc systems.
+   We use a linker warning rather than a preprocessor warning, because
+   #warning cannot be used inside macros.  */
+#ifndef GL_LINK_WARNING
+  /* This works on platforms with GNU ld and ELF object format.
+     Testing __GLIBC__ is sufficient for asserting that GNU ld is in use.
+     Testing __ELF__ guarantees the ELF object format.
+     Testing __GNUC__ is necessary for the compound expression syntax.  */
+# if defined __GLIBC__ && defined __ELF__ && defined __GNUC__
+#  define GL_LINK_WARNING(message) \
+     GL_LINK_WARNING1 (__FILE__, __LINE__, message)
+#  define GL_LINK_WARNING1(file, line, message) \
+     GL_LINK_WARNING2 (file, line, message)  /* macroexpand file and line */
+#  define GL_LINK_WARNING2(file, line, message) \
+     GL_LINK_WARNING3 (file ":" #line ": warning: " message)
+#  define GL_LINK_WARNING3(message) \
+     ({ static const char warning[sizeof (message)]		\
+          __attribute__ ((__unused__,				\
+                          __section__ (".gnu.warning"),		\
+                          __aligned__ (1)))			\
+          = message "\n";					\
+        (void)0;						\
+     })
+# else
+#  define GL_LINK_WARNING(message) ((void) 0)
+# endif
+#endif
--- a/lib/string_.h
+++ b/lib/string_.h
@@ -22,34 +22,7 @@
 #include @ABSOLUTE_STRING_H@
 
 
-/* GL_LINK_WARNING("literal string") arranges to emit the literal string as
-   a linker warning on most glibc systems.
-   We use a linker warning rather than a preprocessor warning, because
-   #warning cannot be used inside macros.  */
-#ifndef GL_LINK_WARNING
-  /* This works on platforms with GNU ld and ELF object format.
-     Testing __GLIBC__ is sufficient for asserting that GNU ld is in use.
-     Testing __ELF__ guarantees the ELF object format.
-     Testing __GNUC__ is necessary for the compound expression syntax.  */
-# if defined __GLIBC__ && defined __ELF__ && defined __GNUC__
-#  define GL_LINK_WARNING(message) \
-     GL_LINK_WARNING1 (__FILE__, __LINE__, message)
-#  define GL_LINK_WARNING1(file, line, message) \
-     GL_LINK_WARNING2 (file, line, message)  /* macroexpand file and line */
-#  define GL_LINK_WARNING2(file, line, message) \
-     GL_LINK_WARNING3 (file ":" #line ": warning: " message)
-#  define GL_LINK_WARNING3(message) \
-     ({ static const char warning[sizeof (message)]		\
-          __attribute__ ((__unused__,				\
-                          __section__ (".gnu.warning"),		\
-                          __aligned__ (1)))			\
-          = message "\n";					\
-        (void)0;						\
-     })
-# else
-#  define GL_LINK_WARNING(message) ((void) 0)
-# endif
-#endif
+/* The definition of GL_LINK_WARNING is copied here.  */
 
 
 #ifdef __cplusplus
new file mode 100644
--- /dev/null
+++ b/modules/link-warning
@@ -0,0 +1,21 @@
+Description:
+A C macro for emitting link time warnings.
+
+Files:
+build-aux/link-warning.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+LINK_WARNING_H=$(top_srcdir)/build-aux/link-warning.h
+
+Include:
+
+License:
+LGPL
+
+Maintainer:
+Bruno Haible
+
--- a/modules/string
+++ b/modules/string
@@ -8,6 +8,7 @@
 Depends-on:
 absolute-header
 extensions
+link-warning
 
 configure.ac:
 gl_HEADER_STRING_H
@@ -63,6 +64,7 @@
 	      -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \
 	      -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \
 	      -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \
+	      -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
 	      < $(srcdir)/string_.h; \
 	} > $@-t
 	mv $@-t $@