Cygwin: console: Inherit pcon hand over from parent pty
[newlib-cygwin.git] / newlib / configure.host
blobff2e5127577bb8937ea74f3e3844847bd378fabd
1 # configure.host
3 # This shell script handles all host based configuration for newlib.
4 # It sets various shell variables based on the the host and the
5 # configuration options.  You can modify this shell script without
6 # needing to rerun autoconf.
8 # This shell script should be invoked as
9 #   . configure.host
10 # If it encounters an error, it will exit with a message.
12 # FIXME: This script is too complicated.  It does things in too many
13 # different ways.  This was taken from the old Cygnus configure script
14 # with only minor changes.  It should be cleaned up.
16 # FIXME: The general approach of picking and choosing which
17 # directories to configure, other than machine_dir and sys_dir, is
18 # potentially confusing.
20 # It uses the following shell variables:
21 #   host                The configuration host
22 #   host_cpu            The configuration host CPU
23 #   newlib_mb           --enable-newlib-mb ("yes", "no")
24 #   target_optspace     --enable-target-optspace ("yes", "no", "")
25 #   newlib_multithread  --enable-newlib-multithread ("yes", "no", "yes")
26 #   newlib_elix_level   --enable-newlib-elix-level ("1","2","3","4") ("4")
27 #   newlib_io_c99_formats --enable-newlib-io-c99-formats ("yes", "no", "")
28 #   newlib_io_long_long --enable-newlib-io-long-long ("yes", "no", "")
29 #   newlib_io_long_double --enable-newlib-io-long-double ("yes", "no", "")
30 #   newlib_global_stdio_streams --enable-global-stdio-streams ("yes", "no, "")
31 #   newlib_fno_builtin  --disable-newlib-fno-builtin ("yes", "no, "")
32 #   newlib_reent_check_verify  --enable-newlib-reent-check-verify ("yes", "no, "")
34 # It sets the following shell variables:
35 #   newlib_cflags       Special CFLAGS to use when building
36 #   machine_dir         Subdirectory of libc/machine to configure
37 #   shared_machine_dir  Subdirectory of libc/machine for files shared
38 #                       between specific architectures, optional
39 #   sys_dir             Subdirectory of libc/sys to configure
40 #   have_sys_mach_dir   Is there a machine subdirectory in sys subdirectory
41 #   posix_dir           "posix" to build libc/posix, "" otherwise
42 #   signal_dir          "signal" to build libc/signal, "" otherwise
43 #   stdio64_dir         "stdio64" to build libc/stdio64, "" otherwise
44 #   syscall_dir         "syscalls" to build libc/syscalls, "" otherwise
45 #   unix_dir            "unix" to build libc/unix, "" otherwise
46 #   lpfx                library object prefix - generated when no libtool
47 #   crt1                name of crt1 object if one is provided
48 #   crt1_dir            directory where crt1 object is found
49 #   have_crt0           "yes"/"no" if crt0 is/isn't provided.
50 #                       "" if crt0 is provided when sys_dir is set
51 #   have_init_fini      have init/fini ("yes" or "no", set to "yes" by default)
52 #   noinclude           list of include files to not install
54 newlib_cflags="-D_LIBC"
55 libm_machine_dir=
56 machine_dir=
57 shared_machine_dir=
58 sys_dir=
59 posix_dir=
60 signal_dir=signal
61 stdio_dir=stdio
62 stdio64_dir=
63 xdr_dir=
64 syscall_dir=
65 unix_dir=
66 noinclude=
67 mach_add_setjmp=
68 crt1=
69 crt1_dir=
70 have_crt0=
71 have_init_fini=yes
72 default_newlib_io_c99_formats=no
73 default_newlib_io_long_long=no
74 default_newlib_io_long_double=no
75 default_newlib_io_pos_args=no
76 default_newlib_atexit_dynamic_alloc=yes
77 default_newlib_nano_malloc=no
78 default_newlib_reent_check_verify=yes
79 lpfx="lib_a-"
80 newlib_msg_warn=
82 case "${target_optspace}:${host}" in
83   yes:*)
84     newlib_cflags="${newlib_cflags} -Os"
85     ;;
86   :m32r-* | :d10v-* | :d30v-* | :avr-* | :m32c-* | :msp430*-* | :nds32* | :pru-* | :rl78-* )
87     newlib_cflags="${newlib_cflags} -Os"
88     ;;
89   no:* | :*)
90     ;;
91 esac
93 case "${newlib_fno_builtin}:${host}" in
94   yes:*)
95     newlib_cflags="${newlib_cflags} -fno-builtin"
96     ;;
97   no:*)
98     newlib_cflags="${newlib_cflags}"
99     ;;
100   *:*)
101     # For now, all targets default to using -fno-builtin until tested without
102     newlib_cflags="${newlib_cflags} -fno-builtin"
103     ;;
104 esac
106 # Get the source directories to use for the CPU type.
107 # machine_dir should supply CPU dependent routines, such as setjmp.
108 # newlib_cflags is passed to gcc when compiling.
109 # THIS TABLE IS ALPHA SORTED.  KEEP IT THAT WAY.
111 case "${host_cpu}" in
112   a29k)
113         machine_dir=a29k
114         ;;
115   aarch64*)
116         machine_dir=aarch64
117         libm_machine_dir=aarch64
118         ;;
119   amdgcn*)
120         newlib_cflags="${newlib_cflags} -D__DYNAMIC_REENT__"
121         machine_dir=amdgcn
122         libm_machine_dir=amdgcn
123         newlib_cv_initfinit_array=yes
124         ;;
125   arc | arceb)
126         machine_dir=arc
127         ;;
128   arc64 | arc32)
129         machine_dir=arc64
130         ;;
131   arm*)
132         machine_dir=arm
133         libm_machine_dir=arm
134         ;;
135   avr*)
136         newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED -mcall-prologues"
137         ;;
138   bfin)
139         machine_dir=bfin
140         ;;
141   cr16*)
142         machine_dir=cr16
143        ;;
144   cris | crisv32)
145         # The size of the (kernel_)time_t passed from or to a
146         # simulator or a Linux kernel is mandated by the
147         # gettimeofday and time system calls and fixed to 32 bits, the
148         # size of a long.  Instead of churning as 64 bits what is anyway
149         # 32 bits, it makes more sense to default to long.
150         test -z "${enable_newlib_long_time_t}" && newlib_long_time_t=yes
151         machine_dir=cris
152         ;;
153   crx*)
154         machine_dir=crx
155         ;;
156   csky*)
157         machine_dir=csky
158         default_newlib_atexit_dynamic_alloc="no"
159         ;;
160   d10v*)
161         machine_dir=d10v
162         ;;
163   d30v*)
164         machine_dir=d30v
165         ;;
166   epiphany)
167         machine_dir=epiphany
168         ;;
169   fido)
170         machine_dir=m68k
171         newlib_cflags="${newlib_cflags} -DCOMPACT_CTYPE"
172         ;;
173   fr30)
174         machine_dir=fr30
175         ;;
176   frv)
177         machine_dir=frv
178         ;;
179   ft32*)
180         machine_dir=ft32
181         newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED"
182         ;;
183   h8300)
184         machine_dir=h8300
185         ;;
186   h8500)
187         machine_dir=h8500
188         ;;
189   hppa*)
190         machine_dir=hppa
191         ;;
192   i960)
193         machine_dir=i960
194         ;;
195   i[34567]86)
196         libm_machine_dir=i386
197         machine_dir=i386
198         shared_machine_dir=shared_x86
199         # Don't use for these since they provide their own setjmp.
200         case ${host} in
201         *-*-sco* | *-*-cygwin*) 
202                 ;;
203         *) 
204                 mach_add_setjmp=true
205                 ;;
206         esac
207         ;;
208   ia64*)
209         ;;
210   iq2000)
211         machine_dir=iq2000
212         ;;
213   lm32)
214         machine_dir=lm32
215         ;;
216   m32c)
217         machine_dir=m32c        
218         newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED -DSMALL_MEMORY"
219         ;;
221   m32r*)
222         machine_dir=m32r
223         ;;
225   m68hc11|m6811|m68hc12|m6812)
226         machine_dir=m68hc11
227         newlib_cflags="-DPREFER_SIZE_OVER_SPEED -Os -mrelax"
228         CFLAGS="-g -Os"
229         ;;
230   
231   m68*)
232         machine_dir=m68k
233         newlib_cflags="${newlib_cflags} -DCOMPACT_CTYPE"
234         ;;
235   m88k)
236         machine_dir=m88k
237         newlib_cflags="${newlib_cflags} -m88000"
238         ;;
239   m88110)
240         machine_dir=m88k
241         newlib_cflags="${newlib_cflags} -m88110"
242         ;;
243   mcore)
244         ;;
245   microblaze*)
246         machine_dir=microblaze
247         ;;
248   mep)
249         machine_dir=mep
250         ;;
251   mips*)
252         machine_dir=mips
253         libm_machine_dir=mips
254         ;;
255   mmix)
256         ;;
257   mn10200)
258         machine_dir=mn10200
259         ;;
260   mn10300)
261         default_newlib_io_long_long="yes"
262         machine_dir=mn10300
263         ;;
264   moxie)
265         machine_dir=moxie
266         ;;
267   msp430*)
268         newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED -DSMALL_MEMORY"
269         newlib_cflags="${newlib_cflags} -ffunction-sections -fdata-sections "
270         newlib_cflags="${newlib_cflags} -mOs "
271         newlib_cflags="${newlib_cflags} -mhwmult=none "
272         machine_dir=msp430
273         default_newlib_nano_malloc="yes"
274         ;;
275   mt*)
276         machine_dir=mt
277         ;;
278   nds32*)
279         machine_dir=nds32
280         libm_machine_dir=nds32
281         newlib_cflags="${newlib_cflags} -ffunction-sections -fdata-sections"
282         newlib_cflags="${newlib_cflags} -DHAVE_RENAME"
283         ;;
284   nios2*)
285         machine_dir=nios2
286         ;;
287   nvptx*)
288         machine_dir=nvptx
289         newlib_cflags="${newlib_cflags} -DCLOCK_PROVIDED -DMALLOC_PROVIDED"
290         ;;
291   or1k*|or1knd*)
292         machine_dir=or1k
293         have_init_fini=no
294         ;;
295   powerpc*)
296         machine_dir=powerpc
297         libm_machine_dir=powerpc
298         ;;
299   pru*)
300         newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED"
301         newlib_cflags="${newlib_cflags} -DNO_EXEC"
302         newlib_cflags="${newlib_cflags} -DSMALL_MEMORY"
303         newlib_cflags="${newlib_cflags} -ffunction-sections -fdata-sections "
304         default_newlib_nano_malloc="yes"
305         default_newlib_atexit_dynamic_alloc="no"
306         machine_dir=pru
307         libm_machine_dir=pru
308         ;;
309   riscv*)
310         libm_machine_dir=riscv
311         machine_dir=riscv
312         newlib_cflags="${newlib_cflags} -DHAVE_NANOSLEEP"
313         default_newlib_atexit_dynamic_alloc="no"
314         have_init_fini=no
315         ;;
316   rl78)
317         machine_dir=rl78
318         newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED -DSMALL_MEMORY"
319         newlib_cflags="${newlib_cflags} -ffunction-sections -fdata-sections "
320         ;;
321   rx)
322         machine_dir=rx
323         default_newlib_io_long_long="yes"
324         newlib_cflags="${newlib_cflags} -ffunction-sections -fdata-sections "
325         ;;
326   sh | sh64)
327         machine_dir=sh
328         ;;
329   sparc*)
330         libm_machine_dir=sparc
331         machine_dir=sparc
332         # FIXME: Might wish to make MALLOC_ALIGNMENT more generic.
333         newlib_cflags="${newlib_cflags} -DMALLOC_ALIGNMENT=8"
334         ;;
335   tic4x|c4x)
336         machine_dir=tic4x
337         ;;
338   tic6x)
339         machine_dir=tic6x
340         ;;
341   tic80*)
342         machine_dir=tic80
343         ;;
344   v70)
345         ;;
346   v810)
347         ;;
348   v850*)
349         machine_dir=v850
350         newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED "
351         ;;
352   visium)
353         machine_dir=visium
354         ;;
355   w65*)
356         machine_dir=w65
357         ;;
358   x86_64)
359         machine_dir=x86_64
360         libm_machine_dir=x86_64
361         shared_machine_dir=shared_x86
362         ;;
363   xc16x*)
364         machine_dir=xc16x
365         ;;
366   xstormy16)
367         machine_dir=xstormy16
368         newlib_cflags="${newlib_cflags} -DMALLOC_PROVIDED"
369         newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED"
370         ;;
371   xtensa)
372         libm_machine_dir=xtensa
373         machine_dir=xtensa
374         newlib_cflags="${newlib_cflags} -mlongcalls"
375         default_newlib_atexit_dynamic_alloc="no"
376         have_init_fini=no
377         ;;
378   z8k)
379         machine_dir=z8k
380         ;;
381   spu)
382         stdio_dir=
383         libm_machine_dir=spu
384         machine_dir=spu
385         newlib_cflags="${newlib_cflags} -D_POSIX_MODE"
386         newlib_cflags="${newlib_cflags} -DREENTRANT_SYSCALLS_PROVIDED"
387         newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES"
388         newlib_cflags="${newlib_cflags} -ffunction-sections -fdata-sections "
389         ;;
390   *)
391         echo '***' "Newlib does not support CPU ${host_cpu}" 1>&2
392         exit 1
393         ;;
394 esac
396 # Disable thread support if requested.
398 if [ "${newlib_multithread}" = "no" ] ; then
399         newlib_cflags="${newlib_cflags} -D__SINGLE_THREAD__"
402 # Disable syscall support if requested.
404 if [ "${newlib_may_supply_syscalls}" = "no" ] ; then
405         newlib_cflags="${newlib_cflags} -D__NO_SYSCALLS__"
408 # Enable multibyte support if requested or it is defaulted
409 # for target.
411 if [ "x${newlib_mb}" = "x" ]; then
412         case "${host}" in
413           *-*-cygwin*)
414                 newlib_mb=yes
415                 ;;
416         esac
419 # Disable printf/scanf floating-point support if requested.
421 if [ "${newlib_io_float}" = "no" ] ; then
422         newlib_cflags="${newlib_cflags} -DNO_FLOATING_POINT"
425 # Get the source directories to use for the host.  unix_dir is set
426 # to unix to get some standard Unix routines.  posix_dir is set to get some
427 # standard Posix routines.  sys_dir should supply system dependent routines
428 # including crt0.
429 # THIS TABLE IS ALPHA SORTED.  KEEP IT THAT WAY.
431 case "${host}" in
432   *-*-cygwin*)
433         posix_dir=posix
434         xdr_dir=xdr
435         ;;
436   *-*-netware*)
437         signal_dir=
438         sys_dir=netware
439         ;;
440   *-*-rtems*)                   # generic RTEMS support
441         sys_dir=rtems
442         posix_dir=posix
443         unix_dir=unix
444         ;;
445   *-*-tirtos*)
446         sys_dir=tirtos
447         have_crt0="no"
448         ;;
449   *-esp-*)
450         sys_dir=esp
451     have_crt0="no"
452         posix_dir=posix
453         newlib_cflags="${newlib_cflags} -D_NO_GLOB -D_NO_EXECVE -D_NO_GETLOGIN -D_NO_GETPWENT -D_NO_GETUT"
454         newlib_cflags="${newlib_cflags} -D_NO_GETPASS -D_NO_SIGSET -D_NO_WORDEXP -D_NO_POPEN -D_NO_POSIX_SPAWN"
455         newlib_cflags="${newlib_cflags} -DHAVE_FCNTL -DHAVE_BLKSIZE -DHAVE_OPENDIR -DHAVE_RENAME"
456         newlib_cflags="${newlib_cflags} -DGETREENT_PROVIDED -DSIGNAL_PROVIDED"
457         ;;
458   a29k-*-*)
459         sys_dir=a29khif
460         signal_dir=
461         ;;
462   amdgcn*)
463         sys_dir=amdgcn
464         have_crt0="no"
465         ;;
466   arm*-*-*)
467         sys_dir=arm
468         if [ "x${newlib_may_supply_syscalls}" = "xno" ] ; then
469           have_crt0="no"
470         fi
471         ;;
472   bfin-*-*)
473         sys_dir=
474         ;;
475   cr16-*-*)
476         sys_dir=
477         ;;
478   crx*)
479         sys_dir=
480         ;;
481   d10v*)
482         sys_dir=d10v
483         ;;
484   d30v*)
485         sys_dir=
486         ;;
487   epiphany-*-*)
488         sys_dir=epiphany
489         # crt0 is provided by libgloss.
490         have_crt0="no"
491         ;;
492   frv*)
493         sys_dir=
494         ;;
495   ft32*)
496         sys_dir=
497         ;;
498   h8300-*-hms*)
499         sys_dir=h8300hms
500         ;;
501   h8300-*-elf*)
502         sys_dir=h8300hms
503         ;;
504   h8300-*-coff*)
505         sys_dir=h8300hms
506         ;;
507   h8300-*-xray*)
508         sys_dir=h8300xray
509         ;;
510   h8500-*-hms*)
511         sys_dir=h8500hms
512         ;;
513   h8500-*-elf*)
514         sys_dir=h8500hms
515         ;;
516   i[34567]86-*-rdos*)
517         sys_dir=rdos
518         newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES"
519         newlib_cflags="${newlib_cflags} -D_I386MACH_DISABLE_HW_INTERRUPTS"
520         ;;
521   i[34567]86-*-sco*)
522         sys_dir=sysvi386
523         unix_dir=unix
524         ;;
526   m68hc11-*-*|m6811-*-*|m6812-*-*|m68hc12-*-*)
527         ;;
529   m68k-sun-sunos*)
530         unix_dir=unix
531         ;;
532   m8*-bug-*)
533         sys_dir=m88kbug
534         ;;
535   mep-*-*)
536         default_newlib_io_long_long="yes"
537         newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES"
538         ;;
539   microblaze*-*-*)
540         machine_dir=microblaze
541         ;;
542   mmix-knuth-mmixware)
543         sys_dir=mmixware
544         ;;
545   moxie*)
546         sys_dir=
547         ;;
548   nios2*)
549         sys_dir=
550         ;;
551   or1k-*-elf | or1knd-*-elf)
552         sys_dir=or1k
553         newlib_cflags="${newlib_cflags} -DREENTRANT_SYSCALLS_PROVIDED "
554         have_crt0="no"
555         ;;
556   powerpcle-*-pe)
557         posix_dir=posix
558         ;;
559   sh*-*)
560         sys_dir=sh
561         ;;
562   spu-*-*)
563         default_newlib_io_long_long="yes"
564         default_newlib_atexit_dynamic_alloc="no"
565         ;;
566   tic6x*)
567         newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES"
568         have_crt0="no"
569         ;;
570   tic80*)
571         sys_dir=tic80
572         ;;
573   v70-nec-*)
574         sys_dir=sysvnecv70
575         ;;
576   v810-*-*)
577         sys_dir=sysnec810
578         ;;
579   v850*-*-*)
580         sys_dir=sysnecv850
581         if [ "x${newlib_may_supply_syscalls}" = "xno" ] ; then
582           have_crt0="no"
583         fi
584         ;;
585   visium-*-*)
586         sys_dir=
587         ;;
588   w65-*-*)
589         sys_dir=w65
590         ;;
591   z8k-*-coff)
592         sys_dir=z8ksim
593         ;;
594 esac
596 # Host specific flag settings -- usually for features that are not
597 # general enough or broad enough to be handled above.
598 # THIS TABLE IS ALPHA SORTED.  KEEP IT THAT WAY.
600 case "${host}" in
601   *-*-cygwin*)
602         test -z "$cygwin_srcdir" && cygwin_srcdir="${abs_newlib_basedir}/../winsup/cygwin"
603         export cygwin_srcdir
604         default_newlib_io_c99_formats="yes"
605         default_newlib_io_long_long="yes"
606         default_newlib_io_long_double="yes"
607         default_newlib_io_pos_args="yes"
608         CC="${CC} -I${cygwin_srcdir}/include"
609         newlib_cflags="${newlib_cflags} -DHAVE_OPENDIR -DHAVE_RENAME -DGETREENT_PROVIDED -DSIGNAL_PROVIDED -DHAVE_BLKSIZE -DHAVE_FCNTL -DMALLOC_PROVIDED -DHAVE_CHDIR -DHAVE_FCHDIR"
610         syscall_dir=syscalls
611         ;;
612 # RTEMS supplies its own versions of some routines:
613 #       malloc()            (reentrant version)
614 #       exit()              RTEMS has a "global" reent to flush
615 #       signal()/raise()    RTEMS has its own including pthread signals
616 #       _XYZ_r()            RTEMS has its own reentrant routines
618 #  NOTE: When newlib malloc uses a semaphore, RTEMS will switch to that.
619   *-*-rtems*)
620         default_newlib_io_long_long="yes"
621         default_newlib_io_c99_formats="yes"
622         newlib_cflags="${newlib_cflags} -ffunction-sections -fdata-sections "
623 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"
624         # turn off unsupported items in posix directory 
625         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"
626         ;;
627 # VxWorks supplies its own version of malloc, and the newlib one
628 # doesn't work because VxWorks does not have sbrk.
629   *-wrs-vxworks*)
630         newlib_cflags="${newlib_cflags} -DMALLOC_PROVIDED -DMISSING_SYSCALL_NAMES -DHAVE_FCNTL"
631         ;;
632 # TIRTOS supplies its own version of malloc
633   *-*-tirtos*)
634         newlib_cflags="${newlib_cflags} -D__DYNAMIC_REENT__ -DMALLOC_PROVIDED"
635         ;;
636 # UDI doesn't have exec, so system() should fail the right way
637   a29k-amd-udi)
638         newlib_cflags="${newlib_cflags} -DNO_EXEC"
639         syscall_dir=syscalls
640         ;;
641   aarch64*-*-*)
642         default_newlib_io_long_long="yes"
643         syscall_dir=syscalls
644         ;;
645   arc*-*-*)
646         syscall_dir=syscalls
647         default_newlib_io_long_long="yes"
648         ;;
649   arm*-*-pe)
650         syscall_dir=syscalls
651         newlib_cflags="${newlib_cflags} -DHAVE_SYSCONF_PAGESIZE"
652         ;;
653   arm*-*-*)
654         syscall_dir=syscalls
655 # If newlib is supplying syscalls, select which debug protocol is being used.
656 # ARM_RDP_MONITOR selects the Demon monitor.
657 # ARM_RDI_MONITOR selects the Angel monitor.
658 # If neither are defined, then hard coded defaults will be used
659 # to create the program's environment.
660 # If --disable-newlib-supplied-syscalls is specified, then the end-user
661 # may specify the protocol via gcc spec files supplied by libgloss.
662         if [ "x${newlib_may_supply_syscalls}" = "xyes" ] ; then
663 #         newlib_cflags="${newlib_cflags} -DARM_RDP_MONITOR"
664           newlib_cflags="${newlib_cflags} -DARM_RDI_MONITOR"
665         fi
666         newlib_cflags="${newlib_cflags} -DHAVE_SYSCONF_PAGESIZE"
667         ;;
668   avr*)
669         newlib_cflags="${newlib_cflags} -DNO_EXEC -DSMALL_MEMORY -DMISSING_SYSCALL_NAMES"
670         ;;
671   bfin*)
672         syscall_dir=syscalls
673         ;;
674   cris-*-* | crisv32-*-*)
675         default_newlib_io_long_long="yes"
676         newlib_cflags="${newlib_cflags} -DHAVE_RENAME -D_USE_WRITE -DCOMPACT_CTYPE"
677         syscall_dir=syscalls
678         ;;
679   cr16-*-*)
680         syscall_dir=syscalls
681         ;;
682   crx-*-*)
683         newlib_cflags="${newlib_cflags} -DHAVE_RENAME -DMISSING_SYSCALL_NAMES"
684         syscall_dir=
685         ;;
686   csky*)
687         newlib_cflags="${newlib_cflags} -DHAVE_RENAME -DHAVE_SYSTEM -DMISSING_SYSCALL_NAMES"
688         syscall_dir=
689         ;;
690   d10v*)
691         newlib_cflags="${newlib_cflags} -DSMALL_MEMORY"
692         syscall_dir=syscalls
693         ;;
694   d30v*)
695         newlib_cflags="${newlib_cflags} -DABORT_MESSAGE -DSMALL_MEMORY -DMISSING_SYSCALL_NAMES"
696         syscall_dir=
697         ;;
698   epiphany*)
699         syscall_dir=syscalls
700         newlib_cflags="${newlib_cflags} -DSIGNAL_PROVIDED"
701         ;;
702   fido-*-elf)
703         newlib_cflags="${newlib_cflags} -DHAVE_RENAME -DHAVE_SYSTEM -DMISSING_SYSCALL_NAMES"
704         syscall_dir=
705         ;;
706   fr30-*-*)
707         syscall_dir=syscalls
708         ;;
709   frv-*-*)
710         syscall_dir=syscalls
711         default_newlib_io_long_long="yes"
712         ;;
713   ft32*-*-*)
714         syscall_dir=syscalls
715         ;;
716   h8300*-*-*)
717         syscall_dir=syscalls    
718         default_newlib_io_long_long="yes"
719         newlib_cflags="${newlib_cflags} -DSMALL_DTOA -DSMALL_MEMORY"
720         # Simulator only extensions for H8300.
721         # Uncomment the next line to enable them.
722         # newlib_cflags="${newlib_cflags} -D__SIMULATOR__"
723         ;;      
724   h8500-*-*)
725         syscall_dir=syscalls    
726         newlib_cflags="${newlib_cflags} -DSMALL_DTOA -DSMALL_MEMORY"
727         ;;      
728   i[34567]86-*-sco*)
729         newlib_cflags="${newlib_cflags} -DSIGNAL_PROVIDED -DHAVE_FCNTL"
730         ;;
731   i[34567]86-*-netware*)
732         newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES -DNO_EXEC -DABORT_PROVIDED -DCLOCK_PROVIDED -DMALLOC_PROVIDED -DHAVE_FCNTL"
733         ;;
734   i[3-7]86-*-elfiamcu)
735         newlib_cflags="${newlib_cflags} -Os -DPREFER_SIZE_OVER_SPEED -ffunction-sections -fomit-frame-pointer -DREENTRANT_SYSCALL_PROVIDED"
736         if [ "${newlib_multithread}" = "no" ] ; then
737                 newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES"
738         else
739                 syscall_dir=syscalls
740                 newlib_cflags="${newlib_cflags} -D__DYNAMIC_REENT__"
741         fi
742         ;;
743   iq2000*)
744         syscall_dir=syscalls
745         default_newlib_io_long_long="yes"
746         ;;
747   lm32-*-*)
748         syscall_dir=syscalls
749         ;;
750   m32c-*-*)
751         default_newlib_io_long_long="yes"
752         newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES -DABORT_PROVIDED"
753         syscall_dir=
754         ;;
755   m32r-*-*)
756         # Pass -msdata=sdata so _impure_ptr goes in .sdata.
757         # We don't generate sda relocs however for upward compatibility.
758         # FIXME: This is necessary because the default multilib doesn't
759         # use --print-multi-lib.
760         newlib_cflags="${newlib_cflags} -msdata=sdata"
761         syscall_dir=syscalls
762         ;;
763   m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*)
764         newlib_cflags="${newlib_cflags} -DNO_EXEC -DABORT_PROVIDED -DSMALL_MEMORY -DMISSING_SYSCALL_NAMES"
765         ;;
766   m68k-unknown-elf)
767         newlib_cflags="${newlib_cflags} -DHAVE_RENAME -DHAVE_SYSTEM -DMISSING_SYSCALL_NAMES"
768         syscall_dir=
769         ;;
770   mcore-*-*)
771         syscall_dir=syscalls
772         ;;
773   microblaze*-*-*)
774         default_newlib_io_long_long="yes"
775         newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES -DSMALL_MEMORY -D_REENT_SMALL"
776         ;;
777   mips64vr*-*-*)
778         default_newlib_io_long_long="yes"
779         newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES"
780         ;;
781   mips*-*-elf*)
782         default_newlib_io_long_long="yes"
783         newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES"
784         ;;
785   mmix-*)
786         syscall_dir=syscalls
787         # We need every symbol 32-bit aligned, so the invalid
788         # construct with attribute ((alias ("_ctype_b+127"))) breaks.
789         newlib_cflags="${newlib_cflags} -DCOMPACT_CTYPE"
790         ;;
791   mn10?00-*-*)
792         syscall_dir=syscalls
793         ;;
794   moxie-*-elf* | moxie-*-rtems*)
795         syscall_dir=syscalls
796         default_newlib_io_long_long="yes"
797         ;;
798   moxie-*-moxiebox)
799         syscall_dir=syscalls
800         default_newlib_io_long_long="yes"
801         newlib_cflags="${newlib_cflags} -Os -DPREFER_SIZE_OVER_SPEED -DSMALL_MEMORY"
802         ;;
803   nios2*)
804         syscall_dir=
805         newlib_cflags="${newlib_cflags} -DHAVE_RENAME -DHAVE_SYSTEM -DMISSING_SYSCALL_NAMES"
806         ;;
807   nds32*)
808         syscall_dir=syscalls
809         ;;
810   or1k*|or1knd*)
811         syscall_dir=syscalls
812         ;;
813   powerpc*-*-eabialtivec*)
814         default_newlib_io_long_long="yes"
815         newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES"
816         ;;
817   powerpc*-*-eabispe*)
818         default_newlib_io_long_long="yes"
819         newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES"
820         ;;
821   powerpc*-*-eabi* | \
822   powerpc*-*-elf* | \
823   powerpc*-*-linux* | \
824   powerpc*-*-rtem* | \
825   powerpc*-*-sysv* | \
826   powerpc*-*-solaris*)
827         default_newlib_io_long_long="yes"
828         newlib_cflags="${newlib_cflags} -mrelocatable-lib -mno-eabi -mstrict-align -DMISSING_SYSCALL_NAMES"
829         ;;
830   powerpcle-*-pe)
831         newlib_cflags="${newlib_cflags} -DHAVE_OPENDIR -DHAVE_RENAME -DHAVE_FCNTL -D_NO_POSIX_SPAWN"
832         syscall_dir=syscalls
833         ;;
834   pru*)
835         syscall_dir=syscalls
836         newlib_cflags="${newlib_cflags} -DSMALL_MEMORY -D_REENT_SMALL"
837         ;;
838   riscv*-*-*)
839         syscall_dir=syscalls
840         ;;
841   sh*-*-*)
842         default_newlib_io_long_long="yes"
843         syscall_dir=syscalls
844         ;;
845   sparc-sun-sunos*)
846         newlib_cflags="${newlib_cflags} -DSIGNAL_PROVIDED"
847         ;;
848   sparc64-*-*)
849         newlib_cflags="${newlib_cflags} -DREENTRANT_SYSCALLS_PROVIDED -DHAVE_BLKSIZE -DHAVE_FCNTL"
850         # This either belongs elsewhere or nowhere. But I need *something*,
851         # so for now it's here ...
852         case "${host_os}" in
853           aoutv8 | *32p)
854                 newlib_cflags="${newlib_cflags} -DTARGET_PTR_SIZE=32" ;;
855           *)
856                 newlib_cflags="${newlib_cflags} -DTARGET_PTR_SIZE=64" ;;
857         esac
858         ;;
859   tic6x*)
860         syscall_dir=
861         newlib_cflags="${newlib_cflags} -DCLOCK_PROVIDED"
862         ;;
863   tic80*)
864         syscall_dir=syscalls
865         ;;
866   v850*-*-*)
867         syscall_dir=syscalls
868         ;;
869   visium-*-*)
870         newlib_cflags="${newlib_cflags} -DCLOCK_PROVIDED -DHAVE_SYSTEM -DMISSING_SYSCALL_NAMES"
871         syscall_dir=
872         ;;
873   w65-*-*)
874         syscall_dir=syscalls    
875         newlib_cflags="${newlib_cflags} -DSMALL_DTOA -DSMALL_MEMORY"
876         ;;
877   xc16x-*)
878           syscall_dir=syscalls
879         ;;
880   xstormy16-*-*)
881         syscall_dir=syscalls
882         ;;
883   xtensa*-*-* | xtensa*-*)
884         syscall_dir=syscalls
885         ;;
886   z8k-*-*)
887         syscall_dir=syscalls
888         ;;
889   *)
890         newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES"
891         syscall_dir=
892         ;;
893 esac
895 # Use defaults for certain settings if not specified by user
897 # Enable C99 format support in I/O routines if requested.
898 if [ "x${newlib_io_c99_formats}" = "x" ]; then
899         if [ ${default_newlib_io_c99_formats} = "yes" ]; then
900                 newlib_io_c99_formats="yes";
901         fi
904 # Enable long long support in I/O routines if requested.
905 if [ "x${newlib_io_long_long}" = "x" ]; then
906         if [ ${default_newlib_io_long_long} = "yes" ]; then
907                 newlib_io_long_long="yes";
908         fi
911 # Enable long double support in I/O routines if requested.
912 if [ "x${newlib_io_long_double}" = "x" ]; then
913         if [ ${default_newlib_io_long_double} = "yes" ]; then
914                 newlib_io_long_double="yes";
915         fi
918 # Enable printf positional argument support if requested.
919 if [ "x${newlib_io_pos_args}" = "x" ]; then
920         if [ ${default_newlib_io_pos_args} = "yes" ]; then
921                 newlib_io_pos_args="yes";
922         fi
925 # Disable atexit dynamic allocation if requested.
926 if [ "x${newlib_atexit_dynamic_alloc}" = "x" ]; then
927         if [ ${default_newlib_atexit_dynamic_alloc} = "yes" ]; then
928                 newlib_atexit_dynamic_alloc="yes"; 
929         fi
932 # Enable nano-malloc if requested.
933 if [ "x${newlib_nano_malloc}" = "x" ]; then
934         if [ ${default_newlib_nano_malloc} = "yes" ]; then
935                 newlib_nano_malloc="yes";
936         fi
939 # Enable _REENT_CHECK macro memory allocation verification.
940 if [ "x${newlib_reent_check_verify}" = "x" ]; then
941         if [ ${default_newlib_reent_check_verify} = "yes" ]; then
942                 newlib_reent_check_verify="yes";
943         fi
946 # Remove rpc headers if xdr_dir not specified
947 if [ "x${xdr_dir}" = "x" ]; then
948         noinclude="${noinclude} rpc/types.h rpc/xdr.h"
951 # Have init/finit if not explicitly specified otherwise
952 if [ "x${have_init_fini}" != "xno" ]; then
953         newlib_cflags="${newlib_cflags} -D_HAVE_INIT_FINI"
956 if test -z "${have_crt0}" && test -n "${sys_dir}"; then
957   have_crt0="yes"
960 # Target-specific defaults
961 case "${host_cpu}" in
962   nvptx*)
963         if [[ -z ${newlib_global_stdio_streams} ]]; then
964                 newlib_global_stdio_streams="yes";
965         fi
966         ;;
967 esac