OLD | NEW |
| (Empty) |
1 <sect1 id="manual.intro.setup.configure" xreflabel="Configuring"> | |
2 <?dbhtml filename="configure.html"?> | |
3 | |
4 <sect1info> | |
5 <keywordset> | |
6 <keyword> | |
7 ISO C++ | |
8 </keyword> | |
9 <keyword> | |
10 configure | |
11 </keyword> | |
12 <keyword> | |
13 options | |
14 </keyword> | |
15 </keywordset> | |
16 </sect1info> | |
17 | |
18 <title>Configure</title> | |
19 | |
20 <para> | |
21 When configuring libstdc++, you'll have to configure the entire | |
22 <emphasis>gccsrcdir</emphasis> directory. Consider using the | |
23 toplevel gcc configuration option | |
24 <literal>--enable-languages=c++</literal>, which saves time by only | |
25 building the C++ toolchain. | |
26 </para> | |
27 | |
28 <para> | |
29 Here are all of the configure options specific to libstdc++. Keep | |
30 in mind that | |
31 <!-- This SECnn should be the "Choosing Package Options" section. --> | |
32 <ulink url="http://www.gnu.org/software/autoconf/manual/autoconf-2.57/html_no
de/autoconf_131.html#SEC131">they | |
33 all have opposite forms as well</ulink> (enable/disable and | |
34 with/without). The defaults are for the <emphasis>current | |
35 development sources</emphasis>, which may be different than those | |
36 for released versions. | |
37 </para> | |
38 <para>The canonical way to find out the configure options that are | |
39 available for a given set of libstdc++ sources is to go to the | |
40 source directory and then type:<command>./configure --help</command>. | |
41 </para> | |
42 | |
43 <variablelist> | |
44 <varlistentry><term><code>--enable-multilib</code>[default]</term> | |
45 <listitem><para>This is part of the generic multilib support for building cross | |
46 compilers. As such, targets like "powerpc-elf" will have | |
47 libstdc++ built many different ways: "-msoft-float" | |
48 and not, etc. A different libstdc++ will be built for each of | |
49 the different multilib versions. This option is on by default. | |
50 </para> | |
51 </listitem></varlistentry> | |
52 | |
53 <varlistentry><term><code>--enable-sjlj-exceptions</code></term> | |
54 <listitem><para>Forces old, set-jump/long-jump exception handling model. If | |
55 at all possible, the new, frame unwinding exception handling routines | |
56 should be used instead, as they significantly reduce both | |
57 runtime memory usage and executable size. This option can | |
58 change the library ABI. | |
59 </para> | |
60 </listitem></varlistentry> | |
61 | |
62 <varlistentry><term><code>--enable-version-specific-runtime-libs</code></term> | |
63 <listitem><para>Specify that run-time libraries should be installed in the | |
64 compiler-specific subdirectory (i.e., | |
65 <code>${libdir}/gcc-lib/${target_alias}/${gcc_version}</code>) | |
66 instead of <code>${libdir}</code>. This option is useful if you | |
67 intend to use several versions of gcc in parallel. In addition, | |
68 libstdc++'s include files will be installed in | |
69 <code>${libdir}/gcc-lib/${target_alias}/${gcc_version}/include/g++</code
>, | |
70 unless you also specify | |
71 <literal>--with-gxx-include-dir=<filename class="directory">dirname</file
name></literal> during configuration. | |
72 </para> | |
73 </listitem></varlistentry> | |
74 | |
75 <varlistentry><term><code>--with-gxx-include-dir=<include-files dir></cod
e></term> | |
76 <listitem><para>Adds support for named libstdc++ include directory. For instan
ce, | |
77 the following puts all the libstdc++ headers into a directory | |
78 called "2.97-20001008" instead of the usual | |
79 "c++/(version)". | |
80 </para> | |
81 <programlisting> | |
82 --with-gxx-include-dir=/foo/H-x86-gcc-3-c-gxx-inc/include/2.97-20001008</prog
ramlisting> </listitem></varlistentry> | |
83 | |
84 <varlistentry><term><code>--enable-cstdio</code></term> | |
85 <listitem><para>This is an abbreviated form of <code>'--enable-cstdio=stdio'</c
ode> | |
86 (described next). This option can change the library ABI. | |
87 </para> | |
88 </listitem></varlistentry> | |
89 | |
90 <varlistentry><term><code>--enable-cstdio=OPTION</code></term> | |
91 <listitem><para>Select a target-specific I/O package. At the moment, the only | |
92 choice is to use 'stdio', a generic "C" abstraction. | |
93 The default is 'stdio'. | |
94 </para> | |
95 </listitem></varlistentry> | |
96 | |
97 <varlistentry><term><code>--enable-clocale</code></term> | |
98 <listitem><para>This is an abbreviated form of <code>'--enable-clocale=generic'
</code> | |
99 (described next). This option can change the library ABI. | |
100 </para> | |
101 </listitem></varlistentry> | |
102 | |
103 <varlistentry><term><code>--enable-clocale=OPTION</code></term> | |
104 <listitem><para>Select a target-specific underlying locale package. The | |
105 choices are 'ieee_1003.1-2001' to specify an X/Open, Standard Unix | |
106 (IEEE Std. 1003.1-2001) model based on langinfo/iconv/catgets, | |
107 'gnu' to specify a model based on functionality from the GNU C | |
108 library (langinfo/iconv/gettext) (from <ulink url="http://sources.redhat
.com/glibc/">glibc</ulink>, the GNU C | |
109 library), or 'generic' to use a generic "C" | |
110 abstraction which consists of "C" locale info. | |
111 </para> | |
112 | |
113 <para>As part of the configuration process, the "C" library is | |
114 probed both for sufficient vintage, and installed locale | |
115 data. If either of these elements are not present, the C++ | |
116 locale model default to 'generic.' On glibc-based systems of | |
117 version 2.2.5 and above with installed locale files, 'gnu' is | |
118 automatically selected. | |
119 </para> | |
120 </listitem></varlistentry> | |
121 | |
122 <varlistentry><term><code>--enable-libstdcxx-allocator</code></term> | |
123 <listitem><para>This is an abbreviated form of | |
124 <code>'--enable-libstdcxx-allocator=auto'</code> (described | |
125 next). This option can change the library ABI. | |
126 </para> | |
127 </listitem></varlistentry> | |
128 | |
129 <varlistentry><term><code>--enable-libstdcxx-allocator=OPTION </code></term> | |
130 <listitem><para>Select a target-specific underlying std::allocator. The | |
131 choices are 'new' to specify a wrapper for new, 'malloc' to | |
132 specify a wrapper for malloc, 'mt' for a fixed power of two allocator, | |
133 'pool' for the SGI pooled allocator or 'bitmap' for a bitmap allocator. | |
134 This option can change the library ABI. See this page for more informati
on on allocator | |
135 <link linkend="allocator.ext">extensions</link> | |
136 </para> | |
137 </listitem></varlistentry> | |
138 | |
139 <varlistentry><term><code>--enable-cheaders=OPTION</code></term> | |
140 <listitem><para>This allows the user to define the approach taken for C header | |
141 compatibility with C++. Options are c, c_std, and c_global. | |
142 These correspond to the source directory's include/c, | |
143 include/c_std, and include/c_global, and may also include | |
144 include/c_compatibility. The default is c_global. | |
145 </para> | |
146 </listitem></varlistentry> | |
147 | |
148 <varlistentry><term><code>--enable-threads</code></term> | |
149 <listitem><para>This is an abbreviated form of <code>'--enable-threads=yes'</co
de> | |
150 (described next). This option can change the library ABI. | |
151 </para> | |
152 </listitem></varlistentry> | |
153 | |
154 <varlistentry><term><code>--enable-threads=OPTION</code></term> | |
155 <listitem><para>Select a threading library. A full description is given in the | |
156 general <ulink url="http://gcc.gnu.org/install/configure.html">compiler | |
157 configuration instructions</ulink>. | |
158 </para> | |
159 </listitem></varlistentry> | |
160 | |
161 <varlistentry><term><code>--enable-libstdcxx-debug</code></term> | |
162 <listitem><para>Build separate debug libraries in addition to what is normally
built. | |
163 By default, the debug libraries are compiled with | |
164 <code> CXXFLAGS='-g3 -O0 -fno-inline'</code> | |
165 , are installed in <code>${libdir}/debug</code>, and have the | |
166 same names and versioning information as the non-debug | |
167 libraries. This option is off by default. | |
168 </para> | |
169 <para>Note this make command, executed in | |
170 the build directory, will do much the same thing, without the | |
171 configuration difference and without building everything twice: | |
172 <code>make CXXFLAGS='-g3 -O0 -fno-inline' all</code> | |
173 </para> | |
174 </listitem></varlistentry> | |
175 | |
176 <varlistentry><term><code>--enable-libstdcxx-debug-flags=FLAGS</code></term> | |
177 | |
178 <listitem><para>This option is only valid when <code> --enable-debug </code> | |
179 is also specified, and applies to the debug builds only. With | |
180 this option, you can pass a specific string of flags to the | |
181 compiler to use when building the debug versions of libstdc++. | |
182 FLAGS is a quoted string of options, like | |
183 </para> | |
184 <programlisting> | |
185 --enable-libstdcxx-debug-flags='-g3 -O1 -fno-inline'</programlisting> | |
186 </listitem></varlistentry> | |
187 | |
188 <varlistentry><term><code>--enable-cxx-flags=FLAGS</code></term> | |
189 <listitem><para>With this option, you can pass a string of -f (functionality) | |
190 flags to the compiler to use when building libstdc++. This | |
191 option can change the library ABI. FLAGS is a quoted string of | |
192 options, like | |
193 </para> | |
194 <programlisting> | |
195 --enable-cxx-flags='-fvtable-gc -fomit-frame-pointer -ansi'</programlisting> | |
196 <para> | |
197 Note that the flags don't necessarily have to all be -f flags, | |
198 as shown, but usually those are the ones that will make sense | |
199 for experimentation and configure-time overriding. | |
200 </para> | |
201 <para>The advantage of --enable-cxx-flags over setting CXXFLAGS in | |
202 the 'make' environment is that, if files are automatically | |
203 rebuilt, the same flags will be used when compiling those files | |
204 as well, so that everything matches. | |
205 </para> | |
206 <para>Fun flags to try might include combinations of | |
207 </para> | |
208 <programlisting> | |
209 -fstrict-aliasing | |
210 -fno-exceptions | |
211 -ffunction-sections | |
212 -fvtable-gc</programlisting> | |
213 <para>and opposite forms (-fno-) of the same. Tell us (the libstdc++ | |
214 mailing list) if you discover more! | |
215 </para> | |
216 </listitem></varlistentry> | |
217 | |
218 <varlistentry><term><code>--enable-c99</code></term> | |
219 <listitem><para>The "long long" type was introduced in C99, along | |
220 with many other functions for wide characters, and math | |
221 classification macros, etc. If enabled, all C99 functions not | |
222 specified by the C++ standard will be put into <code>namespace | |
223 __gnu_cxx</code>, and then all these names will | |
224 be injected into namespace std, so that C99 functions can be | |
225 used "as if" they were in the C++ standard (as they | |
226 will eventually be in some future revision of the standard, | |
227 without a doubt). By default, C99 support is on, assuming the | |
228 configure probes find all the necessary functions and bits | |
229 necessary. This option can change the library ABI. | |
230 </para> | |
231 </listitem></varlistentry> | |
232 | |
233 <varlistentry><term><code>--enable-wchar_t</code>[default]</term> | |
234 <listitem><para>Template specializations for the "wchar_t" type are | |
235 required for wide character conversion support. Disabling | |
236 wide character specializations may be expedient for initial | |
237 porting efforts, but builds only a subset of what is required by | |
238 ISO, and is not recommended. By default, this option is on. | |
239 This option can change the library ABI. | |
240 </para> | |
241 </listitem></varlistentry> | |
242 | |
243 <varlistentry><term><code>--enable-long-long </code></term> | |
244 <listitem><para>The "long long" type was introduced in C99. It is | |
245 provided as a GNU extension to C++98 in g++. This flag builds | |
246 support for "long long" into the library (specialized | |
247 templates and the like for iostreams). This option is on by default: | |
248 if enabled, users will have to either use the new-style "C" | |
249 headers by default (i.e., <cmath> not <math.h>) | |
250 or add appropriate compile-time flags to all compile lines to | |
251 allow "C" visibility of this feature (on GNU/Linux, | |
252 the flag is -D_ISOC99_SOURCE, which is added automatically via | |
253 CPLUSPLUS_CPP_SPEC's addition of _GNU_SOURCE). | |
254 This option can change the library ABI. | |
255 </para> | |
256 </listitem></varlistentry> | |
257 | |
258 <varlistentry><term><code>--enable-fully-dynamic-string</code></term> | |
259 <listitem><para>This option enables a special version of basic_string avoiding | |
260 the optimization that allocates empty objects in static memory. | |
261 Mostly useful together with shared memory allocators, see PR | |
262 libstdc++/16612 for details. | |
263 </para> | |
264 </listitem></varlistentry> | |
265 | |
266 <varlistentry><term><code>--enable-concept-checks</code></term> | |
267 <listitem><para>This turns on additional compile-time checks for instantiated | |
268 library templates, in the form of specialized templates, | |
269 <link linkend="manual.diagnostics.concept_checking">described here</link
>. They | |
270 can help users discover when they break the rules of the STL, before | |
271 their programs run. | |
272 </para> | |
273 </listitem></varlistentry> | |
274 | |
275 <varlistentry><term><code>--enable-symvers[=style]</code></term> | |
276 | |
277 <listitem><para>In 3.1 and later, tries to turn on symbol versioning in the | |
278 shared library (if a shared library has been | |
279 requested). Values for 'style' that are currently supported | |
280 are 'gnu', 'gnu-versioned-namespace', 'darwin', and | |
281 'darwin-export'. Both gnu- options require that a recent | |
282 version of the GNU linker be in use. Both darwin options are | |
283 equivalent. With no style given, the configure script will try | |
284 to guess correct defaults for the host system, probe to see if | |
285 additional requirements are necessary and present for | |
286 activation, and if so, will turn symbol versioning on. This | |
287 option can change the library ABI. | |
288 </para> | |
289 | |
290 </listitem></varlistentry> | |
291 | |
292 <varlistentry><term><code>--enable-visibility</code></term> | |
293 <listitem><para> In 4.2 and later, enables or disables visibility attributes. | |
294 If enabled (as by default), and the compiler seems capable of | |
295 passing the simple sanity checks thrown at it, adjusts items | |
296 in namespace std, namespace std::tr1, and namespace __gnu_cxx | |
297 so that -fvisibility options work. | |
298 </para> | |
299 </listitem></varlistentry> | |
300 | |
301 <varlistentry><term><code>--enable-libstdcxx-pch</code></term> | |
302 <listitem><para>In 3.4 and later, tries to turn on the generation of | |
303 stdc++.h.gch, a pre-compiled file including all the standard | |
304 C++ includes. If enabled (as by default), and the compiler | |
305 seems capable of passing the simple sanity checks thrown at | |
306 it, try to build stdc++.h.gch as part of the make process. | |
307 In addition, this generated file is used later on (by appending <code> | |
308 --include bits/stdc++.h </code> to CXXFLAGS) when running the | |
309 testsuite. | |
310 </para> | |
311 </listitem></varlistentry> | |
312 | |
313 <varlistentry><term><code>--disable-hosted-libstdcxx</code></term> | |
314 <listitem> | |
315 <para> | |
316 By default, a complete <emphasis>hosted</emphasis> C++ library is | |
317 built. The C++ Standard also describes a | |
318 <emphasis>freestanding</emphasis> environment, in which only a | |
319 minimal set of headers are provided. This option builds such an | |
320 environment. | |
321 </para> | |
322 </listitem></varlistentry> | |
323 | |
324 <varlistentry><term><code>--enable-clock-gettime</code></term> | |
325 <listitem><para>This is an abbreviated form of | |
326 <code>'--enable-clock-gettime=yes'</code>(described next). | |
327 </para> | |
328 </listitem></varlistentry> | |
329 | |
330 <varlistentry><term><code>--enable-libstdcxx-time=OPTION</code></term> | |
331 <listitem><para>Enables link-type checks for the availability of the | |
332 clock_gettime clocks, used in the implementation of [time.clock], | |
333 and of the nanosleep and sched_yield functions, used in the | |
334 implementation of [thread.thread.this] of the current C++0x draft. | |
335 The choice OPTION=yes checks for the availability of the facilities | |
336 in libc and libposix4. In case of need the latter is also linked | |
337 to libstdc++ as part of the build process. OPTION=rt also searches | |
338 (and, in case, links) librt. Note that the latter is not always | |
339 desirable because, in glibc, for example, in turn it triggers the | |
340 linking of libpthread too, which activates locking, a large overhead | |
341 for single-thread programs. OPTION=no skips the tests completely. | |
342 The default is OPTION=no. | |
343 </para> | |
344 </listitem></varlistentry> | |
345 | |
346 </variablelist> | |
347 | |
348 </sect1> | |
OLD | NEW |