Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
5ca5f92a
Commit
5ca5f92a
authored
Oct 08, 2014
by
Sergei Golubchik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
MDEV-5749 Please add a .pc file to MariaDB for easy use via pkg-config
parent
7f5e51b9
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
122 additions
and
107 deletions
+122
-107
.gitignore
.gitignore
+1
-0
CMakeLists.txt
CMakeLists.txt
+8
-2
cmake/cpack_rpm.cmake
cmake/cpack_rpm.cmake
+3
-3
cmake/for_clients.cmake
cmake/for_clients.cmake
+77
-0
debian/libmariadbclient-dev.files
debian/libmariadbclient-dev.files
+1
-0
debian/patches/00list
debian/patches/00list
+1
-1
scripts/CMakeLists.txt
scripts/CMakeLists.txt
+0
-51
scripts/mysql_config.sh
scripts/mysql_config.sh
+5
-50
support-files/CMakeLists.txt
support-files/CMakeLists.txt
+3
-0
support-files/mariadb.pc.in
support-files/mariadb.pc.in
+23
-0
No files found.
.gitignore
View file @
5ca5f92a
...
...
@@ -195,6 +195,7 @@ support-files/binary-configure
support-files/config.huge.ini
support-files/config.medium.ini
support-files/config.small.ini
support-files/mariadb.pc
support-files/my-huge.cnf
support-files/my-innodb-heavy-4G.cnf
support-files/my-large.cnf
...
...
CMakeLists.txt
View file @
5ca5f92a
...
...
@@ -77,6 +77,10 @@ ELSE()
ENDIF
()
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
)
INCLUDE
(
${
CMAKE_SOURCE_DIR
}
/cmake/build_configurations/
${
BUILD_CONFIG
}
.cmake
)
...
...
@@ -384,9 +388,7 @@ ADD_SUBDIRECTORY(libmysql)
ADD_SUBDIRECTORY
(
client
)
ADD_SUBDIRECTORY
(
extra
)
ADD_SUBDIRECTORY
(
libservices
)
ADD_SUBDIRECTORY
(
scripts
)
ADD_SUBDIRECTORY
(
sql/share
)
ADD_SUBDIRECTORY
(
support-files
)
IF
(
NOT WITHOUT_SERVER
)
ADD_SUBDIRECTORY
(
tests
)
...
...
@@ -419,6 +421,10 @@ IF(WIN32)
ENDIF
()
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/config.h
)
CONFIGURE_FILE
(
${
CMAKE_SOURCE_DIR
}
/include/mysql_version.h.in
...
...
cmake/cpack_rpm.cmake
View file @
5ca5f92a
...
...
@@ -27,15 +27,15 @@ SET(CPACK_COMPONENTS_ALL Server ManPagesServer IniFiles Server_Scripts
ManPagesTest Readme ManPagesClient Test
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_RPM_PACKAGE_RELEASE
"1%{?dist}"
)
SET
(
CPACK_RPM_PACKAGE_LICENSE
"GPL"
)
SET
(
CPACK_RPM_PACKAGE_RELOCATABLE FALSE
)
SET
(
CPACK_RPM_PACKAGE_GROUP
"Applications/Databases"
)
SET
(
CPACK_RPM_PACKAGE_
URL
"http://mariadb.org"
)
SET
(
CPACK_RPM_PACKAGE_
SUMMARY
"MariaDB: a very fast and robust SQL database server"
)
SET
(
CPACK_RPM_PACKAGE_
SUMMARY
${
CPACK_PACKAGE_SUMMARY
}
)
SET
(
CPACK_RPM_PACKAGE_
URL
${
CPACK_PACKAGE_URL
}
)
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
...
...
cmake/for_clients.cmake
0 → 100644
View file @
5ca5f92a
#
# 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
)
debian/libmariadbclient-dev.files
View file @
5ca5f92a
...
...
@@ -4,4 +4,5 @@ usr/lib/libmysqlclient.a
usr/lib/libmysqlclient_r.a
usr/lib/libmysqlservices.a
usr/share/aclocal/mysql.m4
usr/share/pkgconfig/mariadb.pc
usr/share/man/man1/mysql_config.1
debian/patches/00list
View file @
5ca5f92a
...
...
@@ -4,7 +4,7 @@
33_scripts__mysql_create_system_tables__no_test.dpatch
38_scripts__mysqld_safe.sh__signals.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
# 60_zlib_innodb_workaround.dpatch
61_replace_dash_with_bash_mbug675185.dpatch
scripts/CMakeLists.txt
View file @
5ca5f92a
...
...
@@ -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
)
...
...
scripts/mysql_config.sh
View file @
5ca5f92a
...
...
@@ -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
"
;;
...
...
support-files/CMakeLists.txt
View file @
5ca5f92a
...
...
@@ -67,6 +67,9 @@ IF(UNIX)
INSTALL
(
DIRECTORY RHEL4-SElinux/ DESTINATION
${
inst_location
}
/SELinux/RHEL4 COMPONENT SupportFiles
)
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
)
SET
(
bindir
${
prefix
}
/
${
INSTALL_BINDIR
}
)
...
...
support-files/mariadb.pc.in
0 → 100644
View file @
5ca5f92a
# 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@
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment