diff options
author | unknown <tsmith@ramayana.hindu.god> | 2008-02-14 01:05:25 -0700 |
---|---|---|
committer | unknown <tsmith@ramayana.hindu.god> | 2008-02-14 01:05:25 -0700 |
commit | 0cbe3b6a6231cb6c1df4987cad62c123e4674029 (patch) | |
tree | 357b2b77172635cad67d920c00ace1c0726d8b18 /scripts | |
parent | 955f1885ae31df14abbcef60b126a7f5b25cd9d0 (diff) | |
download | mariadb-git-0cbe3b6a6231cb6c1df4987cad62c123e4674029.tar.gz |
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.
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/mysql_config.sh | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/scripts/mysql_config.sh b/scripts/mysql_config.sh index ae58655ed0f..8abad75bc2a 100644 --- a/scripts/mysql_config.sh +++ b/scripts/mysql_config.sh @@ -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 |