The CMake program provides a great deal of control over how you configure a MySQL source distribution. Typically, you do this using options on the CMake command line. For information about options supported by CMake, run either of these commands in the top-level source directory:
shell>cmake . -LHshell>ccmake .
You can also affect CMake using certain environment variables. See Environment Variables.
The following table shows the available CMake
options. In the Default column,
PREFIX stands for the value of the
CMAKE_INSTALL_PREFIX option, which
specifies the installation base directory. This value is used as
the parent location for several of the installation
subdirectories.
Table 4.1 MySQL Source-Configuration Option Reference (CMake)
| Formats | Description | Default | Introduced | Removed |
|---|---|---|---|---|
BUILD_CONFIG | Use same build options as official releases | |||
CMAKE_BUILD_TYPE | Type of build to produce | RelWithDebInfo | ||
CMAKE_CXX_FLAGS | Flags for C++ Compiler | |||
CMAKE_C_FLAGS | Flags for C Compiler | |||
CMAKE_INSTALL_PREFIX | Installation base directory | /usr/local/mysql | ||
COMPILATION_COMMENT | Comment about compilation environment | |||
CPACK_MONOLITHIC_INSTALL | Whether package build produces single file | OFF | ||
DEFAULT_CHARSET | The default server character set | latin1 | ||
DEFAULT_COLLATION | The default server collation | latin1_swedish_ci | ||
DISABLE_PSI_COND | Exclude Performance Schema condition instrumentation | OFF | 5.7.3 | |
DISABLE_PSI_FILE | Exclude Performance Schema file instrumentation | OFF | 5.7.3 | |
DISABLE_PSI_IDLE | Exclude Performance Schema idle instrumentation | OFF | 5.7.3 | |
DISABLE_PSI_MEMORY | Exclude Performance Schema memory instrumentation | OFF | 5.7.3 | |
DISABLE_PSI_METADATA | Exclude Performance Schema metadata instrumentation | OFF | 5.7.3 | |
DISABLE_PSI_MUTEX | Exclude Performance Schema mutex instrumentation | OFF | 5.7.3 | |
DISABLE_PSI_RWLOCK | Exclude Performance Schema rwlock instrumentation | OFF | 5.7.3 | |
DISABLE_PSI_SOCKET | Exclude Performance Schema socket instrumentation | OFF | 5.7.3 | |
DISABLE_PSI_SP | Exclude Performance Schema stored program instrumentation | OFF | 5.7.3 | |
DISABLE_PSI_STAGE | Exclude Performance Schema stage instrumentation | OFF | 5.7.3 | |
DISABLE_PSI_STATEMENT | Exclude Performance Schema statement instrumentation | OFF | 5.7.3 | |
DISABLE_PSI_STATEMENT_DIGEST | Exclude Performance Schema statement_digest instrumentation | OFF | 5.7.3 | |
DISABLE_PSI_TABLE | Exclude Performance Schema table instrumentation | OFF | 5.7.3 | |
DOWNLOAD_BOOST | Whether to download the Boost library | OFF | 5.7.5 | |
DOWNLOAD_BOOST_TIMEOUT | Timeout in seconds for downloading the Boost library | 600 | 5.7.6 | |
-DWITH_PROTOBUF | Which Protocol Buffers package to use | bundled | 5.7.12 | |
ENABLED_LOCAL_INFILE | Whether to enable LOCAL for LOAD DATA INFILE | OFF | ||
ENABLED_PROFILING | Whether to enable query profiling code | ON | ||
ENABLE_DEBUG_SYNC | Whether to enable Debug Sync support | ON | ||
ENABLE_DOWNLOADS | Whether to download optional files | OFF | ||
ENABLE_DTRACE | Whether to include DTrace support | |||
ENABLE_GCOV | Whether to include gcov support | |||
ENABLE_GPROF | Enable gprof (optimized Linux builds only) | OFF | ||
FORCE_UNSUPPORTED_COMPILER | Whether to permit unsupported compiler | OFF | 5.7.5 | |
IGNORE_AIO_CHECK | With -DBUILD_CONFIG=mysql_release, ignore libaio check | OFF | ||
INNODB_PAGE_ATOMIC_REF_COUNT | Enable or disable atomic page reference counting | ON | 5.7.4 | 5.7.5 |
INSTALL_BINDIR | User executables directory | PREFIX/bin | ||
INSTALL_DOCDIR | Documentation directory | PREFIX/docs | ||
INSTALL_DOCREADMEDIR | README file directory | PREFIX | ||
INSTALL_INCLUDEDIR | Header file directory | PREFIX/include | ||
INSTALL_INFODIR | Info file directory | PREFIX/docs | ||
INSTALL_LAYOUT | Select predefined installation layout | STANDALONE | ||
INSTALL_LIBDIR | Library file directory | PREFIX/lib | ||
INSTALL_MANDIR | Manual page directory | PREFIX/man | ||
INSTALL_MYSQLKEYRINGDIR | Directory for keyring_file plugin data file | platform specific | 5.7.11 | |
INSTALL_MYSQLSHAREDIR | Shared data directory | PREFIX/share | ||
INSTALL_MYSQLTESTDIR | mysql-test directory | PREFIX/mysql-test | ||
INSTALL_PKGCONFIGDIR | Directory for mysqlclient.pc pkg-config file | INSTALL_LIBDIR/pkgconfig | 5.7.9 | |
INSTALL_PLUGINDIR | Plugin directory | PREFIX/lib/plugin | ||
INSTALL_SBINDIR | Server executable directory | PREFIX/bin | ||
INSTALL_SCRIPTDIR | Scripts directory | PREFIX/scripts | ||
INSTALL_SECURE_FILE_PRIVDIR | secure_file_priv default value | platform specific | 5.7.6 | |
INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR | secure_file_priv default value for libmysqld | 5.7.8 | ||
INSTALL_SHAREDIR | aclocal/mysql.m4 installation directory | PREFIX/share | ||
INSTALL_SQLBENCHDIR | sql-bench directory | PREFIX | 5.7.8 | |
INSTALL_SUPPORTFILESDIR | Extra support files directory | PREFIX/support-files | ||
MAX_INDEXES | Maximum indexes per table | 64 | 5.7.1 | |
MUTEX_TYPE | InnoDB mutex type | event | 5.7.2 | |
MYSQL_DATADIR | Data directory | |||
MYSQL_MAINTAINER_MODE | Whether to enable MySQL maintainer-specific development environment | OFF | ||
MYSQL_PROJECT_NAME | Windows/OS X project name | 3306 | ||
MYSQL_TCP_PORT | TCP/IP port number | 3306 | ||
MYSQL_UNIX_ADDR | Unix socket file | /tmp/mysql.sock | ||
ODBC_INCLUDES | ODBC includes directory | |||
ODBC_LIB_DIR | ODBC library directory | |||
OPTIMIZER_TRACE | Whether to support optimizer tracing | |||
SUNPRO_CXX_LIBRARY | Client link library on Solaris 10+ | 5.7.5 | ||
SYSCONFDIR | Option file directory | |||
SYSTEMD_PID_DIR | Directory for PID file under systemd | /var/run/mysqld | 5.7.6 | |
SYSTEMD_SERVICE_NAME | Name of MySQL service under systemd | mysqld | 5.7.6 | |
TMPDIR | tmpdir default value | 5.7.4 | ||
WIN_DEBUG_NO_INLINE | Whether to disable function inlining | OFF | 5.7.6 | |
WITHOUT_SERVER | Do not build the server | OFF | ||
WITHOUT_xxx_STORAGE_ENGINE | Exclude storage engine xxx from build | |||
WITH_ASAN | Enable AddressSanitizer | OFF | 5.7.3 | |
WITH_AUTHENTICATION_PAM | Build PAM authentication plugin | OFF | ||
WITH_BOOST | The location of the Boost library sources | 5.7.5 | ||
WITH_CLIENT_PROTOCOL_TRACING | Build client-side protocol tracing framework | ON | 5.7.2 | |
WITH_DEBUG | Whether to include debugging support | OFF | ||
WITH_DEFAULT_COMPILER_OPTIONS | Whether to use default compiler options | ON | ||
WITH_DEFAULT_FEATURE_SET | Whether to use default feature set | ON | ||
WITH_EDITLINE | Which libedit/editline library to use | bundled | 5.7.2 | |
WITH_EMBEDDED_SERVER | Whether to build embedded server | OFF | ||
WITH_EMBEDDED_SHARED_LIBRARY | Whether to build a shared embedded server library | OFF | 5.7.4 | |
WITH_EXTRA_CHARSETS | Which extra character sets to include | all | ||
WITH_INNODB_EXTRA_DEBUG | Whether to include extra debugging support for InnoDB. | OFF | 5.7.2 | |
WITH_INNODB_MEMCACHED | Whether to generate memcached shared libraries. | OFF | ||
WITH_KEYRING_TEST | Build the keyring test program | OFF | 5.7.11 | |
WITH_LIBEVENT | Which libevent library to use | bundled | ||
WITH_LIBWRAP | Whether to include libwrap (TCP wrappers) support | OFF | ||
WITH_MECAB | Compiles MeCab | 5.7.6 | ||
WITH_MSAN | Enable MemorySanitizer | OFF | 5.7.4 | |
WITH_MSCRT_DEBUG | Enable Visual Studio CRT memory leak tracing | OFF | 5.7.6 | |
WITH_NDBCLUSTER | Build the NDB storage engine; alias for WITH_NDBCLUSTER_STORAGE_ENGINE | ON | ||
WITH_NDBCLUSTER_STORAGE_ENGINE | Build the NDB storage engine | ON | ||
WITH_RAPID | Whether to build rapid development cycle plugins | ON | 5.7.12 | |
WITH_SSL | Type of SSL support | bundled | ||
WITH_SYSTEMD | Enable installation of systemd support files | OFF | 5.7.6 | |
WITH_TEST_TRACE_PLUGIN | Build test protocol trace plugin | OFF | 5.7.2 | |
WITH_UBSAN | Enable Undefined Behavior Sanitizer | OFF | 5.7.6 | |
WITH_UNIXODBC | Enable unixODBC support | OFF | ||
WITH_VALGRIND | Whether to compile in Valgrind header files | OFF | ||
WITH_ZLIB | Type of zlib support | bundled | ||
WITH_xxx_STORAGE_ENGINE | Compile storage engine xxx statically into server |
The following sections provide more information about CMake options.
For boolean options, the value may be specified as 1 or
ON to enable the option, or as 0 or
OFF to disable the option.
Many options configure compile-time defaults that can be
overridden at server startup. For example, the
CMAKE_INSTALL_PREFIX,
MYSQL_TCP_PORT, and
MYSQL_UNIX_ADDR options that
configure the default installation base directory location, TCP/IP
port number, and Unix socket file can be changed at server startup
with the --basedir,
--port, and
--socket options for
mysqld. Where applicable, configuration option
descriptions indicate the corresponding mysqld
startup option.
This option configures a source distribution with the same build options used by Oracle to produce binary distributions for official MySQL releases.
The type of build to produce:
RelWithDebInfo: Enable optimizations
and generate debugging information. This is the default
MySQL build type.
Debug: Disable optimizations and
generate debugging information. This build type is also
used if the WITH_DEBUG
option is enabled. That is,
-DWITH_DEBUG=1 has the same
effect as
-DCMAKE_BUILD_TYPE=Debug.
-DCPACK_MONOLITHIC_INSTALL=
bool
This option affects whether the make package operation produces multiple installation package files or a single file. If disabled, the operation produces multiple installation package files, which may be useful if you want to install only a subset of a full MySQL installation. If enabled, it produces a single file for installing everything.
The CMAKE_INSTALL_PREFIX option
indicates the base installation directory. Other options with
names of the form
INSTALL_ that
indicate component locations are interpreted relative to the
prefix and their values are relative pathnames. Their values
should not include the prefix.
xxx
-DCMAKE_INSTALL_PREFIX=
dir_name
The installation base directory.
This value can be set at server startup with the
--basedir option.
Where to install user programs.
Where to install documentation.
-DINSTALL_DOCREADMEDIR=
dir_name
Where to install README files.
Where to install header files.
Where to install Info files.
Select a predefined installation layout:
STANDALONE: Same layout as used for
.tar.gz and .zip
packages. This is the default.
RPM: Layout similar to RPM packages.
SVR4: Solaris package layout.
DEB: DEB package layout (experimental).
You can select a predefined layout but modify individual component installation locations by specifying other options. For example:
shell> cmake . -DINSTALL_LAYOUT=SVR4 -DMYSQL_DATADIR=/var/mysql/data
As of MySQL 5.7.6, the
INSTALL_LAYOUT value determines
the default value of the
secure_file_priv system and
keyring_file_data system
variables; see the descriptions of those variables in
Server System Variables.
Where to install library files.
Where to install manual pages.
-DINSTALL_MYSQLKEYRINGDIR=
dir_path
The default directory to use as the location of the
keyring_file plugin data file. The default
value is platform specific and depends on the value of the
INSTALL_LAYOUT
CMake option; see the description of the
keyring_file_data system
variable in Server System Variables.
This option was added in MySQL 5.7.11.
-DINSTALL_MYSQLSHAREDIR=
dir_name
Where to install shared data files.
-DINSTALL_MYSQLTESTDIR=
dir_name
Where to install the mysql-test
directory. As of MySQL 5.7.2, to suppress installation of this
directory, explicitly set the option to the empty value
(-DINSTALL_MYSQLTESTDIR=).
-DINSTALL_PKGCONFIGDIR=
dir_name
The directory in which to install the
mysqlclient.pc file for use by
pkg-config. The default value is
INSTALL_LIBDIR/pkgconfig, unless
INSTALL_LIBDIR ends with
/mysql, in which case that is removed
first.
This option was added in MySQL 5.7.9.
The location of the plugin directory.
This value can be set at server startup with the
--plugin_dir option.
Where to install the mysqld server.
Where to install mysql_install_db.
-DINSTALL_SECURE_FILE_PRIVDIR=
dir_name
The default value for the
secure_file_priv system
variable. The default value is platform specific and depends
on the value of the
INSTALL_LAYOUT
CMake option; see the description of the
secure_file_priv system
variable in Server System Variables.
This option was added in MySQL 5.7.6. To set the value for the
libmysqld embedded server, use
INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR.
-DINSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR=
dir_name
The default value for the
secure_file_priv system
variable, for the libmysqld embedded
server. This option was added in MySQL 5.7.8.
Where to install aclocal/mysql.m4.
-DINSTALL_SQLBENCHDIR=
dir_name
Where to install the sql-bench directory.
To suppress installation of this directory, explicitly set the
option to the empty value
(-DINSTALL_SQLBENCHDIR=).
As of MySQL 5.7.8, the sql-bench
directory is no longer included in MYSQL distributions, so the
INSTALL_SQLBENCHDIR= option is
removed as well.
-DINSTALL_SUPPORTFILESDIR=
dir_name
Where to install extra support files.
The location of the MySQL data directory.
This value can be set at server startup with the
--datadir option.
The location of the ODBC includes directory, and may be used while configuring Connector/ODBC.
The location of the ODBC library directory, and may be used while configuring Connector/ODBC.
The default my.cnf option file directory.
This location cannot be set at server startup, but you can
start the server with a given option file using the
--defaults-file=
option, where file_namefile_name is the full
path name to the file.
The name of the directory in which to create the PID file when
MySQL is managed by systemd. The default is
/var/run/mysqld; this might be changed
implicitly according to the
INSTALL_LAYOUT value.
This option is ignored unless
WITH_SYSTEMD is enabled. It was
added in MySQL 5.7.6.
The name of the MySQL service to use when MySQL is managed by
systemd. The default is mysqld; this might
be changed implicitly according to the
INSTALL_LAYOUT value.
This option is ignored unless
WITH_SYSTEMD is enabled. It was
added in MySQL 5.7.6.
The default location to use for the
tmpdir system variable. If
unspecified, the value defaults to P_tmpdir
in <stdio.h>. This option was added
in MySQL 5.7.4.
Storage engines are built as plugins. You can build a plugin as a
static module (compiled into the server) or a dynamic module
(built as a dynamic library that must be installed into the server
using the INSTALL PLUGIN statement
or the --plugin-load option before
it can be used). Some plugins might not support static or dynamic
building.
The MyISAM,
MERGE,
MEMORY, and
CSV engines are mandatory (always
compiled into the server) and need not be installed explicitly.
To compile a storage engine statically into the server, use
-DWITH_.
Some permissible engine_STORAGE_ENGINE=1engine values are
ARCHIVE, BLACKHOLE,
EXAMPLE, FEDERATED,
INNOBASE (InnoDB),
NDB or NDBCLUSTER
(NDB), PARTITION
(partitioning support), and PERFSCHEMA
(Performance Schema). Examples:
-DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1
WITH_NDBCLUSTER_STORAGE_ENGINE is
supported only when building MySQL Cluster using the MySQL
Cluster sources. It cannot be used to enable clustering support
in other MySQL source trees or distributions. In MySQL Cluster
source distributions, it is enabled by default. See
Building MySQL Cluster from Source on Linux, and
Compiling and Installing MySQL Cluster from Source on Windows, for more
information.
As of MySQL 5.7.9, it is not possible to compile without Performance Schema support. If it is desired to compile without particular types of instrumentation, that can be done with the following CMake options:
DISABLE_PSI_COND DISABLE_PSI_FILE DISABLE_PSI_IDLE DISABLE_PSI_MEMORY DISABLE_PSI_METADATA DISABLE_PSI_MUTEX DISABLE_PSI_PS DISABLE_PSI_RWLOCK DISABLE_PSI_SOCKET DISABLE_PSI_SP DISABLE_PSI_STAGE DISABLE_PSI_STATEMENT DISABLE_PSI_STATEMENT_DIGEST DISABLE_PSI_TABLE DISABLE_PSI_THREAD DISABLE_PSI_TRANSACTION
For example, to compile without mutex instrumentation, configure
MySQL using the -DDISABLE_PSI_MUTEX=1 option.
As of MySQL 5.7.4, to exclude a storage engine from the build, use
-DWITH_.
Examples:
engine_STORAGE_ENGINE=0
-DWITH_EXAMPLE_STORAGE_ENGINE=0 -DWITH_FEDERATED_STORAGE_ENGINE=0 -DWITH_PARTITION_STORAGE_ENGINE=0
Before MySQL 5.7.4, to exclude a storage engine from the build,
use
-DWITHOUT_.
(That syntax also works in 5.7.4 or later, but
engine_STORAGE_ENGINE=1-DWITH_
is preferred.) Examples:
engine_STORAGE_ENGINE=0
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 -DWITHOUT_FEDERATED_STORAGE_ENGINE=1 -DWITHOUT_PARTITION_STORAGE_ENGINE=1
If neither
-DWITH_
nor
engine_STORAGE_ENGINE-DWITHOUT_
are specified for a given storage engine, the engine is built as a
shared module, or excluded if it cannot be built as a shared
module.
engine_STORAGE_ENGINE
A descriptive comment about the compilation environment.
-DDEFAULT_CHARSET=
charset_name
The server character set. By default, MySQL uses the
latin1 (cp1252 West European) character
set.
charset_name may be one of
binary, armscii8,
ascii, big5,
cp1250, cp1251,
cp1256, cp1257,
cp850, cp852,
cp866, cp932,
dec8, eucjpms,
euckr, gb2312,
gbk, geostd8,
greek, hebrew,
hp8, keybcs2,
koi8r, koi8u,
latin1, latin2,
latin5, latin7,
macce, macroman,
sjis, swe7,
tis620, ucs2,
ujis, utf8,
utf8mb4, utf16,
utf16le, utf32. The
permissible character sets are listed in the
cmake/character_sets.cmake file as the
value of CHARSETS_AVAILABLE.
This value can be set at server startup with the
--character_set_server option.
-DDEFAULT_COLLATION=
collation_name
The server collation. By default, MySQL uses
latin1_swedish_ci. Use the
SHOW COLLATION statement to
determine which collations are available for each character
set.
This value can be set at server startup with the
--collation_server option.
Whether to exclude the Performance Schema condition
instrumentation. The default is OFF
(include). This option was added in MySQL 5.7.3.
Whether to exclude the Performance Schema file
instrumentation. The default is OFF
(include). This option was added in MySQL 5.7.3.
Whether to exclude the Performance Schema idle
instrumentation. The default is OFF
(include). This option was added in MySQL 5.7.3.
Whether to exclude the Performance Schema memory
instrumentation. The default is OFF
(include). This option was added in MySQL 5.7.3.
Whether to exclude the Performance Schema metadata
instrumentation. The default is OFF
(include). This option was added in MySQL 5.7.3.
Whether to exclude the Performance Schema mutex
instrumentation. The default is OFF
(include). This option was added in MySQL 5.7.3.
Whether to exclude the Performance Schema rwlock
instrumentation. The default is OFF
(include). This option was added in MySQL 5.7.3.
Whether to exclude the Performance Schema socket
instrumentation. The default is OFF
(include). This option was added in MySQL 5.7.3.
Whether to exclude the Performance Schema stored program
instrumentation. The default is OFF
(include). This option was added in MySQL 5.7.3.
Whether to exclude the Performance Schema stage
instrumentation. The default is OFF
(include). This option was added in MySQL 5.7.3.
Whether to exclude the Performance Schema statement
instrumentation. The default is OFF
(include). This option was added in MySQL 5.7.3.
-DDISABLE_PSI_STATEMENT_DIGEST=
bool
Whether to exclude the Performance Schema statement_digest
instrumentation. The default is OFF
(include). This option was added in MySQL 5.7.3.
Whether to exclude the Performance Schema table
instrumentation. The default is OFF
(include). This option was added in MySQL 5.7.3.
Whether to download the Boost library. The default is
OFF. This option was added in MySQL 5.7.5.
See the WITH_BOOST option for
additional discussion about using Boost.
-DDOWNLOAD_BOOST_TIMEOUT=
seconds
The timeout in seconds for downloading the Boost library. The default is 600 seconds. This option was added in MySQL 5.7.6.
See the WITH_BOOST option for
additional discussion about using Boost.
Whether to compile the Debug Sync facility into the server.
This facility is used for testing and debugging. This option
is enabled by default, but has no effect unless MySQL is
configured with debugging enabled. If debugging is enabled and
you want to disable Debug Sync, use
-DENABLE_DEBUG_SYNC=0.
When compiled in, Debug Sync is disabled by default at
runtime. To enable it, start mysqld with
the
--debug-sync-timeout=
option, where NN is a timeout value
greater than 0. (The default value is 0, which disables Debug
Sync.) N becomes the default
timeout for individual synchronization points.
As of MySQL 5.7.8, sync debug checking for the
InnoDB storage engine is available when
debugging support is compiled in using the
WITH_DEBUG option.
For a description of the Debug Sync facility and how to use synchronization points, see MySQL Internals: Test Synchronization.
Whether to download optional files. For example, with this option enabled, CMake downloads the Google Test distribution that is used by the test suite to run unit tests.
Whether to include support for DTrace probes. For information about DTrace, wee Tracing mysqld Using DTrace
Whether to include gcov support (Linux only).
Whether to enable gprof (optimized Linux
builds only).
Whether to enable LOCAL capability in the
client library for
LOAD DATA
INFILE.
This option controls client-side LOCAL
capability, but the capability can be set on the server side
at server startup with the
--local-infile option. See
Security Issues with LOAD DATA LOCAL.
Whether to enable query profiling code (for the
SHOW PROFILE and
SHOW PROFILES statements).
-DFORCE_UNSUPPORTED_COMPILER=
bool
By default, CMake checks for minimum
versions of supported compilers: gcc 4.4
(Linux, Solaris); Sun Studio 12u2 (Solaris client library);
Clang 3.3 (OS X, FreeBSD). To disable this check, use
-DFORCE_UNSUPPORTED_COMPILER=ON.
This option was added in MySQL 5.7.5.
If the
-DBUILD_CONFIG=mysql_release
option is given on Linux, the libaio
library must be linked in by default. If you do not have
libaio or do not want to install it, you
can suppress the check for it by specifying
-DIGNORE_AIO_CHECK=1.
-DINNODB_PAGE_ATOMIC_REF_COUNT=
bool
Whether to enable or disable atomic page reference counting.
Fetching and releasing pages from the buffer pool and tracking
the page state are expensive and complex operations. Using a
page mutex to track these operations does not scale well. With
INNODB_PAGE_ATOMIC_REF_COUNT=ON (default),
fetch and release is tracked using atomics where available.
For platforms that do not support atomics, set
INNODB_PAGE_ATOMIC_REF_COUNT=OFF to disable
atomic page reference counting.
When atomic page reference counting is enabled (default),
“[Note] InnoDB: Using atomics to ref count
buffer pool pages” is printed to the error
log at server startup. If atomic page reference counting is
disabled, “[Note] InnoDB: Using mutexes to ref
count buffer pool pages” is printed instead.
INNODB_PAGE_ATOMIC_REF_COUNT was introduced
with the fix for MySQL Bug #68079. The option is removed in
MySQL 5.7.5. Support for atomics is required to build MySQL as
of MySQL 5.7.5, which makes the option obsolete.
The maximum number of indexes per table. The default is 64. The maximum is 255. Values smaller than 64 are ignored and the default of 64 is used.
Whether to enable a MySQL maintainer-specific development environment. If enabled, this option causes compiler warnings to become errors.
The mutex type used by InnoDB. Options
include:
event: Use event mutexes. This is the
default value and the original InnoDB
mutex implementation.
sys: Use POSIX mutexes on UNIX systems.
Use CRITICAL_SECTION onjects on
Windows, if available.
futex: Use Linux futexes instead of
condition variables to schedule waiting threads.
For Windows or OS X, the project name to incorporate into the project file name.
The port number on which the server listens for TCP/IP connections. The default is 3306.
This value can be set at server startup with the
--port option.
The Unix socket file path on which the server listens for
socket connections. This must be an absolute path name. The
default is /tmp/mysql.sock.
This value can be set at server startup with the
--socket option.
Whether to support optimizer tracing. See MySQL Internals: Tracing the Optimizer.
Whether to disable function inlining on Windows. The default is off (inlining enabled). This option was added in MySQL 5.7.6.
Whether to enable the AddressSanitizer, for compilers that support it. The default is off. This option was added in MySQL 5.7.3.
-DWITH_AUTHENTICATION_PAM=
bool
Whether to build the PAM authentication plugin, for source trees that include this plugin. (See The PAM Authentication Plugin.) Beginning with MySQL 5.7.2, if this option is specified and the plugin cannot be compiled, the build fails.
As of MySQL 5.7.5, the Boost library is required to build MySQL. These CMake options enable control over the library source location, and whether to download it automatically:
-DWITH_BOOST=
specifies the Boost library directory location. It is also
possible to specify the Boost location by setting the
path_nameBOOST_ROOT or
WITH_BOOST environment variable.
As of MySQL 5.7.11,
-DWITH_BOOST=system is
permitted and indicates that the correct version of Boost
is installed on the compilation host in the standard
location. In this case, the installed version of Boost is
used rather than any version included with a MySQL source
distribution.
-DDOWNLOAD_BOOST=
specifies whether to download the Boost source if it is
not present in the specified location. The default is
boolOFF.
-DDOWNLOAD_BOOST_TIMEOUT=
the timeout in seconds for downloading the Boost library.
The default is 600 seconds.
seconds
For example, if you normally build MySQL placing the object
output in the bld subdirectory of your
MySQL source tree, you can build with Boost like this:
mkdir bld cd bld cmake .. -DDOWNLOAD_BOOST=ON -DWITH_BOOST=$HOME/my_boost
This causes Boost to be downloaded into the
my_boost directory under your home
directory. If the required Boost version is already there, no
download is done. If the required Boost version changes, the
newer version is downloaded.
If Boost is already installed locally and your compiler finds the Boost header files on its own, it may not be necessary to specify the preceding CMake options. However, if the version of Boost required by MySQL changes and the locally installed version has not been upgraded, you may have build problems. Using the CMake options should give you a successful build.
-DWITH_CLIENT_PROTOCOL_TRACING=
bool
Whether to build the client-side protocol tracing framework into the client library. By default, this option is enabled. This option was added in MySQL 5.7.2.
For information about writing protocol trace client plugins, see Writing Protocol Trace Plugins.
See also the
WITH_TEST_TRACE_PLUGIN option.
Whether to include debugging support.
Configuring MySQL with debugging support enables you to use
the --debug="d,parser_debug"
option when you start the server. This causes the Bison parser
that is used to process SQL statements to dump a parser trace
to the server's standard error output. Typically, this output
is written to the error log.
As of MySQL 5.7.8, sync debug checking for the
InnoDB storage engine is defined under
UNIV_DEBUG and is available when debugging
support is compiled in using the
WITH_DEBUG option. When
debugging support is compiled in, the
innodb_sync_debug
configuration option can be used to enable or disable
InnoDB sync debug checking.
-DWITH_DEFAULT_FEATURE_SET=
bool
Whether to use the flags from
cmake/build_configurations/feature_set.cmake.
Which libedit/editline
library to use. The permitted values are
bundled (the default) and
system.
WITH_EDITLINE was added in MySQL
5.7.2. It replaces WITH_LIBEDIT, which has
been removed.
Whether to build the libmysqld embedded
server library.
-DWITH_EMBEDDED_SHARED_LIBRARY=
bool
Whether to build a shared libmysqld
embedded server library. This option was added in MySQL 5.7.4.
Which extra character sets to include:
all: All character sets. This is the
default.
complex: Complex character sets.
none: No extra character sets.
-DWITH_INNODB_EXTRA_DEBUG=
bool
Whether to include extra InnoDB debugging support.
Enabling WITH_INNODB_EXTRA_DEBUG turns on
extra InnoDB debug checks. This option can only be enabled
when WITH_DEBUG is enabled.
Whether to generate memcached shared libraries
(libmemcached.so and
innodb_engine.so).
Whether to build the test program that accompanies the
keyring_file plugin. The default is
OFF. Test file source code is located in
the plugin/keyring/keyring-test
directory.
This option was added in MySQL 5.7.11.
Which libevent library to use. Permitted
values are bundled (default),
system, and yes. If you
specify system or yes,
the system libevent library is used if
present. If the system library is not found, the bundled
libevent library is used. The
libevent library is required by
InnoDB memcached.
Whether to include libwrap (TCP wrappers)
support.
Whether to enable MemorySanitizer, for compilers that support it. The default is off.
For this option to have an effect if enabled, all libraries linked to MySQL must also have been compiled with the option enabled.
This option was added in MySQL 5.7.4.
-DWITH_MECAB={disabled|system|
path_name}
Use this option to compile the MeCab parser. If you have
installed MeCab to its default installation directory, set
-DWITH_MECAB=system. The
system option applies to MeCab
installations performed from source or from binaries using a
native package management utility. If you installed MeCab to a
custom installation directory, specify the path to the MeCab
installation. For example,
-DWITH_MECAB=/opt/mecab. If the
system option does not work, specifying the
MeCab installation path should work in all cases.
For related information, see MeCab Full-Text Parser Plugin.
Whether to enable Visual Studio CRT memory leak tracing. The
default is OFF. This option was added in
MySQL 5.7.6.
Which Protocol Buffers package to use.
protobuf_type can be one of the
following values:
bundled: Use the package bundled with
the distribution. This is the default.
system: Use the package installed on
the system.
Other values are ignored, with a fallback to
bundled.
This option was added in MySQL 5.7.12.
Whether to build the rapid development cycle plugins. When
enabled, a rapid directory is created in
the build tree containing these plugins. When disabled, no
rapid directory is created in the build
tree. The default is ON, unless the
rapid directory is removed from the
source tree, in which case the default becomes
OFF. This option was added in MySQL 5.7.12.
-DWITH_SSL={|ssl_typepath_name}
The type of SSL support to include or the path name to the OpenSSL installation to use.
ssl_type can be one of the
following values:
yes: Use the system SSL library if
present, else the library bundled with the
distribution.
bundled: Use the SSL library
bundled with the distribution. This is the default.
system: Use the system SSL library.
path_name is the path name to
the OpenSSL installation to use. Using this can be
preferable to using the
ssl_type value of
system, for it can prevent CMake from
detecting and using an older or incorrect OpenSSL version
installed on the system. (Another permitted way to do the
same thing is to set the
CMAKE_PREFIX_PATH option to
path_name.)
For information about using SSL support, see Using Secure Connections.
Whether to enable installation of systemd support files. By
default, this option is disabled. When enabled, systemd
support files are installed, and scripts such as
mysqld_safe and the System V initialization
script are not installed. On platforms where systemd is not
available, enabling WITH_SYSTEMD
results in an error from CMake.
For more information about using systemd, see
Managing MySQL Server with systemd. That
section also includes information about specifying options
previously specified in [mysqld_safe]
option groups. Because mysqld_safe is not
installed when systemd is used, such options must be specified
another way.
This option was added in MySQL 5.7.6.
Whether to build the test protocol trace client plugin (see
Using the Test Protocol Trace Plugin). By default,
this option is disabled. Enabling this option has no effect
unless the
WITH_CLIENT_PROTOCOL_TRACING
option is enabled. If MySQL is configured with both options
enabled, the libmysqlclient client library
is built with the test protocol trace plugin built in, and all
the standard MySQL clients load the plugin. However, even when
the test plugin is enabled, it has no effect by default.
Control over the plugin is afforded using environment
variables; see Using the Test Protocol Trace Plugin.
This option was added in MySQL 5.7.2.
Do not enable the
WITH_TEST_TRACE_PLUGIN option
if you want to use your own protocol trace plugins because
only one such plugin can be loaded at a time and an error
occurs for attempts to load a second one. If you have
already built MySQL with the test protocol trace plugin
enabled to see how it works, you must rebuild MySQL without
it before you can use your own plugins.
For information about writing trace plugins, see Writing Protocol Trace Plugins.
Whether to enable the Undefined Behavior Sanitizer, for compilers that support it. The default is off. This option was added in MySQL 5.7.6.
Enables unixODBC support, for Connector/ODBC.
Whether to compile in the Valgrind header files, which exposes
the Valgrind API to MySQL code. The default is
OFF.
To generate a Valgrind-aware debug build,
-DWITH_VALGRIND=1 normally is
combined with -DWITH_DEBUG=1.
See
Building
Debug Configurations.
Some features require that the server be built with
compression library support, such as the
COMPRESS() and
UNCOMPRESS() functions, and
compression of the client/server protocol. The
WITH_ZLIB indicates the source
of zlib support:
bundled: Use the
zlib library bundled with the
distribution. This is the default.
system: Use the system
zlib library.
Whether to build without the MySQL server. The default is
OFF, which does build the server.
Flags for the C Compiler.
Flags for the C++ Compiler.
-DWITH_DEFAULT_COMPILER_OPTIONS=
bool
Whether to use the flags from
cmake/build_configurations/compiler_options.cmake.
All optimization flags were carefully chosen and tested by the MySQL build team. Overriding them can lead to unexpected results and is done at your own risk.
-DSUNPRO_CXX_LIBRARY=""
lib_name
Enable linking against libCstd instead of
stlport4 on Solaris 10 or later. This works
only for client code because the server depends on C++98.
Example usage:
cmake -DWITHOUT_SERVER=1 -DSUNPRO_CXX_LIBRARY=Cstd
This option was added in MySQL 5.7.5.
To specify your own C and C++ compiler flags, for flags that do
not affect optimization, use the
CMAKE_C_FLAGS and
CMAKE_CXX_FLAGS CMake options.
When providing your own compiler flags, you might want to specify
CMAKE_BUILD_TYPE as well.
For example, to create a 32-bit release build on a 64-bit Linux machine, do this:
shell>mkdir bldshell>cd bldshell>cmake .. -DCMAKE_C_FLAGS=-m32 \-DCMAKE_CXX_FLAGS=-m32 \-DCMAKE_BUILD_TYPE=RelWithDebInfo
If you set flags that affect optimization
(-O), you must
set the
numberCMAKE_C_FLAGS_
and/or
build_typeCMAKE_CXX_FLAGS_
options, where build_typebuild_type corresponds
to the CMAKE_BUILD_TYPE value. To
specify a different optimization for the default build type
(RelWithDebInfo) set the
CMAKE_C_FLAGS_RELWITHDEBINFO and
CMAKE_CXX_FLAGS_RELWITHDEBINFO options. For
example, to compile on Linux with -O3 and with
debug symbols, do this:
shell>cmake .. -DCMAKE_C_FLAGS_RELWITHDEBINFO="-O3 -g" \-DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-O3 -g"
The following options are for use when building MySQL Cluster with the MySQL Cluster sources; they are not currently supported when using sources from the MySQL 5.6 Server tree.
Perform the build using the memcached (version 1.6 or later)
installed in the system directory indicated by
dir_name. Files from this
installation that are used in the build include the memcached
binary, header files, and libraries, as well as the
memcached_utilities library and the header
file engine_testapp.h.
You must leave this option unset when building
ndbmemcache using the bundled memcached
sources (WITH_BUNDLED_MEMCACHED
option); in other words, the bundled sources are used by
default).
While additional CMake options—such
as for SASL authorization and for providing
dtrace support—are available for use
when compiling memcached from external
sources, these options are currently not enabled for the
memcached sources bundled with MySQL
Cluster.
-DWITH_BUNDLED_LIBEVENT={ON|OFF}
Use the libevent included in the MySQL
Cluster sources when building MySQL Cluster with
ndbmemcached support. Enabled by default.
OFF causes the system's
libevent to be used instead.
-DWITH_BUNDLED_MEMCACHED={ON|OFF}
Build the memcached sources included in the MySQL Cluster
source tree, then use the resulting memcached server when
building the ndbmemcache engine. In this
case, make install places the
memcached binary in the installation
bin directory, and the
ndbmemcache engine shared library file
ndb_engine.so in the installation
lib directory.
This option is ON by default.
Sets the classpath for building MySQL Cluster Connector for
Java. The default is empty. This option is ignored if
-DWITH_NDB_JAVA=OFF is used.
Enables error injection in the
NDB kernel. For testing only; not
intended for use in building production binaries. The default
is OFF.
-DWITH_NDBCLUSTER_STORAGE_ENGINE={ON|OFF}
Build and link in support for the
NDB
(NDBCLUSTER) storage engine in
mysqld. The default is
ON.
This is an alias for
WITH_NDBCLUSTER_STORAGE_ENGINE.
Build the multi-threaded data node executable
ndbmtd. The default is
ON.
Enable binary logging by default in the mysqld built using this option. ON by default.
Enable building the debug versions of the MySQL Cluster binaries. OFF by default.
Enable building MySQL Cluster with Java support, including
ClusterJ.
This option is ON by default. If you do not wish to compile
MySQL Cluster with Java support, you must disable it
explicitly by specifying -DWITH_NDB_JAVA=OFF
when running CMake. Otherwise, if Java
cannot be found, configuration of the build fails.
Causes the MySQL Cluster management server
(ndb_mgmd) that is built to use this
port by default. If this option is
unset, the resulting management server tries to use port 1186
by default.
If enabled, include a set of NDB API test programs. The default is OFF.