Browse Source

Resolves: bug 340361
Bug Description: build links wrong libdb on 64-bit systems
Reviewed by: nhosoi (Thanks!)
Fix Description: Once again, libtool attempts to be helpful but is instead harmful. If you have both db4-devel.i386 and db4-devel.x86_64 installed, this will install /usr/lib/libdb-4.N.la. If you use libtool to link with -ldb-4.N, and you do not specify a search path, libtool will attempt to find this library in it's default search path, which is something like /usr/lib/gcc/x86_64/blahblahblah/../../../lib. This will find /usr/lib/libdb-4.N.la and will use the information in that file and link the object with /usr/lib/libdb-4.N.so, instead of just passing -ldb-4.N through to the linker which is what it ought to do (darn libtool). In order to make libtool do the right thing, we must pass in -L$libdir -ldb-4.N to libtool so that it will use $libdir first in its search path.
Platforms tested: RHEL5 x86_64, RHEL4 x86_64
Flag Day: yes - autotool file changes
Doc impact: no

Rich Megginson 18 years ago
parent
commit
a390e490aa
2 changed files with 8 additions and 0 deletions
  1. 4 0
      configure
  2. 4 0
      m4/db.m4

+ 4 - 0
configure

@@ -24169,6 +24169,8 @@ echo "${ECHO_T}yes" >&6
         if test -f "/usr/include/db.h"; then
       db_incdir="/usr/include"
       db_inc="-I/usr/include"
+      db_lib='-L$(libdir)'
+      db_libdir='$(libdir)'
     else
       { { echo "$as_me:$LINENO: error: db.h not found" >&5
 echo "$as_me: error: db.h not found" >&2;}
@@ -24207,6 +24209,8 @@ echo $ECHO_N "checking for db.h... $ECHO_C" >&6
 echo "${ECHO_T}using /usr/include/db.h" >&6
     db_incdir="/usr/include"
     db_inc="-I/usr/include"
+    db_lib='-L$(libdir)'
+    db_libdir='$(libdir)'
   else
     echo "$as_me:$LINENO: result: no" >&5
 echo "${ECHO_T}no" >&6

+ 4 - 0
m4/db.m4

@@ -30,6 +30,8 @@ AC_ARG_WITH(db, [  --with-db=PATH   Berkeley DB directory],
     if test -f "/usr/include/db.h"; then
       db_incdir="/usr/include"
       db_inc="-I/usr/include"
+      db_lib='-L$(libdir)'
+      db_libdir='$(libdir)'
     else
       AC_MSG_ERROR([db.h not found])
     fi
@@ -59,6 +61,8 @@ if test -z "$db_inc"; then
     AC_MSG_RESULT([using /usr/include/db.h])
     db_incdir="/usr/include"
     db_inc="-I/usr/include"
+    db_lib='-L$(libdir)'
+    db_libdir='$(libdir)'
   else
     AC_MSG_RESULT(no)
     AC_MSG_ERROR([db not found, specify with --with-db.])