aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure2
-rwxr-xr-xscripts/genconfig.sh15
-rwxr-xr-xscripts/make.sh1
3 files changed, 15 insertions, 3 deletions
diff --git a/configure b/configure
index 5831e1ab..21d56f38 100644
--- a/configure
+++ b/configure
@@ -7,7 +7,7 @@
# CFLAGS and OPTIMIZE are different so you can add extra CFLAGS without
# disabling default optimizations
-[ -z "$CFLAGS" ] && CFLAGS="-Wall -Wundef -Wno-char-subscripts -Wno-string-plus-int"
+[ -z "$CFLAGS" ] && CFLAGS="-Wall -Wundef -Wno-char-subscripts"
# Required for our expected ABI. we're 8-bit clean thus "char" must be unsigned.
CFLAGS="$CFLAGS -funsigned-char"
[ -z "$OPTIMIZE" ] && OPTIMIZE="-Os -ffunction-sections -fdata-sections -fno-asynchronous-unwind-tables"
diff --git a/scripts/genconfig.sh b/scripts/genconfig.sh
index b8dc3c79..313c7c70 100755
--- a/scripts/genconfig.sh
+++ b/scripts/genconfig.sh
@@ -7,12 +7,16 @@ mkdir -p generated
source configure
+probecc()
+{
+ ${CROSS_COMPILE}${CC} $CFLAGS -xc -o /dev/null $1 -
+}
+
# Probe for a single config symbol with a "compiles or not" test.
# Symbol name is first argument, flags second, feed C file to stdin
probesymbol()
{
- ${CROSS_COMPILE}${CC} $CFLAGS -xc -o /dev/null $2 - 2>/dev/null
- [ $? -eq 0 ] && DEFAULT=y || DEFAULT=n
+ probecc $2 2>/dev/null && DEFAULT=y || DEFAULT=n
rm a.out 2>/dev/null
echo -e "config $1\n\tbool" || exit 1
echo -e "\tdefault $DEFAULT\n" || exit 1
@@ -20,6 +24,13 @@ probesymbol()
probeconfig()
{
+ > generated/cflags
+ # llvm produces its own really stupid warnings about things that aren't wrong,
+ # and although you can turn the warning off, gcc reacts badly to command line
+ # arguments it doesn't understand. So probe.
+ [ -z "$(probecc -Wno-string-plus-int <<< \#warn warn 2>&1 | grep string-plus-int)" ] &&
+ echo -Wno-string-plus-int >> generated/cflags
+
# Probe for container support on target
probesymbol TOYBOX_CONTAINER << EOF
#include <linux/sched.h>
diff --git a/scripts/make.sh b/scripts/make.sh
index 56fcc7e7..7ebe148d 100755
--- a/scripts/make.sh
+++ b/scripts/make.sh
@@ -62,6 +62,7 @@ GITHASH="$(git describe --tags --abbrev=12 2>/dev/null)"
[ ! -z "$GITHASH" ] && GITHASH="-DTOYBOX_VERSION=\"$GITHASH\""
TOYFILES="$(sed -n 's/^CONFIG_\([^=]*\)=.*/\1/p' "$KCONFIG_CONFIG" | xargs | tr ' [A-Z]' '|[a-z]')"
TOYFILES="$(egrep -l "TOY[(]($TOYFILES)[ ,]" toys/*/*.c)"
+CFLAGS="$CFLAGS $(cat generated/cflags)"
BUILD="$(echo ${CROSS_COMPILE}${CC} $CFLAGS -I . $OPTIMIZE $GITHASH)"
FILES="$(echo lib/*.c main.c $TOYFILES)"