Commit 5ca5f92a authored by Sergei Golubchik's avatar Sergei Golubchik

MDEV-5749 Please add a .pc file to MariaDB for easy use via pkg-config

parent 7f5e51b9
...@@ -195,6 +195,7 @@ support-files/binary-configure ...@@ -195,6 +195,7 @@ support-files/binary-configure
support-files/config.huge.ini support-files/config.huge.ini
support-files/config.medium.ini support-files/config.medium.ini
support-files/config.small.ini support-files/config.small.ini
support-files/mariadb.pc
support-files/my-huge.cnf support-files/my-huge.cnf
support-files/my-innodb-heavy-4G.cnf support-files/my-innodb-heavy-4G.cnf
support-files/my-large.cnf support-files/my-large.cnf
......
...@@ -77,6 +77,10 @@ ELSE() ...@@ -77,6 +77,10 @@ ELSE()
ENDIF() ENDIF()
PROJECT(${MYSQL_PROJECT_NAME}) PROJECT(${MYSQL_PROJECT_NAME})
SET(CPACK_PACKAGE_NAME "MariaDB")
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MariaDB: a very fast and robust SQL database server")
SET(CPACK_PACKAGE_URL "http://mariadb.org")
IF(BUILD_CONFIG) IF(BUILD_CONFIG)
INCLUDE( INCLUDE(
${CMAKE_SOURCE_DIR}/cmake/build_configurations/${BUILD_CONFIG}.cmake) ${CMAKE_SOURCE_DIR}/cmake/build_configurations/${BUILD_CONFIG}.cmake)
...@@ -384,9 +388,7 @@ ADD_SUBDIRECTORY(libmysql) ...@@ -384,9 +388,7 @@ ADD_SUBDIRECTORY(libmysql)
ADD_SUBDIRECTORY(client) ADD_SUBDIRECTORY(client)
ADD_SUBDIRECTORY(extra) ADD_SUBDIRECTORY(extra)
ADD_SUBDIRECTORY(libservices) ADD_SUBDIRECTORY(libservices)
ADD_SUBDIRECTORY(scripts)
ADD_SUBDIRECTORY(sql/share) ADD_SUBDIRECTORY(sql/share)
ADD_SUBDIRECTORY(support-files)
IF(NOT WITHOUT_SERVER) IF(NOT WITHOUT_SERVER)
ADD_SUBDIRECTORY(tests) ADD_SUBDIRECTORY(tests)
...@@ -419,6 +421,10 @@ IF(WIN32) ...@@ -419,6 +421,10 @@ IF(WIN32)
ENDIF() ENDIF()
ADD_SUBDIRECTORY(packaging/solaris) ADD_SUBDIRECTORY(packaging/solaris)
INCLUDE(for_clients)
ADD_SUBDIRECTORY(scripts)
ADD_SUBDIRECTORY(support-files)
CONFIGURE_FILE(config.h.cmake ${CMAKE_BINARY_DIR}/include/my_config.h) CONFIGURE_FILE(config.h.cmake ${CMAKE_BINARY_DIR}/include/my_config.h)
CONFIGURE_FILE(config.h.cmake ${CMAKE_BINARY_DIR}/include/config.h) CONFIGURE_FILE(config.h.cmake ${CMAKE_BINARY_DIR}/include/config.h)
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/include/mysql_version.h.in CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/include/mysql_version.h.in
......
...@@ -27,15 +27,15 @@ SET(CPACK_COMPONENTS_ALL Server ManPagesServer IniFiles Server_Scripts ...@@ -27,15 +27,15 @@ SET(CPACK_COMPONENTS_ALL Server ManPagesServer IniFiles Server_Scripts
ManPagesTest Readme ManPagesClient Test ManPagesTest Readme ManPagesClient Test
Common Client SharedLibraries) Common Client SharedLibraries)
SET(CPACK_RPM_PACKAGE_NAME "MariaDB") SET(CPACK_RPM_PACKAGE_NAME ${CPACK_PACKAGE_NAME})
SET(CPACK_PACKAGE_FILE_NAME "${CPACK_RPM_PACKAGE_NAME}-${VERSION}-${RPM}-${CMAKE_SYSTEM_PROCESSOR}") SET(CPACK_PACKAGE_FILE_NAME "${CPACK_RPM_PACKAGE_NAME}-${VERSION}-${RPM}-${CMAKE_SYSTEM_PROCESSOR}")
SET(CPACK_RPM_PACKAGE_RELEASE "1%{?dist}") SET(CPACK_RPM_PACKAGE_RELEASE "1%{?dist}")
SET(CPACK_RPM_PACKAGE_LICENSE "GPL") SET(CPACK_RPM_PACKAGE_LICENSE "GPL")
SET(CPACK_RPM_PACKAGE_RELOCATABLE FALSE) SET(CPACK_RPM_PACKAGE_RELOCATABLE FALSE)
SET(CPACK_RPM_PACKAGE_GROUP "Applications/Databases") SET(CPACK_RPM_PACKAGE_GROUP "Applications/Databases")
SET(CPACK_RPM_PACKAGE_URL "http://mariadb.org") SET(CPACK_RPM_PACKAGE_SUMMARY ${CPACK_PACKAGE_SUMMARY})
SET(CPACK_RPM_PACKAGE_SUMMARY "MariaDB: a very fast and robust SQL database server") SET(CPACK_RPM_PACKAGE_URL ${CPACK_PACKAGE_URL})
SET(CPACK_RPM_PACKAGE_DESCRIPTION "${CPACK_RPM_PACKAGE_SUMMARY} SET(CPACK_RPM_PACKAGE_DESCRIPTION "${CPACK_RPM_PACKAGE_SUMMARY}
It is GPL v2 licensed, which means you can use the it free of charge under the It is GPL v2 licensed, which means you can use the it free of charge under the
......
#
# Generate LIBS and CFLAGS that third-party clients should use
#
# 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 LIBS)
EXTRACT_LINK_LIBRARIES(mysqlserver EMB_LIBS)
SET(LIBS "-lmysqlclient ${ZLIB_DEPS} ${LIBS} ${openssl_libs}")
SET(EMB_LIBS "-lmysqld ${ZLIB_DEPS} ${EMB_LIBS} ${openssl_libs}")
MACRO(REPLACE_FOR_CLIENTS VAR)
SET(v " ${${VAR}} ")
FOREACH(del ${ARGN})
STRING(REGEX REPLACE " -(${del}) " " " v ${v})
ENDFOREACH(del)
STRING(REGEX REPLACE " +" " " v ${v})
STRING(STRIP "${v}" ${VAR}_FOR_CLIENTS)
ENDMACRO()
# 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)
REPLACE_FOR_CLIENTS(CFLAGS "[DU]DBUG_OFF" "[DU]SAFE_MUTEX" "[DU]NDEBUG"
"[DU]UNIV_MUST_NOT_INLINE" "[DU]FORCE_INIT_OF_VARS" "[DU]EXTRA_DEBUG" "[DU]HAVE_valgrind"
"O" "O[0-9]" "xO[0-9]" "W[-A-Za-z]*" "mtune=[-A-Za-z0-9]*" "g" "fPIC"
"mcpu=[-A-Za-z0-9]*" "unroll2" "ip" "mp" "march=[-A-Za-z0-9]*" "Xa"
"xstrconst" "xc99=none" "AC99" "restrict")
# Same for --libs
REPLACE_FOR_CLIENTS(LIBS lmtmalloc static-libcxa i-static static-intel)
REPLACE_FOR_CLIENTS(EMB_LIBS lmtmalloc static-libcxa i-static static-intel)
...@@ -4,4 +4,5 @@ usr/lib/libmysqlclient.a ...@@ -4,4 +4,5 @@ usr/lib/libmysqlclient.a
usr/lib/libmysqlclient_r.a usr/lib/libmysqlclient_r.a
usr/lib/libmysqlservices.a usr/lib/libmysqlservices.a
usr/share/aclocal/mysql.m4 usr/share/aclocal/mysql.m4
usr/share/pkgconfig/mariadb.pc
usr/share/man/man1/mysql_config.1 usr/share/man/man1/mysql_config.1
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
33_scripts__mysql_create_system_tables__no_test.dpatch 33_scripts__mysql_create_system_tables__no_test.dpatch
38_scripts__mysqld_safe.sh__signals.dpatch 38_scripts__mysqld_safe.sh__signals.dpatch
41_scripts__mysql_install_db.sh__no_test.dpatch 41_scripts__mysql_install_db.sh__no_test.dpatch
44_scripts__mysql_config__libs.dpatch # 44_scripts__mysql_config__libs.dpatch
50_mysql-test__db_test.dpatch 50_mysql-test__db_test.dpatch
# 60_zlib_innodb_workaround.dpatch # 60_zlib_innodb_workaround.dpatch
61_replace_dash_with_bash_mbug675185.dpatch 61_replace_dash_with_bash_mbug675185.dpatch
...@@ -244,57 +244,6 @@ ELSE() ...@@ -244,57 +244,6 @@ ELSE()
SET(TARGET_LINUX "false") SET(TARGET_LINUX "false")
ENDIF() 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(mysql_config_COMPONENT COMPONENT Development)
SET(msql2mysql_COMPONENT COMPONENT Client) SET(msql2mysql_COMPONENT COMPONENT Client)
SET(mysqlaccess_COMPONENT COMPONENT Client) SET(mysqlaccess_COMPONENT COMPONENT Client)
......
...@@ -96,7 +96,6 @@ fix_path pkgincludedir include/mysql ...@@ -96,7 +96,6 @@ fix_path pkgincludedir include/mysql
version='@VERSION@' version='@VERSION@'
socket='@MYSQL_UNIX_ADDR@' socket='@MYSQL_UNIX_ADDR@'
ldflags='@LDFLAGS@'
if [ @MYSQL_TCP_PORT_DEFAULT@ -eq 0 ]; then if [ @MYSQL_TCP_PORT_DEFAULT@ -eq 0 ]; then
port=0 port=0
...@@ -105,58 +104,14 @@ else ...@@ -105,58 +104,14 @@ else
fi fi
# Create options # Create options
# We intentionally add a space to the beginning and end of lib strings, simplifies replace later libs="-L$pkglibdir @RPATH_OPTION@ @LIBS_FOR_CLIENTS@"
libs=" $ldflags -L$pkglibdir @RPATH_OPTION@ -lmysqlclient @ZLIB_DEPS@ @NON_THREADED_LIBS@" embedded_libs="-L$pkglibdir @RPATH_OPTION@ @EMB_LIBS_FOR_CLIENTS@"
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
include="-I$pkgincludedir" include="-I$pkgincludedir"
if [ "$basedir" != "/usr" ]; then if [ "$basedir" != "/usr" ]; then
include="$include -I$pkgincludedir/.." include="$include -I$pkgincludedir/.."
fi fi
cflags="$include @CFLAGS@ " #note: end space! cflags="$include @CFLAGS_FOR_CLIENTS@"
# 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; *\$;;'`
usage () { usage () {
cat <<EOF cat <<EOF
...@@ -165,7 +120,7 @@ Options: ...@@ -165,7 +120,7 @@ Options:
--cflags [$cflags] --cflags [$cflags]
--include [$include] --include [$include]
--libs [$libs] --libs [$libs]
--libs_r [$libs_r] --libs_r [$libs]
--plugindir [$plugindir] --plugindir [$plugindir]
--socket [$socket] --socket [$socket]
--port [$port] --port [$port]
...@@ -186,7 +141,7 @@ while test $# -gt 0; do ...@@ -186,7 +141,7 @@ while test $# -gt 0; do
--cflags) echo "$cflags" ;; --cflags) echo "$cflags" ;;
--include) echo "$include" ;; --include) echo "$include" ;;
--libs) echo "$libs" ;; --libs) echo "$libs" ;;
--libs_r) echo "$libs_r" ;; --libs_r) echo "$libs" ;;
--plugindir) echo "$plugindir" ;; --plugindir) echo "$plugindir" ;;
--socket) echo "$socket" ;; --socket) echo "$socket" ;;
--port) echo "$port" ;; --port) echo "$port" ;;
......
...@@ -67,6 +67,9 @@ IF(UNIX) ...@@ -67,6 +67,9 @@ IF(UNIX)
INSTALL(DIRECTORY RHEL4-SElinux/ DESTINATION ${inst_location}/SELinux/RHEL4 COMPONENT SupportFiles) INSTALL(DIRECTORY RHEL4-SElinux/ DESTINATION ${inst_location}/SELinux/RHEL4 COMPONENT SupportFiles)
ENDIF() ENDIF()
CONFIGURE_FILE(mariadb.pc.in ${CMAKE_CURRENT_BINARY_DIR}/mariadb.pc @ONLY)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/mariadb.pc DESTINATION ${INSTALL_SHAREDIR}/pkgconfig COMPONENT Development)
INSTALL(FILES mysql.m4 DESTINATION ${INSTALL_SHAREDIR}/aclocal COMPONENT Development) INSTALL(FILES mysql.m4 DESTINATION ${INSTALL_SHAREDIR}/aclocal COMPONENT Development)
SET(bindir ${prefix}/${INSTALL_BINDIR}) SET(bindir ${prefix}/${INSTALL_BINDIR})
......
# these four variables are present in almost every .pc file
prefix=@CMAKE_INSTALL_PREFIX@
exec_prefix=${prefix}
libdir=${prefix}/@INSTALL_LIBDIR@
includedir=${prefix}/@INSTALL_INCLUDEDIR@
# those are rarely present or not at all, but we export them regardless
bindir=${prefix}/@INSTALL_BINDIR@
sbindir=${prefix}/@INSTALL_SBINDIR@
scriptdir=${prefix}/@INSTALL_SCRIPTDIR@
plugindir=${prefix}/@INSTALL_PLUGINDIR@
docdir=${prefix}/@INSTALL_DOCDIR@
mandir=${prefix}/@INSTALL_MANDIR@
sharedir=${prefix}/@INSTALL_SHAREDIR@
mysqlsharedir=${prefix}/@INSTALL_MYSQLSHAREDIR@
mysqltestdir=${prefix}/@INSTALL_MYSQLTESTDIR@
socket=@INSTALL_UNIX_ADDRDIR@
Name: @CPACK_PACKAGE_NAME@
Description: @CPACK_PACKAGE_DESCRIPTION_SUMMARY@
URL: @CPACK_PACKAGE_URL@
Version: @VERSION@
Libs: -L${libdir} @LIBS_FOR_CLIENTS@
Cflags: -I${includedir} -I${includedir}/.. @CFLAGS_FOR_CLIENTS@
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment