gcc41: remove /usr/lib from rpath
[dragonfly.git] / gnu / usr.bin / cc41 / cc_prep / config / dragonfly-spec.h
CommitLineData
63b12d03 1/* $DragonFly: src/gnu/usr.bin/cc41/cc_prep/config/dragonfly-spec.h,v 1.5 2008/07/24 21:45:10 corecode Exp $ */
ddf7cc86
SS
2
3/* Base configuration file for all DragonFly targets.
4 Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
5
6This file is part of GCC.
7
8GCC is free software; you can redistribute it and/or modify
9it under the terms of the GNU General Public License as published by
10the Free Software Foundation; either version 2, or (at your option)
11any later version.
12
13GCC is distributed in the hope that it will be useful,
14but WITHOUT ANY WARRANTY; without even the implied warranty of
15MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16GNU General Public License for more details.
17
18You should have received a copy of the GNU General Public License
19along with GCC; see the file COPYING. If not, write to
20the Free Software Foundation, 59 Temple Place - Suite 330,
21Boston, MA 02111-1307, USA. */
22
23/* Common DragonFly configuration.
24 All DragonFly architectures should include this file, which will specify
25 their commonalities.
26
27 Adapted from gcc/config/freebsd-spec.h by
28 Joerg Sonnenberger <joerg@bec.de>
29
30 Adapted from gcc/config/freebsd.h by
31 David O'Brien <obrien@FreeBSD.org>
32 Loren J. Rittle <ljrittle@acm.org>. */
33
34
35/* This defines which switch letters take arguments. On DragonFly, most of
36 the normal cases (defined in gcc.c) apply, and we also have -h* and
37 -z* options (for the linker) (coming from SVR4).
38 We also have -R (alias --rpath), no -z, --soname (-h), --assert etc. */
39
40#define DFBSD_SWITCH_TAKES_ARG(CHAR) \
41 (DEFAULT_SWITCH_TAKES_ARG (CHAR) \
42 || (CHAR) == 'h' \
43 || (CHAR) == 'z' /* ignored by ld */ \
44 || (CHAR) == 'R')
45
46/* This defines which multi-letter switches take arguments. */
47
48#define DFBSD_WORD_SWITCH_TAKES_ARG(STR) \
49 (DEFAULT_WORD_SWITCH_TAKES_ARG (STR) \
50 || !strcmp ((STR), "rpath") || !strcmp ((STR), "rpath-link") \
51 || !strcmp ((STR), "soname") || !strcmp ((STR), "defsym") \
52 || !strcmp ((STR), "assert") || !strcmp ((STR), "dynamic-linker"))
53
54#define DFBSD_TARGET_OS_CPP_BUILTINS() \
55 do \
56 { \
57 if (DFBSD_MAJOR == 3) \
58 builtin_define ("__DragonFly__=3"); \
59 else if (DFBSD_MAJOR == 2) \
60 builtin_define ("__DragonFly__=2"); \
61 else if (DFBSD_MAJOR == 1) \
62 builtin_define ("__DragonFly__=1"); \
63 else \
64 builtin_define ("__DragonFly__"); \
65 builtin_define ("__DragonFly_cc_version=100001"); \
66 builtin_define_std ("unix"); \
67 builtin_define ("__KPRINTF_ATTRIBUTE__"); \
68 builtin_assert ("system=unix"); \
69 builtin_assert ("system=bsd"); \
70 builtin_assert ("system=DragonFly"); \
71 DFBSD_TARGET_CPU_CPP_BUILTINS(); \
72 } \
73 while (0)
74
75/* Define the default DragonFly-specific per-CPU hook code. */
76#define DFBSD_TARGET_CPU_CPP_BUILTINS() do {} while (0)
77
78/* Provide a CPP_SPEC appropriate for DragonFly. We just deal with the GCC
79 option `-posix', and PIC issues. */
80
81#define DFBSD_CPP_SPEC " \
82 %(cpp_cpu) \
83 %{fPIC|fpic|fPIE|fpie:-D__PIC__ -D__pic__} \
84 %{posix:-D_POSIX_SOURCE}"
85
86/* Provide a STARTFILE_SPEC appropriate for DragonFly. Here we add
87 the magical crtbegin.o file (see crtstuff.c) which provides part
88 of the support for getting C++ file-scope static object constructed
89 before entering `main'. */
90
91#define DFBSD_STARTFILE_SPEC \
92 "%{!shared: \
93 %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \
94 %{!p:%{profile:gcrt1.o%s} \
95 %{!profile:crt1.o%s}}}} \
96 crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"
97
98/* Provide a ENDFILE_SPEC appropriate for DragonFly. Here we tack on
99 the magical crtend.o file (see crtstuff.c) which provides part of
100 the support for getting C++ file-scope static object constructed
101 before entering `main', followed by a normal "finalizer" file,
102 `crtn.o'. */
103
104#define DFBSD_ENDFILE_SPEC \
105 "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
106
107/* Provide a LIB_SPEC appropriate for DragonFly as configured and as
108 required by the user-land thread model. Select the appropriate libc,
109 depending on whether we're doing profiling or need threads support.
110 Make it a hard error if -pthread is provided on the command line and gcc
111 was configured with --disable-threads (this will help avoid bug
112 reports from users complaining about threading when they
113 misconfigured the gcc bootstrap but are later consulting DragonFly
114 manual pages that refer to the mythical -pthread option). */
115
116/* Provide a LIB_SPEC appropriate for DragonFly. Just select the appropriate
117 libc, depending on whether we're doing profiling or need threads support.
118 (simular to the default, except no -lg, and no -p). */
119
120#ifdef DFBSD_NO_THREADS
121#define DFBSD_LIB_SPEC " \
122 %{pthread: %eThe -pthread option is only supported on DragonFly when gcc \
123is built with the --enable-threads configure-time option.} \
124 %{!nostdlib{!nostartfiles{!nolibc: -lc}}} \
125 }"
126#else
127#define DFBSD_LIB_SPEC " \
63b12d03 128 %{pthread:-lpthread} \
ddf7cc86
SS
129 %{!nostdlib: %{!nostartfiles: %{!nolibc: -lc}}} \
130 "
131#endif
132
133#define LINK_LIBGCC_SPEC ""
134#define LIBGCC_SPEC "%{shared: -lgcc_pic} %{!shared: -lgcc}"
135
43add724
JM
136#define PRE_LIB_SPEC \
137" %{pg: -L"PREFIX2"/lib/gcc41/profile \
138 %{!static: -rpath /usr/lib/gcc41/profile} \
139 } \
140 -L"PREFIX2"/lib/gcc41 \
141 %{!static: -rpath /usr/lib/gcc41} \
142 %{pg: -L"PREFIX2"/lib/profile \
143 %{!static: -rpath /usr/lib/profile} \
144 } \
145"
ddf7cc86
SS
146
147#define DFBSD_LINK_COMMAND_SPEC "\
148%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:\
149 %(linker) %l " LINK_PIE_SPEC "%X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} %{r}\
150 %{s} %{t} %{u*} %{x} %{z} %{Z} %{!A:%{!nostdlib:%{!nostartfiles:%S}}}\
587efea7 151 %{static:} %{L*} %(pre_lib) %(link_libgcc) %o \
ddf7cc86 152 %{fprofile-arcs|fprofile-generate: -lgcov}\
ddf7cc86
SS
153 %{!nostdlib:%{!nodefaultlibs:%(link_gcc_c_sequence)}}\
154 %{!A:%{!nostdlib:%{!nostartfiles:%E}}} %{T*} }}}}}}"
155
156#ifndef PREFIX2
157#define PREFIX2 "/usr"
158#endif
159
160#define DFBSD_DYNAMIC_LINKER "/usr/libexec/ld-elf.so.2"
161#ifndef STANDARD_STARTFILE_PREFIX_1
162#define STANDARD_STARTFILE_PREFIX_1 PREFIX2"/lib/gcc41/"
163#endif
164#ifndef STANDARD_EXEC_PREFIX
165#define STANDARD_EXEC_PREFIX PREFIX2"/libexec/gcc41/"
166#endif
167#ifndef STANDARD_STARTFILE_PREFIX
c2f0da41 168#define STANDARD_STARTFILE_PREFIX PREFIX2"/lib/"
ddf7cc86
SS
169#endif
170#ifndef TOOLDIR_BASE_PREFIX
171#define TOOLDIR_BASE_PREFIX PREFIX2"/libexec/gcc41"
172#endif
173#ifndef STANDARD_BINDIR_PREFIX
174#define STANDARD_BINDIR_PREFIX PREFIX2"/libexec/gcc41"
175#endif
176#ifndef STANDARD_LIBEXEC_PREFIX
177#define STANDARD_LIBEXEC_PREFIX PREFIX2"/libexec/gcc41"
178#endif
179
180#ifndef GPLUSPLUS_INCLUDE_DIR
181#define GPLUSPLUS_INCLUDE_DIR PREFIX2"/include/c++"
182#endif
183#ifndef GPLUSPLUS_TOOL_INCLUDE_DIR
184#define GPLUSPLUS_TOOL_INCLUDE_DIR PREFIX2"/include/c++/4.1"
185#endif
186#ifndef GPLUSPLUS_BACKWARD_INCLUDE_DIR
187#define GPLUSPLUS_BACKWARD_INCLUDE_DIR PREFIX2"/include/c++/4.1/backward"
188#endif
189#ifndef GCC_LOCAL_INCLUDE_DIR
190#define GCC_LOCAL_INCLUDE_DIR PREFIX2"/libdata/gcc41"
191#endif
192#ifndef GCC_INCLUDE_DIR
193#define GCC_INCLUDE_DIR PREFIX2"/include"
194#endif
195
196#undef INCLUDE_DEFAULTS
197#define INCLUDE_DEFAULTS \
198 { \
199 { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1 }, \
200 { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, 0 }, \
201 { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, 0 }, \
202 { GCC_INCLUDE_DIR, "GCC", 0, 0 }, \
203 { GCC_LOCAL_INCLUDE_DIR, "GCC", 0, 0 }, \
204 { NULL, NULL, 0, 0 } \
205 }