OSDN Git Service

Delete remaining references to sparc little-endian support.
[pf3gnuchains/gcc-fork.git] / gcc / config / netbsd.h
1 /* Base configuration file for all NetBSD targets.
2    Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
3    2007, 2009, 2010, 2011 Free Software Foundation, Inc.
4
5 This file is part of GCC.
6
7 GCC is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3, or (at your option)
10 any later version.
11
12 GCC is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with GCC; see the file COPYING3.  If not see
19 <http://www.gnu.org/licenses/>.  */
20
21 /* TARGET_OS_CPP_BUILTINS() common to all NetBSD targets.  */
22 #define NETBSD_OS_CPP_BUILTINS_COMMON()         \
23   do                                            \
24     {                                           \
25       builtin_define ("__NetBSD__");            \
26       builtin_define ("__unix__");              \
27       builtin_assert ("system=bsd");            \
28       builtin_assert ("system=unix");           \
29       builtin_assert ("system=NetBSD");         \
30     }                                           \
31   while (0)
32
33 /* CPP_SPEC parts common to all NetBSD targets.  */
34 #define NETBSD_CPP_SPEC                         \
35   "%{posix:-D_POSIX_SOURCE} \
36    %{pthread:-D_REENTRANT -D_PTHREADS}"
37
38 /* NETBSD_NATIVE is defined when gcc is integrated into the NetBSD
39    source tree so it can be configured appropriately without using
40    the GNU configure/build mechanism.  */
41
42 #ifdef NETBSD_NATIVE
43
44 /* Look for the include files in the system-defined places.  */
45
46 #undef GPLUSPLUS_INCLUDE_DIR
47 #define GPLUSPLUS_INCLUDE_DIR "/usr/include/g++"
48
49 #undef GCC_INCLUDE_DIR
50 #define GCC_INCLUDE_DIR "/usr/include"
51
52 #undef INCLUDE_DEFAULTS
53 #define INCLUDE_DEFAULTS                        \
54   {                                             \
55     { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1 },     \
56     { GCC_INCLUDE_DIR, "GCC", 0, 0 },           \
57     { 0, 0, 0, 0 }                              \
58   }
59
60 /* Under NetBSD, the normal location of the compiler back ends is the
61    /usr/libexec directory.  */
62
63 #undef STANDARD_EXEC_PREFIX
64 #define STANDARD_EXEC_PREFIX            "/usr/libexec/"
65
66 /* Under NetBSD, the normal location of the various *crt*.o files is the
67    /usr/lib directory.  */
68
69 #undef STANDARD_STARTFILE_PREFIX
70 #define STANDARD_STARTFILE_PREFIX       "/usr/lib/"
71
72 #endif /* NETBSD_NATIVE */
73
74
75 /* Provide a LIB_SPEC appropriate for NetBSD.  Here we:
76
77    1. Select the appropriate set of libs, depending on whether we're
78       profiling.
79
80    2. Include the pthread library if -pthread is specified (only
81       if threads are enabled).
82
83    3. Include the posix library if -posix is specified.
84
85    FIXME: Could eliminate the duplication here if we were allowed to
86    use string concatenation.  */
87
88 #ifdef NETBSD_ENABLE_PTHREADS
89 #define NETBSD_LIB_SPEC         \
90   "%{pthread:                   \
91      %{!p:                      \
92        %{!pg:-lpthread}}        \
93      %{p:-lpthread_p}           \
94      %{pg:-lpthread_p}}         \
95    %{posix:                     \
96      %{!p:                      \
97        %{!pg:-lposix}}          \
98      %{p:-lposix_p}             \
99      %{pg:-lposix_p}}           \
100    %{!shared:                   \
101      %{!symbolic:               \
102        %{!p:                    \
103          %{!pg:-lc}}            \
104        %{p:-lc_p}               \
105        %{pg:-lc_p}}}"
106 #else
107 #define NETBSD_LIB_SPEC         \
108   "%{posix:                     \
109      %{!p:                      \
110        %{!pg:-lposix}}          \
111      %{p:-lposix_p}             \
112      %{pg:-lposix_p}}           \
113    %{!shared:                   \
114      %{!symbolic:               \
115        %{!p:                    \
116          %{!pg:-lc}}            \
117        %{p:-lc_p}               \
118        %{pg:-lc_p}}}"
119 #endif
120
121 #undef LIB_SPEC
122 #define LIB_SPEC NETBSD_LIB_SPEC
123
124 /* Provide a LIBGCC_SPEC appropriate for NetBSD.  We also want to exclude
125    libgcc with -symbolic.  */
126
127 #ifdef NETBSD_NATIVE
128 #define NETBSD_LIBGCC_SPEC      \
129   "%{!symbolic:                 \
130      %{!shared:                 \
131        %{!p:                    \
132          %{!pg: -lgcc}}}        \
133      %{shared: -lgcc_pic}       \
134      %{p: -lgcc_p}              \
135      %{pg: -lgcc_p}}"
136 #else
137 #define NETBSD_LIBGCC_SPEC "%{!shared:%{!symbolic: -lgcc}}"
138 #endif
139
140 #undef LIBGCC_SPEC
141 #define LIBGCC_SPEC NETBSD_LIBGCC_SPEC
142
143 /* When building shared libraries, the initialization and finalization 
144    functions for the library are .init and .fini respectively.  */
145
146 #define COLLECT_SHARED_INIT_FUNC(STREAM,FUNC)                           \
147   do {                                                                  \
148     fprintf ((STREAM), "void __init() __asm__ (\".init\");");           \
149     fprintf ((STREAM), "void __init() {\n\t%s();\n}\n", (FUNC));        \
150   } while (0)
151
152 #define COLLECT_SHARED_FINI_FUNC(STREAM,FUNC)                           \
153   do {                                                                  \
154     fprintf ((STREAM), "void __fini() __asm__ (\".fini\");");           \
155     fprintf ((STREAM), "void __fini() {\n\t%s();\n}\n", (FUNC));        \
156   } while (0)
157
158 #undef TARGET_POSIX_IO
159 #define TARGET_POSIX_IO
160
161 /* Don't assume anything about the header files.  */
162 #undef  NO_IMPLICIT_EXTERN_C
163 #define NO_IMPLICIT_EXTERN_C    1
164
165 /* Define some types that are the same on all NetBSD platforms,
166    making them agree with <machine/ansi.h>.  */
167
168 #undef WCHAR_TYPE
169 #define WCHAR_TYPE "int"
170
171 #undef WCHAR_TYPE_SIZE
172 #define WCHAR_TYPE_SIZE 32
173
174 #undef WINT_TYPE
175 #define WINT_TYPE "int"