Bug #21158 mysql_config doesn't include -lmygcc

Add -lmygcc to mysql_config output for libs, libs_r, and embedded_libs.

Required when linking against our static libs, if yassl is used, and gcc
used to build library is significantly different from that which is using
the library.


scripts/mysql_config.sh:
  Add -lmygcc to --libs, --libs_r, and --embedded-libs output, if libmygcc.a
  is found in the pkglibdir.
  
  This works around a problem when linking against the static client
  libs which were built with a different GCC than the current compiler.
  In this case, without -lmygcc, several builtin functions (e.g.,
  __pure_virtual, __builtin_delete) are left undefined.  Currently it
  is yassl which pulls in these symbols.
  
  This isn't a problem when linking against shared libraries, or when
  using the same compiler version.
  
  Currently it shows up with libs built on build.mysql.com with gcc 2.95.3,
  when using them on more recent systems.
  
  
  Also strip the -mcpu, -mtune, and -march cflags.  The calling package can
  determine what optimization parameters to choose.
This commit is contained in:
unknown 2008-02-14 01:05:25 -07:00
parent 65c7d3004e
commit 29dcd86135

View File

@ -107,6 +107,16 @@ libs="$libs @openssl_libs@ @STATIC_NSS_FLAGS@ "
libs_r=" $ldflags -L$pkglibdir -lmysqlclient_r @ZLIB_DEPS@ @LIBS@ @openssl_libs@ "
embedded_libs=" $ldflags -L$pkglibdir -lmysqld @ZLIB_DEPS@ @LIBS@ @WRAPLIBS@ @innodb_system_libs@ @openssl_libs@ "
if [ -r "$pkglibdir/libmygcc.a" ]; then
# When linking against the static library with a different version of GCC
# from what was used to compile the library, some symbols may not be defined
# automatically. We package the libmygcc.a from the build host, to provide
# definitions for those. Bugs 4921, 19561, 19817, 21158, etc.
libs="$libs -lmygcc "
libs_r="$libs_r -lmygcc "
embedded_libs="$embedded_libs -lmygcc "
fi
cflags="-I$pkgincludedir @CFLAGS@ " #note: end space!
include="-I$pkgincludedir"
@ -116,6 +126,7 @@ include="-I$pkgincludedir"
for remove in DDBUG_OFF DSAFEMALLOC USAFEMALLOC DSAFE_MUTEX \
DPEDANTIC_SAFEMALLOC DUNIV_MUST_NOT_INLINE DFORCE_INIT_OF_VARS \
DEXTRA_DEBUG DHAVE_purify O 'O[0-9]' 'xO[0-9]' 'W[-A-Za-z]*' \
'mtune=[-A-Za-z0-9]*' 'mcpu=[-A-Za-z0-9]*' 'march=[-A-Za-z0-9]*' \
Xa xstrconst "xc99=none" \
unroll2 ip mp restrict
do