This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Multilib installation problem
- From: Eric Botcazou <ebotcazou at libertysurf dot fr>
- To: dj at redhat dot com
- Cc: gcc at gcc dot gnu dot org
- Date: Sun, 13 Apr 2003 21:58:06 +0200
- Subject: 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 \