aboutsummaryrefslogtreecommitdiffstats
path: root/bs/mkconfig-header.sh
diff options
context:
space:
mode:
Diffstat (limited to 'bs/mkconfig-header.sh')
-rwxr-xr-xbs/mkconfig-header.sh88
1 files changed, 88 insertions, 0 deletions
diff --git a/bs/mkconfig-header.sh b/bs/mkconfig-header.sh
new file mode 100755
index 000000000..ff0809ffb
--- /dev/null
+++ b/bs/mkconfig-header.sh
@@ -0,0 +1,88 @@
+#!/bin/sh
+# detect the uninteresting (unlikely to be manually changed by the user)
+# parts of config.h
+
+if test -z "$O" || ! cd "$O"; then
+ echo '$O= not defined or not a directory' >&2
+ exit 1
+fi
+
+> config_detected.mk
+
+ansi_headers='assert ctype errno limits locale math signal
+stdarg stddef stdint stdio stdlib string'
+common_headers='dlfcn inttypes memory strings sched
+sys/inttypes sys/stat sys/types unistd'
+
+all_ansi=t
+echo '/* ANSI C headers: */'
+for h in $ansi_headers; do
+ if test x$h = xlocale; then
+ H=HAVE_LOCALE
+ else
+ H="HAVE_`echo $h | tr a-z A-Z | tr / _`_H"
+ fi
+ cat > t.c <<EOF
+#include <$h.h>
+int main(void) { return 0; }
+EOF
+ if $CC -o t.o $CFLAGS $CPPFLAGS t.c >> out 2>&1; then
+ echo "#define $H 1"
+ echo "$H := 1" >> config_detected.mk
+ else
+ echo "/* #undef $H */"
+ echo "# $H := " >> config_detected.mk
+ all_ansi=
+ fi
+done
+if test x$all_ansi = xt; then
+ echo '#define STDC_HEADERS 1'
+else
+ echo '/* #undef STDC_HEADERS */'
+fi
+echo ''
+echo '/* common system headers/features on UNIX and UNIX-like system: */'
+for h in $common_headers; do
+ H="HAVE_`echo $h | tr a-z A-Z | tr / _`_H"
+ cat > t.c <<EOF
+#include <$h.h>
+int main(void) { return 0; }
+EOF
+ if $CC -o t.o $CFLAGS $CPPFLAGS t.c >> out 2>&1; then
+ echo "#define $H 1"
+ echo "$H := 1" >> config_detected.mk
+ else
+ echo "/* #undef $H */"
+ echo "# $H :=" >> config_detected.mk
+ fi
+done
+
+# test for setenv
+cat > t.c <<EOF
+#include <stdlib.h>
+int main(void) { setenv("mpd","rocks", 1); return 0; }
+EOF
+if $CC -o t.o $CFLAGS $CPPFLAGS t.c >> out 2>&1; then
+ echo '#define HAVE_SETENV 1'
+ echo "HAVE_SETENV := 1" >> config_detected.mk
+else
+ echo '/* #undef HAVE_SETENV */'
+ echo "# HAVE_SETENV :=" >> config_detected.mk
+fi
+echo ''
+
+# test for alloca
+cat > t.c <<EOF
+#include <alloca.h>
+int main(void) { char *x = (char *)alloca(2 * sizeof(int)); return 0; }
+EOF
+if $CC -o t.o $CFLAGS $CPPFLAGS t.c >> out 2>&1; then
+ echo '#define HAVE_ALLOCA_H 1'
+ echo "HAVE_ALLOCA_H := 1" >> config_detected.mk
+else
+ echo '/* #undef HAVE_ALLOCA_H */'
+ echo "# HAVE_ALLOCA_H :=" >> config_detected.mk
+fi
+echo ''
+
+exec rm -f out t.c t.o