summaryrefslogtreecommitdiff
path: root/newlib/configure.host
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/configure.host')
-rw-r--r--newlib/configure.host457
1 files changed, 457 insertions, 0 deletions
diff --git a/newlib/configure.host b/newlib/configure.host
new file mode 100644
index 00000000000..fcfaa5c9a5a
--- /dev/null
+++ b/newlib/configure.host
@@ -0,0 +1,457 @@
+# 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", "")
+
+# 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
+# posix_dir "posix" to build libc/posix, "" otherwise
+# signal_dir "signal" to build libc/signal, "" otherwise
+# syscall_dir "syscalls" to build libc/syscalls, "" otherwise
+# unix_dir "unix" to build libc/unix, "" otherwise
+
+newlib_cflags=
+machine_dir=
+sys_dir=
+posix_dir=
+signal_dir=signal
+syscall_dir=
+unix_dir=
+mach_add_setjmp=
+
+case "${target_optspace}:${host}" in
+ yes:*)
+ newlib_cflags="${newlib_cflags} -Os"
+ ;;
+ :m32r-* | :d10v-* | :d30v-*)
+ newlib_cflags="${newlib_cflags} -Os"
+ ;;
+ no:* | :*)
+ newlib_cflags="${newlib_cflags} -O2"
+ ;;
+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
+ ;;
+ arc)
+ machine_dir=
+ ;;
+ arm)
+ machine_dir=arm
+ ;;
+ d10v*)
+ machine_dir=d10v
+ ;;
+ d30v*)
+ machine_dir=d30v
+ ;;
+ fr30)
+ machine_dir=fr30
+ ;;
+ h8300)
+ machine_dir=h8300
+ ;;
+ h8500)
+ machine_dir=h8500
+ ;;
+ hppa*)
+ machine_dir=hppa
+ ;;
+ i960)
+ machine_dir=i960
+ ;;
+ i[3456]86)
+ # Don't use for these since they provide their own setjmp.
+ case ${host} in
+ *-*-go32 | *-*-sco* | *-*-cygwin*)
+ machine_dir=i386
+ ;;
+ *)
+ machine_dir=i386
+ mach_add_setjmp=true
+ ;;
+ esac
+ ;;
+ m32r*)
+ machine_dir=m32r
+ ;;
+ m68*)
+ machine_dir=m68k
+ ;;
+ m88k)
+ machine_dir=m88k
+ newlib_cflags="${newlib_cflags} -m88000"
+ ;;
+ m88110)
+ machine_dir=m88k
+ newlib_cflags="${newlib_cflags} -m88110"
+ ;;
+ mcore)
+ ;;
+ mips*)
+ machine_dir=mips
+ ;;
+ mn10200)
+ machine_dir=mn10200
+ ;;
+ mn10300)
+ machine_dir=mn10300
+ ;;
+ powerpc*)
+ machine_dir=powerpc
+ ;;
+ sh)
+ machine_dir=sh
+ ;;
+ sparc*)
+ machine_dir=sparc
+ # FIXME: Might wish to make MALLOC_ALIGNMENT more generic.
+ newlib_cflags="${newlib_cflags} -DMALLOC_ALIGNMENT=8"
+ ;;
+ strongarm)
+ machine_dir=arm
+ ;;
+ thumb)
+ machine_dir=arm
+ ;;
+ tic80*)
+ machine_dir=tic80
+ ;;
+ v70)
+ ;;
+ v810)
+ ;;
+ v850)
+ machine_dir=v850
+ newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED -mv850 -mno-app-regs -msmall-sld"
+ ;;
+ v850e)
+ machine_dir=v850
+ newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED -mv850 -mno-app-regs -msmall-sld"
+ ;;
+ v850ea)
+ machine_dir=v850
+ newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED -mv850 -mno-app-regs -msmall-sld"
+ ;;
+ w65*)
+ machine_dir=w65
+ ;;
+ z8k)
+ machine_dir=z8k
+ ;;
+ *)
+ echo '***' "Newlib does not support CPU ${host_cpu}" 1>&2
+ exit 1
+ ;;
+esac
+
+# Enable multibyte support if requested.
+
+if [ "${newlib_mb}" = "yes" ] ; then
+ newlib_cflags="${newlib_cflags} -DMB_CAPABLE"
+fi
+
+# 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*)
+ sys_dir=cygwin
+ posix_dir=posix
+ ;;
+ *-*-netware*)
+ signal_dir=
+ sys_dir=netware
+ ;;
+ *-*-rtems*) # generic RTEMS support
+ sys_dir=rtems
+ # RTEMS POSIX support is all inside RTEMS
+ ;;
+ a29k-*-*)
+ sys_dir=a29khif
+ signal_dir=
+ ;;
+ arc-*-*)
+ sys_dir=arc
+ ;;
+ arm-*-*)
+ sys_dir=arm
+ ;;
+ d10v*)
+ sys_dir=d10v
+ ;;
+ d30v*)
+ sys_dir=
+ ;;
+ h8300-*-hms*)
+ sys_dir=h8300hms
+ ;;
+ h8300-*-xray*)
+ sys_dir=h8300xray
+ ;;
+ h8500-*-hms*)
+ sys_dir=h8500hms
+ ;;
+ i[3456]86-*-go32)
+ sys_dir=go32
+ ;;
+ i[3456]86-*-sco*)
+ sys_dir=sysvi386
+ unix_dir=unix
+ ;;
+ m68k-sun-sunos*)
+ unix_dir=unix
+ ;;
+ m8*-bug-*)
+ sys_dir=m88kbug
+ ;;
+ mips*-dec-*)
+ sys_dir=decstation
+ ;;
+ powerpcle-*-pe)
+ sys_dir=cygwin
+ posix_dir=posix
+ ;;
+ sh*-*)
+ sys_dir=sh
+ ;;
+ sparc-sun-sunos*)
+ sys_dir=sun4
+ unix_dir=unix
+ ;;
+ sparc64*)
+ sys_dir=sparc64
+ unix_dir=unix
+ ;;
+ strongarm-*-*)
+ sys_dir=arm
+ ;;
+ thumb-*-*)
+ sys_dir=arm
+ ;;
+ tic80*)
+ sys_dir=tic80
+ ;;
+ v70-nec-*)
+ sys_dir=sysvnecv70
+ ;;
+ v810-*-*)
+ sys_dir=sysnec810
+ ;;
+ v850-*-*)
+ sys_dir=sysnecv850
+ ;;
+ v850e-*-*)
+ sys_dir=sysnecv850
+ ;;
+ v850ea-*-*)
+ sys_dir=sysnecv850
+ ;;
+ 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*)
+ newlib_cflags="${newlib_cflags} -DHAVE_OPENDIR -DHAVE_RENAME -DSIGNAL_PROVIDED -DWANT_PRINTF_LONG_LONG -D_COMPILING_NEWLIB"
+ syscall_dir=syscalls
+ ;;
+# 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*)
+ newlib_cflags="${newlib_cflags} -DHAVE_GETTIMEOFDAY -DMALLOC_PROVIDED -DEXIT_PROVIDED -DMISSING_SYSCALL_NAMES -DSIGNAL_PROVIDED -DREENTRANT_SYSCALLS_PROVIDED -DHAVE_OPENDIR"
+ ;;
+# 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"
+ ;;
+# UDI doesn't have exec, so system() should fail the right way
+ a29k-amd-udi)
+ newlib_cflags="${newlib_cflags} -DNO_EXEC"
+ syscall_dir=syscalls
+ ;;
+ arc-*-*)
+ syscall_dir=syscalls
+ ;;
+ arm-*-pe)
+ syscall_dir=syscalls
+ newlib_cflags="${newlib_cflags} -DABORT_PROVIDED -DHAVE_GETTIMEOFDAY"
+# Don't use the debugging protocols just yet.
+ ;;
+ arm-*-*)
+ syscall_dir=syscalls
+ newlib_cflags="${newlib_cflags} -DABORT_PROVIDED -DHAVE_GETTIMEOFDAY"
+# 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.
+# See also thumb below.
+# newlib_cflags="${newlib_cflags} -DARM_RDP_MONITOR"
+ newlib_cflags="${newlib_cflags} -DARM_RDI_MONITOR"
+ ;;
+ d10v*)
+ newlib_cflags="${newlib_cflags} -DSMALL_MEMORY"
+ syscall_dir=syscalls
+ ;;
+ d30v*)
+ newlib_cflags="${newlib_cflags} -DABORT_MESSAGE -DSMALL_MEMORY -DMISSING_SYSCALL_NAMES"
+ syscall_dir=
+ ;;
+ fr30-*-*)
+ newlib_cflags="${newlib_cflags}"
+ syscall_dir=syscalls
+ ;;
+ h8300*-*-*)
+ syscall_dir=syscalls
+ newlib_cflags="${newlib_cflags} -DSMALL_DTOA -DSMALL_MEMORY"
+ ;;
+ h8500-*-*)
+ syscall_dir=syscalls
+ newlib_cflags="${newlib_cflags} -DSMALL_DTOA -DSMALL_MEMORY"
+ ;;
+ i[3456]86-*-sco*)
+ newlib_cflags="${newlib_cflags} -DSIGNAL_PROVIDED"
+ ;;
+ i[3456]86-*-netware*)
+ newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES -DNO_EXEC -DABORT_PROVIDED -DCLOCK_PROVIDED -DMALLOC_PROVIDED"
+ ;;
+ i[3456]86-*-go32)
+ newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES -DNO_EXEC"
+ ;;
+ 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
+ ;;
+ mcore-*-*)
+ newlib_cflags="${newlib_cflags}"
+ syscall_dir=syscalls
+ ;;
+ mn10?00-*-*)
+ syscall_dir=syscalls
+ ;;
+ powerpc*-*-eabi* | \
+ powerpc*-*-elf* | \
+ powerpc*-*-linux* | \
+ powerpc*-*-rtem* | \
+ powerpc*-*-sysv* | \
+ powerpc*-*-solaris*)
+ newlib_cflags="${newlib_cflags} -mrelocatable-lib -mno-eabi -mstrict-align -DMISSING_SYSCALL_NAMES"
+ ;;
+ powerpcle-*-pe)
+ newlib_cflags="${newlib_cflags} -DHAVE_OPENDIR -DHAVE_RENAME"
+ syscall_dir=syscalls
+ ;;
+ sh*-*-*)
+ syscall_dir=syscalls
+ ;;
+ sparc-sun-sunos*)
+ newlib_cflags="${newlib_cflags} -DSIGNAL_PROVIDED"
+ ;;
+ sparc64-*-*)
+ newlib_cflags="${newlib_cflags} -DREENTRANT_SYSCALLS_PROVIDED -DHAVE_BLKSIZE -DHAVE_GETTIMEOFDAY"
+ # 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
+ ;;
+ strongarm-*-*)
+ syscall_dir=syscalls
+ newlib_cflags="${newlib_cflags} -DABORT_PROVIDED -DHAVE_GETTIMEOFDAY"
+ newlib_cflags="${newlib_cflags} -DARM_RDI_MONITOR"
+ ;;
+ thumb-*-pe)
+ syscall_dir=syscalls
+ newlib_cflags="${newlib_cflags} -DABORT_PROVIDED -DHAVE_GETTIMEOFDAY"
+# Don't use the debugging protocols just yet.
+ ;;
+ thumb-*-*)
+ syscall_dir=syscalls
+ newlib_cflags="${newlib_cflags} -DABORT_PROVIDED -DHAVE_GETTIMEOFDAY"
+# 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.
+# See also arm and strongarm above.
+# newlib_cflags="${newlib_cflags} -DARM_RDP_MONITOR"
+ newlib_cflags="${newlib_cflags} -DARM_RDI_MONITOR"
+ ;;
+ tic80*)
+ syscall_dir=syscalls
+ ;;
+ v850-*-*)
+ syscall_dir=syscalls
+ ;;
+ v850e-*-*)
+ syscall_dir=syscalls
+ ;;
+ v850ea-*-*)
+ syscall_dir=syscalls
+ ;;
+ w65-*-*)
+ syscall_dir=syscalls
+ newlib_cflags="${newlib_cflags} -DSMALL_DTOA -DSMALL_MEMORY"
+ ;;
+ z8k-*-*)
+ syscall_dir=syscalls
+ ;;
+ *)
+ newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES"
+ syscall_dir=
+ ;;
+esac