maint.mk: extend proper_name_utf8-vs-LIBICONV-checking rule
authorJim Meyering <meyering@redhat.com>
Sat, 9 Jan 2010 10:41:00 +0000 (11:41 +0100)
committerJim Meyering <meyering@redhat.com>
Sat, 9 Jan 2010 10:41:00 +0000 (11:41 +0100)
* top/maint.mk (sc_proper_name_utf8_requires_ICONV): Adapt to work
also when $(LIBICONV) is part of LDADD, rather than ${prog}_LDADD.

ChangeLog
top/maint.mk

index 4d4137e..9bacb89 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2010-01-09  Jim Meyering  <meyering@redhat.com>
+
+       maint.mk: extend proper_name_utf8-vs-LIBICONV-checking rule
+       * top/maint.mk (sc_proper_name_utf8_requires_ICONV): Adapt to work
+       also when $(LIBICONV) is part of LDADD, rather than ${prog}_LDADD.
+
 2010-01-08  Simon Josefsson  <simon@josefsson.org>
 
        * lib/dup2.c (rpl_dup2): Improve comment.
index 3cd1a93..3651543 100644 (file)
@@ -524,14 +524,20 @@ sc_prohibit_S_IS_definition:
        msg='do not define S_IS* macros; include <sys/stat.h>'          \
          $(_prohibit_regexp)
 
-# Each program that uses proper_name_utf8 must link with
-# one of the ICONV libraries.
+# Each program that uses proper_name_utf8 must link with one of the
+# ICONV libraries.  Otherwise, some ICONV library must appear in LDADD.
+# The perl -0777 invocation below extracts the possibly-multi-line
+# definition of LDADD from the appropriate Makefile.am and exits 0
+# when it contains "ICONV".
 sc_proper_name_utf8_requires_ICONV:
        @progs=$$(grep -l 'proper_name_utf8 ''("' $$($(VC_LIST_EXCEPT)));\
        if test "x$$progs" != x; then                                   \
          fail=0;                                                       \
          for p in $$progs; do                                          \
            dir=$$(dirname "$$p");                                      \
+           perl -0777                                                  \
+             -ne 'exit !(/^LDADD =(.+?[^\\]\n)/ms && $$1 =~ /ICONV/)'  \
+             $$dir/Makefile.am && continue;                            \
            base=$$(basename "$$p" .c);                                 \
            grep "$${base}_LDADD.*ICONV)" $$dir/Makefile.am > /dev/null \
              || { fail=1; echo 1>&2 "$(ME): $$p uses proper_name_utf8"; }; \