This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

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"


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]