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
25savesrcdir=$srcdir
26
27for subdir in . $oldstyle_subdirs
28do
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|||' > Makefile.sed
180	rm Makefile.sed
181	echo 's|||' > 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
230done   # end of current-dir SUBDIRS loop
231
232# Restore this, remember we're invoked with `.'.
233srcdir=$savesrcdir
234