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