summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xmkh.sh24
1 files changed, 24 insertions, 0 deletions
diff --git a/mkh.sh b/mkh.sh
index b8ccf25e..c4c4d6d4 100755
--- a/mkh.sh
+++ b/mkh.sh
@@ -41,6 +41,18 @@ for i in $(cat "${TOPDIR}/.deps/h/${HEADERNAME}.deps" | sort -u); do
printf '%s <%s> (%s)\n' "$i" "$HEADER" "$version" >&2
done
+###
+### TODO: prevent _XOPEN_SOURCE expanding to empty string
+###
+if grep -Fq -e '_XOPEN_SOURCE <' -e '< _XOPEN_SOURCE' $(cat $(HEADER.*/*); then
+cat <<-EOF
+ #if defined _XOPEN_SOURCE && _XOPEN_SOURCE - 1 < 0
+ # undef _XOPEN_SOURCE
+ # define _XOPEN_SOURCE 400
+ #endif
+EOF
+fi
+
if grep -Fq 'POSIX(' $(cat $HEADER.*/*); then
cat <<-EOF
#if defined _XOPEN_SOURCE && !defined _POSIX_C_SOURCE
@@ -62,6 +74,18 @@ cat <<-EOF
EOF
fi
+if grep -Fq -e 'POSIX(' -e 'XOPEN(' $(cat $HEADER.*/*); then
+cat <<-EOF
+ #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 19901L
+ # if (defined _POSIX_C_SOURCE && _POSIX_C_SOURCE >= 200112L)
+ # error POSIX.1-2001 and later require a C99 compiler
+ # elif(defined _XOPEN_SOURCE && _XOPEN_SOURCE >= 600)
+ # error XOPEN Issue 6 and later require a C99 compiler
+ # endif
+ #endif
+EOF
+fi
+
for type in REFERENCE MACRO TYPE TYPE_LONG RECORD FNTYPE EXTERN; do
if [ -d $HEADER.$type ]; then
for v in $HEADER.$type/*; do