summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xmkh.sh66
1 files changed, 35 insertions, 31 deletions
diff --git a/mkh.sh b/mkh.sh
index 88d1db27..f08310af 100755
--- a/mkh.sh
+++ b/mkh.sh
@@ -1,6 +1,6 @@
#!/bin/sh
-. ./mk.sh
+. $(dirname $0)/mk.sh
export LC_ALL=POSIX
export LANG=POSIX
@@ -38,12 +38,15 @@ EOF
rm -f $HEADER.*
for i in $@; do
# TODO: refs
- echo $i >> $HEADER.$(classify_source $i)
+ type=$(classify_source $i)
+ version=1
+ mkdir -p $HEADER.$type
+ echo $i >> $HEADER.$type/$version
done
#if [ POSIX ]; then
cat <<-EOF > /dev/null
- #if (!defined _POSIX_C_SOURCE) && (defined _XOPEN_SOURCE)
+ #if defined _XOPEN_SOURCE && !defined _POSIX_C_SOURCE
# if (_XOPEN_SOURCE >= 700)
# define _POSIX_C_SOURCE 200809L
# elif (_XOPEN_SOURCE >= 600)
@@ -55,22 +58,23 @@ cat <<-EOF > /dev/null
# endif
#endif
- #ifdef _POSIX_C_SOURCE
+ #if defined _POSIX_C_SOURCE && !defined _POSIX_SOURCE
# define _POSIX_SOURCE
#endif
EOF
#fi
-if [ -f $HEADER.MACRO ]; then
+if [ -d $HEADER.MACRO ]; then
# FIXME: line continuation
- for i in $(sort $HEADER.MACRO); do
+ for i in $(sort $HEADER.MACRO/*); do
grep -E '^#(if|def|undef|el|end)' $i
done
printf '\n'
+ # not deleted so externs can be placed later
fi
-if [ -f $HEADER.TYPE ]; then
- for i in $(sort $HEADER.TYPE); do
+if [ -d $HEADER.TYPE ]; then
+ for i in $(sort $HEADER.TYPE/*); do
if grep -q '^#ifdef' $i; then
sed -ne '/#ifdef/,/#endif/p' $i
elif grep -q '^typedef.*;$' $i; then
@@ -80,11 +84,11 @@ if [ -f $HEADER.TYPE ]; then
fi
done
printf '\n'
- rm $HEADER.TYPE
+ #rm -rf $HEADER.TYPE
fi
-if [ -f $HEADER.TYPE_LONG ]; then
- for i in $(sort $HEADER.TYPE_LONG); do
+if [ -d $HEADER.TYPE_LONG ]; then
+ for i in $(sort $HEADER.TYPE_LONG/*); do
if grep -q '^#ifdef' $i; then
sed -ne '/#ifdef/,/#endif/p' $i
elif grep -q '^typedef.*;$' $i; then
@@ -94,12 +98,12 @@ if [ -f $HEADER.TYPE_LONG ]; then
fi
done
printf '\n'
- rm $HEADER.TYPE_LONG
+ #rm -rf $HEADER.TYPE_LONG
fi
-if [ -f $HEADER.STRUCT -o -f $HEADER.UNION ]; then
- touch $HEADER.STRUCT $HEADER.UNION
- for i in $(sort $HEADER.STRUCT $HEADER.UNION 2>/dev/null); do
+if [ -d $HEADER.STRUCT -o -d $HEADER.UNION ]; then
+ mkdir -p $HEADER.STRUCT $HEADER.UNION
+ for i in $(sort $HEADER.STRUCT/* $HEADER.UNION/* 2>/dev/null); do
if grep -q '^struct' $i; then
sed -ne '/^struct/,/\};/p' $i
else
@@ -107,54 +111,54 @@ if [ -f $HEADER.STRUCT -o -f $HEADER.UNION ]; then
fi
done
printf '\n'
- rm -f $HEADER.STRUCT $HEADER.UNION
+ #rm -rf $HEADER.STRUCT $HEADER.UNION
fi
-if [ -f $HEADER.EXTERN ]; then
- for i in $(sort $HEADER.EXTERN); do
+if [ -d $HEADER.EXTERN ]; then
+ for i in $(sort $HEADER.EXTERN/*); do
printf 'extern %s' "$(grep '^[a-zA-Z_].*;$' $i)"
done
printf '\n'
- rm -f $HEADER.EXTERN
+ #rm -rf $HEADER.EXTERN
fi
-if [ -f $HEADER.TGFN ]; then
- for i in $(sort $HEADER.TGFN); do
+if [ -d $HEADER.TGFN ]; then
+ for i in $(sort $HEADER.TGFN/*); do
printf '%s;\n' "$(sed -e "/{/q" $i | tail -n2 | head -n1 | m4 '-DTGFN=$1' -DTYPE=double)"
done
printf '\n'
- rm -f $HEADER.TGFN
+ #rm -rf $HEADER.TGFN
fi
-if [ -f $HEADER.FUNCTION ]; then
- if grep -q restrict $(cat $HEADER.FUNCTION); then
+if [ -d $HEADER.FUNCTION ]; then
+ if grep -q restrict $(cat $HEADER.FUNCTION/*); then
printf '#if (!defined __STDC_VERSION__) || (__STDC_VERSION__ < 199909L)\n'
printf '#define restrict\n'
printf '#endif\n\n'
fi
- if grep -q _Noreturn $(cat $HEADER.FUNCTION); then
+ if grep -q _Noreturn $(cat $HEADER.FUNCTION/*); then
printf '#if (!defined __STDC_VERSION__) || (__STDC_VERSION__ < 200112L)\n'
printf '#define _Noreturn\n'
printf '#endif\n\n'
fi
- for i in $(sort $HEADER.FUNCTION); do
+ for i in $(sort $HEADER.FUNCTION/*); do
printf '%s;\n' "$(sed -e "/{/q" $i | tail -n2 | head -n1 | sed -e 's/\([a-zA-Z_][a-zA-Z_0-9]*\)\([,)]\)/__\1\2/g;s/(__\([a-zA-Z_][a-zA-Z_0-9]*\))/(\1)/g')"
done
printf '\n'
- rm -f $HEADER.FUNCTION
+ #rm -rf $HEADER.FUNCTION
fi
-if [ -f $HEADER.MACRO ]; then
- for i in $(sort $HEADER.MACRO); do
+if [ -d $HEADER.MACRO ]; then
+ for i in $(sort $HEADER.MACRO/*); do
grep ' *extern.*;$' $i
done
printf '\n'
- rm $HEADER.MACRO
+ #rm -rf $HEADER.MACRO
fi
-rm -f $HEADER.REFERENCE
+#rm -rf $HEADER.REFERENCE
if [ $(basename $HEADER) != assert.h ]; then
printf '\n#endif\n'