1169689Skan/* Target independent definitions for LynxOS.
2169689Skan   Copyright (C) 1993, 1994, 1995, 1996, 1999, 2000, 2002, 2003, 2004
3117395Skan   Free Software Foundation, Inc.
418334Speter
5132718SkanThis file is part of GCC.
618334Speter
7132718SkanGCC is free software; you can redistribute it and/or modify
818334Speterit under the terms of the GNU General Public License as published by
918334Speterthe Free Software Foundation; either version 2, or (at your option)
1018334Speterany later version.
1118334Speter
12132718SkanGCC is distributed in the hope that it will be useful,
1318334Speterbut WITHOUT ANY WARRANTY; without even the implied warranty of
1418334SpeterMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1518334SpeterGNU General Public License for more details.
1618334Speter
1718334SpeterYou should have received a copy of the GNU General Public License
18132718Skanalong with GCC; see the file COPYING.  If not, write to
19169689Skanthe Free Software Foundation, 51 Franklin Street, Fifth Floor,
20169689SkanBoston, MA 02110-1301, USA.  */
2118334Speter
22169689Skan/* In this file we set up defaults that can be chosen by
23169689Skan   <target>/lynx.h files.  A target-specific lynx.h file can decide
24169689Skan   either to define and override these definitions or to use them by
25169689Skan   ensuring they are undefined at this point.  If we were to #undef
26169689Skan   them here we might accidentally disable some target-specific
27169689Skan   defines.  */
2818334Speter
29169689Skan#ifndef EXTRA_OS_LYNX_TARGET_SPECS
30169689Skan# define EXTRA_OS_LYNX_TARGET_SPECS
31169689Skan#endif
3218334Speter
33169689Skan#ifndef EXTRA_OS_LYNX_SPECS
34169689Skan# define EXTRA_OS_LYNX_SPECS \
35169689Skan  { "cpp_os_lynx", CPP_OS_LYNX_SPEC }, \
36169689Skan  { "lib_os_lynx", LIB_OS_LYNX_SPEC }, \
37169689Skan  { "link_os_lynx", LINK_OS_LYNX_SPEC }, \
38169689Skan  { "startfile_os_lynx", STARTFILE_OS_LYNX_SPEC }, \
39169689Skan  { "endfile_os_lynx", ENDFILE_OS_LYNX_SPEC }, \
40169689Skan  EXTRA_OS_LYNX_TARGET_SPECS
41169689Skan#endif
4218334Speter
43169689Skan#ifndef SUBTARGET_EXTRA_SPECS
44169689Skan# define SUBTARGET_EXTRA_SPECS EXTRA_OS_LYNX_SPECS
45169689Skan#endif
4618334Speter
47169689Skan#ifndef CPP_SPEC
48169689Skan# define CPP_SPEC "%(cpp_cpu) %(cpp_os_lynx)"
49169689Skan#endif
5018334Speter
51169689Skan#ifndef LIB_SPEC
52169689Skan# define LIB_SPEC "%(lib_os_lynx)"
53169689Skan#endif
5418334Speter
55169689Skan#ifndef LINK_SPEC
56169689Skan# define LINK_SPEC "%(link_os_lynx)"
57169689Skan#endif
5818334Speter
59169689Skan#ifndef STARTFILE_SPEC
60169689Skan# define STARTFILE_SPEC "%(startfile_os_lynx)"
61169689Skan#endif
6218334Speter
63169689Skan#ifndef ENDFILE_SPEC
64169689Skan# define ENDFILE_SPEC "%(endfile_os_lynx)"
65169689Skan#endif
6618334Speter
67169689Skan#ifndef CPP_OS_LYNX_SPEC
68169689Skan# define CPP_OS_LYNX_SPEC \
69169689Skan"%{mthreads: \
70169689Skan   %{mlegacy-threads: \
71169689Skan     %ecannot use mthreads and mlegacy-threads together}} \
72169689Skan %{mthreads: -D_MULTITHREADED} \
73169689Skan %{mlegacy-threads: -D_THREADS_POSIX4ad4} \
74169689Skan -Asystem=lynx -Asystem=unix -D__Lynx__ -D__unix__"
75169689Skan#endif
7618334Speter
77169689Skan#ifndef LIB_OS_LYNX_SPEC
78169689Skan# define LIB_OS_LYNX_SPEC \
79169689Skan"%{mlegacy-threads:-lposix-pre1c} -lm -lc"
80169689Skan#endif
8118334Speter
82169689Skan/* We link static executables for LynxOS by default unless -mshared is
83169689Skan   used when linking an executable.  Along the same line, we link to
84169689Skan   shared libraries when linking a shared object by default unless
85169689Skan   -static is used.
8618334Speter
87169689Skan   We have to pass in our -L options here otherwise the translated
88169689Skan   startfile directories (%D) will take priority over this.
89169689Skan   Furthermore since we have to pass in -L options here we have to
90169689Skan   make sure that -L options provided by the user take priority over
91169689Skan   everything we specify.  */
9218334Speter
93169689Skan#ifndef LINK_OS_LYNX_SPEC
94169689Skan# define LINK_OS_LYNX_SPEC \
95169689Skan"%{shared} %{static} \
96169689Skan %{mshared: %{static: %ecannot use mshared and static together}} \
97169689Skan %{!mshared: %{!shared: %{!static: -static}}} \
98169689Skan %{L*} \
99169689Skan %{mthreads: \
100169689Skan   %{mshared: -L/lib/thread/shlib -rpath /lib/thread/shlib} \
101169689Skan   %{shared: \
102169689Skan     %{!static: -L/lib/thread/shlib -rpath /lib/thread/shlib} \
103169689Skan   %{!mshared: -L/lib/thread}} \
104169689Skan   %{shared: %{static: -L/lib/thread}}} \
105169689Skan %{!mthreads: \
106169689Skan   %{mshared: -L/lib/shlib -rpath /lib/shlib} \
107169689Skan   %{shared: -L/lib/shlib -rpath /lib/shlib}} \
108169689Skan %{mlegacy-threads:-lposix-pre1c} -lm -lc"
109169689Skan#endif
11018334Speter
111169689Skan#ifndef STARTFILE_OS_LYNX_SPEC
112169689Skan# define STARTFILE_OS_LYNX_SPEC \
113169689Skan"%{!shared: \
114169689Skan   %{!mthreads: \
115169689Skan     %{p:gcrt1.o%s} %{pg:gcrt1.o%s} \
116169689Skan     %{!p:%{!pg:crt1.o%s}}} \
117169689Skan   %{mthreads: \
118169689Skan     %{p:thread/gcrt1.o%s} %{pg:thread/gcrt1.o%s} \
119169689Skan     %{!p:%{!pg:thread/crt1.o%s }}}}\
120169689Skan %{mthreads: thread/crti.o%s} %{!mthreads: crti.o%s} \
121169689Skan %{!shared: crtbegin.o%s} \
122169689Skan %{shared: crtbeginS.o%s}"
123169689Skan#endif
12418334Speter
125169689Skan#ifndef ENDFILE_OS_LYNX_SPEC
126169689Skan# define ENDFILE_OS_LYNX_SPEC \
127169689Skan"%{!shared: crtend.o%s} \
128169689Skan %{shared: crtendS.o%s} \
129169689Skan %{mthreads: thread/crtn.o%s} %{!mthreads: crtn.o%s}"
130169689Skan#endif
13118334Speter
132169689Skan/* Define the actual types of some ANSI-mandated types.  */
13318334Speter
134169689Skan#ifndef SIZE_TYPE
135169689Skan# define SIZE_TYPE "unsigned int"
136169689Skan#endif
13718334Speter
138169689Skan#ifndef  PTRDIFF_TYPE
139169689Skan# define PTRDIFF_TYPE "int"
140169689Skan#endif
14118334Speter
142169689Skan#ifndef  WCHAR_TYPE
143169689Skan# define WCHAR_TYPE "long int"
144169689Skan#endif
14518334Speter
146169689Skan#ifndef  WCHAR_TYPE_SIZE
147169689Skan# define WCHAR_TYPE_SIZE BITS_PER_WORD
148169689Skan#endif
14918334Speter
150169689Skan/* Define ASM_OUTPUT_ALIGN to use the .balign directive rather that
151169689Skan   the .align directive with GAS.  */
15218334Speter
153169689Skan#ifndef ASM_OUTPUT_ALIGN
154169689Skan# define ASM_OUTPUT_ALIGN(FILE, LOG) 			\
155169689Skan  do							\
156169689Skan    {							\
157169689Skan      if ((LOG) != 0)					\
158169689Skan	fprintf ((FILE), "\t.balign %d\n", 1 << (LOG));	\
159169689Skan    }							\
160169689Skan  while (0)
161169689Skan#endif
16218334Speter
163169689Skan/* Keep the *_DEBUGGING_INFO defines from elfos.h except that stabs is
164169689Skan   the default on LynxOS.  */
16518334Speter
166169689Skan#ifndef PREFERRED_DEBUGGING_TYPE
167169689Skan# define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
168169689Skan#endif
16918334Speter
170169689Skan/* We have C++ support in our system headers.  */
17118334Speter
172169689Skan#ifndef NO_IMPLICIT_EXTERN_C
173169689Skan# define NO_IMPLICIT_EXTERN_C
174169689Skan#endif
17518334Speter
176169689Skan#ifndef TARGET_POSIX_IO
177169689Skan# define TARGET_POSIX_IO
178169689Skan#endif
179