summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS3
-rw-r--r--build-aux/ltmain.in2
-rw-r--r--m4/libtool.m47
3 files changed, 9 insertions, 3 deletions
diff --git a/NEWS b/NEWS
index 71cd2e9d..9bff5585 100644
--- a/NEWS
+++ b/NEWS
@@ -27,7 +27,8 @@ NEWS - list of user-visible changes between releases of GNU Libtool
- Added -os2dllname option to work around 8 character base name
limit on OS/2. The option has no effect on other systems.
- - Support for -export-symbols and -export-symbols-regex on OS/2.
+ - Support for DLL versioning, -export-symbols and -export-symbols-regex
+ on OS/2.
* Noteworthy changes in release 2.4.3 (2014-10-27) [stable]
diff --git a/build-aux/ltmain.in b/build-aux/ltmain.in
index a0f5ed0f..65ada0b6 100644
--- a/build-aux/ltmain.in
+++ b/build-aux/ltmain.in
@@ -6262,7 +6262,7 @@ func_mode_link ()
elif test -n "$soname_spec"; then
# bleh windows
case $host in
- *cygwin* | mingw* | *cegcc*)
+ *cygwin* | mingw* | *cegcc* | *os2*)
func_arith $current - $age
major=$func_arith_result
versuffix=-$major
diff --git a/m4/libtool.m4 b/m4/libtool.m4
index 32fee6fb..281e70fa 100644
--- a/m4/libtool.m4
+++ b/m4/libtool.m4
@@ -2808,10 +2808,15 @@ openbsd* | bitrig*)
os2*)
libname_spec='$name'
+ version_type=windows
shrext_cmds=.dll
+ need_version=no
need_lib_prefix=no
# OS/2 can only load a DLL with a base name of 8 characters or less.
- soname_spec='`test -n "$os2dllname" && libname=$os2dllname; $ECHO $libname | cut -b -8 | tr . _`$shared_ext'
+ soname_spec='`test -n "$os2dllname" && libname="$os2dllname";
+ v=$($ECHO $release$versuffix | tr -d .-);
+ n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _);
+ $ECHO $n$v`$shared_ext'
library_names_spec='${libname}_dll.$libext'
dynamic_linker='OS/2 ld.exe'
shlibpath_var=BEGINLIBPATH