This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: egcs-980221: build fails for shared libstdc++ on HP-UX 10.20
On Thu, 26 February 1998, 08:22:48, manfred@s-direktnet.de wrote:
> On Wed, 25 February 1998, 23:53:16, law@hurl.cygnus.com wrote:
>
> >
> > In message <199802251848.TAA14972@saturn.s-direktnet.de>you write:
> > > > I really suspect, `make distclean' does _not_ clean everything that
> > > > should be removed.
> > Well, I'll give it a spin myself in an empty directory.
>
> Yep, this is what I'll be doing next, too.
>
> >
> >
> > > > I've seen similar problems from another user on SunOS which were
> > > > caused by exactly these circumstances. I advised him to use `distinct
> > > > directories as srcdir and for building', which cured his problem.
> > It has been argued elsewhere, rather successfully that we need to
> > continue to support building in the source directory.
> >
> > As gross and horrible as that sounds we need to avoid making changes
> > which break the ability to build in the source tree -- this is true
> > even if the recommended install procedures specify building in a
> > directory other than the source tree.
>
> I'm sorry if my change did indeed break this. But I wasn't aware of people
> actually configuring and building their stuff in one directory...
OK, I found out what's going on here. The problem does exist since I don't know
when ;-) It's caused by `not finding the ../../config/*pic' files when someone
is configuring and building the runtime libs in the srcdir.
And yes, it's not a problem with make distclean.
But why didn't it show up earlier? Before my PICFLAG patch had been applied
the toplevel Makefile contained and passed the proper contents for PICFLAG
and PICFLAG_FOR_TARGET macros. Because they were passed to sub-makes nobody
recognized that configuration of the target lib{iberty,io,stdc++} actually
failed to locate the ../../config/* frags.
Right now the situation is as follows:
1. The toplevel Makefile doesn't pass down any PICFLAG macro; hence
each Makefile in the subdirs need to insert the contents of one
of the pic related frags as specified in the various configure.in
scripts.
2. When one is building in srcdir those parts in configure.in aren't
able to locate the frags in the toplevel/config directory because
one ../ is missing.
Until someone has a better patch, we should add this one: (and please
_do not build your stuff in srcdir_!)
ChangeLog in libiberty:
Thu Feb 26 17:53:19 1998 Manfred Hollstein <manfred@s-direktnet.de>
* config.table: Add ../ if we are configuring inside srcdir.
ChangeLog in libio:
Thu Feb 26 17:53:19 1998 Manfred Hollstein <manfred@s-direktnet.de>
* configure.in: Add ../ if we are configuring inside srcdir.
ChangeLog in libstdc++:
Thu Feb 26 17:53:19 1998 Manfred Hollstein <manfred@s-direktnet.de>
* configure.in: Add ../ if we are configuring inside srcdir.
diff -r -c -p egcs-980221.orig/libiberty/config.table egcs-980221/libiberty/config.table
*** egcs-980221.orig/libiberty/config.table Sun Feb 1 02:51:20 1998
--- egcs-980221/libiberty/config.table Thu Feb 26 17:47:50 1998
*************** fi
*** 66,71 ****
--- 66,78 ----
echo "# Warning: this fragment is automatically generated" > temp-frag
for frag in ${frags}; do
+ case "${frag}" in
+ ../../config/* )
+ if [ -n "${with_target_subdir}" ] && [ "${srcdir}" = "." ] && [ "${with_target_subdir}" != "." ] ; then
+ frag=../${frag}
+ fi
+ ;;
+ esac
frag=${srcdir}/${xsrcdir}config/$frag
if [ -f ${frag} ]; then
echo "Appending ${frag} to xhost-mkfrag"
diff -r -c -p egcs-980221.orig/libio/configure.in egcs-980221/libio/configure.in
*** egcs-980221.orig/libio/configure.in Mon Feb 23 18:03:21 1998
--- egcs-980221/libio/configure.in Thu Feb 26 17:48:54 1998
*************** case "${target}" in
*** 93,98 ****
--- 93,105 ----
esac
for frag in ${frags}; do
+ case "${frag}" in
+ ../../config/* )
+ if [ -n "${with_target_subdir}" ] && [ "${srcdir}" = "." ] && [ "${with_target_subdir}" != "." ] ; then
+ frag=../${frag}
+ fi
+ ;;
+ esac
frag=${srcdir}/config/$frag
if [ -f ${frag} ]; then
echo "Appending ${frag} to target-mkfrag"
diff -r -c -p egcs-980221.orig/libstdc++/configure.in egcs-980221/libstdc++/configure.in
*** egcs-980221.orig/libstdc++/configure.in Tue Jan 27 23:25:59 1998
--- egcs-980221/libstdc++/configure.in Thu Feb 26 17:50:26 1998
*************** case "${target}" in
*** 65,70 ****
--- 65,77 ----
esac
for frag in ${frags}; do
+ case "${frag}" in
+ ../../config/* )
+ if [ -n "${with_target_subdir}" ] && [ "${srcdir}" = "." ] && [ "${with_target_subdir}" != "." ] ; then
+ frag=../${frag}
+ fi
+ ;;
+ esac
frag=${srcdir}/config/$frag
if [ -f ${frag} ]; then
echo "Appending ${frag} to target-mkfrag"