mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
MDEV-5749 Please add a .pc file to MariaDB for easy use via pkg-config
This commit is contained in:
@@ -244,57 +244,6 @@ ELSE()
|
||||
SET(TARGET_LINUX "false")
|
||||
ENDIF()
|
||||
|
||||
# Use cmake variables to inspect dependencies for
|
||||
# mysqlclient library (add -l stuff)
|
||||
SET(CLIENT_LIBS "")
|
||||
SET(LIBS "")
|
||||
|
||||
# Avoid compatibility warning about lists with empty elements
|
||||
IF(POLICY CMP0011)
|
||||
CMAKE_POLICY(SET CMP0011 NEW)
|
||||
ENDIF()
|
||||
IF(POLICY CMP0007)
|
||||
CMAKE_POLICY(SET CMP0007 OLD)
|
||||
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)
|
||||
IF(${target}_LIB_DEPENDS)
|
||||
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 "^/")
|
||||
IF (lib MATCHES "\\.(a|so([0-9.]*)|lib|dll|dylib)$")
|
||||
# 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} " )
|
||||
ENDIF()
|
||||
ELSE()
|
||||
SET(${var} "${${var}}-l${lib} " )
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
ENDIF()
|
||||
IF(MSVC)
|
||||
STRING(REPLACE "-l" "" ${var} "${${var}}")
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
EXTRACT_LINK_LIBRARIES(mysqlclient CLIENT_LIBS)
|
||||
EXTRACT_LINK_LIBRARIES(mysqlserver LIBS)
|
||||
|
||||
# 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)
|
||||
SET(msql2mysql_COMPONENT COMPONENT Client)
|
||||
SET(mysqlaccess_COMPONENT COMPONENT Client)
|
||||
|
@@ -96,7 +96,6 @@ fix_path pkgincludedir include/mysql
|
||||
|
||||
version='@VERSION@'
|
||||
socket='@MYSQL_UNIX_ADDR@'
|
||||
ldflags='@LDFLAGS@'
|
||||
|
||||
if [ @MYSQL_TCP_PORT_DEFAULT@ -eq 0 ]; then
|
||||
port=0
|
||||
@@ -105,58 +104,14 @@ else
|
||||
fi
|
||||
|
||||
# Create options
|
||||
# We intentionally add a space to the beginning and end of lib strings, simplifies replace later
|
||||
libs=" $ldflags -L$pkglibdir @RPATH_OPTION@ -lmysqlclient @ZLIB_DEPS@ @NON_THREADED_LIBS@"
|
||||
libs="$libs @openssl_libs@ @STATIC_NSS_FLAGS@ "
|
||||
libs_r=" $ldflags -L$pkglibdir @RPATH_OPTION@ -lmysqlclient_r @ZLIB_DEPS@ @CLIENT_LIBS@ @openssl_libs@ "
|
||||
embedded_libs=" $ldflags -L$pkglibdir @RPATH_OPTION@ -lmysqld @LIBDL@ @ZLIB_DEPS@ @LIBS@ @WRAPLIBS@ @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
|
||||
libs="-L$pkglibdir @RPATH_OPTION@ @LIBS_FOR_CLIENTS@"
|
||||
embedded_libs="-L$pkglibdir @RPATH_OPTION@ @EMB_LIBS_FOR_CLIENTS@"
|
||||
|
||||
include="-I$pkgincludedir"
|
||||
if [ "$basedir" != "/usr" ]; then
|
||||
include="$include -I$pkgincludedir/.."
|
||||
fi
|
||||
cflags="$include @CFLAGS@ " #note: end space!
|
||||
|
||||
# Remove some options that a client doesn't have to care about
|
||||
# FIXME until we have a --cxxflags, we need to remove -Xa
|
||||
# and -xstrconst to make --cflags usable for Sun Forte C++
|
||||
# FIXME until we have a --cxxflags, we need to remove -AC99
|
||||
# to make --cflags usable for HP C++ (aCC)
|
||||
for remove in DDBUG_OFF DSAFE_MUTEX DUNIV_MUST_NOT_INLINE DFORCE_INIT_OF_VARS \
|
||||
DEXTRA_DEBUG DHAVE_valgrind 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" AC99 \
|
||||
unroll2 ip mp restrict
|
||||
do
|
||||
# The first option we might strip will always have a space before it because
|
||||
# we set -I$pkgincludedir as the first option
|
||||
cflags=`echo "$cflags"|sed -e "s/ -$remove */ /g"`
|
||||
done
|
||||
cflags=`echo "$cflags"|sed -e 's/ *\$//'`
|
||||
|
||||
# Same for --libs(_r)
|
||||
for remove in lmtmalloc static-libcxa i-static static-intel
|
||||
do
|
||||
# We know the strings starts with a space
|
||||
libs=`echo "$libs"|sed -e "s/ -$remove */ /g"`
|
||||
libs_r=`echo "$libs_r"|sed -e "s/ -$remove */ /g"`
|
||||
embedded_libs=`echo "$embedded_libs"|sed -e "s/ -$remove */ /g"`
|
||||
done
|
||||
|
||||
# Strip trailing and ending space if any, and '+' (FIXME why?)
|
||||
libs=`echo "$libs" | sed -e 's; \+; ;g' | sed -e 's;^ *;;' | sed -e 's; *\$;;'`
|
||||
libs_r=`echo "$libs_r" | sed -e 's; \+; ;g' | sed -e 's;^ *;;' | sed -e 's; *\$;;'`
|
||||
embedded_libs=`echo "$embedded_libs" | sed -e 's; \+; ;g' | sed -e 's;^ *;;' | sed -e 's; *\$;;'`
|
||||
cflags="$include @CFLAGS_FOR_CLIENTS@"
|
||||
|
||||
usage () {
|
||||
cat <<EOF
|
||||
@@ -165,7 +120,7 @@ Options:
|
||||
--cflags [$cflags]
|
||||
--include [$include]
|
||||
--libs [$libs]
|
||||
--libs_r [$libs_r]
|
||||
--libs_r [$libs]
|
||||
--plugindir [$plugindir]
|
||||
--socket [$socket]
|
||||
--port [$port]
|
||||
@@ -186,7 +141,7 @@ while test $# -gt 0; do
|
||||
--cflags) echo "$cflags" ;;
|
||||
--include) echo "$include" ;;
|
||||
--libs) echo "$libs" ;;
|
||||
--libs_r) echo "$libs_r" ;;
|
||||
--libs_r) echo "$libs" ;;
|
||||
--plugindir) echo "$plugindir" ;;
|
||||
--socket) echo "$socket" ;;
|
||||
--port) echo "$port" ;;
|
||||
|
Reference in New Issue
Block a user