| #!/bin/bash |
| |
| # This sets environment variables used by scripts/make.sh |
| |
| # People run ./configure out of habit, so do "defconfig" for them. |
| |
| if [ "$(basename "$0")" == configure ] |
| then |
| echo "Assuming you want 'make defconfig', but you should probably check the README." |
| make defconfig |
| exit $? |
| fi |
| |
| # CFLAGS and OPTIMIZE are different so you can add extra CFLAGS without |
| # disabling default optimizations |
| [ -z "$CFLAGS" ] && CFLAGS="-Wall -Wundef -Wno-char-subscripts -Werror=implicit-function-declaration" |
| # 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 -fno-strict-aliasing" |
| # set ASAN=1 to enable "address sanitizer" and debuggable backtraces |
| [ -z "$ASAN" ] || { CFLAGS="$CFLAGS -O1 -g -fno-omit-frame-pointer -fno-optimize-sibling-calls -fsanitize=address"; NOSTRIP=1; } |
| |
| # We accept LDFLAGS, but by default don't have anything in it |
| if [ "$(uname)" != "Darwin" ] |
| then |
| [ -z "$LDOPTIMIZE" ] && LDOPTIMIZE="-Wl,--gc-sections" |
| LDASNEEDED="-Wl,--as-needed" |
| fi |
| |
| # The makefile provides defaults for these, so this only gets used if |
| # you call scripts/make.sh and friends directly. |
| |
| [ -z "$CC" ] && CC=cc |
| [ -z "$STRIP" ] && STRIP=strip |
| |
| # If HOSTCC needs CFLAGS or LDFLAGS, just add them to the variable |
| # ala HOSTCC="blah-cc --static" |
| [ -z "$HOSTCC" ] && HOSTCC=cc |
| |
| [ -z "$GENERATED" ] && GENERATED=generated |