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