1*cf5a6c84SAndroid Build Coastguard Worker# sourced to find alternate names for things 2*cf5a6c84SAndroid Build Coastguard Worker 3*cf5a6c84SAndroid Build Coastguard Workersource ./configure 4*cf5a6c84SAndroid Build Coastguard Worker 5*cf5a6c84SAndroid Build Coastguard Workerif [ -z "$(command -v "$CROSS_COMPILE$CC")" ] 6*cf5a6c84SAndroid Build Coastguard Workerthen 7*cf5a6c84SAndroid Build Coastguard Worker echo "No $CROSS_COMPILE$CC found" >&2 8*cf5a6c84SAndroid Build Coastguard Worker exit 1 9*cf5a6c84SAndroid Build Coastguard Workerfi 10*cf5a6c84SAndroid Build Coastguard Worker 11*cf5a6c84SAndroid Build Coastguard Workerif [ -z "$SED" ] 12*cf5a6c84SAndroid Build Coastguard Workerthen 13*cf5a6c84SAndroid Build Coastguard Worker [ ! -z "$(command -v gsed 2>/dev/null)" ] && SED=gsed || SED=sed 14*cf5a6c84SAndroid Build Coastguard Workerfi 15*cf5a6c84SAndroid Build Coastguard Worker 16*cf5a6c84SAndroid Build Coastguard Worker# Tell linker to do dead code elimination at function level 17*cf5a6c84SAndroid Build Coastguard Workerif [ "$(uname)" == "Darwin" ] 18*cf5a6c84SAndroid Build Coastguard Workerthen 19*cf5a6c84SAndroid Build Coastguard Worker CFLAGS+=" -Wno-deprecated-declarations" 20*cf5a6c84SAndroid Build Coastguard Worker : ${LDOPTIMIZE:=-Wl,-dead_strip} ${STRIP:=strip} 21*cf5a6c84SAndroid Build Coastguard Workerelse 22*cf5a6c84SAndroid Build Coastguard Worker : ${LDOPTIMIZE:=-Wl,--gc-sections -Wl,--as-needed} ${STRIP:=strip -s -R .note* -R .comment} 23*cf5a6c84SAndroid Build Coastguard Workerfi 24*cf5a6c84SAndroid Build Coastguard Worker 25*cf5a6c84SAndroid Build Coastguard Worker# Disable pointless warnings only clang produces 26*cf5a6c84SAndroid Build Coastguard Worker[ -n "$("$CROSS_COMPILE$CC" --version | grep -w clang)" ] && 27*cf5a6c84SAndroid Build Coastguard Worker CFLAGS+=" -Wno-string-plus-int -Wno-invalid-source-encoding" || 28*cf5a6c84SAndroid Build Coastguard Worker# And ones only gcc produces 29*cf5a6c84SAndroid Build Coastguard Worker CFLAGS+=" -Wno-restrict -Wno-format-overflow" 30*cf5a6c84SAndroid Build Coastguard Worker 31*cf5a6c84SAndroid Build Coastguard Worker# Address Sanitizer 32*cf5a6c84SAndroid Build Coastguard Workerif [ -n "$ASAN" ]; then 33*cf5a6c84SAndroid Build Coastguard Worker # Turn ASan on and disable most optimization to get more readable backtraces. 34*cf5a6c84SAndroid Build Coastguard Worker # (Technically ASAN is just "-fsanitize=address" and the rest is optional.) 35*cf5a6c84SAndroid Build Coastguard Worker export CFLAGS="$CFLAGS -fsanitize=address -O1 -g -fno-omit-frame-pointer -fno-optimize-sibling-calls -static-libasan" 36*cf5a6c84SAndroid Build Coastguard Worker export NOSTRIP=1 37*cf5a6c84SAndroid Build Coastguard Worker # Ignore leaks on exit. TODO 38*cf5a6c84SAndroid Build Coastguard Worker export ASAN_OPTIONS="detect_leaks=0" 39*cf5a6c84SAndroid Build Coastguard Worker # only do this once 40*cf5a6c84SAndroid Build Coastguard Worker unset ASAN 41*cf5a6c84SAndroid Build Coastguard Workerfi 42*cf5a6c84SAndroid Build Coastguard Worker 43*cf5a6c84SAndroid Build Coastguard Worker# Probe number of available processors, and add one. 44*cf5a6c84SAndroid Build Coastguard Worker: ${CPUS:=$(($(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null)+1))} 45*cf5a6c84SAndroid Build Coastguard Worker 46*cf5a6c84SAndroid Build Coastguard Worker# If the build is using gnu tools, make them behave less randomly. 47*cf5a6c84SAndroid Build Coastguard Workerexport LANG=c 48*cf5a6c84SAndroid Build Coastguard Workerexport LC_ALL=C 49