about summary refs log tree commit diff
path: root/REORG.TODO/scripts/check-local-headers.sh
diff options
context:
space:
mode:
Diffstat (limited to 'REORG.TODO/scripts/check-local-headers.sh')
-rwxr-xr-xREORG.TODO/scripts/check-local-headers.sh47
1 files changed, 47 insertions, 0 deletions
diff --git a/REORG.TODO/scripts/check-local-headers.sh b/REORG.TODO/scripts/check-local-headers.sh
new file mode 100755
index 0000000000..7859f613b2
--- /dev/null
+++ b/REORG.TODO/scripts/check-local-headers.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+# Copyright (C) 2005-2017 Free Software Foundation, Inc.
+# This file is part of the GNU C Library.
+
+# The GNU C Library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, see
+# <http://www.gnu.org/licenses/>.
+#
+includedir="$1"
+objpfx="$2"
+
+# To avoid long paths.
+cd "$objpfx"
+
+# OK if *.os is missing.
+shopt -s nullglob
+
+# Search all dependency files for file names in the include directory.
+# There are a few system headers we are known to use.
+# These include Linux kernel headers (asm*, arch, and linux),
+# and Mach kernel headers (mach).
+exec ${AWK} -v includedir="$includedir" '
+BEGIN {
+  status = 0
+  exclude = "^" includedir \
+    "/(.*-.*-.*/|.*-.*/|)(asm[-/]|arch|linux/|selinux/|mach/|mach_debug/|device/|hurd/(((hurd|ioctl)_types|paths)\\.h|ioctls\\.defs|ihash\\.h)|cthreads\\.h|gd|nss3/|c\\+\\+/|sys/(capability|sdt(|-config))\\.h|libaudit\\.h)"
+}
+/^[^ ]/ && $1 ~ /.*:/ { obj = $1 }
+{
+  for (i = 1; i <= NF; ++i) {
+    if ($i ~ ("^" includedir) && $i !~ exclude) {
+      print "***", obj, "uses", $i
+      status = 1
+    }
+  }
+}
+END { exit status }' */*.{o,os,oS}.d