]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
(sc_src_functions_have_static_scope): New rule.
authorJim Meyering <jim@meyering.net>
Tue, 27 Apr 2004 14:57:33 +0000 (14:57 +0000)
committerJim Meyering <jim@meyering.net>
Tue, 27 Apr 2004 14:57:33 +0000 (14:57 +0000)
src/Makefile.am

index 61e05b51b825ca501ca55fcc746324608ba0530f..8356f1430f2f3c19a0130ec720fc886884db4adb 100644 (file)
@@ -270,3 +270,22 @@ s2 = '/^\#define AUTHORS \\\\/{;n;$(sed_filter);p;q;}'
          done | $(ASSORT) -u ) > $@-t
        chmod a-w $@-t
        mv $@-t $@
+
+# The following rule is not designed to be portable,
+# and relies on tools that not everyone has.
+
+# Most functions in src/*.c should have static scope.
+# Any that don't must be marked with `extern', but `main'
+# and `usage' are exceptions.  They're always extern, but
+# don't need to be marked.
+sc_src_functions_have_static_scope: $(all_programs)
+       @t=exceptions-$$$$;                                             \
+       trap "s=$$?; rm -f $$t; exit $$s" 0 1 2 13 15;                  \
+       ( printf '^main$$\n^usage$$\n';                                 \
+         grep -h -A1 '^extern .*[^;]$$' $(SOURCES)                     \
+           | grep -vE '^(extern |--)' |sed 's/^/^/;s/ .*/$$/' ) > $$t; \
+       nm -e *.$(OBJEXT)                                               \
+           | sed -n 's/.* T //p'                                       \
+           | grep -Ev -f $$t &&                                        \
+         { echo 'the above functions should have static scope' 1>&2;   \
+           exit 1; } || :