OSDN Git Service

* builtins.def: Fix comment formatting.
[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
3    Free Software Foundation, Inc.
4
5 This file is part of GNU CC.
6
7 GNU CC 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 2, or (at your option)
10 any later version.
11
12 GNU CC 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 GNU CC; see the file COPYING.  If not, write to
19 the Free Software Foundation, 59 Temple Place - Suite 330,
20 Boston, MA 02111-1307, USA.  */
21
22 /* TARGET_OS_CPP_BUILTINS() common to all NetBSD targets.  */
23 #define NETBSD_OS_CPP_BUILTINS_COMMON()         \
24   do                                            \
25     {                                           \
26       builtin_define ("__NetBSD__");            \
27       builtin_assert ("system=unix");           \
28       builtin_assert ("system=NetBSD");         \
29     }                                           \
30   while (0)
31
32 /* TARGET_OS_CPP_BUILTINS() common to all LP64 NetBSD targets.  */
33 #define NETBSD_OS_CPP_BUILTINS_LP64()           \
34   do                                            \
35     {                                           \
36       builtin_define ("_LP64");                 \
37     }                                           \
38   while (0)
39
40 /* CPP_SPEC parts common to all NetBSD targets.  */
41 #define NETBSD_CPP_SPEC "%{posix:-D_POSIX_SOURCE}"
42
43 /* NETBSD_NATIVE is defined when gcc is integrated into the NetBSD
44    source tree so it can be configured appropriately without using
45    the GNU configure/build mechanism.  */
46
47 #ifdef NETBSD_NATIVE
48
49 /* Look for the include files in the system-defined places.  */
50
51 #undef GPLUSPLUS_INCLUDE_DIR
52 #define GPLUSPLUS_INCLUDE_DIR "/usr/include/g++"
53
54 #undef GCC_INCLUDE_DIR
55 #define GCC_INCLUDE_DIR "/usr/include"
56
57 #undef INCLUDE_DEFAULTS
58 #define INCLUDE_DEFAULTS                        \
59   {                                             \
60     { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1 },     \
61     { GCC_INCLUDE_DIR, "GCC", 0, 0 },           \
62     { 0, 0, 0, 0 }                              \
63   }
64
65 /* Under NetBSD, the normal location of the compiler back ends is the
66    /usr/libexec directory.  */
67
68 #undef STANDARD_EXEC_PREFIX
69 #define STANDARD_EXEC_PREFIX            "/usr/libexec/"
70
71 /* Under NetBSD, the normal location of the various *crt*.o files is the
72    /usr/lib directory.  */
73
74 #undef STANDARD_STARTFILE_PREFIX
75 #define STANDARD_STARTFILE_PREFIX       "/usr/lib/"
76
77 #endif /* NETBSD_NATIVE */
78
79
80 /* Provide a LIB_SPEC appropriate for NetBSD.  Here we:
81
82    1. Select the appropriate set of libs, depending on whether we're
83       profiling.
84
85    2. Include the pthread library if -pthread is specified.
86
87    3. Include the posix library if -posix is specified.  */
88
89 #undef LIB_SPEC
90 #define LIB_SPEC                \
91   "%{pthread:                   \
92      %{!p:                      \
93        %{!pg:-lpthread}}        \
94      %{p:-lpthread_p}           \
95      %{pg:-lpthread_p}}         \
96    %{posix:                     \
97      %{!p:                      \
98        %{!pg:-lposix}}          \
99      %{p:-lposix_p}             \
100      %{pg:-lposix_p}}           \
101    %{!shared:                   \
102      %{!symbolic:               \
103        %{!p:                    \
104          %{!pg:-lc}}            \
105        %{p:-lc_p}               \
106        %{pg:-lc_p}}}"
107
108 /* Provide a LIBGCC_SPEC appropriate for NetBSD.  We also want to exclude
109    libgcc with -symbolic.  */
110
111 #undef LIBGCC_SPEC
112 #ifdef NETBSD_NATIVE
113 #define LIBGCC_SPEC             \
114   "%{!symbolic:                 \
115      %{!shared:                 \
116        %{!p:                    \
117          %{!pg: -lgcc}}}                \
118      %{shared: -lgcc_pic}       \
119      %{p: -lgcc_p}              \
120      %{pg: -lgcc_p}}"
121 #else
122 #define LIBGCC_SPEC "%{!shared:%{!symbolic: -lgcc}}"
123 #endif
124
125 /* When building shared libraries, the initialization and finalization 
126    functions for the library are .init and .fini respectively.  */
127
128 #define COLLECT_SHARED_INIT_FUNC(STREAM,FUNC)                           \
129   do {                                                                  \
130     fprintf ((STREAM), "void __init() __asm__ (\".init\");");           \
131     fprintf ((STREAM), "void __init() {\n\t%s();\n}\n", (FUNC));        \
132   } while (0)
133
134 #define COLLECT_SHARED_FINI_FUNC(STREAM,FUNC)                           \
135   do {                                                                  \
136     fprintf ((STREAM), "void __fini() __asm__ (\".fini\");");           \
137     fprintf ((STREAM), "void __fini() {\n\t%s();\n}\n", (FUNC));        \
138   } while (0)
139
140 #undef TARGET_HAS_F_SETLKW
141 #define TARGET_HAS_F_SETLKW
142
143 /* Implicit library calls should use memcpy, not bcopy, etc.  */
144
145 #undef TARGET_MEM_FUNCTIONS
146 #define TARGET_MEM_FUNCTIONS 1
147
148 /* Handle #pragma weak and #pragma pack.  */
149
150 #define HANDLE_SYSV_PRAGMA
151
152
153 /* Define some types that are the same on all NetBSD platforms,
154    making them agree with <machine/ansi.h>.  */
155
156 #undef WCHAR_TYPE
157 #define WCHAR_TYPE "int"
158
159 #undef WCHAR_TYPE_SIZE
160 #define WCHAR_TYPE_SIZE 32
161
162 #undef WINT_TYPE
163 #define WINT_TYPE "int"