[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: SONAME clarification
From: |
Marco Atzeri |
Subject: |
Re: SONAME clarification |
Date: |
Wed, 28 Jan 2009 09:23:05 +0100 (CET) |
--- "John W. Eaton" ha scritto:
> On 13-Nov-2008, Marco Atzeri wrote:
>
> | --- Marco Atzeri ha scritto:
> |
> | > --- "John W. Eaton" ha scritto:
> | >
> | > > On 12-Nov-2008, Marco Atzeri wrote:
> |
> | > > Oh, I see, you are changing LIBPRE to "cyg".
> If
> | > you
> | > > do that and you
> | > > also strip it off for the --out-implib option,
> | > then
> | > > how about using
> | > > something like
> | > >
> | > > SONAME_FLAGS='-Wl,--out-implib=$(patsubst
> | > > $(LIBPRE)%, %, $@).a'
> | >
> | > I need to check, in any case there are other
> points
> | > where I need to differentiate between
> | > LIBPRE=cyg and an additional SOPRE=lib.
> | > See attached patch, in cygwin it works, and
> | > I should have left correct for all the other
> | > systems.
> |
> | I re-made the patch using your suggestion,
> | and adding the SOPRE=lib to differentiate from
> | LIBPRE=cyg
> |
> | SONAME_FLAGS='-Wl,--out-implib=$(patsubst
> $(SOPRE)%,
> | %, $@).a'
> |
> | >
> | > > Comments?
> | > >
> | > > jwe
> | > >
> |
> | The patch is now cleaner and simpler.
> | It builds fine on cygwin, but a check on other
> | system is worth.
>
> I'm confused about this patch because it installs
> files with names
> like $(SOPRE)octinterp.$(LIBEXT) and
> $(SOPRE)octinterp.$(SHLLIB), but
> there are no rules for building files with with the
> $(SOPRE) prefix.
>
> Shouldn't the $(SOPRE) only apply to shared
> libraries? In the new
> install rules, you also use this prefix for static
> libraries.
>
> I'm appending a version of the patch, updated for
> the current
> sources. I won't apply it until these issues are
> resolved.
>
> jwe
Hi John,
There were some mistakes in the one I sent you before.
The correct form for cygwin SONAME should be
SONAME_FLAGS='-Wl,--out-implib=$(patsubst
$(LIBPRE)%,$(SOPRE)%,$@).a'
where
LIBPRE=cyg
SOPRE=lib
Attached the latest version I am using on 3.0.3
and 3.0.4 release candidate.
http://cygwin.com/ml/cygwin-announce/2009-01/msg00035.html
The scope of the patch is to have for cygwin
shared lib as cygcruft.dll
import lib as libcruft.dll.a
from compilation log:
*********************************
make cygcruft.dll.3.0.4
make[3]: Entering directory
`/pub/cygports/octave/octave-3.0.4-2/build/libcruft'
rm -f cygcruft.dll
g++-4 -shared -Wl,--export-all-symbols
-Wl,--enable-auto-import -Wl,--enable-aut
o-image-base -Wl,--out-implib=libcruft.dll.a -o
cygcruft.dll amos/dgamln.o .....
Creating library file: libcruft.dll.a
rm -f cygcruft.dll.3.0.4
ln -s cygcruft.dll cygcruft.dll.3.0.4
*********************************
and from install log:
*********************************
rm -f
/pub/cygports/octave/octave-3.0.4-2/inst/usr/lib/octave-3.0.4/libcruft.dll.a.3.0.4;
\
/bin/install -c \
libcruft.dll.a
/pub/cygports/octave/octave-3.0.4-2/inst/usr/lib/octave-3.0.4/libcruft.dll.a.3.0.4;
\
rm -f
/pub/cygports/octave/octave-3.0.4-2/inst/usr/lib/octave-3.0.4/libcruft.dll.a;
\
(cd
/pub/cygports/octave/octave-3.0.4-2/inst/usr/lib/octave-3.0.4;
\
ln -s libcruft.dll.a.3.0.4
/pub/cygports/octave/octave-3.0.4-2/inst/usr/lib/octave-3.0.4/libcruft.dll
.a); \
if test xdll != x ; then \
rm -f
/pub/cygports/octave/octave-3.0.4-2/inst/usr/bin/cygcruft.dll;
\
/bin/install -c \
cygcruft.dll
/pub/cygports/octave/octave-3.0.4-2/inst/usr/bin/cygcruft.dll;
\
*********************************
the installed lib files will be
usr/bin/cygcruft.dll
usr/bin/cygoctave.dll
usr/bin/cygoctinterp.dll
usr/lib/octave-3.0.4/libcruft.dll.a
usr/lib/octave-3.0.4/libcruft.dll.a.3.0.4
usr/lib/octave-3.0.4/liboctave.dll.a
usr/lib/octave-3.0.4/liboctave.dll.a.3.0.4
usr/lib/octave-3.0.4/liboctinterp.dll.a
usr/lib/octave-3.0.4/liboctinterp.dll.a.3.0.4
Regards
Marco
--- origsrc/octave-3.0.3/Makeconf.in 2008-09-24 09:13:46.000000000 +0200
+++ src/octave-3.0.3/Makeconf.in 2009-01-23 12:10:57.460227300 +0100
@@ -97,6 +97,7 @@
LIBEXT = a
LIBPRE = @LIBPRE@
+SOPRE = @SOPRE@
# Fortran to C translator and associated flags.
--- origsrc/octave-3.0.3/configure.in 2008-09-24 09:13:46.000000000 +0200
+++ src/octave-3.0.3/configure.in 2009-01-23 13:47:33.121962700 +0100
@@ -950,6 +950,7 @@
SHLBIN_VER='$(SHLBIN).$(version)'
SHLLINKEXT=
LIBPRE=lib
+SOPRE=lib
SH_LD='$(CXX)'
SH_LDFLAGS=-shared
DL_LD='$(SH_LD)'
@@ -1002,7 +1003,7 @@
SONAME_FLAGS='-install_name $(octlibdir)/$@'
library_path_var=DYLD_LIBRARY_PATH
;;
- *-*-cygwin* | *-*-mingw*)
+ *-*-mingw*)
DL_LDFLAGS="-shared -Wl,--export-all-symbols -Wl,--enable-auto-import
-Wl,--enable-runtime-pseudo-reloc"
CXXPICFLAG=
CPICFLAG=
@@ -1015,6 +1016,22 @@
SONAME_FLAGS='-Wl,address@hidden'
library_path_var=PATH
;;
+ *-*-cygwin*)
+ DL_LDFLAGS="-shared -Wl,--export-all-symbols -Wl,--enable-auto-import
-Wl,--enable-runtime-pseudo-reloc"
+ CXXPICFLAG=
+ CPICFLAG=
+ FPICFLAG=
+ LIBPRE=cyg
+ SOPRE=lib
+ SHLEXT=dll
+ SHLLIB=dll.a
+ SHLBIN=dll
+ SH_LDFLAGS="-shared -Wl,--export-all-symbols -Wl,--enable-auto-import
-Wl,--enable-auto-image-base"
+ SHLLINKEXT=
+ SONAME_FLAGS='-Wl,--out-implib=$(patsubst $(LIBPRE)%,$(SOPRE)%,$@).a'
+ library_path_var=PATH
+ ;;
+
*-*-msdosmsvc)
DL_LDFLAGS="-shared"
CPICFLAG=
@@ -1024,6 +1041,7 @@
SHLLIB=lib
SHLBIN=dll
LIBPRE=
+ SOPRE=
SH_LDFLAGS="-shared"
if test -n "`echo $CFLAGS | grep -e '-g'`" -o -n "`echo $CXXFLAGS | grep
-e '-g'`"; then
DL_LDFLAGS="$DL_LDFLAGS -g"
@@ -1126,6 +1144,7 @@
AC_MSG_NOTICE([defining SHLBIN_VER to be $SHLBIN_VER])
AC_MSG_NOTICE([defining SHLLINKEXT to be $SHLLINKEXT])
AC_MSG_NOTICE([defining LIBPRE to be $LIBPRE])
+AC_MSG_NOTICE([defining SOPRE to be $SOPRE])
AC_MSG_NOTICE([defining SH_LD to be $SH_LD])
AC_MSG_NOTICE([defining SH_LDFLAGS to be $SH_LDFLAGS])
AC_MSG_NOTICE([defining DL_LD to be $DL_LD])
@@ -1151,6 +1170,7 @@
AC_SUBST(SHLBIN_VER)
AC_SUBST(SHLLINKEXT)
AC_SUBST(LIBPRE)
+AC_SUBST(SOPRE)
AC_SUBST(SH_LD)
AC_SUBST(SH_LDFLAGS)
AC_SUBST(DL_LD)
--- origsrc/octave-3.0.3/libcruft/Makefile.in 2008-09-24 09:13:46.000000000
+0200
+++ src/octave-3.0.3/libcruft/Makefile.in 2009-01-23 12:10:57.460227300
+0100
@@ -146,18 +146,18 @@
install::
$(top_srcdir)/mkinstalldirs $(DESTDIR)$(octlibdir)
if $(STATIC_LIBS); then \
- rm -f $(DESTDIR)$(octlibdir)/$(LIBPRE)cruft.$(LIBEXT) ; \
- $(INSTALL_DATA) $(LIBPRE)cruft.$(LIBEXT) \
- $(DESTDIR)$(octlibdir)/$(LIBPRE)cruft.$(LIBEXT) ; \
- $(RANLIB) $(DESTDIR)$(octlibdir)/$(LIBPRE)cruft.$(LIBEXT) ; \
+ rm -f $(DESTDIR)$(octlibdir)/$(SOPRE)cruft.$(LIBEXT) ; \
+ $(INSTALL_DATA) $(SOPRE)cruft.$(LIBEXT) \
+ $(DESTDIR)$(octlibdir)/$(SOPRE)cruft.$(LIBEXT) ; \
+ $(RANLIB) $(DESTDIR)$(octlibdir)/$(SOPRE)cruft.$(LIBEXT) ; \
fi
if $(SHARED_LIBS); then \
- rm -f $(DESTDIR)$(octlibdir)/$(LIBPRE)cruft.$(SHLLIB_VER); \
+ rm -f $(DESTDIR)$(octlibdir)/$(SOPRE)cruft.$(SHLLIB_VER); \
$(INSTALL) \
- $(LIBPRE)cruft.$(SHLLIB)
$(DESTDIR)$(octlibdir)/$(LIBPRE)cruft.$(SHLLIB_VER); \
- rm -f $(DESTDIR)$(octlibdir)/$(LIBPRE)cruft.$(SHLLIB); \
+ $(SOPRE)cruft.$(SHLLIB)
$(DESTDIR)$(octlibdir)/$(SOPRE)cruft.$(SHLLIB_VER); \
+ rm -f $(DESTDIR)$(octlibdir)/$(SOPRE)cruft.$(SHLLIB); \
(cd $(DESTDIR)$(octlibdir); \
- $(LN_S) $(LIBPRE)cruft.$(SHLLIB_VER)
$(DESTDIR)$(octlibdir)/$(LIBPRE)cruft.$(SHLLIB)); \
+ $(LN_S) $(SOPRE)cruft.$(SHLLIB_VER)
$(DESTDIR)$(octlibdir)/$(SOPRE)cruft.$(SHLLIB)); \
if test x$(SHLBIN) != x ; then \
rm -f $(DESTDIR)$(bindir)/$(LIBPRE)cruft.$(SHLBIN); \
$(INSTALL_PROGRAM) \
--- origsrc/octave-3.0.3/liboctave/Makefile.in 2008-09-24 09:13:47.000000000
+0200
+++ src/octave-3.0.3/liboctave/Makefile.in 2009-01-23 12:10:57.460227300
+0100
@@ -283,17 +283,17 @@
install-lib:
$(top_srcdir)/mkinstalldirs $(DESTDIR)$(octlibdir)
if $(STATIC_LIBS); then \
- rm -f $(DESTDIR)$(octlibdir)/$(LIBPRE)octave.$(LIBEXT); \
- $(INSTALL_DATA) $(LIBPRE)octave.$(LIBEXT) \
- $(DESTDIR)$(octlibdir)/$(LIBPRE)octave.$(LIBEXT); \
- $(RANLIB) $(DESTDIR)$(octlibdir)/$(LIBPRE)octave.$(LIBEXT); \
+ rm -f $(DESTDIR)$(octlibdir)/$(SOPRE)octave.$(LIBEXT); \
+ $(INSTALL_DATA) $(SOPRE)octave.$(LIBEXT) \
+ $(DESTDIR)$(octlibdir)/$(SOPRE)octave.$(LIBEXT); \
+ $(RANLIB) $(DESTDIR)$(octlibdir)/$(SOPRE)octave.$(LIBEXT); \
fi
if $(SHARED_LIBS); then \
- rm -f $(DESTDIR)$(octlibdir)/$(LIBPRE)octave.$(SHLLIB_VER); \
+ rm -f $(DESTDIR)$(octlibdir)/$(SOPRE)octave.$(SHLLIB_VER); \
$(INSTALL) \
- $(LIBPRE)octave.$(SHLLIB)
$(DESTDIR)$(octlibdir)/$(LIBPRE)octave.$(SHLLIB_VER); \
- rm -f $(DESTDIR)$(octlibdir)/$(LIBPRE)octave.$(SHLLIB); \
- (cd $(DESTDIR)$(octlibdir) ; $(LN_S) $(LIBPRE)octave.$(SHLLIB_VER)
$(DESTDIR)$(octlibdir)/$(LIBPRE)octave.$(SHLLIB)); \
+ $(SOPRE)octave.$(SHLLIB)
$(DESTDIR)$(octlibdir)/$(SOPRE)octave.$(SHLLIB_VER); \
+ rm -f $(DESTDIR)$(octlibdir)/$(SOPRE)octave.$(SHLLIB); \
+ (cd $(DESTDIR)$(octlibdir) ; $(LN_S) $(SOPRE)octave.$(SHLLIB_VER)
$(DESTDIR)$(octlibdir)/$(SOPRE)octave.$(SHLLIB)); \
if test x$(SHLBIN) != x ; then \
rm -f $(DESTDIR)$(bindir)/$(LIBPRE)octave.$(SHLBIN); \
$(INSTALL_PROGRAM) \
--- origsrc/octave-3.0.3/src/Makefile.in 2008-09-24 09:13:49.000000000
+0200
+++ src/octave-3.0.3/src/Makefile.in 2009-01-23 12:10:57.476100300 +0100
@@ -439,17 +439,17 @@
install-lib:
$(top_srcdir)/mkinstalldirs $(DESTDIR)$(octlibdir)
if $(STATIC_LIBS); then \
- rm -f $(DESTDIR)$(octlibdir)/$(LIBPRE)octinterp.$(LIBEXT); \
- $(INSTALL_DATA) $(LIBPRE)octinterp.$(LIBEXT) \
- $(DESTDIR)$(octlibdir)/$(LIBPRE)octinterp.$(LIBEXT); \
- $(RANLIB) $(DESTDIR)$(octlibdir)/$(LIBPRE)octinterp.$(LIBEXT); \
+ rm -f $(DESTDIR)$(octlibdir)/$(SOPRE)octinterp.$(LIBEXT); \
+ $(INSTALL_DATA) $(SOPRE)octinterp.$(LIBEXT) \
+ $(DESTDIR)$(octlibdir)/$(SOPRE)octinterp.$(LIBEXT); \
+ $(RANLIB) $(DESTDIR)$(octlibdir)/$(SOPRE)octinterp.$(LIBEXT); \
fi
if $(SHARED_LIBS); then \
rm -f $(DESTDIR)$(octlibdir)/$(LIBPRE)octinterp.$(SHLEXT_VER); \
- $(INSTALL) $(LIBPRE)octinterp.$(SHLLIB) \
- $(DESTDIR)$(octlibdir)/$(LIBPRE)octinterp.$(SHLLIB_VER); \
- rm -f $(DESTDIR)$(octlibdir)/$(LIBPRE)octinterp.$(SHLLIB); \
- (cd $(DESTDIR)$(octlibdir) ; $(LN_S) $(LIBPRE)octinterp.$(SHLLIB_VER)
$(DESTDIR)$(octlibdir)/$(LIBPRE)octinterp.$(SHLLIB)); \
+ $(INSTALL) $(SOPRE)octinterp.$(SHLLIB) \
+ $(DESTDIR)$(octlibdir)/$(SOPRE)octinterp.$(SHLLIB_VER); \
+ rm -f $(DESTDIR)$(octlibdir)/$(SOPRE)octinterp.$(SHLLIB); \
+ (cd $(DESTDIR)$(octlibdir) ; $(LN_S) $(SOPRE)octinterp.$(SHLLIB_VER)
$(DESTDIR)$(octlibdir)/$(SOPRE)octinterp.$(SHLLIB)); \
if test x$(SHLBIN) != x ; then \
rm -f $(DESTDIR)$(bindir)/$(LIBPRE)octinterp.$(SHLBIN); \
$(INSTALL_PROGRAM) \
- Re: SONAME clarification, John W. Eaton, 2009/01/27
- Re: SONAME clarification,
Marco Atzeri <=
- Re: SONAME clarification, John W. Eaton, 2009/01/28
- Re: SONAME clarification, Marco Atzeri, 2009/01/28
- Re: SONAME clarification, John W. Eaton, 2009/01/28
- Re: SONAME clarification, Marco Atzeri, 2009/01/29
- Re: SONAME clarification, John W. Eaton, 2009/01/29
- Re: SONAME clarification, Marco Atzeri, 2009/01/30
- Re: SONAME clarification, John W. Eaton, 2009/01/30