Makefile.in (slibdir): New variable.

* Makefile.in (slibdir): New variable.
        (libgcc.mk): Pass SHLIB_INSTALL to mklibgcc.
        (installdirs): Create slibdir.
        (install-libgcc, install-multilib): Defer to libgcc.mk.
        * configure.in (slibdir): Substitute.
        * mklibgcc.in (install): New target.

        * config/t-linux (SHLIB_LINK): Create links for the soname.
        (SHLIB_INSTALL): New.
        * config/alpha/t-osf4 (SHLIB_INSTALL): New.
        * config/mips/t-iris6 (SHLIB_INSTALL): New.
        * config/rs6000/t-aix43 (SHLIB_INSTALL): New.
        * config/sparc/t-slibgcc (SHLIB_INSTALL): New.
        * config/sparc/t-slibgcc-sld (SHLIB_INSTALL): New.

From-SVN: r38761
This commit is contained in:
Richard Henderson 2001-01-07 01:27:25 -08:00 committed by Richard Henderson
parent fc51424cc9
commit 2bbea3a6c7
11 changed files with 388 additions and 276 deletions

View File

@ -1,3 +1,20 @@
2001-01-07 Richard Henderson <rth@redhat.com>
* Makefile.in (slibdir): New variable.
(libgcc.mk): Pass SHLIB_INSTALL to mklibgcc.
(installdirs): Create slibdir.
(install-libgcc, install-multilib): Defer to libgcc.mk.
* configure.in (slibdir): Substitute.
* mklibgcc.in (install): New target.
* config/t-linux (SHLIB_LINK): Create links for the soname.
(SHLIB_INSTALL): New.
* config/alpha/t-osf4 (SHLIB_INSTALL): New.
* config/mips/t-iris6 (SHLIB_INSTALL): New.
* config/rs6000/t-aix43 (SHLIB_INSTALL): New.
* config/sparc/t-slibgcc (SHLIB_INSTALL): New.
* config/sparc/t-slibgcc-sld (SHLIB_INSTALL): New.
2001-01-07 Richard Henderson <rth@redhat.com>
* config/rs6000/aix.h (LINK_LIBGCC_SPECIAL_1): New.

View File

@ -312,6 +312,8 @@ unlibsubdir = ../../..
dollar = @dollar@
# Used in install-cross.
gcc_tooldir = @gcc_tooldir@
# Used to install the shared libgcc.
slibdir = @slibdir@
# Since tooldir does not exist at build-time, use -B$(build_tooldir)/bin/
build_tooldir = $(exec_prefix)/$(target_alias)
# Directory in which the compiler finds target-independent g++ includes.
@ -1023,6 +1025,7 @@ libgcc.mk: config.status Makefile mklibgcc $(LIB2ADD) xgcc$(exeext)
MULTILIBS=`$(GCC_FOR_TARGET) --print-multi-lib` \
EXTRA_MULTILIB_PARTS='$(EXTRA_MULTILIB_PARTS)' \
SHLIB_LINK='$(SHLIB_LINK)' \
SHLIB_INSTALL='$(SHLIB_INSTALL)' \
SHLIB_EXT='$(SHLIB_EXT)' \
SHLIB_MULTILIB='$(SHLIB_MULTILIB)' \
SHLIB_MKMAP='$(SHLIB_MKMAP)' \
@ -2429,6 +2432,7 @@ installdirs:
-if [ -d $(gcc_tooldir) ] ; then true ; else mkdir $(gcc_tooldir) ; chmod a+rx $(gcc_tooldir) ; fi
-if [ -d $(assertdir) ] ; then true ; else mkdir $(assertdir) ; chmod a+rx $(assertdir) ; fi
-if [ -d $(infodir) ] ; then true ; else mkdir $(infodir) ; chmod a+rx $(infodir) ; fi
-if [ -d $(slibdir) ] ; then true ; else mkdir $(slibdir) ; chmod a+rx $(slibdir) ; fi
# We don't use mkdir -p to create the parents of man1dir,
# because some systems don't support it.
# Instead, we use this technique to create the immediate parent of man1dir.
@ -2553,29 +2557,30 @@ install-man: installdirs $(srcdir)/gcc.1 $(GENERATED_MANPAGES) lang.install-man
-chmod a-x $(man1dir)/gcov$(manext)
# Install the library.
install-libgcc: libgcc.a installdirs
-if [ -f libgcc.a ] ; then \
rm -f $(libsubdir)/libgcc.a; \
$(INSTALL_DATA) libgcc.a $(libsubdir)/libgcc.a; \
if $(RANLIB_TEST_FOR_TARGET) ; then \
(cd $(libsubdir); $(RANLIB_FOR_TARGET) libgcc.a); else true; fi; \
chmod a-x $(libsubdir)/libgcc.a; \
else true; fi
install-libgcc: libgcc.mk libgcc.a installdirs
if $(RANLIB_TEST_FOR_TARGET); then \
r_f_t=$(RANLIB_FOR_TARGET); \
else \
r_f_t=: ; \
fi; \
$(MAKE) INSTALL_DATA="$(INSTALL_DATA)" \
RANLIB_FOR_TARGET="$$r_f_t" \
libsubdir="$(libsubdir)" \
slibdir="$(slibdir)" \
-f libgcc.mk install
# Install multiple versions of libgcc.a.
install-multilib: stmp-multilib installdirs
for i in `$(GCC_FOR_TARGET) --print-multi-lib`; do \
dir=`echo $$i | sed -e 's/;.*$$//'`; \
if [ -d $(libsubdir)/$${dir} ]; then true; else mkdir $(libsubdir)/$${dir}; chmod a+rx $(libsubdir)/$${dir}; fi; \
for f in libgcc.a $(EXTRA_MULTILIB_PARTS); do \
rm -f $(libsubdir)/$${dir}/$${f}; \
$(INSTALL_DATA) $${dir}/$${f} $(libsubdir)/$${dir}/$${f}; \
done; \
if $(RANLIB_TEST_FOR_TARGET); then \
(cd $(libsubdir)/$${dir}; $(RANLIB_FOR_TARGET) libgcc.a); \
else true; fi; \
chmod a-x $(libsubdir)/$${dir}/libgcc.a; \
done
if $(RANLIB_TEST_FOR_TARGET); then \
r_f_t=$(RANLIB_FOR_TARGET); \
else \
r_f_t=: ; \
fi; \
$(MAKE) INSTALL_DATA="$(INSTALL_DATA)" \
RANLIB_FOR_TARGET="$$r_f_t" \
libsubdir="$(libsubdir)" \
slibdir="$(slibdir)" \
-f libgcc.mk install
# Install all the header files built in the include subdirectory.
install-headers: install-include-dir $(INSTALL_HEADERS_DIR) $(INSTALL_ASSERT_H)

View File

@ -9,3 +9,6 @@ SHLIB_EXT = .so
SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
-Wl,-msym -Wl,-set_version,gcc.0 -Wl,-soname,@shlib_base_name@.so.0 \
-o @shlib_base_name@.so @multilib_flags@ @shlib_objs@ -lc
SHLIB_INSTALL = $(INSTALL_DATA) @shlib_base_name@.so $(slibdir)/@shlib_base_name@.so.0; \
rm -f $(slibdir)/@shlib_base_name@; \
$(LN_S) @shlib_base_name@.so.0 $(slibdir)/@shlib_base_name@.so

View File

@ -28,6 +28,9 @@ SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
# -hidden_symbol option, which is documented to be ignored in conjunction
# with -exports_file), but fails to actually hide any symbols.
# -Wl,-exports_file,@shlib_map_file@
SHLIB_INSTALL = $(INSTALL_DATA) @shlib_base_name@.so $(slibdir)/@shlib_base_name@.so.0; \
rm -f $(slibdir)/@shlib_base_name@; \
$(LN_S) @shlib_base_name@.so.0 $(slibdir)/@shlib_base_name@.so
SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver

View File

@ -60,6 +60,7 @@ SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
$(AR_CREATE_FOR_TARGET) tmp-@shlib_base_name@.a @multilib_dir@/shr.o ; \
mv tmp-@shlib_base_name@.a @shlib_base_name@.a ; \
rm -f @multilib_dir@/shr.o
SHLIB_INSTALL = $(INSTALL_DATA) @shlib_base_name@.a $(slibdir)/
SHLIB_LIBS = -lc `case @shlib_base_name@ in *pthread*) echo -lpthread ;; esac`
SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver

View File

@ -5,5 +5,8 @@ SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
-Wl,--soname=@shlib_base_name@.so.0 \
-Wl,--version-script=@shlib_map_file@ \
-o @shlib_base_name@.so @multilib_flags@ @shlib_objs@ -lc
SHLIB_INSTALL = $(INSTALL_DATA) @shlib_base_name@.so $(slibdir)/@shlib_base_name@.so.0; \
rm -f $(slibdir)/@shlib_base_name@; \
$(LN_S) @shlib_base_name@.so.0 $(slibdir)/@shlib_base_name@.so
SHLIB_MKMAP = $(srcdir)/mkmap-symver.awk
SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver

View File

@ -5,5 +5,8 @@ SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
-Wl,-h,@shlib_base_name@.so.0 -Wl,-z,text -Wl,-z,defs \
-Wl,-M,@shlib_map_file@ -o @shlib_base_name@.so \
@multilib_flags@ @shlib_objs@ -lc
SHLIB_INSTALL = $(INSTALL_DATA) @shlib_base_name@.so $(slibdir)/@shlib_base_name@.so.0; \
rm -f $(slibdir)/@shlib_base_name@; \
$(LN_S) @shlib_base_name@.so.0 $(slibdir)/@shlib_base_name@.so
SHLIB_MKMAP = $(srcdir)/mkmap-symver.awk
SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver

View File

@ -13,7 +13,12 @@ SHLIB_EXT = .so
SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
-Wl,--soname=@shlib_base_name@.so.0 \
-Wl,--version-script=@shlib_map_file@ \
-o @shlib_base_name@.so @multilib_flags@ @shlib_objs@ -lc
-o @shlib_base_name@.so @multilib_flags@ @shlib_objs@ -lc && \
rm -f @shlib_base_name@.so.0 && \
$(LN_S) @shlib_base_name@.so @shlib_base_name@.so.0
SHLIB_INSTALL = $(INSTALL_DATA) @shlib_base_name@.so $(slibdir)/@shlib_base_name@.so.0; \
rm -f $(slibdir)/@shlib_base_name@; \
$(LN_S) @shlib_base_name@.so.0 $(slibdir)/@shlib_base_name@.so
SHLIB_MKMAP = $(srcdir)/mkmap-symver.awk
SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver $(srcdir)/config/libgcc-glibc.ver

523
gcc/configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -1802,6 +1802,21 @@ fi
AC_SUBST(gcc_tooldir)
AC_SUBST(dollar)
# Find a directory in which to install a shared libgcc.
AC_ARG_ENABLE(version-specific-runtime-libs,
[ --enable-version-specific-runtime-libs Specify that runtime libraries shou
ld be installed in a compiler-specific directory ])
if [ "${enable_version_specific_runtime_libs-no}" = "yes" ]; then
slibdir='$(libsubdir)'
elif [ "$host" != "$target" ]; then
slibdir='$(build_tooldir)/lib'
else
slibdir='$(prefix)/lib'
fi
AC_SUBST(slibdir)
# Nothing to do for FLOAT_H, float_format already handled.
objdir=`pwd`
AC_SUBST(objdir)

View File

@ -29,6 +29,7 @@
# SHLIB_MKMAP
# SHLIB_MAPFILES
# SHLIB_NM_FLAGS
# SHLIB_INSTALL
# Make needs VPATH to be literal.
echo 'srcdir = @srcdir@'
@ -382,3 +383,46 @@ done
echo ""
echo "all: $all"
echo ""
echo "install: $all"
for ml in $MULTILIBS; do
dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'`
if [ $dir != . ]; then
ldir='$(libsubdir)'/$dir
echo " if [ -d $ldir ]; then true; else mkdir $ldir; chmod a+rx $ldir; fi;"
else
ldir='$(libsubdir)'
fi
echo ' $(INSTALL_DATA)' ${dir}/libgcc.a ${ldir}/
echo ' $(RANLIB_FOR_TARGET)' ${ldir}/libgcc.a
if [ "$SHLIB_LINK" ]; then
if [ -z "$SHLIB_MULTILIB" ]; then
if [ "$dir" = "." ]; then
shlib_base_name="libgcc_s";
else
shlib_base_name=libgcc_s_`echo $dir | sed s,/,_,g`
fi
echo " $SHLIB_INSTALL" \
| sed -e "s%@shlib_base_name@%$shlib_base_name%g"
elif [ "$SHLIB_MULTILIB" = "$dir" ]; then
shlib_base_name="libgcc_s";
echo " $SHLIB_INSTALL" \
| sed -e "s%@shlib_base_name@%$shlib_base_name%g"
fi
fi
done
for f in $EXTRA_MULTILIB_PARTS; do
for ml in $MULTILIBS; do
dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'`
if [ $dir != . ]; then
out=${dir}/$f
ldir='$(libsubdir)'/$dir
else
out=$f
ldir='$(libsubdir)'
fi
echo ' $(INSTALL_DATA)' $out $ldir/
done
done