Add -fstack-protector and -fno-stack-protector support to GCC. Note
[dragonfly.git] / contrib / gcc / configure.lang
1 # configure.lang for GNU CC
2 # This script is run by configure for configuration of language
3 # subdirectories which conform to the old GCC configure mechanism
4 # for such subdirectories.
5
6 # Copyright (C) 1997, 1998 Free Software Foundation, Inc.
7
8 #This file is part of GNU CC.
9
10 #GNU CC is free software; you can redistribute it and/or modify
11 #it under the terms of the GNU General Public License as published by
12 #the Free Software Foundation; either version 2, or (at your option)
13 #any later version.
14
15 #GNU CC is distributed in the hope that it will be useful,
16 #but WITHOUT ANY WARRANTY; without even the implied warranty of
17 #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 #GNU General Public License for more details.
19
20 #You should have received a copy of the GNU General Public License
21 #along with GNU CC; see the file COPYING.  If not, write to
22 #the Free Software Foundation, 59 Temple Place - Suite 330,
23 #Boston, MA 02111-1307, USA.
24
25 savesrcdir=$srcdir
26
27 for subdir in . $oldstyle_subdirs
28 do
29         # We only want to do this in language subdirs, but we have to handle
30         # the case of $oldstyle_subdirs = "".
31         if [ $subdir = . ]
32         then
33                 continue
34         fi
35
36         oldsrcdir=$savesrcdir
37
38         # Re-adjust the path
39         case $oldsrcdir in
40         /*)
41                 srcdir=$oldsrcdir/$subdir
42                 ;;
43         *)
44                 oldsrcdir=../${oldsrcdir}
45                 srcdir=$oldsrcdir/$subdir
46                 ;;
47         esac
48         mainsrcdir=$oldsrcdir
49         STARTDIR=`pwd`
50         test -d $subdir || mkdir $subdir
51         cd $subdir
52
53         # Create Makefile.tem from Makefile.in.
54         # Make it set VPATH if necessary so that the sources are found.
55         # Also change its value of srcdir.
56         # Also create a .gdbinit file which runs the one in srcdir
57         # and tells GDB to look there for source files.
58         case $srcdir in
59         . | ./$subdir | .././$subdir)
60                 rm -f Makefile.tem
61                 cp Makefile.in Makefile.tem
62                 chmod +w Makefile.tem
63                 ;;
64         *)
65                 rm -f Makefile.tem
66                 echo "VPATH = ${srcdir}" \
67                   | cat - ${srcdir}/Makefile.in \
68                   | sed "s@^srcdir = \.@srcdir = ${srcdir}@" > Makefile.tem
69                 rm -f .gdbinit
70                 echo "dir ." > .gdbinit
71                 echo "dir ${srcdir}" >> .gdbinit
72                 echo "dir ${mainsrcdir}" >> .gdbinit
73                 if [ x$gdb_needs_out_file_path = xyes ]
74                 then
75                         echo "dir ${mainsrcdir}/config/"`dirname ${out_file}` >> .gdbinit
76                 fi
77                 echo "source ${mainsrcdir}/.gdbinit" >> .gdbinit
78                 ;;
79         esac
80
81         # Conditionalize the makefile for this host machine.
82         rm -f Makefile.xx Makefile.ll
83         merged_frags=
84         for f in .. ${host_xmake_file}
85         do
86                 if [ -f ${mainsrcdir}/config/$f ]
87                 then
88                         cat ${mainsrcdir}/config/$f >> Makefile.ll
89                         if [ x"${merged_frags}" != x ]
90                         then
91                                 merged_frags="${merged_frags} and "
92                         fi
93                         merged_frags="${merged_frags}${f}"
94                 fi
95         done
96         if [ x"${merged_frags}" != x ]
97         then
98                 sed -e "/####host/  r Makefile.ll" Makefile.tem > Makefile.xx
99                 echo "Merged ${merged_frags}."
100                 rm -f Makefile.tem
101                 mv Makefile.xx Makefile.tem
102                 rm -f Makefile.ll
103         fi
104
105         # Add a definition for MAKE if system wants one.
106         case "$SET_MAKE" in
107         ?*)
108                 rm -f Makefile.xx
109                 (echo "$SET_MAKE"; cat Makefile.tem) >Makefile.xx
110                 rm -f Makefile.tem
111                 mv Makefile.xx Makefile.tem
112         esac
113
114         # Add a definition for INSTALL if system wants one.
115         # This substitutes for lots of x-* files.
116         if [ x$build_broken_install = x ]
117         then true
118         else
119                 rm -f Makefile.xx
120                 abssrcdir=`cd ${srcdir}; pwd`
121                 sed "s|^INSTALL = .*|${INSTALL}|" Makefile.tem > Makefile.xx
122                 rm -f Makefile.tem
123                 mv Makefile.xx Makefile.tem
124         fi
125
126         # If using -program-transform-name, override the installation names.
127         if [ "x${program_transform_set}" = "xyes" ] ; then
128                 sed -e "s/^program_transform_name[      ]*=.*$/program_transform_name =
129 $program_transform_name/" \
130                     -e "s/^program_transform_cross_name[
131 ]*=.*$/program_transform_cross_name = $program_transform_name/" \
132                     Makefile.tem > Makefile.xx
133                 rm -f Makefile.tem
134                 mv Makefile.xx Makefile.tem
135         fi
136
137         # Conditionalize the makefile for this target machine.
138         rm -f Makefile.xx Makefile.ll
139         merged_frags=
140         for f in .. ${tmake_file}
141         do
142                 if [ -f ${mainsrcdir}/config/$f ]
143                 then
144                         cat ${mainsrcdir}/config/$f >> Makefile.ll
145                         if [ x"${merged_frags}" != x ]
146                         then
147                                 merged_frags="${merged_frags} and "
148                         fi
149                         merged_frags="${merged_frags}$f"
150                 fi
151         done
152         if [ x"${merged_frags}" != x ]
153         then
154                 sed -e "/####target/  r Makefile.ll" Makefile.tem > Makefile.xx
155                 echo "Merged ${merged_frags}."
156                 rm -f Makefile.tem
157                 mv Makefile.xx Makefile.tem
158                 rm -f Makefile.ll
159         fi
160
161         # If the host supports
162         # symlinks, point stage[123] at ../stage[123] so bootstrapping and the
163         # installation procedure can still use CC="stage1/xgcc -Bstage1/".
164         # If the host doesn't support symlinks, FLAGS_TO_PASS has been
165         # modified to solve the problem there.
166         for t in stage1 stage2 stage3 stage4 include
167         do
168                 rm -f $t
169                 $symbolic_link ../$t $t 2>/dev/null
170         done
171
172         # Remove all formfeeds, since some Makes get confused by them.
173         # Also arrange to give the variables `target', `target_alias',
174         # `host_xmake_file', `tmake_file', `prefix', `local_prefix',
175         # `exec_prefix', `INSTALL_HEADERS_DIR', `exeext'
176         # values in the Makefile from the values they have in this script.
177         rm -f Makefile.xx
178         # Create an empty Makefile.sed first, to work around a Nextstep 3.3 bug.
179         echo 's|\f||' > Makefile.sed
180         rm Makefile.sed
181         echo 's|\f||' > Makefile.sed
182         echo "s|^target=.*$|target=${target}|" >> Makefile.sed
183         echo "s|^target_alias=.*$|target_alias=${target_alias}|" >> Makefile.sed
184         echo "s|^xmake_file=.*$|xmake_file=${dep_host_xmake_file}|" >> Makefile.sed
185         echo "s|^tmake_file=.*$|tmake_file=${dep_tmake_file}|" >> Makefile.sed
186         echo "s|^version=.*$|version=${version}|" >> Makefile.sed
187         echo "s|^GCC_THREAD_FILE=.*$|GCC_THREAD_FILE=${thread_file}|" >> Makefile.sed
188         echo "s|^prefix[        ]*=.*|prefix = $prefix|" >> Makefile.sed
189         echo "s|^local_prefix[  ]*=.*|local_prefix = $local_prefix|" >> Makefile.sed
190         echo "s|^exec_prefix[   ]*=.*|exec_prefix = $exec_prefix|" >> Makefile.sed
191         echo "s|^INSTALL_HEADERS_DIR[   ]*=.*$|INSTALL_HEADERS_DIR = ${build_install_headers_dir}|" >> Makefile.sed
192         echo "s|^exeext[        ]*=.*$|exeext = ${build_exeext}|" >> Makefile.sed
193         sed -f Makefile.sed Makefile.tem > Makefile.xx
194         rm -f Makefile.tem Makefile.sed
195         mv Makefile.xx Makefile.tem
196
197         # Install Makefile for real, after making final changes.
198         # Define macro CROSS_COMPILE in compilation
199         # if this is a cross-compiler.
200         # Also use all.cross instead of all.internal
201         # and add cross-make to Makefile.
202         if [ x$host != x$target ]
203         then
204                 rm -f Makefile.xx
205                 echo "CROSS=-DCROSS_COMPILE" > Makefile.xx
206                 sed -e "/####cross/  r ${mainsrcdir}/cross-make" Makefile.tem >> Makefile.xx
207                 rm -f Makefile.tem
208                 mv Makefile.xx Makefile.tem
209         fi
210
211         # When building gcc with a cross-compiler, we need to fix a few things.
212         # This must come after cross-make as we want all.build to override
213         # all.cross.
214         if [ x$build != x$host ]
215         then
216                 rm -f Makefile.xx
217                 echo "build= $build" > Makefile.xx
218                 echo "host= $host" >> Makefile.xx
219                 sed -e "s|objc-runtime$||" \
220                     -e "/####build/  r ${mainsrcdir}/build-make" Makefile.tem >> Makefile.xx
221                 rm -f Makefile.tem
222                 mv Makefile.xx Makefile.tem
223         fi
224
225         rm -f Makefile
226         mv Makefile.tem Makefile
227         echo "Created \`$subdir/Makefile'."
228
229         cd $STARTDIR
230 done   # end of current-dir SUBDIRS loop
231
232 # Restore this, remember we're invoked with `.'.
233 srcdir=$savesrcdir