summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Kaivo <jkk@ung.org>2019-02-09 09:12:59 -0500
committerJakob Kaivo <jkk@ung.org>2019-02-09 09:12:59 -0500
commit20aa5d18ea72b2954f96bcb3476fe6445c6a9942 (patch)
treec33e1e03244d6ec14a0c6eb18e807218a2e0c962
parent43485a56ebe27a8b2e2a61cf8e3e30d434ad1da2 (diff)
fix include guards and versioning against multiple standards
-rwxr-xr-xmkh.sh14
1 files changed, 9 insertions, 5 deletions
diff --git a/mkh.sh b/mkh.sh
index 272a6de2..b62266af 100755
--- a/mkh.sh
+++ b/mkh.sh
@@ -1,13 +1,17 @@
#!/bin/sh
-. $(dirname $0)/mk.sh
+TOPDIR=$(dirname $0)
+if [ -z "${INCDIR}" ]; then
+ INCDIR="${TOPDIR}/include"
+fi
+. "${TOPDIR}/mk.sh"
export LC_ALL=POSIX
export LANG=POSIX
HEADER=$1
-GUARD=__$(echo $HEADER | tr a-z/. A-Z__)__
+HEADERNAME=$(echo $HEADER | sed -e "s#^${INCDIR}/*##")
+GUARD=__$(echo $HEADERNAME | tr a-z/. A-Z__)__
mkdir -p $(dirname $HEADER)
-shift
exec > $HEADER
if [ $(basename $HEADER) != assert.h ]; then
@@ -36,10 +40,10 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
EOF
rm -rf $HEADER.*
-for i in $(echo $@ | sort -u); do
+for i in $(grep -l "#include <$HEADERNAME>" $(cat "${TOPDIR}/.deps/all.c" "${TOPDIR}/.deps/all.ref") | sort -u); do
# TODO: refs
type=$(classify_source $i)
- version=v$(grep -F -e 'STDC(' -e 'POSIX(' -e 'XOPEN(' $i | sed -e 's/STDC/C/' | sort | tr , - | tr -d '() ')
+ version=v$(grep -F -e 'STDC(' -e 'POSIX(' -e 'XOPEN(' $i | sed -e 's/STDC/C/' | sort | tr , - | tr -d '() \n')
mkdir -p $HEADER.$type
echo $i >> $HEADER.$type/$version
printf '%s <%s> (%s)\n' "$i" "$HEADER" "$version" >&2