summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorunknown <tsmith@ramayana.hindu.god>2008-02-14 01:05:25 -0700
committerunknown <tsmith@ramayana.hindu.god>2008-02-14 01:05:25 -0700
commit0cbe3b6a6231cb6c1df4987cad62c123e4674029 (patch)
tree357b2b77172635cad67d920c00ace1c0726d8b18 /scripts
parent955f1885ae31df14abbcef60b126a7f5b25cd9d0 (diff)
downloadmariadb-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.sh11
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