newlib-cygwin/newlib/configure.host

1008 lines
25 KiB
Plaintext

# configure.host
# This shell script handles all host based configuration for newlib.
# It sets various shell variables based on the the host and the
# configuration options. You can modify this shell script without
# needing to rerun autoconf.
# This shell script should be invoked as
# . configure.host
# If it encounters an error, it will exit with a message.
# FIXME: This script is too complicated. It does things in too many
# different ways. This was taken from the old Cygnus configure script
# with only minor changes. It should be cleaned up.
# FIXME: The general approach of picking and choosing which
# directories to configure, other than machine_dir and sys_dir, is
# potentially confusing.
# It uses the following shell variables:
# host The configuration host
# host_cpu The configuration host CPU
# newlib_mb --enable-newlib-mb ("yes", "no")
# target_optspace --enable-target-optspace ("yes", "no", "")
# newlib_multithread --enable-newlib-multithread ("yes", "no", "yes")
# newlib_elix_level --enable-newlib-elix-level ("1","2","3","4") ("4")
# newlib_io_c99_formats --enable-newlib-io-c99-formats ("yes", "no", "")
# newlib_io_long_long --enable-newlib-io-long-long ("yes", "no", "")
# newlib_io_long_double --enable-newlib-io-long-double ("yes", "no", "")
# newlib_global_stdio_streams --enable-global-stdio-streams ("yes", "no, "")
# newlib_fno_builtin --disable-newlib-fno-builtin ("yes", "no, "")
# newlib_reent_check_verify --enable-newlib-reent-check-verify ("yes", "no, "")
# It sets the following shell variables:
# newlib_cflags Special CFLAGS to use when building
# machine_dir Subdirectory of libc/machine to configure
# sys_dir Subdirectory of libc/sys to configure
# have_sys_mach_dir Is there a machine subdirectory in sys subdirectory
# posix_dir "posix" to build libc/posix, "" otherwise
# signal_dir "signal" to build libc/signal, "" otherwise
# stdio64_dir "stdio64" to build libc/stdio64, "" otherwise
# syscall_dir "syscalls" to build libc/syscalls, "" otherwise
# unix_dir "unix" to build libc/unix, "" otherwise
# use_libtool flag: use libtool to build newlib?
# aext library extension - needed for libtool support
# oext object file extension - needed for libtool support
# lpfx library object prefix - generated when no libtool
# crt1 name of crt1 object if one is provided
# crt1_dir directory where crt1 object is found
# have_crt0 "yes"/"no" if crt0 is/isn't provided.
# "" if crt0 is provided when sys_dir is set
# have_init_fini have init/fini ("yes" or "no", set to "yes" by default)
# noinclude list of include files to not install
newlib_cflags=
libm_machine_dir=
machine_dir=
sys_dir=
posix_dir=
signal_dir=signal
stdio_dir=stdio
stdio64_dir=
xdr_dir=
syscall_dir=
unix_dir=
noinclude=
mach_add_setjmp=
crt1=
crt1_dir=
have_crt0=
have_init_fini=yes
use_libtool=no
have_sys_mach_dir=no
default_newlib_io_c99_formats=no
default_newlib_io_long_long=no
default_newlib_io_long_double=no
default_newlib_io_pos_args=no
default_newlib_atexit_dynamic_alloc=yes
default_newlib_nano_malloc=no
default_newlib_reent_check_verify=yes
aext=a
oext=o
lpfx="lib_a-"
newlib_msg_warn=
case "${target_optspace}:${host}" in
yes:*)
newlib_cflags="${newlib_cflags} -Os"
;;
:m32r-* | :d10v-* | :d30v-* | :avr-* | :m32c-* | :msp430*-* | :nds32* | :pru-* | :rl78-* )
newlib_cflags="${newlib_cflags} -Os"
;;
no:* | :*)
;;
esac
case "${newlib_fno_builtin}:${host}" in
yes:*)
newlib_cflags="${newlib_cflags} -fno-builtin"
;;
no:*)
newlib_cflags="${newlib_cflags}"
;;
*:*)
# For now, all targets default to using -fno-builtin until tested without
newlib_cflags="${newlib_cflags} -fno-builtin"
;;
esac
# Get the source directories to use for the CPU type.
# machine_dir should supply CPU dependent routines, such as setjmp.
# newlib_cflags is passed to gcc when compiling.
# THIS TABLE IS ALPHA SORTED. KEEP IT THAT WAY.
case "${host_cpu}" in
a29k)
machine_dir=a29k
;;
aarch64*)
machine_dir=aarch64
libm_machine_dir=aarch64
;;
amdgcn*)
newlib_cflags="${newlib_cflags} -D__DYNAMIC_REENT__"
machine_dir=amdgcn
libc_cv_initfinit_array=yes
;;
arc*)
machine_dir=arc
;;
arm*)
machine_dir=arm
libm_machine_dir=arm
;;
avr*)
newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED -mcall-prologues"
;;
bfin)
machine_dir=bfin
;;
cr16*)
machine_dir=cr16
;;
cris | crisv32)
# The size of the (kernel_)time_t passed from or to a
# simulator or a Linux kernel is mandated by the
# gettimeofday and time system calls and fixed to 32 bits, the
# size of a long. Instead of churning as 64 bits what is anyway
# 32 bits, it makes more sense to default to long.
test -z "${enable_newlib_long_time_t}" && newlib_long_time_t=yes
machine_dir=cris
;;
crx*)
machine_dir=crx
;;
d10v*)
machine_dir=d10v
;;
d30v*)
machine_dir=d30v
;;
epiphany)
machine_dir=epiphany
;;
fido)
machine_dir=m68k
newlib_cflags="${newlib_cflags} -DCOMPACT_CTYPE"
;;
fr30)
machine_dir=fr30
;;
frv)
machine_dir=frv
;;
ft32*)
machine_dir=ft32
newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED"
;;
h8300)
machine_dir=h8300
;;
h8500)
machine_dir=h8500
;;
hppa*)
machine_dir=hppa
;;
i960)
machine_dir=i960
;;
i[34567]86)
# Don't use for these since they provide their own setjmp.
case ${host} in
*-*-sco* | *-*-cygwin*)
libm_machine_dir=i386
machine_dir=i386
;;
*)
libm_machine_dir=i386
machine_dir=i386
mach_add_setjmp=true
;;
esac
;;
ia64*)
;;
iq2000)
machine_dir=iq2000
;;
lm32)
machine_dir=lm32
;;
m32c)
machine_dir=m32c
newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED -DSMALL_MEMORY"
;;
m32r*)
machine_dir=m32r
;;
m68hc11|m6811|m68hc12|m6812)
machine_dir=m68hc11
newlib_cflags="-DPREFER_SIZE_OVER_SPEED -Os -mrelax"
CFLAGS="-g -Os"
;;
m68*)
machine_dir=m68k
newlib_cflags="${newlib_cflags} -DCOMPACT_CTYPE"
;;
m88k)
machine_dir=m88k
newlib_cflags="${newlib_cflags} -m88000"
;;
m88110)
machine_dir=m88k
newlib_cflags="${newlib_cflags} -m88110"
;;
mcore)
;;
microblaze*)
machine_dir=microblaze
;;
mep)
machine_dir=mep
;;
mips*)
machine_dir=mips
libm_machine_dir=mips
;;
mmix)
;;
mn10200)
machine_dir=mn10200
;;
mn10300)
default_newlib_io_long_long="yes"
machine_dir=mn10300
;;
moxie)
machine_dir=moxie
;;
msp430*)
newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED -DSMALL_MEMORY"
newlib_cflags="${newlib_cflags} -ffunction-sections -fdata-sections "
newlib_cflags="${newlib_cflags} -mOs "
newlib_cflags="${newlib_cflags} -mhwmult=none "
machine_dir=msp430
default_newlib_nano_malloc="yes"
;;
mt*)
machine_dir=mt
;;
nds32*)
machine_dir=nds32
libm_machine_dir=nds32
newlib_cflags="${newlib_cflags} -ffunction-sections -fdata-sections"
newlib_cflags="${newlib_cflags} -DHAVE_RENAME"
;;
nios2*)
machine_dir=nios2
;;
nvptx*)
machine_dir=nvptx
newlib_cflags="${newlib_cflags} -DMALLOC_PROVIDED"
;;
or1k*|or1knd*)
machine_dir=or1k
have_init_fini=no
;;
powerpc*)
machine_dir=powerpc
libm_machine_dir=powerpc
;;
pru*)
newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED"
newlib_cflags="${newlib_cflags} -DNO_EXEC"
newlib_cflags="${newlib_cflags} -DSMALL_MEMORY"
default_newlib_nano_malloc="yes"
default_newlib_atexit_dynamic_alloc="no"
machine_dir=pru
libm_machine_dir=pru
;;
riscv*)
libm_machine_dir=riscv
machine_dir=riscv
newlib_cflags="${newlib_cflags} -DHAVE_NANOSLEEP"
default_newlib_atexit_dynamic_alloc="no"
have_init_fini=no
;;
rl78)
machine_dir=rl78
newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED -DSMALL_MEMORY"
newlib_cflags="${newlib_cflags} -ffunction-sections -fdata-sections "
;;
rx)
machine_dir=rx
default_newlib_io_long_long="yes"
newlib_cflags="${newlib_cflags} -ffunction-sections -fdata-sections "
;;
sh | sh64)
machine_dir=sh
;;
sparc*)
libm_machine_dir=sparc
machine_dir=sparc
# FIXME: Might wish to make MALLOC_ALIGNMENT more generic.
newlib_cflags="${newlib_cflags} -DMALLOC_ALIGNMENT=8"
;;
tic4x|c4x)
machine_dir=tic4x
;;
tic6x)
machine_dir=tic6x
;;
tic80*)
machine_dir=tic80
;;
v70)
;;
v810)
;;
v850*)
machine_dir=v850
newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED "
;;
visium)
machine_dir=visium
;;
w65*)
machine_dir=w65
;;
x86_64)
machine_dir=x86_64
libm_machine_dir=x86_64
;;
xc16x*)
machine_dir=xc16x
;;
xstormy16)
machine_dir=xstormy16
newlib_cflags="${newlib_cflags} -DMALLOC_PROVIDED"
newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED"
;;
z8k)
machine_dir=z8k
;;
spu)
stdio_dir=
libm_machine_dir=spu
machine_dir=spu
newlib_cflags="${newlib_cflags} -D_POSIX_MODE"
newlib_cflags="${newlib_cflags} -DREENTRANT_SYSCALLS_PROVIDED"
newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES"
newlib_cflags="${newlib_cflags} -ffunction-sections -fdata-sections "
;;
*)
echo '***' "Newlib does not support CPU ${host_cpu}" 1>&2
exit 1
;;
esac
# Disable thread support if requested.
if [ "${newlib_multithread}" = "no" ] ; then
newlib_cflags="${newlib_cflags} -D__SINGLE_THREAD__"
fi
# Disable syscall support if requested.
if [ "${newlib_may_supply_syscalls}" = "no" ] ; then
newlib_cflags="${newlib_cflags} -D__NO_SYSCALLS__"
fi
# Enable multibyte support if requested or it is defaulted
# for target.
if [ "x${newlib_mb}" = "x" ]; then
case "${host}" in
i[34567]86-pc-linux-*|*-*-cygwin*)
newlib_mb=yes
;;
esac
fi
# Disable printf/scanf floating-point support if requested.
if [ "${newlib_io_float}" = "no" ] ; then
newlib_cflags="${newlib_cflags} -DNO_FLOATING_POINT"
fi
# Verify if shared newlib support is allowed and set appropriate variables
# We don't want to use libtool for platforms that we are not going to
# support shared libraries. This is because it adds executable tests which
# we don't want for most embedded platforms.
case "${host}" in
i[34567]86-pc-linux-*)
use_libtool=yes
have_sys_mach_dir=yes
stdio64_dir=stdio64
oext=lo
lpfx=
aext=la ;;
*) ;; #shared library not supported for ${host}
esac
# Get the source directories to use for the host. unix_dir is set
# to unix to get some standard Unix routines. posix_dir is set to get some
# standard Posix routines. sys_dir should supply system dependent routines
# including crt0.
# THIS TABLE IS ALPHA SORTED. KEEP IT THAT WAY.
case "${host}" in
*-*-cygwin*)
posix_dir=posix
stdio64_dir=stdio64
xdr_dir=xdr
;;
*-*-netware*)
signal_dir=
sys_dir=netware
;;
*-*-phoenix*)
sys_dir=phoenix
posix_dir=posix
unix_dir=unix
;;
*-*-rtems*) # generic RTEMS support
sys_dir=rtems
posix_dir=posix
unix_dir=unix
;;
*-*-tirtos*)
sys_dir=tirtos
have_crt0="no"
;;
a29k-*-*)
sys_dir=a29khif
signal_dir=
;;
aarch64*-*-*)
newlib_cflags="${newlib_cflags} -D_COMPILING_NEWLIB"
;;
amdgcn*)
sys_dir=amdgcn
have_crt0="no"
;;
arm*-*-*)
newlib_cflags="${newlib_cflags} -D_COMPILING_NEWLIB"
sys_dir=arm
if [ "x${newlib_may_supply_syscalls}" = "xno" ] ; then
have_crt0="no"
fi
;;
bfin-*-*)
sys_dir=
;;
cr16-*-*)
sys_dir=
;;
crx*)
sys_dir=
;;
d10v*)
sys_dir=d10v
;;
d30v*)
sys_dir=
;;
epiphany-*-*)
sys_dir=epiphany
# crt0 is provided by libgloss.
have_crt0="no"
;;
frv*)
sys_dir=
;;
ft32*)
sys_dir=
;;
h8300-*-hms*)
sys_dir=h8300hms
;;
h8300-*-elf*)
sys_dir=h8300hms
;;
h8300-*-coff*)
sys_dir=h8300hms
;;
h8300-*-xray*)
sys_dir=h8300xray
;;
h8500-*-hms*)
sys_dir=h8500hms
;;
h8500-*-elf*)
sys_dir=h8500hms
;;
i[34567]86-*-rdos*)
sys_dir=rdos
newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES"
newlib_cflags="${newlib_cflags} -D_I386MACH_DISABLE_HW_INTERRUPTS"
;;
i[34567]86-*-sco*)
sys_dir=sysvi386
unix_dir=unix
;;
i[34567]86-pc-linux-*)
sys_dir=linux
unix_dir=unix
posix_dir=posix
crt1=crt1.o
crt1_dir=libc/sys/${sys_dir}
gcc_dir=`gcc -print-search-dirs | awk '/^install:/{print $2}'`
default_newlib_io_c99_formats="yes"
default_newlib_io_long_double="yes"
default_newlib_io_long_long="yes"
default_newlib_io_pos_args="yes"
#newlib_cflags="${newlib_cflags} -Werror" # DEBUGGING ONLY;BREAKS BUILD
newlib_cflags="${newlib_cflags} -Wall"
newlib_cflags="${newlib_cflags} -DHAVE_FCNTL"
newlib_cflags="${newlib_cflags} -DHAVE_GETOPT"
newlib_cflags="${newlib_cflags} -D_NO_POSIX_SPAWN"
# --- Required when building a shared library ------------------------
newlib_cflags="${newlib_cflags} -fPIC -D_I386MACH_NEED_SOTYPE_FUNCTION"
# --- The three lines below are optional ------------------------------
##newlib_cflags="${newlib_cflags} -nostdinc"
##newlib_cflags="${newlib_cflags} -I`newlib-flags --kernel-dir`/include"
##newlib_cflags="${newlib_cflags} -idirafter ${gcc_dir}include"
;;
m68hc11-*-*|m6811-*-*|m6812-*-*|m68hc12-*-*)
;;
m68k-sun-sunos*)
unix_dir=unix
;;
m8*-bug-*)
sys_dir=m88kbug
;;
mep-*-*)
default_newlib_io_long_long="yes"
newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES"
;;
microblaze*-*-*)
machine_dir=microblaze
;;
mips*-dec-*)
sys_dir=decstation
;;
mmix-knuth-mmixware)
sys_dir=mmixware
;;
moxie*)
sys_dir=
;;
nios2*)
sys_dir=
;;
or1k-*-elf | or1knd-*-elf)
sys_dir=or1k
newlib_cflags="${newlib_cflags} -DREENTRANT_SYSCALLS_PROVIDED "
have_crt0="no"
;;
powerpcle-*-pe)
posix_dir=posix
;;
sh*-*)
sys_dir=sh
;;
sparc-sun-sunos*)
sys_dir=sun4
unix_dir=unix
;;
sparc64*)
sys_dir=sparc64
unix_dir=unix
;;
spu-*-*)
default_newlib_io_long_long="yes"
default_newlib_atexit_dynamic_alloc="no"
;;
tic6x*)
newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES"
have_crt0="no"
;;
tic80*)
sys_dir=tic80
;;
v70-nec-*)
sys_dir=sysvnecv70
;;
v810-*-*)
sys_dir=sysnec810
;;
v850*-*-*)
sys_dir=sysnecv850
if [ "x${newlib_may_supply_syscalls}" = "xno" ] ; then
have_crt0="no"
fi
;;
visium-*-*)
sys_dir=
;;
w65-*-*)
sys_dir=w65
;;
z8k-*-coff)
sys_dir=z8ksim
;;
esac
# Host specific flag settings -- usually for features that are not
# general enough or broad enough to be handled above.
# THIS TABLE IS ALPHA SORTED. KEEP IT THAT WAY.
case "${host}" in
*-*-cygwin*)
test -z "$cygwin_srcdir" && cygwin_srcdir=`cd ${srcdir}/../winsup/cygwin; pwd`
export cygwin_srcdir
default_newlib_io_c99_formats="yes"
default_newlib_io_long_long="yes"
default_newlib_io_long_double="yes"
default_newlib_io_pos_args="yes"
CC="${CC} -I${cygwin_srcdir}/include"
newlib_cflags="${newlib_cflags} -DHAVE_OPENDIR -DHAVE_RENAME -DGETREENT_PROVIDED -DSIGNAL_PROVIDED -D_COMPILING_NEWLIB -DHAVE_BLKSIZE -DHAVE_FCNTL -DMALLOC_PROVIDED"
syscall_dir=syscalls
;;
*-*-phoenix*)
newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES -D_COMPILING_NEWLIB -DHAVE_BLKSIZE -DHAVE_NANOSLEEP"
default_newlib_io_long_long="yes"
syscall_dir=
;;
# RTEMS supplies its own versions of some routines:
# malloc() (reentrant version)
# exit() RTEMS has a "global" reent to flush
# signal()/raise() RTEMS has its own including pthread signals
# _XYZ_r() RTEMS has its own reentrant routines
#
# NOTE: When newlib malloc uses a semaphore, RTEMS will switch to that.
*-*-rtems*)
default_newlib_io_long_long="yes"
default_newlib_io_c99_formats="yes"
newlib_cflags="${newlib_cflags} -ffunction-sections -fdata-sections "
newlib_cflags="${newlib_cflags} -D_COMPILING_NEWLIB"
newlib_cflags="${newlib_cflags} -DCLOCK_PROVIDED -DMALLOC_PROVIDED -DEXIT_PROVIDED -DSIGNAL_PROVIDED -DGETREENT_PROVIDED -DREENTRANT_SYSCALLS_PROVIDED -DHAVE_NANOSLEEP -DHAVE_BLKSIZE -DHAVE_FCNTL -DHAVE_ASSERT_FUNC"
# turn off unsupported items in posix directory
newlib_cflags="${newlib_cflags} -D_NO_GETLOGIN -D_NO_GETPWENT -D_NO_GETUT -D_NO_GETPASS -D_NO_SIGSET -D_NO_WORDEXP -D_NO_POPEN -D_NO_POSIX_SPAWN"
;;
# VxWorks supplies its own version of malloc, and the newlib one
# doesn't work because VxWorks does not have sbrk.
*-wrs-vxworks*)
newlib_cflags="${newlib_cflags} -DMALLOC_PROVIDED -DMISSING_SYSCALL_NAMES -DHAVE_FCNTL"
;;
# TIRTOS supplies its own version of malloc
*-*-tirtos*)
newlib_cflags="${newlib_cflags} -D__DYNAMIC_REENT__ -DMALLOC_PROVIDED"
;;
# UDI doesn't have exec, so system() should fail the right way
a29k-amd-udi)
newlib_cflags="${newlib_cflags} -DNO_EXEC"
syscall_dir=syscalls
;;
aarch64*-*-*)
default_newlib_io_long_long="yes"
syscall_dir=syscalls
;;
arc*-*-*)
syscall_dir=syscalls
default_newlib_io_long_long="yes"
;;
arm*-*-pe)
syscall_dir=syscalls
;;
arm*-*-*)
syscall_dir=syscalls
# If newlib is supplying syscalls, select which debug protocol is being used.
# ARM_RDP_MONITOR selects the Demon monitor.
# ARM_RDI_MONITOR selects the Angel monitor.
# If neither are defined, then hard coded defaults will be used
# to create the program's environment.
# If --disable-newlib-supplied-syscalls is specified, then the end-user
# may specify the protocol via gcc spec files supplied by libgloss.
if [ "x${newlib_may_supply_syscalls}" = "xyes" ] ; then
# newlib_cflags="${newlib_cflags} -DARM_RDP_MONITOR"
newlib_cflags="${newlib_cflags} -DARM_RDI_MONITOR"
fi
;;
avr*)
newlib_cflags="${newlib_cflags} -DNO_EXEC -DSMALL_MEMORY -DMISSING_SYSCALL_NAMES"
;;
bfin*)
syscall_dir=syscalls
;;
cris-*-* | crisv32-*-*)
default_newlib_io_long_long="yes"
newlib_cflags="${newlib_cflags} -DHAVE_RENAME -D_USE_WRITE -DCOMPACT_CTYPE"
syscall_dir=syscalls
;;
cr16-*-*)
syscall_dir=syscalls
;;
crx-*-*)
newlib_cflags="${newlib_cflags} -DHAVE_RENAME -DMISSING_SYSCALL_NAMES"
syscall_dir=
;;
d10v*)
newlib_cflags="${newlib_cflags} -DSMALL_MEMORY"
syscall_dir=syscalls
;;
d30v*)
newlib_cflags="${newlib_cflags} -DABORT_MESSAGE -DSMALL_MEMORY -DMISSING_SYSCALL_NAMES"
syscall_dir=
;;
epiphany*)
syscall_dir=syscalls
newlib_cflags="${newlib_cflags} -DSIGNAL_PROVIDED"
;;
fido-*-elf)
newlib_cflags="${newlib_cflags} -DHAVE_RENAME -DHAVE_SYSTEM -DMISSING_SYSCALL_NAMES"
syscall_dir=
;;
fr30-*-*)
syscall_dir=syscalls
;;
frv-*-*)
syscall_dir=syscalls
default_newlib_io_long_long="yes"
;;
ft32*-*-*)
syscall_dir=syscalls
;;
h8300*-*-*)
syscall_dir=syscalls
default_newlib_io_long_long="yes"
newlib_cflags="${newlib_cflags} -DSMALL_DTOA -DSMALL_MEMORY"
# Simulator only extensions for H8300.
# Uncomment the next line to enable them.
# newlib_cflags="${newlib_cflags} -D__SIMULATOR__"
;;
h8500-*-*)
syscall_dir=syscalls
newlib_cflags="${newlib_cflags} -DSMALL_DTOA -DSMALL_MEMORY"
;;
i[34567]86-*-sco*)
newlib_cflags="${newlib_cflags} -DSIGNAL_PROVIDED -DHAVE_FCNTL"
;;
i[34567]86-*-netware*)
newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES -DNO_EXEC -DABORT_PROVIDED -DCLOCK_PROVIDED -DMALLOC_PROVIDED -DHAVE_FCNTL"
;;
i[3-7]86-*-elfiamcu)
newlib_cflags="${newlib_cflags} -Os -DPREFER_SIZE_OVER_SPEED -ffunction-sections -fomit-frame-pointer -DREENTRANT_SYSCALL_PROVIDED"
if [ "${newlib_multithread}" = "no" ] ; then
newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES"
else
syscall_dir=syscalls
newlib_cflags="${newlib_cflags} -D__DYNAMIC_REENT__"
fi
;;
iq2000*)
syscall_dir=syscalls
default_newlib_io_long_long="yes"
;;
lm32-*-*)
syscall_dir=syscalls
;;
m32c-*-*)
default_newlib_io_long_long="yes"
newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES -DABORT_PROVIDED"
syscall_dir=
;;
m32r-*-*)
# Pass -msdata=sdata so _impure_ptr goes in .sdata.
# We don't generate sda relocs however for upward compatibility.
# FIXME: This is necessary because the default multilib doesn't
# use --print-multi-lib.
newlib_cflags="${newlib_cflags} -msdata=sdata"
syscall_dir=syscalls
;;
m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*)
newlib_cflags="${newlib_cflags} -DNO_EXEC -DABORT_PROVIDED -DSMALL_MEMORY -DMISSING_SYSCALL_NAMES"
;;
m68k-unknown-elf)
newlib_cflags="${newlib_cflags} -DHAVE_RENAME -DHAVE_SYSTEM -DMISSING_SYSCALL_NAMES"
syscall_dir=
;;
mcore-*-*)
syscall_dir=syscalls
;;
microblaze*-*-*)
default_newlib_io_long_long="yes"
newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES -DSMALL_MEMORY -D_REENT_SMALL"
;;
mips64vr*-*-*)
default_newlib_io_long_long="yes"
newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES"
;;
mips*-*-elf*)
default_newlib_io_long_long="yes"
newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES"
;;
mmix-*)
syscall_dir=syscalls
# We need every symbol 32-bit aligned, so the invalid
# construct with attribute ((alias ("_ctype_b+127"))) breaks.
newlib_cflags="${newlib_cflags} -DCOMPACT_CTYPE"
;;
mn10?00-*-*)
syscall_dir=syscalls
;;
moxie-*-elf* | moxie-*-rtems*)
syscall_dir=syscalls
default_newlib_io_long_long="yes"
;;
moxie-*-moxiebox)
syscall_dir=syscalls
default_newlib_io_long_long="yes"
newlib_cflags="${newlib_cflags} -Os -DPREFER_SIZE_OVER_SPEED -DSMALL_MEMORY"
;;
nios2*)
syscall_dir=
newlib_cflags="${newlib_cflags} -DHAVE_RENAME -DHAVE_SYSTEM -DMISSING_SYSCALL_NAMES"
;;
nds32*)
syscall_dir=syscalls
;;
or1k*|or1knd*)
syscall_dir=syscalls
;;
powerpc*-*-eabialtivec*)
default_newlib_io_long_long="yes"
newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES"
;;
powerpc*-*-eabispe*)
default_newlib_io_long_long="yes"
newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES"
;;
powerpc*-*-eabi* | \
powerpc*-*-elf* | \
powerpc*-*-linux* | \
powerpc*-*-rtem* | \
powerpc*-*-sysv* | \
powerpc*-*-solaris*)
default_newlib_io_long_long="yes"
newlib_cflags="${newlib_cflags} -mrelocatable-lib -mno-eabi -mstrict-align -DMISSING_SYSCALL_NAMES"
;;
powerpcle-*-pe)
newlib_cflags="${newlib_cflags} -DHAVE_OPENDIR -DHAVE_RENAME -DHAVE_FCNTL -D_NO_POSIX_SPAWN"
syscall_dir=syscalls
;;
pru*)
syscall_dir=syscalls
newlib_cflags="${newlib_cflags} -DSMALL_MEMORY -D_REENT_SMALL"
;;
riscv*-*-*)
syscall_dir=syscalls
;;
sh*-*-*)
default_newlib_io_long_long="yes"
syscall_dir=syscalls
;;
sparc-sun-sunos*)
newlib_cflags="${newlib_cflags} -DSIGNAL_PROVIDED"
;;
sparc64-*-*)
newlib_cflags="${newlib_cflags} -DREENTRANT_SYSCALLS_PROVIDED -DHAVE_BLKSIZE -DHAVE_FCNTL"
# This either belongs elsewhere or nowhere. But I need *something*,
# so for now it's here ...
case "${host_os}" in
aoutv8 | *32p)
newlib_cflags="${newlib_cflags} -DTARGET_PTR_SIZE=32" ;;
*)
newlib_cflags="${newlib_cflags} -DTARGET_PTR_SIZE=64" ;;
esac
;;
tic6x*)
syscall_dir=
newlib_cflags="${newlib_cflags} -DCLOCK_PROVIDED"
;;
tic80*)
syscall_dir=syscalls
;;
v850*-*-*)
syscall_dir=syscalls
;;
visium-*-*)
newlib_cflags="${newlib_cflags} -DCLOCK_PROVIDED -DHAVE_SYSTEM -DMISSING_SYSCALL_NAMES"
syscall_dir=
;;
w65-*-*)
syscall_dir=syscalls
newlib_cflags="${newlib_cflags} -DSMALL_DTOA -DSMALL_MEMORY"
;;
xc16x-*)
syscall_dir=syscalls
;;
xstormy16-*-*)
syscall_dir=syscalls
;;
z8k-*-*)
syscall_dir=syscalls
;;
*)
newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES"
syscall_dir=
;;
esac
# Use defaults for certain settings if not specified by user
# Enable C99 format support in I/O routines if requested.
if [ "x${newlib_io_c99_formats}" = "x" ]; then
if [ ${default_newlib_io_c99_formats} = "yes" ]; then
newlib_io_c99_formats="yes";
fi
fi
# Enable long long support in I/O routines if requested.
if [ "x${newlib_io_long_long}" = "x" ]; then
if [ ${default_newlib_io_long_long} = "yes" ]; then
newlib_io_long_long="yes";
fi
fi
# Enable long double support in I/O routines if requested.
if [ "x${newlib_io_long_double}" = "x" ]; then
if [ ${default_newlib_io_long_double} = "yes" ]; then
newlib_io_long_double="yes";
fi
fi
# Enable printf positional argument support if requested.
if [ "x${newlib_io_pos_args}" = "x" ]; then
if [ ${default_newlib_io_pos_args} = "yes" ]; then
newlib_io_pos_args="yes";
fi
fi
# Disable atexit dynamic allocation if requested.
if [ "x${newlib_atexit_dynamic_alloc}" = "x" ]; then
if [ ${default_newlib_atexit_dynamic_alloc} = "yes" ]; then
newlib_atexit_dynamic_alloc="yes";
fi
fi
# Enable nano-malloc if requested.
if [ "x${newlib_nano_malloc}" = "x" ]; then
if [ ${default_newlib_nano_malloc} = "yes" ]; then
newlib_nano_malloc="yes";
fi
fi
# Enable _REENT_CHECK macro memory allocation verification.
if [ "x${newlib_reent_check_verify}" = "x" ]; then
if [ ${default_newlib_reent_check_verify} = "yes" ]; then
newlib_reent_check_verify="yes";
fi
fi
# Remove rpc headers if xdr_dir not specified
if [ "x${xdr_dir}" = "x" ]; then
noinclude="${noinclude} rpc/types.h rpc/xdr.h"
fi
# Have init/finit if not explicitly specified otherwise
if [ "x${have_init_fini}" != "xno" ]; then
newlib_cflags="${newlib_cflags} -DHAVE_INIT_FINI"
fi
if test -z "${have_crt0}" && test -n "${sys_dir}"; then
have_crt0="yes"
fi
# Target-specific defaults
case "${host_cpu}" in
nvptx*)
if [ "x${newlib_elix_level}" = "x0" ]; then
newlib_elix_level=1;
elif [ "x${newlib_elix_level}" != "x1" ]; then
newlib_msg_warn="nvptx does not support elix level > 1";
fi
if [[ -z ${newlib_global_stdio_streams} ]]; then
newlib_global_stdio_streams="yes";
fi
;;
esac