1*c9945492SAndroid Build Coastguard Worker#!/bin/sh 2*c9945492SAndroid Build Coastguard Worker 3*c9945492SAndroid Build Coastguard Workerusage () { 4*c9945492SAndroid Build Coastguard Workercat <<EOF 5*c9945492SAndroid Build Coastguard WorkerUsage: $0 [OPTION]... [VAR=VALUE]... [TARGET] 6*c9945492SAndroid Build Coastguard Worker 7*c9945492SAndroid Build Coastguard WorkerTo assign environment variables (e.g., CC, CFLAGS...), specify them as 8*c9945492SAndroid Build Coastguard WorkerVAR=VALUE. See below for descriptions of some of the useful variables. 9*c9945492SAndroid Build Coastguard Worker 10*c9945492SAndroid Build Coastguard WorkerDefaults for the options are specified in brackets. 11*c9945492SAndroid Build Coastguard Worker 12*c9945492SAndroid Build Coastguard WorkerConfiguration: 13*c9945492SAndroid Build Coastguard Worker --srcdir=DIR source directory [detected] 14*c9945492SAndroid Build Coastguard Worker 15*c9945492SAndroid Build Coastguard WorkerInstallation directories: 16*c9945492SAndroid Build Coastguard Worker --prefix=PREFIX main installation prefix [/usr/local/musl] 17*c9945492SAndroid Build Coastguard Worker --exec-prefix=EPREFIX installation prefix for executable files [PREFIX] 18*c9945492SAndroid Build Coastguard Worker 19*c9945492SAndroid Build Coastguard WorkerFine tuning of the installation directories: 20*c9945492SAndroid Build Coastguard Worker --bindir=DIR user executables [EPREFIX/bin] 21*c9945492SAndroid Build Coastguard Worker --libdir=DIR library files for the linker [PREFIX/lib] 22*c9945492SAndroid Build Coastguard Worker --includedir=DIR include files for the C compiler [PREFIX/include] 23*c9945492SAndroid Build Coastguard Worker --syslibdir=DIR location for the dynamic linker [/lib] 24*c9945492SAndroid Build Coastguard Worker 25*c9945492SAndroid Build Coastguard WorkerSystem types: 26*c9945492SAndroid Build Coastguard Worker --target=TARGET configure to run on target TARGET [detected] 27*c9945492SAndroid Build Coastguard Worker --host=HOST same as --target 28*c9945492SAndroid Build Coastguard Worker --build=BUILD build system type; used only to infer cross-compiling 29*c9945492SAndroid Build Coastguard Worker 30*c9945492SAndroid Build Coastguard WorkerOptional features: 31*c9945492SAndroid Build Coastguard Worker --enable-optimize=... optimize listed components for speed over size [auto] 32*c9945492SAndroid Build Coastguard Worker --enable-debug build with debugging information [disabled] 33*c9945492SAndroid Build Coastguard Worker --disable-warnings build with recommended warnings flags [enabled] 34*c9945492SAndroid Build Coastguard Worker --enable-wrapper=... build given musl toolchain wrapper [auto] 35*c9945492SAndroid Build Coastguard Worker --disable-shared inhibit building shared library [enabled] 36*c9945492SAndroid Build Coastguard Worker --disable-static inhibit building static library [enabled] 37*c9945492SAndroid Build Coastguard Worker 38*c9945492SAndroid Build Coastguard WorkerOptional packages: 39*c9945492SAndroid Build Coastguard Worker --with-malloc=... choose malloc implementation [mallocng] 40*c9945492SAndroid Build Coastguard Worker 41*c9945492SAndroid Build Coastguard WorkerSome influential environment variables: 42*c9945492SAndroid Build Coastguard Worker CC C compiler command [detected] 43*c9945492SAndroid Build Coastguard Worker CFLAGS C compiler flags [-Os -pipe ...] 44*c9945492SAndroid Build Coastguard Worker CROSS_COMPILE prefix for cross compiler and tools [none] 45*c9945492SAndroid Build Coastguard Worker LIBCC compiler runtime library [detected] 46*c9945492SAndroid Build Coastguard Worker 47*c9945492SAndroid Build Coastguard WorkerUse these variables to override the choices made by configure. 48*c9945492SAndroid Build Coastguard Worker 49*c9945492SAndroid Build Coastguard WorkerEOF 50*c9945492SAndroid Build Coastguard Workerexit 0 51*c9945492SAndroid Build Coastguard Worker} 52*c9945492SAndroid Build Coastguard Worker 53*c9945492SAndroid Build Coastguard Worker# Helper functions 54*c9945492SAndroid Build Coastguard Worker 55*c9945492SAndroid Build Coastguard Workerquote () { 56*c9945492SAndroid Build Coastguard Workertr '\n' ' ' <<EOF | grep '^[-[:alnum:]_=,./:]* $' >/dev/null 2>&1 && { echo "$1" ; return 0 ; } 57*c9945492SAndroid Build Coastguard Worker$1 58*c9945492SAndroid Build Coastguard WorkerEOF 59*c9945492SAndroid Build Coastguard Workerprintf %s\\n "$1" | sed -e "s/'/'\\\\''/g" -e "1s/^/'/" -e "\$s/\$/'/" -e "s#^'\([-[:alnum:]_,./:]*\)=\(.*\)\$#\1='\2#" 60*c9945492SAndroid Build Coastguard Worker} 61*c9945492SAndroid Build Coastguard Workerecho () { printf "%s\n" "$*" ; } 62*c9945492SAndroid Build Coastguard Workerfail () { echo "$*" ; exit 1 ; } 63*c9945492SAndroid Build Coastguard Workerfnmatch () { eval "case \"\$2\" in $1) return 0 ;; *) return 1 ;; esac" ; } 64*c9945492SAndroid Build Coastguard Workercmdexists () { type "$1" >/dev/null 2>&1 ; } 65*c9945492SAndroid Build Coastguard Workertrycc () { test -z "$CC" && cmdexists "$1" && CC=$1 ; } 66*c9945492SAndroid Build Coastguard Worker 67*c9945492SAndroid Build Coastguard Workerstripdir () { 68*c9945492SAndroid Build Coastguard Workerwhile eval "fnmatch '*/' \"\${$1}\"" ; do eval "$1=\${$1%/}" ; done 69*c9945492SAndroid Build Coastguard Worker} 70*c9945492SAndroid Build Coastguard Worker 71*c9945492SAndroid Build Coastguard Workertrycppif () { 72*c9945492SAndroid Build Coastguard Workerprintf "checking preprocessor condition %s... " "$1" 73*c9945492SAndroid Build Coastguard Workerecho "typedef int x;" > "$tmpc" 74*c9945492SAndroid Build Coastguard Workerecho "#if $1" >> "$tmpc" 75*c9945492SAndroid Build Coastguard Workerecho "#error yes" >> "$tmpc" 76*c9945492SAndroid Build Coastguard Workerecho "#endif" >> "$tmpc" 77*c9945492SAndroid Build Coastguard Workerif $CC $2 -c -o /dev/null "$tmpc" >/dev/null 2>&1 ; then 78*c9945492SAndroid Build Coastguard Workerprintf "false\n" 79*c9945492SAndroid Build Coastguard Workerreturn 1 80*c9945492SAndroid Build Coastguard Workerelse 81*c9945492SAndroid Build Coastguard Workerprintf "true\n" 82*c9945492SAndroid Build Coastguard Workerreturn 0 83*c9945492SAndroid Build Coastguard Workerfi 84*c9945492SAndroid Build Coastguard Worker} 85*c9945492SAndroid Build Coastguard Worker 86*c9945492SAndroid Build Coastguard Workertryflag () { 87*c9945492SAndroid Build Coastguard Workerprintf "checking whether compiler accepts %s... " "$2" 88*c9945492SAndroid Build Coastguard Workerecho "typedef int x;" > "$tmpc" 89*c9945492SAndroid Build Coastguard Workerif $CC $CFLAGS_TRY $2 -c -o /dev/null "$tmpc" >/dev/null 2>&1 ; then 90*c9945492SAndroid Build Coastguard Workerprintf "yes\n" 91*c9945492SAndroid Build Coastguard Workereval "$1=\"\${$1} \$2\"" 92*c9945492SAndroid Build Coastguard Workereval "$1=\${$1# }" 93*c9945492SAndroid Build Coastguard Workerreturn 0 94*c9945492SAndroid Build Coastguard Workerelse 95*c9945492SAndroid Build Coastguard Workerprintf "no\n" 96*c9945492SAndroid Build Coastguard Workerreturn 1 97*c9945492SAndroid Build Coastguard Workerfi 98*c9945492SAndroid Build Coastguard Worker} 99*c9945492SAndroid Build Coastguard Worker 100*c9945492SAndroid Build Coastguard Workertryldflag () { 101*c9945492SAndroid Build Coastguard Workerprintf "checking whether linker accepts %s... " "$2" 102*c9945492SAndroid Build Coastguard Workerecho "typedef int x;" > "$tmpc" 103*c9945492SAndroid Build Coastguard Workerif $CC $LDFLAGS_TRY -nostdlib -shared "$2" -o /dev/null "$tmpc" >/dev/null 2>&1 ; then 104*c9945492SAndroid Build Coastguard Workerprintf "yes\n" 105*c9945492SAndroid Build Coastguard Workereval "$1=\"\${$1} \$2\"" 106*c9945492SAndroid Build Coastguard Workereval "$1=\${$1# }" 107*c9945492SAndroid Build Coastguard Workerreturn 0 108*c9945492SAndroid Build Coastguard Workerelse 109*c9945492SAndroid Build Coastguard Workerprintf "no\n" 110*c9945492SAndroid Build Coastguard Workerreturn 1 111*c9945492SAndroid Build Coastguard Workerfi 112*c9945492SAndroid Build Coastguard Worker} 113*c9945492SAndroid Build Coastguard Worker 114*c9945492SAndroid Build Coastguard Worker 115*c9945492SAndroid Build Coastguard Worker 116*c9945492SAndroid Build Coastguard Worker# Beginning of actual script 117*c9945492SAndroid Build Coastguard Worker 118*c9945492SAndroid Build Coastguard WorkerCFLAGS_C99FSE= 119*c9945492SAndroid Build Coastguard WorkerCFLAGS_AUTO= 120*c9945492SAndroid Build Coastguard WorkerCFLAGS_MEMOPS= 121*c9945492SAndroid Build Coastguard WorkerCFLAGS_NOSSP= 122*c9945492SAndroid Build Coastguard WorkerCFLAGS_TRY= 123*c9945492SAndroid Build Coastguard WorkerLDFLAGS_AUTO= 124*c9945492SAndroid Build Coastguard WorkerLDFLAGS_TRY= 125*c9945492SAndroid Build Coastguard WorkerOPTIMIZE_GLOBS= 126*c9945492SAndroid Build Coastguard Workersrcdir= 127*c9945492SAndroid Build Coastguard Workerprefix=/usr/local/musl 128*c9945492SAndroid Build Coastguard Workerexec_prefix='$(prefix)' 129*c9945492SAndroid Build Coastguard Workerbindir='$(exec_prefix)/bin' 130*c9945492SAndroid Build Coastguard Workerlibdir='$(prefix)/lib' 131*c9945492SAndroid Build Coastguard Workerincludedir='$(prefix)/include' 132*c9945492SAndroid Build Coastguard Workersyslibdir='/lib' 133*c9945492SAndroid Build Coastguard Workertools= 134*c9945492SAndroid Build Coastguard Workertool_libs= 135*c9945492SAndroid Build Coastguard Workerbuild= 136*c9945492SAndroid Build Coastguard Workertarget= 137*c9945492SAndroid Build Coastguard Workeroptimize=auto 138*c9945492SAndroid Build Coastguard Workerdebug=no 139*c9945492SAndroid Build Coastguard Workerwarnings=yes 140*c9945492SAndroid Build Coastguard Workershared=auto 141*c9945492SAndroid Build Coastguard Workerstatic=yes 142*c9945492SAndroid Build Coastguard Workerwrapper=auto 143*c9945492SAndroid Build Coastguard Workergcc_wrapper=no 144*c9945492SAndroid Build Coastguard Workerclang_wrapper=no 145*c9945492SAndroid Build Coastguard Workermalloc_dir=mallocng 146*c9945492SAndroid Build Coastguard Worker 147*c9945492SAndroid Build Coastguard Workerfor arg ; do 148*c9945492SAndroid Build Coastguard Workercase "$arg" in 149*c9945492SAndroid Build Coastguard Worker--help|-h) usage ;; 150*c9945492SAndroid Build Coastguard Worker--srcdir=*) srcdir=${arg#*=} ;; 151*c9945492SAndroid Build Coastguard Worker--prefix=*) prefix=${arg#*=} ;; 152*c9945492SAndroid Build Coastguard Worker--exec-prefix=*) exec_prefix=${arg#*=} ;; 153*c9945492SAndroid Build Coastguard Worker--bindir=*) bindir=${arg#*=} ;; 154*c9945492SAndroid Build Coastguard Worker--libdir=*) libdir=${arg#*=} ;; 155*c9945492SAndroid Build Coastguard Worker--includedir=*) includedir=${arg#*=} ;; 156*c9945492SAndroid Build Coastguard Worker--syslibdir=*) syslibdir=${arg#*=} ;; 157*c9945492SAndroid Build Coastguard Worker--enable-shared|--enable-shared=yes) shared=yes ;; 158*c9945492SAndroid Build Coastguard Worker--disable-shared|--enable-shared=no) shared=no ;; 159*c9945492SAndroid Build Coastguard Worker--enable-static|--enable-static=yes) static=yes ;; 160*c9945492SAndroid Build Coastguard Worker--disable-static|--enable-static=no) static=no ;; 161*c9945492SAndroid Build Coastguard Worker--enable-optimize) optimize=yes ;; 162*c9945492SAndroid Build Coastguard Worker--enable-optimize=*) optimize=${arg#*=} ;; 163*c9945492SAndroid Build Coastguard Worker--disable-optimize) optimize=no ;; 164*c9945492SAndroid Build Coastguard Worker--enable-debug|--enable-debug=yes) debug=yes ;; 165*c9945492SAndroid Build Coastguard Worker--disable-debug|--enable-debug=no) debug=no ;; 166*c9945492SAndroid Build Coastguard Worker--enable-warnings|--enable-warnings=yes) warnings=yes ;; 167*c9945492SAndroid Build Coastguard Worker--disable-warnings|--enable-warnings=no) warnings=no ;; 168*c9945492SAndroid Build Coastguard Worker--enable-wrapper|--enable-wrapper=yes) wrapper=detect ;; 169*c9945492SAndroid Build Coastguard Worker--enable-wrapper=all) wrapper=yes ; gcc_wrapper=yes ; clang_wrapper=yes ;; 170*c9945492SAndroid Build Coastguard Worker--enable-wrapper=gcc) wrapper=yes ; gcc_wrapper=yes ;; 171*c9945492SAndroid Build Coastguard Worker--enable-wrapper=clang) wrapper=yes ; clang_wrapper=yes ;; 172*c9945492SAndroid Build Coastguard Worker--disable-wrapper|--enable-wrapper=no) wrapper=no ;; 173*c9945492SAndroid Build Coastguard Worker--enable-gcc-wrapper|--enable-gcc-wrapper=yes) wrapper=yes ; gcc_wrapper=yes ;; 174*c9945492SAndroid Build Coastguard Worker--disable-gcc-wrapper|--enable-gcc-wrapper=no) wrapper=no ;; 175*c9945492SAndroid Build Coastguard Worker--with-malloc=*) malloc_dir=${arg#*=} ;; 176*c9945492SAndroid Build Coastguard Worker--enable-*|--disable-*|--with-*|--without-*|--*dir=*) ;; 177*c9945492SAndroid Build Coastguard Worker--host=*|--target=*) target=${arg#*=} ;; 178*c9945492SAndroid Build Coastguard Worker--build=*) build=${arg#*=} ;; 179*c9945492SAndroid Build Coastguard Worker-* ) echo "$0: unknown option $arg" ;; 180*c9945492SAndroid Build Coastguard WorkerAR=*) AR=${arg#*=} ;; 181*c9945492SAndroid Build Coastguard WorkerRANLIB=*) RANLIB=${arg#*=} ;; 182*c9945492SAndroid Build Coastguard WorkerCC=*) CC=${arg#*=} ;; 183*c9945492SAndroid Build Coastguard WorkerCFLAGS=*) CFLAGS=${arg#*=} ;; 184*c9945492SAndroid Build Coastguard WorkerCPPFLAGS=*) CPPFLAGS=${arg#*=} ;; 185*c9945492SAndroid Build Coastguard WorkerLDFLAGS=*) LDFLAGS=${arg#*=} ;; 186*c9945492SAndroid Build Coastguard WorkerCROSS_COMPILE=*) CROSS_COMPILE=${arg#*=} ;; 187*c9945492SAndroid Build Coastguard WorkerLIBCC=*) LIBCC=${arg#*=} ;; 188*c9945492SAndroid Build Coastguard Worker*=*) ;; 189*c9945492SAndroid Build Coastguard Worker*) build=$arg ; target=$arg ;; 190*c9945492SAndroid Build Coastguard Workeresac 191*c9945492SAndroid Build Coastguard Workerdone 192*c9945492SAndroid Build Coastguard Worker 193*c9945492SAndroid Build Coastguard Workerfor i in srcdir prefix exec_prefix bindir libdir includedir syslibdir ; do 194*c9945492SAndroid Build Coastguard Workerstripdir $i 195*c9945492SAndroid Build Coastguard Workerdone 196*c9945492SAndroid Build Coastguard Worker 197*c9945492SAndroid Build Coastguard Worker# 198*c9945492SAndroid Build Coastguard Worker# Get the source dir for out-of-tree builds 199*c9945492SAndroid Build Coastguard Worker# 200*c9945492SAndroid Build Coastguard Workerif test -z "$srcdir" ; then 201*c9945492SAndroid Build Coastguard Workersrcdir="${0%/configure}" 202*c9945492SAndroid Build Coastguard Workerstripdir srcdir 203*c9945492SAndroid Build Coastguard Workerfi 204*c9945492SAndroid Build Coastguard Workerabs_builddir="$(pwd)" || fail "$0: cannot determine working directory" 205*c9945492SAndroid Build Coastguard Workerabs_srcdir="$(cd $srcdir && pwd)" || fail "$0: invalid source directory $srcdir" 206*c9945492SAndroid Build Coastguard Workertest "$abs_srcdir" = "$abs_builddir" && srcdir=. 207*c9945492SAndroid Build Coastguard Workertest "$srcdir" != "." && test -f Makefile && test ! -h Makefile && fail "$0: Makefile already exists in the working directory" 208*c9945492SAndroid Build Coastguard Worker 209*c9945492SAndroid Build Coastguard Worker# 210*c9945492SAndroid Build Coastguard Worker# Get a temp filename we can use 211*c9945492SAndroid Build Coastguard Worker# 212*c9945492SAndroid Build Coastguard Workeri=0 213*c9945492SAndroid Build Coastguard Workerset -C 214*c9945492SAndroid Build Coastguard Workerwhile : ; do i=$(($i+1)) 215*c9945492SAndroid Build Coastguard Workertmpc="./conf$$-$PPID-$i.c" 216*c9945492SAndroid Build Coastguard Worker2>|/dev/null > "$tmpc" && break 217*c9945492SAndroid Build Coastguard Workertest "$i" -gt 50 && fail "$0: cannot create temporary file $tmpc" 218*c9945492SAndroid Build Coastguard Workerdone 219*c9945492SAndroid Build Coastguard Workerset +C 220*c9945492SAndroid Build Coastguard Workertrap 'rm "$tmpc"' EXIT INT QUIT TERM HUP 221*c9945492SAndroid Build Coastguard Worker 222*c9945492SAndroid Build Coastguard Worker# 223*c9945492SAndroid Build Coastguard Worker# Check that the requested malloc implementation exists 224*c9945492SAndroid Build Coastguard Worker# 225*c9945492SAndroid Build Coastguard Workertest -d "$srcdir/src/malloc/$malloc_dir" \ 226*c9945492SAndroid Build Coastguard Worker|| fail "$0: error: chosen malloc implementation '$malloc_dir' does not exist" 227*c9945492SAndroid Build Coastguard Worker 228*c9945492SAndroid Build Coastguard Worker# 229*c9945492SAndroid Build Coastguard Worker# Check whether we are cross-compiling, and set a default 230*c9945492SAndroid Build Coastguard Worker# CROSS_COMPILE prefix if none was provided. 231*c9945492SAndroid Build Coastguard Worker# 232*c9945492SAndroid Build Coastguard Workertest "$target" && \ 233*c9945492SAndroid Build Coastguard Workertest "$target" != "$build" && \ 234*c9945492SAndroid Build Coastguard Workertest -z "$CROSS_COMPILE" && \ 235*c9945492SAndroid Build Coastguard WorkerCROSS_COMPILE="$target-" 236*c9945492SAndroid Build Coastguard Worker 237*c9945492SAndroid Build Coastguard Worker# 238*c9945492SAndroid Build Coastguard Worker# Find a C compiler to use 239*c9945492SAndroid Build Coastguard Worker# 240*c9945492SAndroid Build Coastguard Workerprintf "checking for C compiler... " 241*c9945492SAndroid Build Coastguard Workertrycc ${CROSS_COMPILE}gcc 242*c9945492SAndroid Build Coastguard Workertrycc ${CROSS_COMPILE}c99 243*c9945492SAndroid Build Coastguard Workertrycc ${CROSS_COMPILE}cc 244*c9945492SAndroid Build Coastguard Workerprintf "%s\n" "$CC" 245*c9945492SAndroid Build Coastguard Workertest -n "$CC" || { echo "$0: cannot find a C compiler" ; exit 1 ; } 246*c9945492SAndroid Build Coastguard Worker 247*c9945492SAndroid Build Coastguard Workerprintf "checking whether C compiler works... " 248*c9945492SAndroid Build Coastguard Workerecho "typedef int x;" > "$tmpc" 249*c9945492SAndroid Build Coastguard Workerif output=$($CC $CPPFLAGS $CFLAGS -c -o /dev/null "$tmpc" 2>&1) ; then 250*c9945492SAndroid Build Coastguard Workerprintf "yes\n" 251*c9945492SAndroid Build Coastguard Workerelse 252*c9945492SAndroid Build Coastguard Workerprintf "no; compiler output follows:\n%s\n" "$output" 253*c9945492SAndroid Build Coastguard Workerexit 1 254*c9945492SAndroid Build Coastguard Workerfi 255*c9945492SAndroid Build Coastguard Worker 256*c9945492SAndroid Build Coastguard Worker# 257*c9945492SAndroid Build Coastguard Worker# Figure out options to force errors on unknown flags. 258*c9945492SAndroid Build Coastguard Worker# 259*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_TRY -Werror=unknown-warning-option 260*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_TRY -Werror=unused-command-line-argument 261*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_TRY -Werror=ignored-optimization-argument 262*c9945492SAndroid Build Coastguard Workertryldflag LDFLAGS_TRY -Werror=unknown-warning-option 263*c9945492SAndroid Build Coastguard Workertryldflag LDFLAGS_TRY -Werror=unused-command-line-argument 264*c9945492SAndroid Build Coastguard Worker 265*c9945492SAndroid Build Coastguard Worker# 266*c9945492SAndroid Build Coastguard Worker# Need to know if the compiler is gcc or clang to decide which toolchain 267*c9945492SAndroid Build Coastguard Worker# wrappers to build. 268*c9945492SAndroid Build Coastguard Worker# 269*c9945492SAndroid Build Coastguard Workerprintf "checking for C compiler family... " 270*c9945492SAndroid Build Coastguard Workercc_ver="$(LC_ALL=C $CC -v 2>&1)" 271*c9945492SAndroid Build Coastguard Workercc_family=unknown 272*c9945492SAndroid Build Coastguard Workerif fnmatch '*gcc\ version*' "$cc_ver" ; then 273*c9945492SAndroid Build Coastguard Workercc_family=gcc 274*c9945492SAndroid Build Coastguard Workerelif fnmatch '*clang\ version*' "$cc_ver" ; then 275*c9945492SAndroid Build Coastguard Workercc_family=clang 276*c9945492SAndroid Build Coastguard Workerfi 277*c9945492SAndroid Build Coastguard Workerecho "$cc_family" 278*c9945492SAndroid Build Coastguard Worker 279*c9945492SAndroid Build Coastguard Worker# 280*c9945492SAndroid Build Coastguard Worker# Figure out toolchain wrapper to build 281*c9945492SAndroid Build Coastguard Worker# 282*c9945492SAndroid Build Coastguard Workerif test "$wrapper" = auto || test "$wrapper" = detect ; then 283*c9945492SAndroid Build Coastguard Workerecho "#include <stdlib.h>" > "$tmpc" 284*c9945492SAndroid Build Coastguard Workerecho "#if ! __GLIBC__" >> "$tmpc" 285*c9945492SAndroid Build Coastguard Workerecho "#error no" >> "$tmpc" 286*c9945492SAndroid Build Coastguard Workerecho "#endif" >> "$tmpc" 287*c9945492SAndroid Build Coastguard Workerprintf "checking for toolchain wrapper to build... " 288*c9945492SAndroid Build Coastguard Workerif test "$wrapper" = auto && ! $CC -c -o /dev/null "$tmpc" >/dev/null 2>&1 ; then 289*c9945492SAndroid Build Coastguard Workerecho "none" 290*c9945492SAndroid Build Coastguard Workerelif test "$cc_family" = gcc ; then 291*c9945492SAndroid Build Coastguard Workergcc_wrapper=yes 292*c9945492SAndroid Build Coastguard Workerecho "gcc" 293*c9945492SAndroid Build Coastguard Workerelif test "$cc_family" = clang ; then 294*c9945492SAndroid Build Coastguard Workerclang_wrapper=yes 295*c9945492SAndroid Build Coastguard Workerecho "clang" 296*c9945492SAndroid Build Coastguard Workerelse 297*c9945492SAndroid Build Coastguard Workerecho "none" 298*c9945492SAndroid Build Coastguard Workerif test "$wrapper" = detect ; then 299*c9945492SAndroid Build Coastguard Workerfail "$0: could not find an appropriate toolchain wrapper" 300*c9945492SAndroid Build Coastguard Workerfi 301*c9945492SAndroid Build Coastguard Workerfi 302*c9945492SAndroid Build Coastguard Workerfi 303*c9945492SAndroid Build Coastguard Worker 304*c9945492SAndroid Build Coastguard Workerif test "$gcc_wrapper" = yes ; then 305*c9945492SAndroid Build Coastguard Workertools="$tools obj/musl-gcc" 306*c9945492SAndroid Build Coastguard Workertool_libs="$tool_libs lib/musl-gcc.specs" 307*c9945492SAndroid Build Coastguard Workerfi 308*c9945492SAndroid Build Coastguard Workerif test "$clang_wrapper" = yes ; then 309*c9945492SAndroid Build Coastguard Workertools="$tools obj/musl-clang obj/ld.musl-clang" 310*c9945492SAndroid Build Coastguard Workerfi 311*c9945492SAndroid Build Coastguard Worker 312*c9945492SAndroid Build Coastguard Worker# 313*c9945492SAndroid Build Coastguard Worker# Find the target architecture 314*c9945492SAndroid Build Coastguard Worker# 315*c9945492SAndroid Build Coastguard Workerprintf "checking target system type... " 316*c9945492SAndroid Build Coastguard Workertest -n "$target" || target=$($CC -dumpmachine 2>/dev/null) || target=unknown 317*c9945492SAndroid Build Coastguard Workerprintf "%s\n" "$target" 318*c9945492SAndroid Build Coastguard Worker 319*c9945492SAndroid Build Coastguard Worker# 320*c9945492SAndroid Build Coastguard Worker# Convert to just ARCH 321*c9945492SAndroid Build Coastguard Worker# 322*c9945492SAndroid Build Coastguard Workercase "$target" in 323*c9945492SAndroid Build Coastguard Worker# Catch these early to simplify matching for 32-bit archs 324*c9945492SAndroid Build Coastguard Workerarm*) ARCH=arm ;; 325*c9945492SAndroid Build Coastguard Workeraarch64*) ARCH=aarch64 ;; 326*c9945492SAndroid Build Coastguard Workeri?86-nt32*) ARCH=nt32 ;; 327*c9945492SAndroid Build Coastguard Workeri?86*) ARCH=i386 ;; 328*c9945492SAndroid Build Coastguard Workerx86_64-x32*|x32*|x86_64*x32) ARCH=x32 ;; 329*c9945492SAndroid Build Coastguard Workerx86_64-nt64*) ARCH=nt64 ;; 330*c9945492SAndroid Build Coastguard Workerx86_64*) ARCH=x86_64 ;; 331*c9945492SAndroid Build Coastguard Workerloongarch64*) ARCH=loongarch64 ;; 332*c9945492SAndroid Build Coastguard Workerm68k*) ARCH=m68k ;; 333*c9945492SAndroid Build Coastguard Workermips64*|mipsisa64*) ARCH=mips64 ;; 334*c9945492SAndroid Build Coastguard Workermips*) ARCH=mips ;; 335*c9945492SAndroid Build Coastguard Workermicroblaze*) ARCH=microblaze ;; 336*c9945492SAndroid Build Coastguard Workeror1k*) ARCH=or1k ;; 337*c9945492SAndroid Build Coastguard Workerpowerpc64*|ppc64*) ARCH=powerpc64 ;; 338*c9945492SAndroid Build Coastguard Workerpowerpc*|ppc*) ARCH=powerpc ;; 339*c9945492SAndroid Build Coastguard Workerriscv64*) ARCH=riscv64 ;; 340*c9945492SAndroid Build Coastguard Workerriscv32*) ARCH=riscv32 ;; 341*c9945492SAndroid Build Coastguard Workersh[1-9bel-]*|sh|superh*) ARCH=sh ;; 342*c9945492SAndroid Build Coastguard Workers390x*) ARCH=s390x ;; 343*c9945492SAndroid Build Coastguard Workerunknown) fail "$0: unable to detect target arch; try $0 --target=..." ;; 344*c9945492SAndroid Build Coastguard Worker*) fail "$0: unknown or unsupported target \"$target\"" ;; 345*c9945492SAndroid Build Coastguard Workeresac 346*c9945492SAndroid Build Coastguard Worker 347*c9945492SAndroid Build Coastguard Worker# 348*c9945492SAndroid Build Coastguard Worker# Try to get a conforming C99 freestanding environment 349*c9945492SAndroid Build Coastguard Worker# 350*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_C99FSE -std=c99 351*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_C99FSE -nostdinc 352*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_C99FSE -ffreestanding \ 353*c9945492SAndroid Build Coastguard Worker|| tryflag CFLAGS_C99FSE -fno-builtin 354*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_C99FSE -fexcess-precision=standard \ 355*c9945492SAndroid Build Coastguard Worker|| { test "$ARCH" = i386 && tryflag CFLAGS_C99FSE -ffloat-store ; } 356*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_C99FSE -frounding-math 357*c9945492SAndroid Build Coastguard Worker 358*c9945492SAndroid Build Coastguard Worker# 359*c9945492SAndroid Build Coastguard Worker# Semantically we want to insist that our sources follow the 360*c9945492SAndroid Build Coastguard Worker# C rules for type-based aliasing, but most if not all real-world 361*c9945492SAndroid Build Coastguard Worker# compilers are known or suspected to have critical bugs in their 362*c9945492SAndroid Build Coastguard Worker# type-based aliasing analysis. See for example GCC bug 107107. 363*c9945492SAndroid Build Coastguard Worker# 364*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_C99FSE -fno-strict-aliasing 365*c9945492SAndroid Build Coastguard Worker 366*c9945492SAndroid Build Coastguard Worker# 367*c9945492SAndroid Build Coastguard Worker# We may use the may_alias attribute if __GNUC__ is defined, so 368*c9945492SAndroid Build Coastguard Worker# if the compiler defines __GNUC__ but does not provide it, 369*c9945492SAndroid Build Coastguard Worker# it must be defined away as part of the CFLAGS. 370*c9945492SAndroid Build Coastguard Worker# 371*c9945492SAndroid Build Coastguard Workerprintf "checking whether compiler needs attribute((may_alias)) suppression... " 372*c9945492SAndroid Build Coastguard Workercat > "$tmpc" <<EOF 373*c9945492SAndroid Build Coastguard Workertypedef int 374*c9945492SAndroid Build Coastguard Worker#ifdef __GNUC__ 375*c9945492SAndroid Build Coastguard Worker__attribute__((__may_alias__)) 376*c9945492SAndroid Build Coastguard Worker#endif 377*c9945492SAndroid Build Coastguard Workerx; 378*c9945492SAndroid Build Coastguard WorkerEOF 379*c9945492SAndroid Build Coastguard Workerif $CC $CFLAGS_C99FSE $CPPFLAGS $CFLAGS \ 380*c9945492SAndroid Build Coastguard Worker -c -o /dev/null "$tmpc" >/dev/null 2>&1 ; then 381*c9945492SAndroid Build Coastguard Workerprintf "no\n" 382*c9945492SAndroid Build Coastguard Workerelse 383*c9945492SAndroid Build Coastguard Workerprintf "yes\n" 384*c9945492SAndroid Build Coastguard WorkerCFLAGS_C99FSE="$CFLAGS_C99FSE -D__may_alias__=" 385*c9945492SAndroid Build Coastguard Workerfi 386*c9945492SAndroid Build Coastguard Worker 387*c9945492SAndroid Build Coastguard Worker# 388*c9945492SAndroid Build Coastguard Worker# The GNU toolchain defaults to assuming unmarked files need an 389*c9945492SAndroid Build Coastguard Worker# executable stack, potentially exposing vulnerabilities in programs 390*c9945492SAndroid Build Coastguard Worker# linked with such object files. Fix this. 391*c9945492SAndroid Build Coastguard Worker# 392*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_C99FSE -Wa,--noexecstack 393*c9945492SAndroid Build Coastguard Worker 394*c9945492SAndroid Build Coastguard Worker# 395*c9945492SAndroid Build Coastguard Worker# Check for options to disable stack protector, which needs to be 396*c9945492SAndroid Build Coastguard Worker# disabled for a few early-bootstrap translation units. If not found, 397*c9945492SAndroid Build Coastguard Worker# this is not an error; we assume the toolchain does not do ssp. 398*c9945492SAndroid Build Coastguard Worker# 399*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_NOSSP -fno-stack-protector 400*c9945492SAndroid Build Coastguard Worker 401*c9945492SAndroid Build Coastguard Worker# 402*c9945492SAndroid Build Coastguard Worker# Check for options that may be needed to prevent the compiler from 403*c9945492SAndroid Build Coastguard Worker# generating self-referential versions of memcpy,, memmove, memcmp, 404*c9945492SAndroid Build Coastguard Worker# and memset. Really, we should add a check to determine if this 405*c9945492SAndroid Build Coastguard Worker# option is sufficient, and if not, add a macro to cripple these 406*c9945492SAndroid Build Coastguard Worker# functions with volatile... 407*c9945492SAndroid Build Coastguard Worker# 408*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_MEMOPS -fno-tree-loop-distribute-patterns 409*c9945492SAndroid Build Coastguard Worker 410*c9945492SAndroid Build Coastguard Worker# 411*c9945492SAndroid Build Coastguard Worker# Enable debugging if requessted. 412*c9945492SAndroid Build Coastguard Worker# 413*c9945492SAndroid Build Coastguard Workertest "$debug" = yes && CFLAGS_AUTO=-g 414*c9945492SAndroid Build Coastguard Worker 415*c9945492SAndroid Build Coastguard Worker# 416*c9945492SAndroid Build Coastguard Worker# Preprocess asm files to add extra debugging information if debug is 417*c9945492SAndroid Build Coastguard Worker# enabled, our assembler supports the needed directives, and the 418*c9945492SAndroid Build Coastguard Worker# preprocessing script has been written for our architecture. 419*c9945492SAndroid Build Coastguard Worker# 420*c9945492SAndroid Build Coastguard Workerprintf "checking whether we should preprocess assembly to add debugging information... " 421*c9945492SAndroid Build Coastguard Workerif fnmatch '-g*|*\ -g*' "$CFLAGS_AUTO $CFLAGS" && 422*c9945492SAndroid Build Coastguard Worker test -f "$srcdir/tools/add-cfi.$ARCH.awk" && 423*c9945492SAndroid Build Coastguard Worker printf ".file 1 \"srcfile.s\"\n.line 1\n.cfi_startproc\n.cfi_endproc" | $CC -g -x assembler -c -o /dev/null 2>/dev/null - 424*c9945492SAndroid Build Coastguard Workerthen 425*c9945492SAndroid Build Coastguard Worker ADD_CFI=yes 426*c9945492SAndroid Build Coastguard Workerelse 427*c9945492SAndroid Build Coastguard Worker ADD_CFI=no 428*c9945492SAndroid Build Coastguard Workerfi 429*c9945492SAndroid Build Coastguard Workerprintf "%s\n" "$ADD_CFI" 430*c9945492SAndroid Build Coastguard Worker 431*c9945492SAndroid Build Coastguard Worker# 432*c9945492SAndroid Build Coastguard Worker# Possibly add a -O option to CFLAGS and select modules to optimize with 433*c9945492SAndroid Build Coastguard Worker# -O3 based on the status of --enable-optimize and provided CFLAGS. 434*c9945492SAndroid Build Coastguard Worker# 435*c9945492SAndroid Build Coastguard Workerprintf "checking for optimization settings... " 436*c9945492SAndroid Build Coastguard Workercase "x$optimize" in 437*c9945492SAndroid Build Coastguard Workerxauto) 438*c9945492SAndroid Build Coastguard Workerif fnmatch '-O*|*\ -O*' "$CFLAGS_AUTO $CFLAGS" ; then 439*c9945492SAndroid Build Coastguard Workerprintf "using provided CFLAGS\n" ;optimize=no 440*c9945492SAndroid Build Coastguard Workerelse 441*c9945492SAndroid Build Coastguard Workerprintf "using defaults\n" ; optimize=yes 442*c9945492SAndroid Build Coastguard Workerfi 443*c9945492SAndroid Build Coastguard Worker;; 444*c9945492SAndroid Build Coastguard Workerxsize|xnone) printf "minimize size\n" ; optimize=size ;; 445*c9945492SAndroid Build Coastguard Workerxno|x) printf "disabled\n" ; optimize=no ;; 446*c9945492SAndroid Build Coastguard Worker*) printf "custom\n" ;; 447*c9945492SAndroid Build Coastguard Workeresac 448*c9945492SAndroid Build Coastguard Worker 449*c9945492SAndroid Build Coastguard Workerif test "$optimize" = no ; then : 450*c9945492SAndroid Build Coastguard Workerelse 451*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -O2 452*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -fno-align-jumps 453*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -fno-align-functions 454*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -fno-align-loops 455*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -fno-align-labels 456*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -fira-region=one 457*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -fira-hoist-pressure 458*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -freorder-blocks-algorithm=simple \ 459*c9945492SAndroid Build Coastguard Worker|| tryflag CFLAGS_AUTO -fno-reorder-blocks 460*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -fno-prefetch-loop-arrays 461*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -fno-tree-ch 462*c9945492SAndroid Build Coastguard Workerfi 463*c9945492SAndroid Build Coastguard Workertest "$optimize" = yes && optimize="internal,malloc,string" 464*c9945492SAndroid Build Coastguard Worker 465*c9945492SAndroid Build Coastguard Workerif fnmatch 'no|size' "$optimize" ; then : 466*c9945492SAndroid Build Coastguard Workerelse 467*c9945492SAndroid Build Coastguard Workerprintf "components to be optimized for speed:" 468*c9945492SAndroid Build Coastguard Workerwhile test "$optimize" ; do 469*c9945492SAndroid Build Coastguard Workercase "$optimize" in 470*c9945492SAndroid Build Coastguard Worker*,*) this=${optimize%%,*} optimize=${optimize#*,} ;; 471*c9945492SAndroid Build Coastguard Worker*) this=$optimize optimize= 472*c9945492SAndroid Build Coastguard Workeresac 473*c9945492SAndroid Build Coastguard Workerprintf " $this" 474*c9945492SAndroid Build Coastguard Workercase "$this" in 475*c9945492SAndroid Build Coastguard Worker*/*.c) ;; 476*c9945492SAndroid Build Coastguard Worker*/*) this=$this*.c ;; 477*c9945492SAndroid Build Coastguard Worker*) this=$this/*.c ;; 478*c9945492SAndroid Build Coastguard Workeresac 479*c9945492SAndroid Build Coastguard WorkerOPTIMIZE_GLOBS="$OPTIMIZE_GLOBS $this" 480*c9945492SAndroid Build Coastguard Workerdone 481*c9945492SAndroid Build Coastguard WorkerOPTIMIZE_GLOBS=${OPTIMIZE_GLOBS# } 482*c9945492SAndroid Build Coastguard Workerprintf "\n" 483*c9945492SAndroid Build Coastguard Workerfi 484*c9945492SAndroid Build Coastguard Worker 485*c9945492SAndroid Build Coastguard Worker# Always try -pipe 486*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -pipe 487*c9945492SAndroid Build Coastguard Worker 488*c9945492SAndroid Build Coastguard Worker# 489*c9945492SAndroid Build Coastguard Worker# If debugging is disabled, omit frame pointer. Modern GCC does this 490*c9945492SAndroid Build Coastguard Worker# anyway on most archs even when debugging is enabled since the frame 491*c9945492SAndroid Build Coastguard Worker# pointer is no longer needed for debugging. 492*c9945492SAndroid Build Coastguard Worker# 493*c9945492SAndroid Build Coastguard Workerif fnmatch '-g*|*\ -g*' "$CFLAGS_AUTO $CFLAGS" ; then : 494*c9945492SAndroid Build Coastguard Workerelse 495*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -fomit-frame-pointer 496*c9945492SAndroid Build Coastguard Workerfi 497*c9945492SAndroid Build Coastguard Worker 498*c9945492SAndroid Build Coastguard Worker# 499*c9945492SAndroid Build Coastguard Worker# Modern GCC wants to put DWARF tables (used for debugging and 500*c9945492SAndroid Build Coastguard Worker# unwinding) in the loaded part of the program where they are 501*c9945492SAndroid Build Coastguard Worker# unstrippable. These options force them back to debug sections (and 502*c9945492SAndroid Build Coastguard Worker# cause them not to get generated at all if debugging is off). 503*c9945492SAndroid Build Coastguard Worker# 504*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -fno-unwind-tables 505*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -fno-asynchronous-unwind-tables 506*c9945492SAndroid Build Coastguard Worker 507*c9945492SAndroid Build Coastguard Worker# 508*c9945492SAndroid Build Coastguard Worker# Attempt to put each function and each data object in its own 509*c9945492SAndroid Build Coastguard Worker# section. This both allows additional size optimizations at link 510*c9945492SAndroid Build Coastguard Worker# time and works around a dangerous class of compiler/assembler bugs 511*c9945492SAndroid Build Coastguard Worker# whereby relative address expressions are constant-folded by the 512*c9945492SAndroid Build Coastguard Worker# assembler even when one or more of the symbols involved is 513*c9945492SAndroid Build Coastguard Worker# replaceable. See gas pr 18561 and gcc pr 66609, 68178, etc. 514*c9945492SAndroid Build Coastguard Worker# 515*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -ffunction-sections 516*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -fdata-sections 517*c9945492SAndroid Build Coastguard Worker 518*c9945492SAndroid Build Coastguard Worker# 519*c9945492SAndroid Build Coastguard Worker# On x86, make sure we don't have incompatible instruction set 520*c9945492SAndroid Build Coastguard Worker# extensions enabled by default. This is bad for making static binaries. 521*c9945492SAndroid Build Coastguard Worker# We cheat and use i486 rather than i386 because i386 really does not 522*c9945492SAndroid Build Coastguard Worker# work anyway (issues with atomic ops). 523*c9945492SAndroid Build Coastguard Worker# Some build environments pass -march and -mtune options via CC, so 524*c9945492SAndroid Build Coastguard Worker# check both CC and CFLAGS. 525*c9945492SAndroid Build Coastguard Worker# 526*c9945492SAndroid Build Coastguard Workerif test "$ARCH" = "i386" ; then 527*c9945492SAndroid Build Coastguard Workerfnmatch '-march=*|*\ -march=*' "$CC $CFLAGS" || tryldflag CFLAGS_AUTO -march=i486 528*c9945492SAndroid Build Coastguard Workerfnmatch '-mtune=*|*\ -mtune=*' "$CC $CFLAGS" || tryldflag CFLAGS_AUTO -mtune=generic 529*c9945492SAndroid Build Coastguard Workerfi 530*c9945492SAndroid Build Coastguard Worker 531*c9945492SAndroid Build Coastguard Worker# 532*c9945492SAndroid Build Coastguard Worker# GCC defines -w as overriding any -W options, regardless of order, but 533*c9945492SAndroid Build Coastguard Worker# clang has a bunch of annoying warnings enabled by default and needs -w 534*c9945492SAndroid Build Coastguard Worker# to start from a clean slate. So use -w if building with clang. Also 535*c9945492SAndroid Build Coastguard Worker# turn off a common on-by-default cast warning regardless of compiler. 536*c9945492SAndroid Build Coastguard Worker# 537*c9945492SAndroid Build Coastguard Workertest "$cc_family" = clang && tryflag CFLAGS_AUTO -w 538*c9945492SAndroid Build Coastguard Worker 539*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -Wno-pointer-to-int-cast 540*c9945492SAndroid Build Coastguard Worker 541*c9945492SAndroid Build Coastguard Worker# 542*c9945492SAndroid Build Coastguard Worker# Even with -std=c99, gcc accepts some constructs which are constraint 543*c9945492SAndroid Build Coastguard Worker# violations. We want to treat these as errors regardless of whether 544*c9945492SAndroid Build Coastguard Worker# other purely stylistic warnings are enabled -- especially implicit 545*c9945492SAndroid Build Coastguard Worker# function declarations, which are a dangerous programming error. 546*c9945492SAndroid Build Coastguard Worker# 547*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -Werror=implicit-function-declaration 548*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -Werror=implicit-int 549*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -Werror=pointer-sign 550*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -Werror=pointer-arith 551*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -Werror=int-conversion 552*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -Werror=incompatible-pointer-types 553*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -Werror=discarded-qualifiers 554*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -Werror=discarded-array-qualifiers 555*c9945492SAndroid Build Coastguard Worker 556*c9945492SAndroid Build Coastguard Worker# 557*c9945492SAndroid Build Coastguard Worker# GCC ignores unused arguements by default, but Clang needs this extra 558*c9945492SAndroid Build Coastguard Worker# parameter to stop printing warnings about LDFLAGS passed during 559*c9945492SAndroid Build Coastguard Worker# compiling stage and CFLAGS passed during linking stage. 560*c9945492SAndroid Build Coastguard Worker# 561*c9945492SAndroid Build Coastguard Workertest "$cc_family" = clang && tryflag CFLAGS_AUTO -Qunused-arguments 562*c9945492SAndroid Build Coastguard Worker 563*c9945492SAndroid Build Coastguard Workerif test "x$warnings" = xyes ; then 564*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -Waddress 565*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -Warray-bounds 566*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -Wchar-subscripts 567*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -Wduplicate-decl-specifier 568*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -Winit-self 569*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -Wreturn-type 570*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -Wsequence-point 571*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -Wstrict-aliasing 572*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -Wunused-function 573*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -Wunused-label 574*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -Wunused-variable 575*c9945492SAndroid Build Coastguard Workerfi 576*c9945492SAndroid Build Coastguard Worker 577*c9945492SAndroid Build Coastguard Worker# Determine if the compiler produces position-independent code (PIC) 578*c9945492SAndroid Build Coastguard Worker# by default. If so, we don't need to compile separate object files 579*c9945492SAndroid Build Coastguard Worker# for libc.a and libc.so. 580*c9945492SAndroid Build Coastguard Workerif trycppif __PIC__ "$CFLAGS_C99FSE $CPPFLAGS $CFLAGS" ; then 581*c9945492SAndroid Build Coastguard Workerpic_default=yes 582*c9945492SAndroid Build Coastguard Workerelse 583*c9945492SAndroid Build Coastguard Workerpic_default=no 584*c9945492SAndroid Build Coastguard Workerfi 585*c9945492SAndroid Build Coastguard Worker 586*c9945492SAndroid Build Coastguard Worker# Reduce space lost to padding for alignment purposes by sorting data 587*c9945492SAndroid Build Coastguard Worker# objects according to their alignment reqirements. This approximates 588*c9945492SAndroid Build Coastguard Worker# optimal packing. 589*c9945492SAndroid Build Coastguard Workertryldflag LDFLAGS_AUTO -Wl,--sort-section,alignment 590*c9945492SAndroid Build Coastguard Workertryldflag LDFLAGS_AUTO -Wl,--sort-common 591*c9945492SAndroid Build Coastguard Worker 592*c9945492SAndroid Build Coastguard Worker# When linking shared library, drop dummy weak definitions that were 593*c9945492SAndroid Build Coastguard Worker# replaced by strong definitions from other translation units. 594*c9945492SAndroid Build Coastguard Workertryldflag LDFLAGS_AUTO -Wl,--gc-sections 595*c9945492SAndroid Build Coastguard Worker 596*c9945492SAndroid Build Coastguard Worker# Some patched GCC builds have these defaults messed up... 597*c9945492SAndroid Build Coastguard Workertryldflag LDFLAGS_AUTO -Wl,--hash-style=both 598*c9945492SAndroid Build Coastguard Worker 599*c9945492SAndroid Build Coastguard Worker# Prevent linking if there are undefined symbols; if any exist, 600*c9945492SAndroid Build Coastguard Worker# libc.so will crash at runtime during relocation processing. 601*c9945492SAndroid Build Coastguard Worker# The common way this can happen is failure to link the compiler 602*c9945492SAndroid Build Coastguard Worker# runtime library; implementation error is also a possibility. 603*c9945492SAndroid Build Coastguard Workertryldflag LDFLAGS_AUTO -Wl,--no-undefined 604*c9945492SAndroid Build Coastguard Worker 605*c9945492SAndroid Build Coastguard Worker# Avoid exporting symbols from compiler runtime libraries. They 606*c9945492SAndroid Build Coastguard Worker# should be hidden anyway, but some toolchains including old gcc 607*c9945492SAndroid Build Coastguard Worker# versions built without shared library support and pcc are broken. 608*c9945492SAndroid Build Coastguard Workertryldflag LDFLAGS_AUTO -Wl,--exclude-libs=ALL 609*c9945492SAndroid Build Coastguard Worker 610*c9945492SAndroid Build Coastguard Worker# Public data symbols must be interposable to allow for copy 611*c9945492SAndroid Build Coastguard Worker# relocations, but otherwise we want to bind symbols at libc link 612*c9945492SAndroid Build Coastguard Worker# time to eliminate startup relocations and PLT overhead. Use 613*c9945492SAndroid Build Coastguard Worker# --dynamic-list rather than -Bsymbolic-functions for greater 614*c9945492SAndroid Build Coastguard Worker# control over what symbols are left unbound. 615*c9945492SAndroid Build Coastguard Workertryldflag LDFLAGS_AUTO -Wl,--dynamic-list="$srcdir/dynamic.list" 616*c9945492SAndroid Build Coastguard Worker 617*c9945492SAndroid Build Coastguard Worker# Find compiler runtime library 618*c9945492SAndroid Build Coastguard Workertest -z "$LIBCC" && tryldflag LIBCC -lgcc && tryldflag LIBCC -lgcc_eh 619*c9945492SAndroid Build Coastguard Workertest -z "$LIBCC" && tryldflag LIBCC -lcompiler_rt 620*c9945492SAndroid Build Coastguard Workertest -z "$LIBCC" && try_libcc=`$CC -print-libgcc-file-name 2>/dev/null` \ 621*c9945492SAndroid Build Coastguard Worker && tryldflag LIBCC "$try_libcc" 622*c9945492SAndroid Build Coastguard Workertest -z "$LIBCC" && try_libcc=`$CC -print-file-name=libpcc.a 2>/dev/null` \ 623*c9945492SAndroid Build Coastguard Worker && tryldflag LIBCC "$try_libcc" 624*c9945492SAndroid Build Coastguard Workerprintf "using compiler runtime libraries: %s\n" "$LIBCC" 625*c9945492SAndroid Build Coastguard Worker 626*c9945492SAndroid Build Coastguard Worker# Figure out arch variants for archs with variants 627*c9945492SAndroid Build Coastguard WorkerSUBARCH= 628*c9945492SAndroid Build Coastguard Workert="$CFLAGS_C99FSE $CPPFLAGS $CFLAGS" 629*c9945492SAndroid Build Coastguard Worker 630*c9945492SAndroid Build Coastguard Workerif test "$ARCH" = "i386" ; then 631*c9945492SAndroid Build Coastguard Workerprintf "checking whether compiler can use ebx in PIC asm constraints... " 632*c9945492SAndroid Build Coastguard Workercat > "$tmpc" <<EOF 633*c9945492SAndroid Build Coastguard Workerint foo(int x) { __asm__ ( "" : "+b"(x) ); return x; } 634*c9945492SAndroid Build Coastguard WorkerEOF 635*c9945492SAndroid Build Coastguard Workerif $CC $CFLAGS_C99FSE $CPPFLAGS $CFLAGS -fPIC \ 636*c9945492SAndroid Build Coastguard Worker -c -o /dev/null "$tmpc" >/dev/null 2>&1 ; then 637*c9945492SAndroid Build Coastguard Workerprintf "yes\n" 638*c9945492SAndroid Build Coastguard Workerelse 639*c9945492SAndroid Build Coastguard Workerprintf "no\n" 640*c9945492SAndroid Build Coastguard WorkerCFLAGS_AUTO="$CFLAGS_AUTO -DBROKEN_EBX_ASM" 641*c9945492SAndroid Build Coastguard Workerfi 642*c9945492SAndroid Build Coastguard Workerfi 643*c9945492SAndroid Build Coastguard Worker 644*c9945492SAndroid Build Coastguard Workerif test "$ARCH" = "x86_64" ; then 645*c9945492SAndroid Build Coastguard Workertrycppif __ILP32__ "$t" && ARCH=x32 646*c9945492SAndroid Build Coastguard Workerfi 647*c9945492SAndroid Build Coastguard Worker 648*c9945492SAndroid Build Coastguard Workerif test "$ARCH" = "arm" ; then 649*c9945492SAndroid Build Coastguard Workerif trycppif __thumb2__ "$t" ; then 650*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -mimplicit-it=always 651*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -Wa,-mimplicit-it=always 652*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -Wa,-mthumb 653*c9945492SAndroid Build Coastguard Workerfi 654*c9945492SAndroid Build Coastguard Workertrycppif __ARMEB__ "$t" && SUBARCH=${SUBARCH}eb 655*c9945492SAndroid Build Coastguard Workertrycppif __ARM_PCS_VFP "$t" && SUBARCH=${SUBARCH}hf 656*c9945492SAndroid Build Coastguard Worker# Versions of clang up until at least 3.8 have the wrong constraint codes 657*c9945492SAndroid Build Coastguard Worker# for floating point operands to inline asm. Detect this so the affected 658*c9945492SAndroid Build Coastguard Worker# source files can just disable the asm. 659*c9945492SAndroid Build Coastguard Workerif test "$cc_family" = clang ; then 660*c9945492SAndroid Build Coastguard Workerprintf "checking whether clang's vfp asm constraints work... " 661*c9945492SAndroid Build Coastguard Workerecho 'float f(float x) { __asm__("":"+t"(x)); return x; }' > "$tmpc" 662*c9945492SAndroid Build Coastguard Workerif $CC $CFLAGS_C99FSE $CPPFLAGS $CFLAGS -c -o /dev/null "$tmpc" >/dev/null 2>&1 ; then 663*c9945492SAndroid Build Coastguard Workerprintf "yes\n" 664*c9945492SAndroid Build Coastguard Workerelse 665*c9945492SAndroid Build Coastguard Workerprintf "no\n" 666*c9945492SAndroid Build Coastguard WorkerCFLAGS_AUTO="$CFLAGS_AUTO -DBROKEN_VFP_ASM" 667*c9945492SAndroid Build Coastguard WorkerCFLAGS_AUTO="${CFLAGS_AUTO# }" 668*c9945492SAndroid Build Coastguard Workerfi 669*c9945492SAndroid Build Coastguard Workerfi 670*c9945492SAndroid Build Coastguard Workerfi 671*c9945492SAndroid Build Coastguard Worker 672*c9945492SAndroid Build Coastguard Workerif test "$ARCH" = "aarch64" ; then 673*c9945492SAndroid Build Coastguard Workertrycppif __AARCH64EB__ "$t" && SUBARCH=${SUBARCH}_be 674*c9945492SAndroid Build Coastguard Workerfi 675*c9945492SAndroid Build Coastguard Worker 676*c9945492SAndroid Build Coastguard Workerif test "$ARCH" = "loongarch64" ; then 677*c9945492SAndroid Build Coastguard Workertrycppif __loongarch_soft_float "$t" && SUBARCH=${SUBARCH}-sf 678*c9945492SAndroid Build Coastguard Workertrycppif __loongarch_single_float "$t" && SUBARCH=${SUBARCH}-sp 679*c9945492SAndroid Build Coastguard Workerprintf "checking whether assembler support FCSRs... " 680*c9945492SAndroid Build Coastguard Workerecho "__asm__(\"movfcsr2gr \$t0,\$fcsr0\");" > "$tmpc" 681*c9945492SAndroid Build Coastguard Workerif $CC -c -o /dev/null "$tmpc" >/dev/null 2>&1 ; then 682*c9945492SAndroid Build Coastguard Workerprintf "yes\n" 683*c9945492SAndroid Build Coastguard Workerelse 684*c9945492SAndroid Build Coastguard Workerprintf "no\n" 685*c9945492SAndroid Build Coastguard WorkerCFLAGS_AUTO="$CFLAGS_AUTO -DBROKEN_LOONGARCH_FCSR_ASM" 686*c9945492SAndroid Build Coastguard Workerfi 687*c9945492SAndroid Build Coastguard Workerfi 688*c9945492SAndroid Build Coastguard Worker 689*c9945492SAndroid Build Coastguard Workerif test "$ARCH" = "m68k" ; then 690*c9945492SAndroid Build Coastguard Workerif trycppif "__HAVE_68881__" ; then : ; 691*c9945492SAndroid Build Coastguard Workerelif trycppif "__mcffpu__" ; then SUBARCH="-fp64" 692*c9945492SAndroid Build Coastguard Workerelse SUBARCH="-sf" 693*c9945492SAndroid Build Coastguard Workerfi 694*c9945492SAndroid Build Coastguard Workerfi 695*c9945492SAndroid Build Coastguard Worker 696*c9945492SAndroid Build Coastguard Workerif test "$ARCH" = "mips" ; then 697*c9945492SAndroid Build Coastguard Workertrycppif "__mips_isa_rev >= 6" "$t" && SUBARCH=${SUBARCH}r6 698*c9945492SAndroid Build Coastguard Workertrycppif "_MIPSEL || __MIPSEL || __MIPSEL__" "$t" && SUBARCH=${SUBARCH}el 699*c9945492SAndroid Build Coastguard Workertrycppif __mips_soft_float "$t" && SUBARCH=${SUBARCH}-sf 700*c9945492SAndroid Build Coastguard Workerfi 701*c9945492SAndroid Build Coastguard Worker 702*c9945492SAndroid Build Coastguard Workerif test "$ARCH" = "mips64" ; then 703*c9945492SAndroid Build Coastguard Workertrycppif "_MIPS_SIM != _ABI64" "$t" && ARCH=mipsn32 704*c9945492SAndroid Build Coastguard Workertrycppif "__mips_isa_rev >= 6" "$t" && SUBARCH=${SUBARCH}r6 705*c9945492SAndroid Build Coastguard Workertrycppif "_MIPSEL || __MIPSEL || __MIPSEL__" "$t" && SUBARCH=${SUBARCH}el 706*c9945492SAndroid Build Coastguard Workertrycppif __mips_soft_float "$t" && SUBARCH=${SUBARCH}-sf 707*c9945492SAndroid Build Coastguard Workerfi 708*c9945492SAndroid Build Coastguard Worker 709*c9945492SAndroid Build Coastguard Workerif test "$ARCH" = "powerpc" ; then 710*c9945492SAndroid Build Coastguard Workertrycppif "_SOFT_FLOAT || __NO_FPRS__" "$t" && SUBARCH=${SUBARCH}-sf 711*c9945492SAndroid Build Coastguard Workerprintf "checking whether compiler can use 'd' constraint in asm... " 712*c9945492SAndroid Build Coastguard Workerecho 'double f(double x) { __asm__ ("fabs %0, %1" : "=d"(x) : "d"(x)); return x; }' > "$tmpc" 713*c9945492SAndroid Build Coastguard Workerif $CC $CFLAGS_C99FSE $CPPFLAGS $CFLAGS -c -o /dev/null "$tmpc" >/dev/null 2>&1 ; then 714*c9945492SAndroid Build Coastguard Workerprintf "yes\n" 715*c9945492SAndroid Build Coastguard Workerelse 716*c9945492SAndroid Build Coastguard Workerprintf "no\n" 717*c9945492SAndroid Build Coastguard WorkerCFLAGS_AUTO="$CFLAGS_AUTO -DBROKEN_PPC_D_ASM" 718*c9945492SAndroid Build Coastguard WorkerCFLAGS_AUTO="${CFLAGS_AUTO# }" 719*c9945492SAndroid Build Coastguard Workerfi 720*c9945492SAndroid Build Coastguard Workerfi 721*c9945492SAndroid Build Coastguard Worker 722*c9945492SAndroid Build Coastguard Workertest "$ARCH" = "microblaze" && trycppif __MICROBLAZEEL__ "$t" \ 723*c9945492SAndroid Build Coastguard Worker&& SUBARCH=${SUBARCH}el 724*c9945492SAndroid Build Coastguard Worker 725*c9945492SAndroid Build Coastguard Workerif test "$ARCH" = "powerpc64" ; then 726*c9945492SAndroid Build Coastguard Workertrycppif "_CALL_ELF == 2" "$t" || fail "$0: error: unsupported powerpc64 ABI" 727*c9945492SAndroid Build Coastguard Workertrycppif __LITTLE_ENDIAN__ "$t" && SUBARCH=${SUBARCH}le 728*c9945492SAndroid Build Coastguard Workertrycppif _SOFT_FLOAT "$t" && fail "$0: error: soft-float not supported on powerpc64" 729*c9945492SAndroid Build Coastguard Workerfi 730*c9945492SAndroid Build Coastguard Worker 731*c9945492SAndroid Build Coastguard Workerif test "$ARCH" = "riscv64" -o "$ARCH" = "riscv32" ; then 732*c9945492SAndroid Build Coastguard Workertrycppif __riscv_float_abi_soft "$t" && SUBARCH=${SUBARCH}-sf 733*c9945492SAndroid Build Coastguard Workertrycppif __riscv_float_abi_single "$t" && SUBARCH=${SUBARCH}-sp 734*c9945492SAndroid Build Coastguard Workerfi 735*c9945492SAndroid Build Coastguard Worker 736*c9945492SAndroid Build Coastguard Workerif test "$ARCH" = "sh" ; then 737*c9945492SAndroid Build Coastguard Workertryflag CFLAGS_AUTO -Wa,--isa=any 738*c9945492SAndroid Build Coastguard Workertrycppif __BIG_ENDIAN__ "$t" && SUBARCH=${SUBARCH}eb 739*c9945492SAndroid Build Coastguard Workerif trycppif "__SH_FPU_ANY__ || __SH4__" "$t" ; then 740*c9945492SAndroid Build Coastguard Worker# Some sh configurations are broken and replace double with float 741*c9945492SAndroid Build Coastguard Worker# rather than using softfloat when the fpu is present but only 742*c9945492SAndroid Build Coastguard Worker# supports single precision. Reject them. 743*c9945492SAndroid Build Coastguard Workerprintf "checking whether compiler's double type is IEEE double... " 744*c9945492SAndroid Build Coastguard Workerecho 'typedef char dblcheck[(int)sizeof(double)-5];' > "$tmpc" 745*c9945492SAndroid Build Coastguard Workerif $CC $CFLAGS_C99FSE $CPPFLAGS $CFLAGS -c -o /dev/null "$tmpc" >/dev/null 2>&1 ; then 746*c9945492SAndroid Build Coastguard Workerprintf "yes\n" 747*c9945492SAndroid Build Coastguard Workerelse 748*c9945492SAndroid Build Coastguard Workerprintf "no\n" 749*c9945492SAndroid Build Coastguard Workerfail "$0: error: compiler's floating point configuration is unsupported" 750*c9945492SAndroid Build Coastguard Workerfi 751*c9945492SAndroid Build Coastguard Workerelse 752*c9945492SAndroid Build Coastguard WorkerSUBARCH=${SUBARCH}-nofpu 753*c9945492SAndroid Build Coastguard Workerfi 754*c9945492SAndroid Build Coastguard Workerif trycppif __SH_FDPIC__ "$t" ; then 755*c9945492SAndroid Build Coastguard WorkerSUBARCH=${SUBARCH}-fdpic 756*c9945492SAndroid Build Coastguard Workerfi 757*c9945492SAndroid Build Coastguard Workerfi 758*c9945492SAndroid Build Coastguard Worker 759*c9945492SAndroid Build Coastguard Workertest "$SUBARCH" \ 760*c9945492SAndroid Build Coastguard Worker&& printf "configured for %s variant: %s\n" "$ARCH" "$ARCH$SUBARCH" 761*c9945492SAndroid Build Coastguard Worker 762*c9945492SAndroid Build Coastguard Worker# 763*c9945492SAndroid Build Coastguard Worker# Some archs (powerpc) have different possible long double formats 764*c9945492SAndroid Build Coastguard Worker# that the compiler can be configured for. The logic for whether this 765*c9945492SAndroid Build Coastguard Worker# is supported is in bits/float.h; in general, it is not. We need to 766*c9945492SAndroid Build Coastguard Worker# check for mismatches here or code in printf, strotd, and scanf will 767*c9945492SAndroid Build Coastguard Worker# be dangerously incorrect because it depends on (1) the macros being 768*c9945492SAndroid Build Coastguard Worker# correct, and (2) IEEE semantics. 769*c9945492SAndroid Build Coastguard Worker# 770*c9945492SAndroid Build Coastguard Workerprintf "checking whether compiler's long double definition matches float.h... " 771*c9945492SAndroid Build Coastguard Workerecho '#include <float.h>' > "$tmpc" 772*c9945492SAndroid Build Coastguard Workerecho '#define C(m,s) (m==LDBL_MANT_DIG && s==sizeof(long double))' >> "$tmpc" 773*c9945492SAndroid Build Coastguard Workerecho 'typedef char ldcheck[(C(53,8)||C(64,12)||C(64,16)||C(113,16))*2-1];' >> "$tmpc" 774*c9945492SAndroid Build Coastguard Workerif $CC $CFLAGS_C99FSE \ 775*c9945492SAndroid Build Coastguard Worker -I$srcdir/arch/$ARCH -I$srcdir/arch/generic -I$srcdir/include \ 776*c9945492SAndroid Build Coastguard Worker $CPPFLAGS $CFLAGS -c -o /dev/null "$tmpc" >/dev/null 2>&1 ; then 777*c9945492SAndroid Build Coastguard Workerprintf "yes\n" 778*c9945492SAndroid Build Coastguard Workerelse 779*c9945492SAndroid Build Coastguard Workerprintf "no\n" 780*c9945492SAndroid Build Coastguard Workerfail "$0: error: unsupported long double type" 781*c9945492SAndroid Build Coastguard Workerfi 782*c9945492SAndroid Build Coastguard Worker 783*c9945492SAndroid Build Coastguard Worker# 784*c9945492SAndroid Build Coastguard Worker# Some build systems globally pass in broken CFLAGS like -ffast-math 785*c9945492SAndroid Build Coastguard Worker# for all packages. On recent GCC we can detect this and error out 786*c9945492SAndroid Build Coastguard Worker# early rather than producing a seriously-broken math library. 787*c9945492SAndroid Build Coastguard Worker# 788*c9945492SAndroid Build Coastguard Workerif trycppif "__FAST_MATH__" \ 789*c9945492SAndroid Build Coastguard Worker "$CFLAGS_C99FSE $CPPFLAGS $CFLAGS" ; then 790*c9945492SAndroid Build Coastguard Workerfail "$0: error: compiler has broken floating point; check CFLAGS" 791*c9945492SAndroid Build Coastguard Workerfi 792*c9945492SAndroid Build Coastguard Worker 793*c9945492SAndroid Build Coastguard Workerprintf "creating config.mak... " 794*c9945492SAndroid Build Coastguard Worker 795*c9945492SAndroid Build Coastguard Workercmdline=$(quote "$0") 796*c9945492SAndroid Build Coastguard Workerfor i ; do cmdline="$cmdline $(quote "$i")" ; done 797*c9945492SAndroid Build Coastguard Worker 798*c9945492SAndroid Build Coastguard Workerexec 3>&1 1>config.mak 799*c9945492SAndroid Build Coastguard Worker 800*c9945492SAndroid Build Coastguard Worker 801*c9945492SAndroid Build Coastguard Workercat << EOF 802*c9945492SAndroid Build Coastguard Worker# This version of config.mak was generated by: 803*c9945492SAndroid Build Coastguard Worker# $cmdline 804*c9945492SAndroid Build Coastguard Worker# Any changes made here will be lost if configure is re-run 805*c9945492SAndroid Build Coastguard WorkerAR = ${AR:-\$(CROSS_COMPILE)ar} 806*c9945492SAndroid Build Coastguard WorkerRANLIB = ${RANLIB:-\$(CROSS_COMPILE)ranlib} 807*c9945492SAndroid Build Coastguard WorkerARCH = $ARCH 808*c9945492SAndroid Build Coastguard WorkerSUBARCH = $SUBARCH 809*c9945492SAndroid Build Coastguard WorkerASMSUBARCH = $ASMSUBARCH 810*c9945492SAndroid Build Coastguard Workersrcdir = $srcdir 811*c9945492SAndroid Build Coastguard Workerprefix = $prefix 812*c9945492SAndroid Build Coastguard Workerexec_prefix = $exec_prefix 813*c9945492SAndroid Build Coastguard Workerbindir = $bindir 814*c9945492SAndroid Build Coastguard Workerlibdir = $libdir 815*c9945492SAndroid Build Coastguard Workerincludedir = $includedir 816*c9945492SAndroid Build Coastguard Workersyslibdir = $syslibdir 817*c9945492SAndroid Build Coastguard WorkerCC = $CC 818*c9945492SAndroid Build Coastguard WorkerCFLAGS = $CFLAGS 819*c9945492SAndroid Build Coastguard WorkerCFLAGS_AUTO = $CFLAGS_AUTO 820*c9945492SAndroid Build Coastguard WorkerCFLAGS_C99FSE = $CFLAGS_C99FSE 821*c9945492SAndroid Build Coastguard WorkerCFLAGS_MEMOPS = $CFLAGS_MEMOPS 822*c9945492SAndroid Build Coastguard WorkerCFLAGS_NOSSP = $CFLAGS_NOSSP 823*c9945492SAndroid Build Coastguard WorkerCPPFLAGS = $CPPFLAGS 824*c9945492SAndroid Build Coastguard WorkerLDFLAGS = $LDFLAGS 825*c9945492SAndroid Build Coastguard WorkerLDFLAGS_AUTO = $LDFLAGS_AUTO 826*c9945492SAndroid Build Coastguard WorkerCROSS_COMPILE = $CROSS_COMPILE 827*c9945492SAndroid Build Coastguard WorkerLIBCC = $LIBCC 828*c9945492SAndroid Build Coastguard WorkerOPTIMIZE_GLOBS = $OPTIMIZE_GLOBS 829*c9945492SAndroid Build Coastguard WorkerALL_TOOLS = $tools 830*c9945492SAndroid Build Coastguard WorkerTOOL_LIBS = $tool_libs 831*c9945492SAndroid Build Coastguard WorkerADD_CFI = $ADD_CFI 832*c9945492SAndroid Build Coastguard WorkerMALLOC_DIR = $malloc_dir 833*c9945492SAndroid Build Coastguard WorkerEOF 834*c9945492SAndroid Build Coastguard Workertest "x$static" = xno && echo "STATIC_LIBS =" 835*c9945492SAndroid Build Coastguard Workertest "x$shared" = xno && echo "SHARED_LIBS =" 836*c9945492SAndroid Build Coastguard Workertest "x$cc_family" = xgcc && echo 'WRAPCC_GCC = $(CC)' 837*c9945492SAndroid Build Coastguard Workertest "x$cc_family" = xclang && echo 'WRAPCC_CLANG = $(CC)' 838*c9945492SAndroid Build Coastguard Workertest "x$pic_default" = xyes && echo 'AOBJS = $(LOBJS)' 839*c9945492SAndroid Build Coastguard Workerexec 1>&3 3>&- 840*c9945492SAndroid Build Coastguard Worker 841*c9945492SAndroid Build Coastguard Workertest "$srcdir" = "." || ln -sf $srcdir/Makefile . 842*c9945492SAndroid Build Coastguard Worker 843*c9945492SAndroid Build Coastguard Workerprintf "done\n" 844