#!/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 # A synonym. [ -z "$CROSS_COMPILE" ] && CROSS_COMPILE="$CROSS" # 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