diff options
author | Jonathan Perkin <jonathan.perkin@oracle.com> | 2010-08-09 14:27:04 +0100 |
---|---|---|
committer | Jonathan Perkin <jonathan.perkin@oracle.com> | 2010-08-09 14:27:04 +0100 |
commit | 9ae1b1d157e8f79c52eb8122f0e177cdccf61297 (patch) | |
tree | 82dd3c9795dfdd02c5df6982c9a09627abfe6ea0 /scripts | |
parent | a34236947817013339787f4bf6252112a1d97e0c (diff) | |
download | mariadb-git-9ae1b1d157e8f79c52eb8122f0e177cdccf61297.tar.gz |
Apply wlad's fix for bug#55215
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/CMakeLists.txt | 64 | ||||
-rw-r--r-- | scripts/mysql_config.sh | 2 |
2 files changed, 30 insertions, 36 deletions
diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt index ced207da98b..5831679828c 100644 --- a/scripts/CMakeLists.txt +++ b/scripts/CMakeLists.txt @@ -1,4 +1,3 @@ -# Copyright (C) 2006 MySQL AB # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -251,43 +250,38 @@ IF(POLICY CMP0007) CMAKE_POLICY(SET CMP0007 OLD) ENDIF() -LIST(REMOVE_ITEM mysqlclient_LIB_DEPENDS "") -LIST(REMOVE_DUPLICATES mysqlclient_LIB_DEPENDS) -FOREACH(lib ${mysqlclient_LIB_DEPENDS}) - # Filter out "general", it is not a library, just CMake hint - IF(NOT lib STREQUAL "general" AND NOT CLIENT_LIBS MATCHES "-l${lib} ") - IF (lib MATCHES "^\\-l") - SET(CLIENT_LIBS "${CLIENT_LIBS} ${lib} ") - ELSEIF(lib MATCHES "^/") - # Full path, convert to just filename, strip "lib" prefix and extension - GET_FILENAME_COMPONENT(lib "${lib}" NAME_WE) - STRING(REGEX REPLACE "^lib" "" lib "${lib}") - SET(CLIENT_LIBS "${CLIENT_LIBS}-l${lib} " ) - ELSE() - SET(CLIENT_LIBS "${CLIENT_LIBS}-l${lib} " ) - ENDIF() +# Extract dependencies using CMake's internal ${target}_LIB_DEPENDS variable +# returned string in ${var} is can be passed to linker's command line +MACRO(EXTRACT_LINK_LIBRARIES target var) + LIST(REMOVE_ITEM ${target}_LIB_DEPENDS "") + LIST(REMOVE_DUPLICATES ${target}_LIB_DEPENDS) + FOREACH(lib ${${target}_LIB_DEPENDS}) + # Filter out "general", it is not a library, just CMake hint + # Also, remove duplicates + IF(NOT lib STREQUAL "general" AND NOT ${var} MATCHES "-l${lib} ") + IF (lib MATCHES "^\\-l") + SET(${var} "${${var}} ${lib} ") + ELSEIF(lib MATCHES "^/") + # Full path, convert to just filename, strip "lib" prefix and extension + GET_FILENAME_COMPONENT(lib "${lib}" NAME_WE) + STRING(REGEX REPLACE "^lib" "" lib "${lib}") + SET(${var} "${${var}}-l${lib} " ) + ELSE() + SET(${var} "${${var}}-l${lib} " ) + ENDIF() + ENDIF() + ENDFOREACH() + IF(MSVC) + STRING(REPLACE "-l" "" ${var} "${${var}}") ENDIF() -ENDFOREACH() - - -IF(LIBDL AND NOT LIBDL MATCHES "-l") - SET(LIBDL "-l${LIBDL}") -ENDIF() +ENDMACRO() -IF(LIBWRAP) - SET(WRAPLIBS "-lwrap") -ENDIF() - -SET(LIBS "${CLIENT_LIBS}") +EXTRACT_LINK_LIBRARIES(mysqlclient CLIENT_LIBS) +EXTRACT_LINK_LIBRARIES(mysqlserver LIBS) -IF(LIBCRYPT) - SET(LIBS "${LIBS} -l${LIBCRYPT}") -ENDIF() - -IF(MSVC) - STRING(REPLACE "-l" "" CLIENT_LIBS "${CLIENT_LIBS}") - STRING(REPLACE "-l" "" LIBS "${LIBS}" ) -ENDIF() +# mysql_config evaluates ${LIBDL}, we want to avoid it +# as our CLIENT_LIBS and LIBS are already correct +SET(LIBDL) SET(NON_THREADED_LIBS ${CLIENT_LIBS}) SET(mysql_config_COMPONENT COMPONENT Development) diff --git a/scripts/mysql_config.sh b/scripts/mysql_config.sh index 10755fc698b..69ec88d6724 100644 --- a/scripts/mysql_config.sh +++ b/scripts/mysql_config.sh @@ -108,7 +108,7 @@ fi # We intentionally add a space to the beginning and end of lib strings, simplifies replace later libs=" $ldflags -L$pkglibdir -lmysqlclient @ZLIB_DEPS@ @NON_THREADED_LIBS@" libs="$libs @openssl_libs@ @STATIC_NSS_FLAGS@ " -libs_r=" $ldflags -L$pkglibdir -lmysqlclient_r @ZLIB_DEPS@ @LIBS@ @openssl_libs@ " +libs_r=" $ldflags -L$pkglibdir -lmysqlclient_r @ZLIB_DEPS@ @CLIENT_LIBS@ @openssl_libs@ " embedded_libs=" $ldflags -L$pkglibdir -lmysqld @LIBDL@ @ZLIB_DEPS@ @LIBS@ @WRAPLIBS@ @openssl_libs@ " if [ -r "$pkglibdir/libmygcc.a" ]; then |