source: trunk/src/gcc/config-ml.in@ 272

Last change on this file since 272 was 2, checked in by bird, 23 years ago

Initial revision

  • Property cvs2svn:cvs-rev set to 1.1
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 23.4 KB
Line 
1# Configure fragment invoked in the post-target section for subdirs
2# wanting multilib support.
3#
4# It is advisable to support a few --enable/--disable options to let the
5# user select which libraries s/he really wants.
6#
7# Subdirectories wishing to use multilib should put the following lines
8# in the "post-target" section of configure.in.
9#
10# if [ "${srcdir}" = "." ] ; then
11# if [ "${with_target_subdir}" != "." ] ; then
12# . ${with_multisrctop}../../config-ml.in
13# else
14# . ${with_multisrctop}../config-ml.in
15# fi
16# else
17# . ${srcdir}/../config-ml.in
18# fi
19#
20#
21# Things are complicated because 6 separate cases must be handled:
22# 2 (native, cross) x 3 (absolute-path, relative-not-dot, dot) = 6.
23#
24# srcdir=. is special. It must handle make programs that don't handle VPATH.
25# To implement this, a symlink tree is built for each library and for each
26# multilib subdir.
27#
28# The build tree is layed out as
29#
30# ./
31# newlib
32# m68020/
33# newlib
34# m68881/
35# newlib
36#
37# The nice feature about this arrangement is that inter-library references
38# in the build tree work without having to care where you are. Note that
39# inter-library references also work in the source tree because symlink trees
40# are built when srcdir=.
41#
42# Unfortunately, trying to access the libraries in the build tree requires
43# the user to manually choose which library to use as GCC won't be able to
44# find the right one. This is viewed as the lesser of two evils.
45#
46# Configure variables:
47# ${with_target_subdir} = "." for native, or ${target_alias} for cross.
48# Set by top level Makefile.
49# ${with_multisrctop} = how many levels of multilibs there are in the source
50# tree. It exists to handle the case of configuring in the source tree:
51# ${srcdir} is not constant.
52# ${with_multisubdir} = name of multilib subdirectory (eg: m68020/m68881).
53#
54# Makefile variables:
55# MULTISRCTOP = number of multilib levels in source tree (+1 if cross)
56# (FIXME: note that this is different than ${with_multisrctop}. Check out.).
57# MULTIBUILDTOP = number of multilib levels in build tree
58# MULTIDIRS = list of multilib subdirs (eg: m68000 m68020 ...)
59# (only defined in each library's main Makefile).
60# MULTISUBDIR = installed subdirectory name with leading '/' (eg: /m68000)
61# (only defined in each multilib subdir).
62
63# FIXME: Multilib is currently disabled by default for everything other than
64# newlib. It is up to each target to turn on multilib support for the other
65# libraries as desired.
66
67# We have to handle being invoked by both Cygnus configure and Autoconf.
68#
69# Cygnus configure incoming variables:
70# srcdir, subdir, host, arguments
71#
72# Autoconf incoming variables:
73# srcdir, host, ac_configure_args
74#
75# We *could* figure srcdir and host out, but we'd have to do work that
76# our caller has already done to figure them out and requiring these two
77# seems reasonable.
78# Note that `host' in this case is GCC's `target'. Target libraries are
79# configured for a particular host.
80
81if [ -n "${ac_configure_args}" ]; then
82 Makefile=${ac_file-Makefile}
83 ml_config_shell=${CONFIG_SHELL-/bin/sh}
84 ml_arguments="${ac_configure_args}"
85 ml_realsrcdir=${srcdir}
86else
87 Makefile=${Makefile-Makefile}
88 ml_config_shell=${config_shell-/bin/sh}
89 ml_arguments="${arguments}"
90 if [ -n "${subdir}" -a "${subdir}" != "." ] ; then
91 ml_realsrcdir=${srcdir}/${subdir}
92 else
93 ml_realsrcdir=${srcdir}
94 fi
95fi
96
97# Scan all the arguments and set all the ones we need.
98
99ml_verbose=--verbose
100for option in ${ml_arguments}
101do
102 case $option in
103 --*) ;;
104 -*) option=-$option ;;
105 esac
106
107 case $option in
108 --*=*)
109 optarg=`echo $option | sed -e 's/^[^=]*=//'`
110 ;;
111 esac
112
113 case $option in
114 --disable-*)
115 enableopt=`echo ${option} | sed 's:^--disable-:enable_:;s:-:_:g'`
116 eval $enableopt=no
117 ;;
118 --enable-*)
119 case "$option" in
120 *=*) ;;
121 *) optarg=yes ;;
122 esac
123 enableopt=`echo ${option} | sed 's:^--::;s:=.*$::;s:-:_:g'`
124 eval $enableopt="$optarg"
125 ;;
126 --norecursion | --no*)
127 ml_norecursion=yes
128 ;;
129 --silent | --sil* | --quiet | --q*)
130 ml_verbose=--silent
131 ;;
132 --verbose | --v | --verb*)
133 ml_verbose=--verbose
134 ;;
135 --with-*)
136 case "$option" in
137 *=*) ;;
138 *) optarg=yes ;;
139 esac
140 withopt=`echo ${option} | sed 's:^--::;s:=.*$::;s:-:_:g'`
141 eval $withopt="$optarg"
142 ;;
143 --without-*)
144 withopt=`echo ${option} | sed 's:^--::;s:out::;s:-:_:g'`
145 eval $withopt=no
146 ;;
147 esac
148done
149
150# Only do this if --enable-multilib.
151if [ "${enable_multilib}" = yes ]; then
152
153# Compute whether this is the library's top level directory
154# (ie: not a multilib subdirectory, and not a subdirectory like newlib/src).
155# ${with_multisubdir} tells us we're in the right branch, but we could be
156# in a subdir of that.
157# ??? The previous version could void this test by separating the process into
158# two files: one that only the library's toplevel configure.in ran (to
159# configure the multilib subdirs), and another that all configure.in's ran to
160# update the Makefile. It seemed reasonable to collapse all multilib support
161# into one file, but it does leave us with having to perform this test.