This is the mail archive of the gcc@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]
Other format: [Raw text]

Multilib installation problem


Hello DJ,

There is a fair amount (more than 15) of GNATS PRs about installation 
problems of libstdc++ on native multilib Sparc platforms. A typical 
installation log is attached.

The problem is the following: the Makefile in

	$(objdir)/sparc-sun-solaris2.8/sparcv9/libstdc++-v3/include

contains a relative path to $(topsrcdir)/install.sh, which is correct (right 
number of ..). It is the same for the Makefile in

	$(objdir)/sparc-sun-solaris2.8/sparcv9/libstdc++-v3

and

	$(objdir)/sparc-sun-solaris2.8/libstdc++-v3

i.e relative path and right number of ..


Now, when installing, the 2nd makefile passes the INSTALL* variables down to 
the 1st makefile but the 3rd makefile does _not_ pass the INSTALL* variables 
down to the 2nd makefile. The 2nd makefile, therefore, passes its own 
INSTALL* variables (relative correct path) to the 1st one, which are of 
course not valid for the latter since they are relative.

Interesting factor: this does not happen when building the compiler with 
'make bootstrap' but only when building it with a bare 'make'. The reason is 
that, in the former case, the INSTALL* variables of the toplevel dir (which 
are absolute) are passed down to the configure script of libstdc++, which 
copies them in the Makefiles. In the latter case, the variables don't seem to 
be passed to the configure script which, therefore, has to re-discover it.

Is that a bug? I personally would say yes, in particular that the INSTALL* 
variables should be passed down along the whole chain of makefiles. I've 
attached a patch against config-ml.in to fix the problem. It generates a 
modified Makefile in $(objdir)/sparc-sun-solaris2.8/libstdc++-v3 that 
propagates the INSTALL* variables and correctly installs the library.

Thanks in advance for your answer.

-- 
Eric Botcazou


2003-04-13  Eric Botcazou  <ebotcazou at libertysurf dot fr>

	* config-ml.in: Propagate INSTALL variables.

make[3]: Entering directory `/proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2_tmp_sun5.8/sparc-sun-solaris2.8/sparcv9/libstdc++-v3'
true "AR_FLAGS=rc" "CC_FOR_BUILD=gcc" "CC_FOR_TARGET=/proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2_tmp_sun5.8/gcc/xgcc -B/proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2_tmp_sun5.8/gcc/ -B/proj/wdtprojects/test/gnutools/tmp/gnu_sun5.8/gcc-3.2.2/sparc-sun-solaris2.8/bin/ -B/proj/wdtprojects/test/gnutools/tmp/gnu_sun5.8/gcc-3.2.2/sparc-sun-solaris2.8/lib/ -isystem /proj/wdtprojects/test/gnutools/tmp/gnu_sun5.8/gcc-3.2.2/sparc-sun-solaris2.8/include" "CFLAGS=-O2 -g -O2  -m64" "CXXFLAGS=-g -O2  -m64" "CFLAGS_FOR_BUILD=" "CFLAGS_FOR_TARGET=-O2 -g -O2" "INSTALL=../../../../gcc-3.2.2/libstdc++-v3/../install-sh -c" "INSTALL_DATA=../../../../gcc-3.2.2/libstdc++-v3/../install-sh -c -m 644" "INSTALL_PROGRAM=../../../../gcc-3.2.2/libstdc++-v3/../install-sh -c " "INSTALL_SCRIPT=../../../../gcc-3.2.2/libstdc++-v3/../install-sh -c " "LDFLAGS=-m64" "LIBCFLAGS=-O2 -g -O2  -m64" "LIBCFLAGS_FOR_TARGET=-O2 -g -O2" "MAKE=/proj/adg/gnutools/bin/../sun5.8/bin/make" "MAKEINFO=makeinfo " "PICFLAG=" "PICFLAG_FOR_TARGET=" "SHELL=/bin/ksh" "RUNTESTFLAGS=" "exec_prefix=/proj/wdtprojects/test/gnutools/tmp/gnu_sun5.8/gcc-3.2.2" "infodir=/proj/wdtprojects/test/gnutools/tmp/gnu_sun5.8/gcc-3.2.2/info" "libdir=/proj/wdtprojects/test/gnutools/tmp/gnu_sun5.8/gcc-3.2.2/lib" "includedir=/proj/wdtprojects/test/gnutools/tmp/gnu_sun5.8/gcc-3.2.2/include" "prefix=/proj/wdtprojects/test/gnutools/tmp/gnu_sun5.8/gcc-3.2.2" "tooldir=/proj/wdtprojects/test/gnutools/tmp/gnu_sun5.8/gcc-3.2.2/sparc-sun-solaris2.8" "AR=ar" "AS=/proj/wdtprojects/test/gnutools/tmp/gnu_sun5.8/binutils-2.13.2.1/bin/as" "LD=/proj/wdtprojects/test/gnutools/tmp/gnu_sun5.8/binutils-2.13.2.1/bin/ld" "LIBCFLAGS=-O2 -g -O2  -m64" "PICFLAG=" "RANLIB=true" "NM=/usr/ccs/bin/nm" "NM_FOR_BUILD=" "NM_FOR_TARGET=/usr/ccs/bin/nm" "DESTDIR=" "WERROR="  DO=install multi-do
Making install in include
make[4]: Entering directory `/proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2_tmp_sun5.8/sparc-sun-solaris2.8/sparcv9/libstdc++-v3/include'
make[5]: Entering directory `/proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2_tmp_sun5.8/sparc-sun-solaris2.8/sparcv9/libstdc++-v3/include'
make[5]: Nothing to be done for `install-exec-am'.
/bin/ksh ../../../../../gcc-3.2.2/libstdc++-v3/../mkinstalldirs /proj/wdtprojects/test/gnutools/tmp/gnu_sun5.8/gcc-3.2.2/include/c++/3.2.2
mkdir /proj/wdtprojects/test/gnutools/tmp/gnu_sun5.8/gcc-3.2.2/include/c++
mkdir /proj/wdtprojects/test/gnutools/tmp/gnu_sun5.8/gcc-3.2.2/include/c++/3.2.2
/bin/ksh ../../../../../gcc-3.2.2/libstdc++-v3/../mkinstalldirs /proj/wdtprojects/test/gnutools/tmp/gnu_sun5.8/gcc-3.2.2/include/c++/3.2.2/./bits
mkdir /proj/wdtprojects/test/gnutools/tmp/gnu_sun5.8/gcc-3.2.2/include/c++/3.2.2/./bits
for file in /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/basic_ios.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/basic_ios.tcc /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/basic_string.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/basic_string.tcc /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/boost_concept_check.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/char_traits.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/codecvt.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/concept_check.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/cpp_type_traits.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/fpos.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/fstream.tcc /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/functexcept.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/generic_shadow.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/gslice.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/gslice_array.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/indirect_array.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/ios_base.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/istream.tcc /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/locale_facets.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/locale_facets.tcc /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/localefwd.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/mask_array.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/ostream.tcc /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/pthread_allocimpl.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/stream_iterator.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/streambuf_iterator.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/slice.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/slice_array.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/sstream.tcc /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/stl_algo.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/stl_algobase.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/stl_alloc.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/stl_bvector.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/stl_construct.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/stl_deque.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/stl_function.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/stl_heap.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/stl_iterator.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/stl_iterator_base_funcs.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/stl_iterator_base_types.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/stl_list.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/stl_map.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/stl_multimap.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/stl_multiset.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/stl_numeric.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/stl_pair.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/stl_pthread_alloc.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/stl_queue.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/stl_raw_storage_iter.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/stl_relops.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/stl_set.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/stl_stack.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/stl_tempbuf.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/stl_threads.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/stl_tree.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/stl_uninitialized.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/stl_vector.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/streambuf.tcc /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/stringfwd.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/type_traits.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/valarray_array.h /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/valarray_array.tcc /proj/wdtprojects/test/gnutools/src/gcc-3.2.2/gcc-3.2.2/libstdc++-v3/include/bits/valarray_meta.h ; do \
  ../../../../gcc-3.2.2/libstdc++-v3/../install-sh -c -m 644 ${file} /proj/wdtprojects/test/gnutools/tmp/gnu_sun5.8/gcc-3.2.2/include/c++/3.2.2/./bits; done
/bin/ksh: ../../../../gcc-3.2.2/libstdc++-v3/../install-sh:  not found
/bin/ksh: ../../../../gcc-3.2.2/libstdc++-v3/../install-sh:  not found
[...]
Index: config-ml.in
===================================================================
RCS file: /cvs/gcc/gcc/config-ml.in,v
retrieving revision 1.19.18.1
diff -u -r1.19.18.1 config-ml.in
--- config-ml.in	12 Feb 2003 17:44:49 -0000	1.19.18.1
+++ config-ml.in	13 Apr 2003 19:48:19 -0000
@@ -554,6 +554,10 @@
 				LIBCXXFLAGS="$(LIBCXXFLAGS) $${flags}" \
 				LDFLAGS="$(LDFLAGS) $${flags}" \
 				DESTDIR="$(DESTDIR)" \
+				INSTALL="$(INSTALL)" \
+				INSTALL_DATA="$(INSTALL_DATA)" \
+				INSTALL_PROGRAM="$(INSTALL_PROGRAM)" \
+				INSTALL_SCRIPT="$(INSTALL_SCRIPT)" \
 				$(DO)); then \
 		  true; \
 		else \

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