xref: /netbsd-src/external/gpl3/gcc.old/dist/libstdc++-v3/configure.host (revision b7b7574d3bf8eeb51a1fa3977b59142ec6434a55)
1# configure.host
2#
3# This shell script handles all host based configuration for libstdc++.
4# It sets various shell variables based on the the host and the
5# configuration options.  You can modify this shell script without needing
6# to rerun autoconf/aclocal/etc.  This file is "sourced" not executed.
7#
8# You should read docs/html/17_intro/porting.* to make sense of this file.
9#
10#
11# It uses the following shell variables as set by config.guess:
12#   host                The configuration host (full CPU-vendor-OS triplet)
13#   host_cpu            The configuration host CPU
14#   host_os             The configuration host OS
15#
16#
17# It sets the following shell variables:
18#
19#   cpu_include_dir        CPU-specific directory, defaults to cpu/generic
20#                          if cpu/host_cpu doesn't exist.  This is not used
21#                          directly, but sets the default for others.
22#
23#   os_include_dir         OS-specific directory, defaults to os/generic.
24#
25#   c_model                the "C" header model, defaults to c_global.
26#
27#   c_compatibility        if "C" compatibility headers are necessary,
28#                          defaults to no.
29#
30#   abi_baseline_pair      directory name for ABI compat testing,
31#                          defaults to host_cpu-host_os (as per config.guess)
32#
33#   abi_tweaks_dir         location of cxxabi_tweaks.h,
34#                          defaults to cpu_include_dir
35#
36#   atomicity_dir          location of atomicity.h,
37#                          defaults to cpu_include_dir
38#
39#   atomic_word_dir        location of atomic_word.h
40#                          defaults to generic.
41#
42#   atomic_flags           extra flags to pass to use atomic instructions
43#                          defaults to nothing.
44#
45#   cpu_defines_dir        location of cpu_defines.h
46#                          defaults to generic.
47#
48#
49#   error_constants_dir    location of error_constants.h
50#                          defaults to os/generic.
51#
52# It possibly modifies the following variables:
53#
54#   OPT_LDFLAGS            extra flags to pass when linking the library, of
55#                          the form '-Wl,blah'
56#                          (defaults to empty in acinclude.m4)
57#
58#   port_specific_symbol_files
59#                          whitespace-seperated list of files containing
60#                          additional symbols to export from the shared
61#                          library, when symbol versioning is in use
62#
63#
64# If the defaults will not work for your platform, you need only change the
65# variables that won't work, i.e., you do not need to explicitly set a
66# working variable to its default.  Most hosts only need to change the two
67# *_include_dir variables.
68
69
70# DEFAULTS
71# Try to guess a default cpu_include_dir based on the name of the CPU.  We
72# cannot do this for os_include_dir; there are too many portable operating
73# systems out there.  :-)
74c_model=c_global
75c_compatibility=no
76atomic_word_dir=cpu/generic
77atomic_flags=""
78atomicity_dir="cpu/generic"
79cpu_defines_dir="cpu/generic"
80try_cpu=generic
81abi_tweaks_dir="cpu/generic"
82error_constants_dir="os/generic"
83
84# HOST-SPECIFIC OVERRIDES
85# Set any CPU-dependent bits.
86
87# Provide a way to funnel exotic flavors and prefixed/postfixed chip
88# variants into the established source config/cpu/* sub-directories.
89# THIS TABLE IS SORTED.  KEEP IT THAT WAY.
90case "${host_cpu}" in
91  alpha*)
92    try_cpu=alpha
93    ;;
94  arm*)
95    try_cpu=arm
96    ;;
97  crisv32)
98    try_cpu=cris
99    ;;
100  i[567]86 | x86_64)
101    try_cpu=i486
102    ;;
103  hppa*)
104    try_cpu=hppa
105    ;;
106  mep*)
107    EXTRA_CXX_FLAGS=-mm
108    try_cpu=generic
109    ;;
110  mips*)
111    try_cpu=mips
112    ;;
113  powerpc* | rs6000)
114    try_cpu=powerpc
115    ;;
116  sparc* | ultrasparc)
117    try_cpu=sparc
118    ;;
119  *)
120    if test -d ${glibcxx_srcdir}/config/cpu/${host_cpu}; then
121      try_cpu=${host_cpu}
122    fi
123esac
124
125
126# Now look for the file(s) usually tied to a CPU model, and make
127# default choices for those if they haven't been explicitly set
128# already.
129cpu_include_dir=cpu/${try_cpu}
130
131
132# Set specific CPU overrides for cpu_defines_dir. Most can just use generic.
133# THIS TABLE IS SORTED.  KEEP IT THAT WAY.
134case "${host_cpu}" in
135  powerpc* | rs6000)
136    cpu_defines_dir=cpu/powerpc
137    ;;
138esac
139
140
141# Set specific CPU overrides for atomic_word_dir and atomic_flags.
142# Most can just use generic.
143# THIS TABLE IS SORTED.  KEEP IT THAT WAY.
144case "${host_cpu}" in
145  alpha*)
146    atomic_word_dir=cpu/alpha
147    ;;
148  cris*)
149    atomic_word_dir=cpu/cris
150    ;;
151  ia64)
152    atomic_word_dir=cpu/ia64
153    ;;
154  i[4567]86 | x86_64)
155    atomic_flags="-march=native"
156    ;;
157  powerpc* | rs6000)
158    atomic_word_dir=cpu/powerpc
159    ;;
160  sparc* | ultrasparc)
161    atomic_word_dir=cpu/sparc
162    atomic_flags="-mcpu=v9"
163    ;;
164esac
165
166
167# Set specific CPU overrides for atomicity_dir.
168# This can be over-ridden in GLIBCXX_ENABLE_ATOMIC_BUILTINS.
169# THIS TABLE IS SORTED.  KEEP IT THAT WAY.
170if test -f ${glibcxx_srcdir}/config/${cpu_include_dir}/atomicity.h ; then
171  atomicity_dir=$cpu_include_dir
172fi
173
174
175if test -f ${glibcxx_srcdir}/config/${cpu_include_dir}/cxxabi_tweaks.h ; then
176  abi_tweaks_dir=$cpu_include_dir
177fi
178
179
180# Set any OS-dependent bits.
181# Set the os_include_dir.
182# Set the error_costants_dir.
183# Set c_model, c_compatibility here.
184# If atomic ops and/or numeric limits are OS-specific rather than
185# CPU-specifc, set those here too.
186# THIS TABLE IS SORTED.  KEEP IT THAT WAY.
187case "${host_os}" in
188  aix4.[3456789]* | aix[56789]*)
189    # We set os_include_dir to os/aix only on AIX 4.3 and newer, but
190    # os/aix/atomicity.h works on earlier versions of AIX 4.*, so we
191    # explicitly duplicate the directory for 4.[<3].
192    os_include_dir="os/aix"
193    atomicity_dir="os/aix"
194    atomic_word_dir="os/aix"
195    OPT_LDFLAGS="-Wl,-G"
196    ;;
197  aix4.*)
198    os_include_dir="os/generic"
199    atomicity_dir="os/aix"
200    atomic_word_dir="os/aix"
201    ;;
202  aix*)
203    os_include_dir="os/generic"
204    atomicity_dir="cpu/generic"
205    ;;
206  bsd*)
207    # Plain BSD attempts to share FreeBSD files.
208    os_include_dir="os/bsd/freebsd"
209    ;;
210  cygwin*)
211    os_include_dir="os/newlib"
212    OPT_LDFLAGS="${OPT_LDFLAGS} -no-undefined -bindir \$(bindir)"
213    ;;
214  darwin | darwin[1-7] | darwin[1-7].*)
215    # On Darwin, performance is improved if libstdc++ is single-module.
216    # Up to at least 10.3.7, -flat_namespace is required for proper
217    # treatment of coalesced symbols.
218    OPT_LDFLAGS="${OPT_LDFLAGS} -Wl,-single_module -Wl,-flat_namespace"
219    os_include_dir="os/bsd/darwin"
220    ;;
221  darwin[89] | darwin[89].* | darwin[1-9][0-9]* )
222    # On Darwin, performance is improved if libstdc++ is single-module,
223    # and on 8+ compatibility is better if not -flat_namespace.
224    OPT_LDFLAGS="${OPT_LDFLAGS} -Wl,-single_module"
225    case "${host_cpu}" in
226      i[34567]86 | x86_64)
227        OPTIMIZE_CXXFLAGS="${OPTIMIZE_CXXFLAGS} -fvisibility-inlines-hidden"
228        ;;
229    esac
230    os_include_dir="os/bsd/darwin"
231    ;;
232  *djgpp*)      # leading * picks up "msdosdjgpp"
233    os_include_dir="os/djgpp"
234    ;;
235  freebsd*)
236    os_include_dir="os/bsd/freebsd"
237    ;;
238  gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
239    if [ "$uclibc" = "yes" ]; then
240      os_include_dir="os/uclibc"
241    else
242      os_include_dir="os/gnu-linux"
243    fi
244    ;;
245  hpux*)
246    os_include_dir="os/hpux"
247    ;;
248  irix[1-6] | irix[1-5].* | irix6.[0-4]*)
249    # This is known to work on at least IRIX 5.2 and 6.3.
250    os_include_dir="os/irix/irix5.2"
251    atomicity_dir=os/irix
252    atomic_word_dir=os/irix
253    ;;
254  irix6.5*)
255    os_include_dir="os/irix/irix6.5"
256    atomicity_dir=os/irix
257    atomic_word_dir=os/irix
258    ;;
259  mingw32*)
260    os_include_dir="os/mingw32"
261    error_constants_dir="os/mingw32"
262    OPT_LDFLAGS="${OPT_LDFLAGS} -no-undefined -bindir \$(bindir)"
263    ;;
264  netbsd*)
265    os_include_dir="os/bsd/netbsd"
266    ;;
267  osf*)
268    os_include_dir="os/generic"
269    # libstdc++.so relies on emutls on Tru64 UNIX, which only works with the
270    # real functions implemented in libpthread.so, not with the dummies in
271    # libgcc, so always pass -lpthread.
272    OPT_LDFLAGS="${OPT_LDFLAGS} -lpthread"
273    ;;
274  qnx6.[12]*)
275    os_include_dir="os/qnx/qnx6.1"
276    c_model=c
277    ;;
278  solaris2)
279    # This too-vague configuration does not provide enough information
280    # to select a ctype include, and thus os_include_dir is a crap shoot.
281    echo "Please specify the full version of Solaris, ie. solaris2.9 " 1>&2
282    exit 1
283    ;;
284  solaris2.[789] | solaris2.1[0-9])
285    os_include_dir="os/solaris/solaris2.7"
286    ;;
287  tpf)
288    os_include_dir="os/tpf"
289    ;;
290  vxworks)
291    os_include_dir="os/vxworks"
292    ;;
293  *)
294    os_include_dir="os/generic"
295    ;;
296esac
297
298
299# Set any OS-dependent and CPU-dependent bits.
300# THIS TABLE IS SORTED.  KEEP IT THAT WAY.
301case "${host}" in
302  *-*-linux*)
303    case "${host_cpu}" in
304      i[567]86)
305        abi_baseline_pair=i486-linux-gnu
306        ;;
307      mips64*)
308	abi_baseline_pair=mips64-linux-gnu
309	;;
310      powerpc64)
311        abi_baseline_pair=powerpc64-linux-gnu
312        ;;
313      s390)
314        abi_baseline_pair=s390-linux-gnu
315        ;;
316      s390x)
317        abi_baseline_pair=s390x-linux-gnu
318        ;;
319      x86_64)
320        abi_baseline_pair=x86_64-linux-gnu
321        ;;
322      *)
323        if test -d ${glibcxx_srcdir}/config/abi/post/${try_cpu}-linux-gnu; then
324          abi_baseline_pair=${try_cpu}-linux-gnu
325        fi
326    esac
327    case "${host}" in
328      arm*-*-linux-*eabi)
329	port_specific_symbol_files="\$(srcdir)/../config/os/gnu-linux/arm-eabi-extra.ver"
330	;;
331    esac
332    ;;
333  powerpc*-*-darwin*)
334    port_specific_symbol_files="\$(srcdir)/../config/os/bsd/darwin/ppc-extra.ver"
335    ;;
336esac
337