aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/configure.target
blob: a186659daf323c636ef3b28a5f5409e23d72baf8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
# configure.target
#
# This shell script handles all target based configuration for libstdc++.
# It sets various shell variables based on the the target and the
# configuration options.  You can modify this shell script without needing
# to rerun autoconf/aclocal/etc.  This file is "sourced" not executed.
#
# You should read docs/html/17_intro/porting.* to make sense of this file.
#
#
# It uses the following shell variables as set by config.guess:
#   target                The configuration target (full CPU-vendor-OS triplet)
#   target_cpu            The configuration target CPU
#   target_os             The configuration target OS
#
#
# It sets the following shell variables:
#
#   cpu_include_dir        CPU-specific directory, defaults to cpu/generic
#                              if cpu/target_cpu doesn't exist.  This is
#                              used to set ATOMICITYH.
#
#   os_include_dir         OS-specific directory, defaults to os/generic.
#
#   c_model                the model to use for "C" headers, defaults to c_std.
#
#   c_compatibility        if "C" compatibility headers are necessary,
#                              defaults to no.
#
#   abi_baseline_triplet   directory name for ABI compat testing,
#                              defaults to target (as per config.guess)
#
#   ATOMICITYH             location of atomicity.h,
#                              defaults to cpu_include_dir
#
# It possibly modifies the following variables:
#
#   OPT_LDFLAGS            extra flags to pass when linking the library, of
#                              the form '-Wl,blah'
#                              (defaults to empty in acinclude.m4)
#
#
# If the defaults will not work for your platform, you need only change the
# variables that won't work, i.e., you do not need to explicitly set a
# working variable to its default.  Most targets only need to change the two
# *_include_dir variables.


# DEFAULTS
# Try to guess a default cpu_include_dir based on the name of the CPU.  We
# cannot do this for os_include_dir; there are too many portable operating
# systems out there.  :-)
abi_baseline_triplet=${target}
c_model=c_std
c_compatibility=no
if test -d ${glibcpp_srcdir}/config/cpu/${target_cpu}; then
    cpu_include_dir="cpu/${target_cpu}"
else
    cpu_include_dir="cpu/generic"
fi


# TARGET-SPECIFIC OVERRIDES
# Set any CPU-dependent bits.
# Here we override defaults and catch more general cases due to naming
# conventions (e.g., chip_name* to catch all variants).
# THIS TABLE IS SORTED.  KEEP IT THAT WAY.
case "${target_cpu}" in
  alpha*)
    cpu_include_dir="cpu/alpha"
    ;;
  athlon* | i586 | i686 | i786 | x86_64)
    cpu_include_dir="cpu/i486"
    ;;
  hppa*)
    cpu_include_dir="cpu/hppa"
    ;;
  m680[246]0)
    cpu_include_dir="cpu/m68k"
    ;;
  powerpc* | rs6000)
    cpu_include_dir="cpu/powerpc"
    ;;
  s390x)
    cpu_include_dir="cpu/s390"
    ;;
  sparc* | ultrasparc)
    cpu_include_dir="cpu/sparc"
    ;;
esac


# Now look for the file(s) usually tied to a CPU model, and make default
# choices for those if they haven't been explicitly set already.
_cpu_incdir_fullpath=${glibcpp_srcdir}/config/${cpu_include_dir}
if test x${ATOMICITYH+set} != xset; then
  if test -f ${_cpu_incdir_fullpath}/atomicity.h; then
    ATOMICITYH=$cpu_include_dir
  else
    ATOMICITYH="cpu/generic"
  fi
fi
unset _cpu_incdir_fullpath


# Set any OS-dependent bits.
# Set the os_include_dir.
# Set c_model, c_compatibility here.
# If atomic ops and/or numeric limits are OS-specific rather than
# CPU-specifc, set those here too.
# THIS TABLE IS SORTED.  KEEP IT THAT WAY.
case "${target_os}" in
  aix4.[3456789]* | aix[56789]*)
    # We set os_include_dir to os/aix only on AIX 4.3 and newer, but
    # os/aix/atomicity.h works on earlier versions of AIX 4.*, so we
    # explicitly duplicate the directory for 4.[<3].
    os_include_dir="os/aix"
    ATOMICITYH="os/aix"
    OPT_LDFLAGS="-Wl,-G"
    ;;
  aix4.*)
    ATOMICITYH="os/aix"
    ;;
  aix*)
    ATOMICITYH="cpu/generic"
    ;;
  bsd*)
    # Plain BSD attempts to share FreeBSD files.
    os_include_dir="os/bsd/freebsd"
    ;;
  cygwin*)
    os_include_dir="os/newlib"
    ;;
  *djgpp*)      # leading * picks up "msdosdjgpp"
    os_include_dir="os/djgpp"
    ;;
  freebsd*)
    os_include_dir="os/bsd/freebsd"
    # The FreeBSD ABI is expressed in the major version number only.
    abi_baseline_triplet=`echo ${target} | sed 's,\(\.[0-9]*\)*$,,'`
    ;;
  gnu* | linux*)
    os_include_dir="os/gnu-linux"
    ;;
  hpux*)
    os_include_dir="os/hpux"
    ;;
  irix[1-6] | irix[1-5].* | irix6.[0-4]*)
    # This is known to work on at least IRIX 5.2 and 6.3.
    os_include_dir="os/irix/irix5.2"
    ATOMICITYH=$os_include_dir
    ;;
  irix6.5*)
    os_include_dir="os/irix/irix6.5"
    ATOMICITYH=$os_include_dir
    ;;
  mingw32*)
    os_include_dir="os/mingw32"
    ;;
  netbsd*)
    os_include_dir="os/bsd/netbsd"
    ;;
  solaris2.5*)
    os_include_dir="os/solaris/solaris2.5"
    ;;
  solaris2.6*)
    os_include_dir="os/solaris/solaris2.6"
    ;;
  solaris2.[78]*)
    os_include_dir="os/solaris/solaris2.7"
    ;;
  windiss*)
    os_include_dir="os/windiss"
    ;;
  qnx6.[12]*)
    os_include_dir="os/qnx/qnx6.1"
    c_model=c
    ;;
  *)
    os_include_dir="os/generic"
    ;;
esac


# Set any OS-dependent and CPU-dependent bits.
# THIS TABLE IS SORTED.  KEEP IT THAT WAY.
case "${target}" in
  mips*-*-linux*)
    ATOMICITYH="cpu/mips"
    ;;
esac