libtool
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

linking with extern DLLs under Cygwin


From: Denis Chancogne
Subject: linking with extern DLLs under Cygwin
Date: Tue, 22 Jan 2008 10:40:43 +0100

Hi,

I would like to make a patch to build php under Cygwin, but there is one problem with libtool.

When you pass to it the option -l<lib_name>, it search only libraries of type lib<lib_name>*
to check that /lib/lib<lib_name>.dll.a exists (interface to dll). So it doesn't want to link
with icu libraries because when you install icu libraries, in lib directory you have only
dll file (cyg<lib_name>.dll) but no dll interface static library (lib<lib_name>.dll.a).

Today it is possible to link directly with dll file without static interface library to this dll,
so I did a patch to search libraries of type "cyg<lib_name>.dll", "lib<lib_name>.dll" or
"<lib_name>.dll" when you use option -l<lib_name> under cygwin. (I have added search
of "<lib_name>.dll" because of ldflags returned by icu-config :

$ ./icu-config --ldflags
-lpthread -lm -L/home/C82DHAN/tools/icu/3.8-org/lib -lcygicuin38 -lcygicuuc38 -lcygicudt38 -lpthread -lm

)

I have already post this patch on address@hidden but there is no response ???
( http://lists.gnu.org/archive/html/libtool-patches/2007-12/msg00006.html )

Regards
Denis
PS: maybe icu installation should produce this kind of library and there would be no problem
with libtool but not all the tools use libtool to produce their dll so when you use this previous tools
there is only cyg<lib_name>.dll or lib<lib_name>.dll library file. (and no lib<lib_name>.dll.a)

Index: libtool.m4
===================================================================
RCS file: /sources/libtool/libtool/libltdl/m4/libtool.m4,v
retrieving revision 1.130
diff -u -r1.130 libtool.m4
--- libtool.m4   16 Jan 2008 14:49:40 -0000      1.130
+++ libtool.m4  21 Jan 2008 22:12:33 -0000
@@ -2088,6 +2088,7 @@
 finish_cmds=
 finish_eval=
 shlibpath_var=
+shlib_search_prefix='lib$name'
 shlibpath_overrides_runpath=unknown
 version_type=none
 dynamic_linker="$host_os ld.so"
@@ -2212,6 +2213,7 @@
       # Cygwin DLLs use 'cyg' prefix rather than 'lib'
       soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $
SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
       sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      shlib_search_prefix='lib$name cyg$name $name'
       ;;
     mingw*)
       # MinGW DLLs use traditional 'lib' prefix
@@ -2232,6 +2234,7 @@
     pw32*)
       # pw32 DLLs use 'pw' prefix rather than 'lib'
       library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${releas
e} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      shlib_search_prefix='lib$name pw$name $name'
       ;;
     esac
     ;;

Index: ltmain.m4sh
===================================================================
RCS file: /sources/libtool/libtool/libltdl/config/ltmain.m4sh,v
retrieving revision 1.96
diff -u -r1.96 ltmain.m4sh
--- ltmain.m4sh 14 Jan 2008 22:06:00 -0000      1.96
+++ ltmain.m4sh 21 Jan 2008 22:13:27 -0000
@@ -5637,9 +5637,12 @@
                esac
              fi
              if test -n "$a_deplib" ; then
-               libname=`eval "\\$ECHO \"$libname_spec\""`
+               eval libnames=\"$shlib_search_prefix\"
                for i in $lib_search_path $sys_lib_search_path $shlib_search_pat
h; do
-                 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+                 potential_libs=""
+                 for libname in $libnames; do
+                   potential_libs="$potential_libs `ls $i/$libname[.-]* 2>/dev/
null`"
+                 done
                  for potent_lib in $potential_libs; do
                      # Follow soft links.
                      if ls -lLd "$potent_lib" 2>/dev/null |


reply via email to

[Prev in Thread] Current Thread [Next in Thread]