# HG changeset patch # User Bruno Haible # Date 1171764146 0 # Node ID 633acfbd4fa86ac859d4b0d0bdda4f0946bc9e9f # Parent 841795ba6446e041fd2f65f99a07572695e6297d Use GL_LINK_WARNING in the generated inttypes.h. diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,21 @@ +2007-02-17 Bruno Haible + + * lib/inttypes_.h: Add definition for GL_LINK_WARNING. + (imaxabs, imaxdiv, strtoimax, strtoumax): Don't declare the function + if the corresponding module is not enabled. Emit link warnings if + the function is used nevertheless. + * m4/inttypes_h.m4 (gl_INTTYPES_H): Never use the existing . + Don't AC_SUBST HAVE_DECL_IMAXABS, HAVE_DECL_IMAXDIV, + HAVE_DECL_STRTOIMAX, HAVE_DECL_STRTOUMAX. + (gl_INTTYPES_MODULE_INDICATOR, gl_INTTYPES_H_DEFAULTS): New macros. + * modules/inttypes (Depends-on): Add link-warning. + (Makefile.am): Copy the contents of build-aux/link-warning.h into + inttypes.h. + * modules/imaxabs (configure.ac): Invoke gl_INTTYPES_MODULE_INDICATOR. + * modules/imaxdiv (configure.ac): Likewise. + * modules/strtoimax (configure.ac): Likewise. + * modules/strtoumax (configure.ac): Likewise. + 2007-02-17 Bruno Haible * m4/string_h.m4 (gl_HEADER_STRING_H_DEFAULTS): Include the contents of diff --git a/lib/inttypes_.h b/lib/inttypes_.h --- a/lib/inttypes_.h +++ b/lib/inttypes_.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2006 Free Software Foundation, Inc. +/* Copyright (C) 2006-2007 Free Software Foundation, Inc. Written by Paul Eggert, Bruno Haible, Derek Price. This file is part of gnulib. @@ -42,6 +42,8 @@ # error "This file assumes that 'int' has exactly 32 bits. Please report your platform and compiler to ." #endif +/* The definition of GL_LINK_WARNING is copied here. */ + /* 7.8.1 Macros for format specifiers */ #if ! defined __cplusplus || defined __STDC_FORMAT_MACROS @@ -1034,20 +1036,53 @@ extern "C" { #endif -#if !@HAVE_DECL_IMAXABS@ +#if @GNULIB_IMAXABS@ +# if !@HAVE_DECL_IMAXABS@ extern intmax_t imaxabs (intmax_t); +# endif +#elif defined GNULIB_POSIXCHECK +# undef imaxabs +# define imaxabs(a) \ + (GL_LINK_WARNING ("imaxabs is unportable - "\ + "use gnulib module imaxabs for portability"), \ + imaxabs (a)) #endif -#if !@HAVE_DECL_IMAXDIV@ +#if @GNULIB_IMAXDIV@ +# if !@HAVE_DECL_IMAXDIV@ typedef struct { intmax_t quot; intmax_t rem; } imaxdiv_t; extern imaxdiv_t imaxdiv (intmax_t, intmax_t); +# endif +#elif defined GNULIB_POSIXCHECK +# undef imaxdiv +# define imaxdiv(a,b) \ + (GL_LINK_WARNING ("imaxdiv is unportable - "\ + "use gnulib module imaxdiv for portability"), \ + imaxdiv (a, b)) #endif -#if !@HAVE_DECL_STRTOIMAX@ +#if @GNULIB_STRTOIMAX@ +# if !@HAVE_DECL_STRTOIMAX@ extern intmax_t strtoimax (const char *, char **, int); +# endif +#elif defined GNULIB_POSIXCHECK +# undef strtoimax +# define strtoimax(p,e,b) \ + (GL_LINK_WARNING ("strtoimax is unportable - "\ + "use gnulib module strtoimax for portability"), \ + strtoimax (p, e, b)) #endif -#if !@HAVE_DECL_STRTOUMAX@ + +#if @GNULIB_STRTOUMAX@ +# if !@HAVE_DECL_STRTOUMAX@ extern uintmax_t strtoumax (const char *, char **, int); +# endif +#elif defined GNULIB_POSIXCHECK +# undef strtoumax +# define strtoumax(p,e,b) \ + (GL_LINK_WARNING ("strtoumax is unportable - "\ + "use gnulib module strtoumax for portability"), \ + strtoumax (p, e, b)) #endif /* Don't bother defining or declaring wcstoimax and wcstoumax, since diff --git a/modules/imaxabs b/modules/imaxabs --- a/modules/imaxabs +++ b/modules/imaxabs @@ -10,6 +10,7 @@ configure.ac: gl_FUNC_IMAXABS +gl_INTTYPES_MODULE_INDICATOR([imaxabs]) Makefile.am: diff --git a/modules/imaxdiv b/modules/imaxdiv --- a/modules/imaxdiv +++ b/modules/imaxdiv @@ -10,6 +10,7 @@ configure.ac: gl_FUNC_IMAXDIV +gl_INTTYPES_MODULE_INDICATOR([imaxdiv]) Makefile.am: diff --git a/modules/inttypes b/modules/inttypes --- a/modules/inttypes +++ b/modules/inttypes @@ -8,6 +8,7 @@ Depends-on: absolute-header +link-warning stdint configure.ac: @@ -31,6 +32,7 @@ -e 's/@''HAVE_DECL_IMAXDIV''@/$(HAVE_DECL_IMAXDIV)/g' \ -e 's/@''HAVE_DECL_STRTOIMAX''@/$(HAVE_DECL_STRTOIMAX)/g' \ -e 's/@''HAVE_DECL_STRTOUMAX''@/$(HAVE_DECL_STRTOUMAX)/g' \ + -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \ < $(srcdir)/inttypes_.h; \ } > $@-t mv $@-t $@ diff --git a/modules/strtoimax b/modules/strtoimax --- a/modules/strtoimax +++ b/modules/strtoimax @@ -14,6 +14,7 @@ configure.ac: gl_FUNC_STRTOIMAX +gl_INTTYPES_MODULE_INDICATOR([strtoimax]) Makefile.am: diff --git a/modules/strtoumax b/modules/strtoumax --- a/modules/strtoumax +++ b/modules/strtoumax @@ -14,6 +14,7 @@ configure.ac: gl_FUNC_STRTOUMAX +gl_INTTYPES_MODULE_INDICATOR([strtoumax]) Makefile.am: