mirror of
https://github.com/MariaDB/server.git
synced 2025-01-15 19:42:28 +01:00
WL#5161 : Cross-platform build with CMake
BUILD-CMAKE: WL#5161 : Documentation on how to build with CMake on Unix/Windows BUILD/Makefile.am: Add new file BUILD/autorun.sh: WL#5161 : use choose_configure instead of autotools configure script (choose configure will call cmake if cmake is available) BUILD/choose_configure.sh: WL#5161 : use choose_configure instead of autotools configure script (choose configure will call cmake if cmake is available) CMakeLists.txt: WL#5161 : Rewrite top-level CMakeLists.txt. Remove Windows specifics - compiler flags handling moved to configure.cmake - storage engine/plugin stuff moved into cmake/plugin.cmake - copy docs Makefile.am: Added new files client/CMakeLists.txt: WL#5161 : Rewrite CMakeLists.txt to be platform-independent Handle packagng (add INSTALL commands) cmake/Makefile.am: WL#5161 : use choose_configure instead of autotools configure script (choose configure will call cmake if cmake is available) cmake/abi_check.cmake: Custom targets for abi_check (for cmake) cmake/bison.cmake: - Check bison availability - Add RUN_BISON macro (used to create sql_yacc.cc and sql_yacc.h) cmake/cat.cmake: Add helper script to concatenate files. cmake/character_sets.cmake: Handle configuration parameters WITH_EXTRA_CHARSETS cmake/check_minimal_version.cmake: Helper script to check the minimum required version of cmake cmake/configure.pl: Add perl script to convert ./configure parameters for cmake cmake/create_initial_db.cmake.in: Add script helper to create initial database. (on Windows, we pack initial db with the redistribution package) cmake/do_abi_check.cmake: Perform abi check cmake/dtrace.cmake: Handle dtrace in CMake Build. Check for dtrace availablility, run dtrace -G on solaris in prelink step cmake/dtrace_prelink.cmake: Run dtrace -G on Solaris in pre-link step, link the object it creates together with library or executable cmake/install_macros.cmake: Helper macros for packaging (install pdb on Windows, install symlinks on Unix) cmake/make_dist.cmake.in: "make dist" - - pack autotools ./configure script with the source (renamed to configure.am) - pack bison output cmake/merge_archives_unix.cmake.in: script to merge static libraries on Unix cmake/misc.cmake: Build helper macros - MERGE_STATIC_LIBS We use it when building client library and embedded (avoid recompilation) - Convert source file paths to absolute names. We use it in to locate files of a different project, when the files need to be recompiled (e.g in embedded several storage engines are recompiled with -DEMBEDDED_LIBRARY) cmake/mysql_version.cmake: Extract version info from configure.in Handle package names. cmake/plugin.cmake: Rewrote storage/mysql_storage_engine.cmake to handle other types of plugins and do it in OS-independent manner. cmake/readline.cmake: Macros to handle WITH_READLINE/WITH_LIBEDIT parameters cmake/ssl.cmake: Add macros to handle WITH_SSL parameter. cmake/stack_direction.c: Helper to check stack direction. cmake/zlib.cmake: Add macros to handle WITH_ZLIB parameter cmd-line-utils/libedit/CMakeLists.txt: Build libedit with cmake. cmd-line-utils/libedit/Makefile.am: Add new file cmd-line-utils/readline/CMakeLists.txt: Build readline with CMake. cmd-line-utils/readline/Makefile.am: Add new file config.h.cmake: WL#5161 : Add config.h template for cmake configure.cmake: WL#5161 : Add platform tests ( for cmake) configure.in: Added new subdirectories dbug/CMakeLists.txt: WL#5161 extra/CMakeLists.txt: WL#5161 extra/yassl/CMakeLists.txt: WL#5161 extra/yassl/taocrypt/CMakeLists.txt: WL#5161 include/Makefile.am: Add new file include/keycache.h: remove configure-win.h and remove HUGE_PTR defined there. include/my_global.h: use my_config.h for Windows, not config-win.h anymore include/my_pthread.h: - Move thread_safe_increment from config-win.h to other headers (config-win.h is not used anymore) - Declare pthread_cancel on Windows (it is used in daemon_example) include/my_sys.h: Add malloc.h on Windows (we use -D_WIN32_LEAN_AND_MEAN now, and with this define malloc.h is not included automatically via windows.h) include/mysql/plugin.h: Handle pure-C plugins with Microsoft compiler. include/thr_alarm.h: remove rf_SetTimer that used to be defined in config-win.h Replace with UINT_PTR (we do not use config-win.h anymore and typedef was needed in this single place only) libmysql/CMakeLists.txt: Avoid pointless recompilation of source files in client library if possible. Merge static libs (dbug, mysys) to create static client library. libmysqld/CMakeLists.txt: Avoid pointless recompilation of source files when building embedded. Instead, merge dbug and mysys (and some other static libs) into embedded. libmysqld/examples/CMakeLists.txt: Embedded compilation on Unix libmysqld/lib_sql.cc: Do not define THD::clear_error() in lib_sql.cc for embedded. Instead, use the same inline definition from sql_class.h as in none-embedded case (fixes duplicate symbol errors on Windows and removes pointless #ifdef EMBEDDED) man/CMakeLists.txt: Install man files. man/Makefile.am: Add new file. mysql-test/CMakeLists.txt: Install mysql-test files mysql-test/Makefile.am: Add new files mysql-test/lib/My/ConfigFactory.pm: Allow testing with mtr in out-of-source builds. mysql-test/lib/My/Find.pm: the build configurations are now also available on Unix Xcode on Mac uses the Release, RelwithDebinfo and Debug subdirectories for executables. Earlier, build configurations were available only on Windows. mysql-test/lib/My/SafeProcess.pm: Allow testing with mtr in out-of-source builds. mysql-test/lib/My/SafeProcess/CMakeLists.txt: Port CMakeLists.txt to Unix mysql-test/lib/My/SafeProcess/safe_kill_win.cc: add stdlib.h (to be able to compile with -DWIN32_LEAN_AND_MEAN) mysql-test/lib/My/SafeProcess/safe_process_win.cc: Add stdlib.h (to be able to compile with -DWIN32_LEAN_AND_MEAN) define JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE if not defined (can happen using MinGW compiler that comes with old SDK) mysql-test/mtr.out-of-source: Allow testing with mtr in out-of-source builds. mysql-test/mysql-test-run.pl: Allow testing with mtr in out-of-source builds. Use common find_plugin macro for Windows and unix. mysql-test/t/fulltext_plugin.test: This test can now run on Windows as well. mysys/CMakeLists.txt: Port CMakeLists.txt to Unix mysys/my_create.c: config-win.h is dead => NO_OPEN_3 is never defined. mysys/my_getsystime.c: config-win.h is dead => define OFFSET_TO_EPOCH where it is used. mysys/my_winthread.c: Add win32 pthread_cancel - used by daemon_example mysys/mysys_priv.h: config-win.h is dead => include <sys/stat.h> where it is used fix prototype of my_win_(f)stat plugin/daemon_example/CMakeLists.txt: Compile daemon_example with CMake plugin/daemon_example/Makefile.am: Add new file plugin/fulltext/CMakeLists.txt: Compile full-text example with CMake plugin/fulltext/Makefile.am: Add new file. plugin/semisync/CMakeLists.txt: Fix semisync to use common macro for plugins. regex/CMakeLists.txt: Use absolute filenames, when adding regex library (we recompile files in embedded, and want to locate sources via GET_TARGET_PROPERTY( ... SOURCES ..)) regex/regex2.h: Remove pointless typedef (produces error with MinGW compiler) scripts/CMakeLists.txt: Add configure/install for scripts sql-bench/CMakeLists.txt: install sql-bench files sql-bench/Makefile.am: Add new file sql/CMakeLists.txt: Port CmakeLists.txt to Unix sql/nt_servc.cc: compile server with -DWIN32_LEAN_AND_MEAN sql/share/CMakeLists.txt: Install charsets sql/share/Makefile.am: Add new file sql/sql_builtin.cc.in: Handle pure-C plugins on Windows. sql/sql_class.h: Use the same clear_error macro in embedded and not embedded. Fixes pointless #ifdef and avoids duplicate symbols when linking on Windows. storage/Makefile.am: storage/mysql_storage_engine.cmake => cmake/plugin.cmake storage/archive/CMakeLists.txt: Add names for static and dynamic plugin libraries. Link archive with zlib storage/blackhole/CMakeLists.txt: Add names for static and dynamic storage engine libraries storage/csv/CMakeLists.txt: Add names for static and dynamic storage engine libraries storage/example/CMakeLists.txt: Add names for static and dynamic storage engine libraries storage/federated/CMakeLists.txt: Add names for static and dynamic storage engine libraries storage/heap/CMakeLists.txt: Add names for static and dynamic storage engine libraries storage/ibmdb2i/CMakeLists.txt: Better port for ibmdb2i plugin storage/innobase/CMakeLists.txt: Run system checks. Add names for static and dynamic storage engine libraries. storage/innobase/include/page0page.ic: Fix compile error on OpenSolaris. storage/myisam/CMakeLists.txt: Port CmakeLists.txt to Unix storage/myisammrg/CMakeLists.txt: Add names for static and dynamic storage engine libraries storage/mysql_storage_engine.cmake: storage/mysql_storage_engine.cmake => cmake/plugin.cmake support-files/CMakeLists.txt: Configure and install some files from support-files. support-files/Makefile.am: Add new file tests/CMakeLists.txt: In general case, mysqlclient library can be dependent on C++ runtime(if it includes yassl and is not compiled with gcc or MSVC) unittest/mysys/CMakeLists.txt: Add unit tests unittest/mysys/Makefile.am: Add new file unittest/mytap/CMakeLists.txt: Add library for unit tests unittest/mytap/Makefile.am: Add new file unittest/mytap/tap.c: fix function definitions to match declarations win/create_def_file.js: Fix link error with intel compiler (icl defines of special label for exception handler)
This commit is contained in:
parent
d476bbb0be
commit
bc76ad8f6b
110 changed files with 6220 additions and 985 deletions
243
BUILD-CMAKE
Normal file
243
BUILD-CMAKE
Normal file
|
@ -0,0 +1,243 @@
|
|||
How to Build MySQL server with CMake
|
||||
|
||||
WHAT YOU NEED
|
||||
---------------------------------------------------------------
|
||||
CMake version 2.6 or later installed on your system.
|
||||
|
||||
HOW TO INSTALL:
|
||||
|
||||
Linux distributions:
|
||||
shell> sudo apt-get install cmake
|
||||
|
||||
The above works on do Debian/Ubuntu based distributions.On others, command
|
||||
line needs to be modified to e.g "yum install" on Fedora or "zypper install"
|
||||
on OpenSUSE.
|
||||
|
||||
OpenSolaris:
|
||||
shell> pfexec pkgadd install SUNWCMake
|
||||
|
||||
Windows and Mac OSX:
|
||||
Download and install the latest distribution from
|
||||
http://www.cmake.org/cmake/resources/software.html.On Windows, download
|
||||
installer exe file and run it. On Mac, download the .dmg image and open it.
|
||||
|
||||
Other Unixes:
|
||||
Precompiled packages for other Unix flavors (HPUX, AIX) are available from
|
||||
http://www.cmake.org/cmake/resources/software.html
|
||||
|
||||
Alternatively, you can build from source, source package is also available on
|
||||
CMake download page.
|
||||
|
||||
|
||||
Compiler Tools
|
||||
--------------
|
||||
You will need a working compiler and make utility on your OS.
|
||||
On Windows, install Visual Studio (Express editions will work too).
|
||||
On Mac OSX, install Xcode tools.
|
||||
|
||||
|
||||
|
||||
BUILD
|
||||
---------------------------------------------------------------
|
||||
Ensure that compiler and cmake are in PATH.
|
||||
The following description assumes that current working directory
|
||||
is the source directory.
|
||||
|
||||
|
||||
- Generic build on Unix, using "Unix Makefiles" generator
|
||||
|
||||
shell>cmake .
|
||||
shell>make
|
||||
|
||||
Note: by default, cmake build is less verbose than automake build. Use
|
||||
"make VERBOSE=1" if you want to see add command lines for each compiled source.
|
||||
|
||||
- Windows, using "Visual Studio 9 2008" generator
|
||||
shell>cmake . -G "Visual Studio 9 2008"
|
||||
shell>devenv MySQL.sln /build /relwithdebinfo
|
||||
(alternatively, open MySQL.sln and build using the IDE)
|
||||
|
||||
- Windows, using "NMake Makefiles" generator
|
||||
shell>cmake . -G "NMake Makefiles"
|
||||
shell>nmake
|
||||
|
||||
- Mac OSX build with Xcode
|
||||
shell>cmake . -G Xcode
|
||||
shell>xcodebuild -configuration Relwithdebinfo
|
||||
(alternatively, open MySQL.xcodeproj and build using the IDE)
|
||||
|
||||
Command line build with CMake 2.8
|
||||
After creating project with cmake -G as above, issue
|
||||
cmake . --build
|
||||
this works with any CMake generator.
|
||||
|
||||
For Visual Studio and Xcode you might want to add an extra
|
||||
configuration parameter, to avoid building all configurations.
|
||||
|
||||
cmake . --build --config Relwithdebinfo
|
||||
|
||||
|
||||
Building "out-of-source"
|
||||
---------------------------------------------------------------
|
||||
Building out-of-source provides additional benefits. For example it allows to
|
||||
build both Release and Debug configurations using the single source tree.Or
|
||||
build the same source with different version of the same compiler or with
|
||||
different compilers. Also you will prevent polluting the source tree with the
|
||||
objects and binaries produced during the make.
|
||||
|
||||
Here is an example on how to do it (generic Unix), assuming the source tree is
|
||||
in directory named src and the current working directory is source root.
|
||||
|
||||
shell>mkdir ../build # build directory is called build
|
||||
shell>cd ../build
|
||||
shell>cmake ../src
|
||||
|
||||
Note: if a directory was used for in-source build, out-of-source will
|
||||
not work. To reenable out-of-source build, remove <source-root>/CMakeCache.txt
|
||||
file.
|
||||
|
||||
|
||||
CONFIGURATION PARAMETERS
|
||||
---------------------------------------------------------------
|
||||
The procedure above will build with default configuration.
|
||||
|
||||
Let's you want to change the configuration parameters and have archive
|
||||
storage engine compiled into the server instead of building it as pluggable
|
||||
module.
|
||||
|
||||
1)You can provide parameters on the command line, like
|
||||
|
||||
shell> cmake . -DWITH_ARCHIVE_STORAGE_ENGINE=1
|
||||
|
||||
This can be done during the initial configuration or any time later.
|
||||
|
||||
Note, that parameters are "sticky", that is they are remebered in the CMake
|
||||
cache (CMakeCache.txt file in the build directory)
|
||||
|
||||
2) Configuration using cmake-gui (Windows, OSX, or Linux with cmake-gui
|
||||
installed)
|
||||
|
||||
From the build directory, issue
|
||||
shell> cmake-gui .
|
||||
|
||||
- Check the WITH_INNOBASE_STORAGE_ENGINE checkbox
|
||||
- Click on "Configure" button
|
||||
- Click on "Generate" button
|
||||
- Close cmake-gui
|
||||
shell> make
|
||||
|
||||
3)Using ccmake (Unix)
|
||||
ccmake is curses-based GUI application that provides the same functionality
|
||||
as cmake-gui. It is less user-friendly compared to cmake-gui but works also
|
||||
on exotic Unixes like HPUX, AIX or Solaris.
|
||||
|
||||
Besides storage engines, probably the most important parameter from a
|
||||
developer's point of view is WITH_DEBUG (this allows to build server with
|
||||
dbug tracing library and with debug compile flags).
|
||||
|
||||
After changing the configuration, recompile using
|
||||
shell> make
|
||||
|
||||
|
||||
Listing configuration parameters
|
||||
---------------------------------------------------------------
|
||||
shell> cmake -L
|
||||
|
||||
Gives a brief overview of important configuration parameters (dump to stdout)
|
||||
|
||||
shell> cmake -LH
|
||||
|
||||
Does the same but also provides a short help text for each parameter.
|
||||
|
||||
shell> cmake -LAH
|
||||
|
||||
Dumps all config parameters (including advanced) to the stdout.
|
||||
|
||||
PACKAGING
|
||||
---------------------------------------------------------------
|
||||
-- Binary distribution --
|
||||
Packaging in form of tar.gz archives (or .zip on Windows) is also supported
|
||||
To create a tar.gz package,
|
||||
|
||||
1)If you're using "generic" Unix build with makefiles
|
||||
|
||||
shell> make package
|
||||
this will create a tar.gz file in the top level build directory.
|
||||
|
||||
2)On Windows, using "NMake Makefiles" generator
|
||||
|
||||
shell> nmake package
|
||||
|
||||
3)On Windows, using "Visual Studio" generator
|
||||
|
||||
shell> devenv mysql.sln /build relwithdebinfo /project package
|
||||
|
||||
Note On Windows, 7Zip or Winzip must be installed and 7z.exe rsp winzip.exe
|
||||
need to be in the PATH.
|
||||
|
||||
|
||||
Another way to build packages is calling cpack executable directly like
|
||||
shell> cpack -G TGZ --config CPackConfig.cmake
|
||||
(-G TGZ is for tar.gz generator, there is also -GZIP)
|
||||
|
||||
-- Source distribution --
|
||||
"make dist" target is provided.
|
||||
|
||||
ADDITIONAL MAKE TARGETS: "make install" AND "make test"
|
||||
----------------------------------------------------------------
|
||||
install target also provided for Makefile based generators. Installation
|
||||
directory can be controlled using configure-time parameter
|
||||
CMAKE_INSTALL_PREFIX (default is /usr/local. It is also possible to install to
|
||||
non-configured directory, using
|
||||
|
||||
shell> make install DESTDIR="/some/absolute/path"
|
||||
|
||||
"make test" runs unit tests (uses CTest for it)
|
||||
"make test-force" runs mysql-test-run.pl tests with --test-force parameter
|
||||
|
||||
FOR PROGRAMMERS: WRITING PLATFORM CHECKS
|
||||
--------------------------------------------------------------
|
||||
If you modify MySQL source and want to add a new platform check,please read
|
||||
http://www.vtk.org/Wiki/CMake_HowToDoPlatformChecks first. In MySQL, most of
|
||||
the platform tests are implemented in config.cmake and the template header file
|
||||
is config.h.cmake
|
||||
|
||||
Bigger chunks of functionality, for example non-trivial macros are implemented
|
||||
in files <src-root>/cmake subdirectory.
|
||||
|
||||
For people with autotools background, it is important to remember CMake does
|
||||
not provide autoheader functionality. That is, when you add a check
|
||||
|
||||
CHECK_FUNCTION_EXISTS(foo HAVE_FOO)
|
||||
to config.cmake, then you will also need to add
|
||||
#cmakedefine HAVE_FOO 1
|
||||
to config.h.cmake
|
||||
|
||||
Troubleshooting platform checks
|
||||
--------------------------------
|
||||
If you suspect that a platform check returned wrong result, examine
|
||||
<build-root>/CMakeFiles/CMakeError.log and
|
||||
<build-root>/CMakeFiles/CMakeOutput.log
|
||||
These files they contain compiler command line, and exact error messages.
|
||||
|
||||
Troubleshooting CMake code
|
||||
----------------------------------
|
||||
While there are advanced flags for cmake like -debug-trycompile and --trace,
|
||||
a simple and efficient way to debug to add
|
||||
MESSAGE("interesting variable=${some_invariable}")
|
||||
to the interesting places in CMakeLists.txt
|
||||
|
||||
|
||||
Tips:
|
||||
- When using Makefile generator it is easy to examine which compiler flags are
|
||||
used to build. For example, compiler flags for mysqld are in
|
||||
<build-root>/sql/CMakeFiles/mysqld.dir/flags.make and the linker command line
|
||||
is in <build-root>/sql/CMakeFiles/mysqld.dir/link.txt
|
||||
|
||||
- CMake caches results of platform checks in CMakeCache.txt. It is a nice
|
||||
feature because tests do not rerun when reconfiguring (e.g when a new test was
|
||||
added).The downside of caching is that when a platform test was wrong and was
|
||||
later corrected, the cached result is still used. If you encounter this
|
||||
situation, which should be a rare occation, you need either to remove the
|
||||
offending entry from CMakeCache.txt (if test was for HAVE_FOO, remove lines
|
||||
containing HAVE_FOO from CMakeCache.txt) or just remove the cache file.
|
|
@ -20,6 +20,7 @@
|
|||
EXTRA_DIST = FINISH.sh \
|
||||
SETUP.sh \
|
||||
autorun.sh \
|
||||
choose_configure.sh \
|
||||
build_mccge.sh \
|
||||
check-cpu \
|
||||
cleanup \
|
||||
|
|
|
@ -20,6 +20,7 @@ do
|
|||
done
|
||||
IFS="$save_ifs"
|
||||
|
||||
rm -rf configure
|
||||
aclocal || die "Can't execute aclocal"
|
||||
autoheader || die "Can't execute autoheader"
|
||||
# --force means overwrite ltmain.sh script if it already exists
|
||||
|
@ -29,3 +30,9 @@ $LIBTOOLIZE --automake --force --copy || die "Can't execute libtoolize"
|
|||
# and --force to overwrite them if they already exist
|
||||
automake --add-missing --force --copy || die "Can't execute automake"
|
||||
autoconf || die "Can't execute autoconf"
|
||||
# Do not use autotools generated configure directly. Instead, use a script
|
||||
# that will either call CMake or original configure shell script at build
|
||||
# time (CMake is preferred if installed).
|
||||
mv configure configure.am
|
||||
cp BUILD/choose_configure.sh configure
|
||||
chmod a+x configure
|
||||
|
|
14
BUILD/choose_configure.sh
Normal file
14
BUILD/choose_configure.sh
Normal file
|
@ -0,0 +1,14 @@
|
|||
#!/bin/sh
|
||||
# Choose whether to use autoconf created configure
|
||||
# of perl script that calls cmake.
|
||||
|
||||
# Ensure cmake and perl are there
|
||||
cmake -P cmake/check_minimal_version.cmake >/dev/null 2>&1 || HAVE_CMAKE=no
|
||||
perl --version >/dev/null 2>&1 || HAVE_CMAKE=no
|
||||
if test "$HAVE_CMAKE" = "no"
|
||||
then
|
||||
sh ./configure.am $@
|
||||
else
|
||||
perl ./cmake/configure.pl $@
|
||||
fi
|
||||
|
459
CMakeLists.txt
459
CMakeLists.txt
|
@ -1,4 +1,4 @@
|
|||
# Copyright (C) 2006 MySQL AB
|
||||
# Copyright (C) 2006-2008 MySQL AB, 2009 Sun Microsystems, Inc
|
||||
#
|
||||
# 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
|
||||
|
@ -13,308 +13,217 @@
|
|||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 2.6 FATAL_ERROR)
|
||||
IF(COMMAND cmake_policy)
|
||||
cmake_policy(SET CMP0005 NEW)
|
||||
ENDIF(COMMAND cmake_policy)
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 2.6.0 FATAL_ERROR)
|
||||
|
||||
PROJECT(MySql)
|
||||
# First, decide about build type (debug or release)
|
||||
# If custom compiler flags are set or cmake is invoked with -DCMAKE_BUILD_TYPE,
|
||||
# respect user wishes and do not (re)define CMAKE_BUILD_TYPE. If WITH_DEBUG{_FULL}
|
||||
# is given, set CMAKE_BUILD_TYPE = Debug. Otherwise, use Relwithdebinfo.
|
||||
|
||||
# This reads user configuration, generated by configure.js.
|
||||
INCLUDE(win/configure.data)
|
||||
|
||||
# Hardcode support for CSV storage engine
|
||||
SET(WITH_CSV_STORAGE_ENGINE TRUE)
|
||||
IF(CMAKE_BUILD_TYPE)
|
||||
SET(HAVE_CMAKE_BUILD_TYPE TRUE)
|
||||
ENDIF()
|
||||
SET(CUSTOM_C_FLAGS $ENV{CFLAGS})
|
||||
IF(NOT CUSTOM_C_FLAGS)
|
||||
SET(CUSTOM_C_FLAGS ${CMAKE_C_FLAGS})
|
||||
ENDIF()
|
||||
|
||||
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/include/mysql_version.h.in
|
||||
${CMAKE_SOURCE_DIR}/include/mysql_version.h @ONLY)
|
||||
OPTION(WITH_DEBUG "Use dbug" OFF)
|
||||
OPTION(WITH_DEBUG_FULL "Use dbug and safemalloc/safemutex. Slow" OFF)
|
||||
|
||||
# Set standard options
|
||||
ADD_DEFINITIONS(-DHAVE_YASSL)
|
||||
ADD_DEFINITIONS(-DCMAKE_CONFIGD)
|
||||
ADD_DEFINITIONS(-DDEFAULT_MYSQL_HOME="c:/Program Files/MySQL/MySQL Server ${MYSQL_BASE_VERSION}/")
|
||||
ADD_DEFINITIONS(-DDEFAULT_BASEDIR="c:/Program Files/MySQL/")
|
||||
ADD_DEFINITIONS(-DMYSQL_DATADIR="c:/Program Files/MySQL/MySQL Server ${MYSQL_BASE_VERSION}/data")
|
||||
ADD_DEFINITIONS(-DDEFAULT_CHARSET_HOME="c:/Program Files/MySQL/MySQL Server ${MYSQL_BASE_VERSION}/")
|
||||
ADD_DEFINITIONS(-DPACKAGE=mysql)
|
||||
ADD_DEFINITIONS(-DSHAREDIR="share")
|
||||
IF(NOT HAVE_CMAKE_BUILD_TYPE AND NOT CUSTOM_C_FLAGS)
|
||||
IF(WITH_DEBUG)
|
||||
SET(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Debug build" FORCE)
|
||||
ELSE()
|
||||
SET(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "RelWithDebInfo build" FORCE)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
IF(WITH_DEBUG_FULL)
|
||||
SET(WITH_DEBUG ON CACHE BOOL "Use DBUG")
|
||||
ENDIF()
|
||||
|
||||
# Set debug options
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DFORCE_INIT_OF_VARS")
|
||||
PROJECT(MySQL)
|
||||
|
||||
# Do not use SAFEMALLOC for Windows builds, as Debug CRT has the same functionality
|
||||
# Neither SAFE_MUTEX works on Windows and it has been explicitely undefined in
|
||||
# my_pthread.h
|
||||
IF(NOT WIN32)
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
ENDIF(NOT WIN32)
|
||||
|
||||
SET(localstatedir "C:\\mysql\\data")
|
||||
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-huge.cnf.sh
|
||||
${CMAKE_SOURCE_DIR}/support-files/my-huge.ini @ONLY)
|
||||
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-innodb-heavy-4G.cnf.sh
|
||||
${CMAKE_SOURCE_DIR}/support-files/my-innodb-heavy-4G.ini @ONLY)
|
||||
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-large.cnf.sh
|
||||
${CMAKE_SOURCE_DIR}/support-files/my-large.ini @ONLY)
|
||||
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-medium.cnf.sh
|
||||
${CMAKE_SOURCE_DIR}/support-files/my-medium.ini @ONLY)
|
||||
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-small.cnf.sh
|
||||
${CMAKE_SOURCE_DIR}/support-files/my-small.ini @ONLY)
|
||||
|
||||
IF(CYBOZU)
|
||||
ADD_DEFINITIONS(-DCYBOZU)
|
||||
ENDIF(CYBOZU)
|
||||
|
||||
IF(EXTRA_DEBUG)
|
||||
ADD_DEFINITIONS(-D EXTRA_DEBUG)
|
||||
ENDIF(EXTRA_DEBUG)
|
||||
|
||||
IF(ENABLED_DEBUG_SYNC)
|
||||
ADD_DEFINITIONS(-D ENABLED_DEBUG_SYNC)
|
||||
ENDIF(ENABLED_DEBUG_SYNC)
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DENABLED_DEBUG_SYNC")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DENABLED_DEBUG_SYNC")
|
||||
|
||||
# in some places we use DBUG_OFF
|
||||
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DDBUG_OFF")
|
||||
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DDBUG_OFF")
|
||||
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DDBUG_OFF")
|
||||
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -DDBUG_OFF")
|
||||
|
||||
#TODO: update the code and remove the disabled warnings
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4800 /wd4805")
|
||||
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4800 /wd4805")
|
||||
|
||||
# Disable warnings in Visual Studio 8 and above
|
||||
IF(MSVC AND NOT CMAKE_GENERATOR MATCHES "Visual Studio 7")
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /wd4996")
|
||||
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /wd4996")
|
||||
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /wd4996")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /wd4996")
|
||||
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /wd4996")
|
||||
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /wd4996")
|
||||
ENDIF(MSVC AND NOT CMAKE_GENERATOR MATCHES "Visual Studio 7")
|
||||
|
||||
IF(CMAKE_GENERATOR MATCHES "Visual Studio 7")
|
||||
# VS2003 has a bug that prevents linking mysqld with module definition file
|
||||
# (/DEF option for linker). Linker would incorrectly complain about multiply
|
||||
# defined symbols. Workaround is to disable dynamic plugins, so /DEF is not
|
||||
# used.
|
||||
MESSAGE("Warning: Building MySQL with Visual Studio 2003.NET is no more supported.")
|
||||
MESSAGE("Please use a newer version of Visual Studio.")
|
||||
SET(WITHOUT_DYNAMIC_PLUGINS TRUE)
|
||||
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 7")
|
||||
|
||||
# Settings for Visual Studio 7 and above.
|
||||
IF(MSVC)
|
||||
# replace /MDd with /MTd
|
||||
STRING(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE})
|
||||
STRING(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_RELWITHDEBINFO ${CMAKE_C_FLAGS_RELWITHDEBINFO})
|
||||
STRING(REPLACE "/MDd" "/MTd" CMAKE_C_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG})
|
||||
STRING(REPLACE "/MDd" "/MTd" CMAKE_C_FLAGS_DEBUG_INIT ${CMAKE_C_FLAGS_DEBUG_INIT})
|
||||
|
||||
STRING(REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE})
|
||||
STRING(REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_RELWITHDEBINFO ${CMAKE_CXX_FLAGS_RELWITHDEBINFO})
|
||||
STRING(REPLACE "/MDd" "/MTd" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG})
|
||||
STRING(REPLACE "/MDd" "/MTd" CMAKE_CXX_FLAGS_DEBUG_INIT ${CMAKE_CXX_FLAGS_DEBUG_INIT})
|
||||
|
||||
# generate map files, set stack size (see bug#20815)
|
||||
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MAP /MAPINFO:EXPORTS")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:1048576")
|
||||
|
||||
# remove support for Exception handling
|
||||
STRING(REPLACE "/GX" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
|
||||
STRING(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
|
||||
STRING(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS_INIT ${CMAKE_CXX_FLAGS_INIT})
|
||||
STRING(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS_DEBUG_INIT ${CMAKE_CXX_FLAGS_DEBUG_INIT})
|
||||
|
||||
# Mark 32 bit executables large address aware so they can
|
||||
# use > 2GB address space
|
||||
IF(CMAKE_SIZEOF_VOID_P MATCHES 4)
|
||||
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LARGEADDRESSAWARE")
|
||||
ENDIF(CMAKE_SIZEOF_VOID_P MATCHES 4)
|
||||
|
||||
# Disable automatic manifest generation.
|
||||
STRING(REPLACE "/MANIFEST" "/MANIFEST:NO" CMAKE_EXE_LINKER_FLAGS
|
||||
${CMAKE_EXE_LINKER_FLAGS})
|
||||
# Explicitly disable it since it is the default for newer versions of VS
|
||||
STRING(REGEX MATCH "MANIFEST:NO" tmp_manifest ${CMAKE_EXE_LINKER_FLAGS})
|
||||
IF(NOT tmp_manifest)
|
||||
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO")
|
||||
ENDIF(NOT tmp_manifest)
|
||||
ENDIF(MSVC)
|
||||
IF(CYGWIN)
|
||||
SET(WIN32 0)
|
||||
ENDIF()
|
||||
|
||||
IF(WIN32)
|
||||
ADD_DEFINITIONS("-D_WINDOWS -D__WIN__ -D_CRT_SECURE_NO_DEPRECATE")
|
||||
ADD_DEFINITIONS("-D_WIN32_WINNT=0x0501")
|
||||
ENDIF(WIN32)
|
||||
SET(IF_WIN 0)
|
||||
ELSE()
|
||||
SET(IF_WIN 1)
|
||||
ENDIF()
|
||||
|
||||
# default to x86 platform. We'll check for X64 in a bit
|
||||
SET (PLATFORM X86)
|
||||
# Add macros
|
||||
INCLUDE(cmake/character_sets.cmake)
|
||||
INCLUDE(cmake/zlib.cmake)
|
||||
INCLUDE(cmake/ssl.cmake)
|
||||
INCLUDE(cmake/readline.cmake)
|
||||
INCLUDE(cmake/mysql_version.cmake)
|
||||
INCLUDE(cmake/misc.cmake)
|
||||
INCLUDE(cmake/dtrace.cmake)
|
||||
INCLUDE(cmake/plugin.cmake)
|
||||
INCLUDE(cmake/install_macros.cmake)
|
||||
|
||||
# This definition is necessary to work around a bug with Intellisense described
|
||||
# here: http://tinyurl.com/2cb428. Syntax highlighting is important for proper
|
||||
# debugger functionality.
|
||||
IF(CMAKE_SIZEOF_VOID_P MATCHES 8)
|
||||
MESSAGE(STATUS "Detected 64-bit platform.")
|
||||
ADD_DEFINITIONS("-D_WIN64")
|
||||
SET (PLATFORM X64)
|
||||
ENDIF(CMAKE_SIZEOF_VOID_P MATCHES 8)
|
||||
# Handle options
|
||||
OPTION(ENABLED_PROFILING "Enable profiling" ON)
|
||||
OPTION(CYBOZU "" OFF)
|
||||
OPTION(BACKUP_TEST "" OFF)
|
||||
OPTION(WITHOUT_SERVER OFF)
|
||||
MARK_AS_ADVANCED(CYBOZU BACKUP_TEST WITHOUT_SERVER)
|
||||
|
||||
IF(EMBED_MANIFESTS)
|
||||
# Search for the tools (mt, makecat, signtool) necessary for embedding
|
||||
# manifests and signing executables with the MySQL AB authenticode cert.
|
||||
#
|
||||
# CMake will first search it's defaults (CMAKE_FRAMEWORK_PATH,
|
||||
# CMAKE_APPBUNDLE_PATH, CMAKE_PROGRAM_PATH and the system PATH) followed
|
||||
# by the listed paths which are the current possible defaults and should be
|
||||
# updated when necessary.
|
||||
#
|
||||
# The custom manifests are designed to be compatible with all mt versions.
|
||||
# The MySQL AB Authenticode certificate is available only internally.
|
||||
# Others should store a single signing certificate in a local cryptographic
|
||||
# service provider and alter the signtool command as necessary.
|
||||
FIND_PROGRAM(HAVE_MANIFEST_TOOL NAMES mt
|
||||
PATHS
|
||||
"$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/VC/bin"
|
||||
"$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/Common7/Tools/Bin"
|
||||
"$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/SDK/v2.0/Bin")
|
||||
FIND_PROGRAM(HAVE_CATALOG_TOOL NAMES makecat
|
||||
PATHS
|
||||
"$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/Common7/Tools/Bin")
|
||||
FIND_PROGRAM(HAVE_SIGN_TOOL NAMES signtool
|
||||
PATHS
|
||||
"$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/Common7/Tools/Bin"
|
||||
"$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/SDK/v2.0/Bin")
|
||||
|
||||
OPTION(ENABLE_DEBUG_SYNC "Enable debug sync (debug builds only)" ON)
|
||||
IF(ENABLE_DEBUG_SYNC)
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DENABLED_DEBUG_SYNC")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DENABLED_DEBUG_SYNC")
|
||||
ENDIF()
|
||||
|
||||
OPTION(WITH_ERROR_INJECT
|
||||
"Enable error injection in MySQL Server (debug builds only)" OFF)
|
||||
IF(WITH_ERROR_INJECT)
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DERROR_INJECT_SUPPORT")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DERROR_INJECT_SUPPORT")
|
||||
ENDIF()
|
||||
|
||||
IF(HAVE_MANIFEST_TOOL)
|
||||
MESSAGE(STATUS "Found Mainfest Tool.")
|
||||
ELSE(HAVE_MANIFEST_TOOL)
|
||||
MESSAGE(FATAL_ERROR "Manifest tool, mt.exe, can't be found.")
|
||||
ENDIF(HAVE_MANIFEST_TOOL)
|
||||
IF(HAVE_CATALOG_TOOL)
|
||||
MESSAGE(STATUS "Found Catalog Tool.")
|
||||
ELSE(HAVE_CATALOG_TOOL)
|
||||
MESSAGE(FATAL_ERROR "Catalog tool, makecat.exe, can't be found.")
|
||||
ENDIF(HAVE_CATALOG_TOOL)
|
||||
IF(HAVE_SIGN_TOOL)
|
||||
MESSAGE(STATUS "Found Sign Tool. Embedding custom manifests and signing executables.")
|
||||
ELSE(HAVE_SIGN_TOOL)
|
||||
MESSAGE(FATAL_ERROR "Sign tool, signtool.exe, can't be found.")
|
||||
ENDIF(HAVE_SIGN_TOOL)
|
||||
|
||||
# Set the processor architecture.
|
||||
IF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
|
||||
SET(PROCESSOR_ARCH "amd64")
|
||||
ELSE(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
|
||||
SET(PROCESSOR_ARCH "X86")
|
||||
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
|
||||
ENDIF(EMBED_MANIFESTS)
|
||||
|
||||
# Figure out what engines to build and how (statically or dynamically),
|
||||
# add preprocessor defines for storage engines.
|
||||
IF(WITHOUT_DYNAMIC_PLUGINS)
|
||||
MESSAGE("Dynamic plugins are disabled.")
|
||||
ENDIF(WITHOUT_DYNAMIC_PLUGINS)
|
||||
OPTION(ENABLE_LOCAL_INFILE
|
||||
"If we should should enable LOAD DATA LOCAL by default" ${IF_WIN})
|
||||
MARK_AS_ADVANCED(ENABLE_LOCAL_INFILE)
|
||||
|
||||
FILE(GLOB STORAGE_SUBDIRS storage/*)
|
||||
FOREACH(SUBDIR ${STORAGE_SUBDIRS})
|
||||
FILE(RELATIVE_PATH DIRNAME ${PROJECT_SOURCE_DIR}/storage ${SUBDIR})
|
||||
IF (EXISTS ${SUBDIR}/CMakeLists.txt)
|
||||
# Check MYSQL_STORAGE_ENGINE macro is present
|
||||
FILE(STRINGS ${SUBDIR}/CMakeLists.txt HAVE_STORAGE_ENGINE REGEX MYSQL_STORAGE_ENGINE)
|
||||
IF(HAVE_STORAGE_ENGINE)
|
||||
# Extract name of engine from HAVE_STORAGE_ENGINE
|
||||
STRING(REGEX REPLACE ".*MYSQL_STORAGE_ENGINE\\((.*\)\\).*"
|
||||
"\\1" ENGINE_NAME ${HAVE_STORAGE_ENGINE})
|
||||
STRING(TOUPPER ${ENGINE_NAME} ENGINE)
|
||||
STRING(TOLOWER ${ENGINE_NAME} ENGINE_LOWER)
|
||||
|
||||
SET(ENGINE_BUILD_TYPE "DYNAMIC")
|
||||
# Read plug.in to find out if a plugin is mandatory and whether it supports
|
||||
# build as shared library (dynamic).
|
||||
IF(EXISTS ${SUBDIR}/plug.in)
|
||||
FILE(READ ${SUBDIR}/plug.in PLUGIN_FILE_CONTENT)
|
||||
STRING (REGEX MATCH "MYSQL_PLUGIN_DYNAMIC" MYSQL_PLUGIN_DYNAMIC ${PLUGIN_FILE_CONTENT})
|
||||
STRING (REGEX MATCH "MYSQL_PLUGIN_MANDATORY" MYSQL_PLUGIN_MANDATORY ${PLUGIN_FILE_CONTENT})
|
||||
STRING (REGEX MATCH "MYSQL_PLUGIN_STATIC" MYSQL_PLUGIN_STATIC ${PLUGIN_FILE_CONTENT})
|
||||
# Set DBUG_OFF for non-debug project types.
|
||||
FOREACH(BUILD_TYPE RELEASE RELWITHDEBINFO MINSIZEREL)
|
||||
FOREACH(LANG C CXX)
|
||||
SET(CMAKE_${LANG}_FLAGS_${BUILD_TYPE}
|
||||
"${CMAKE_${LANG}_FLAGS_${BUILD_TYPE}} -DDBUG_OFF")
|
||||
ENDFOREACH()
|
||||
ENDFOREACH()
|
||||
|
||||
IF(MYSQL_PLUGIN_MANDATORY)
|
||||
SET(WITH_${ENGINE}_STORAGE_ENGINE TRUE)
|
||||
ENDIF(MYSQL_PLUGIN_MANDATORY)
|
||||
IF(NOT CMAKE_BUILD_TYPE
|
||||
AND NOT CMAKE_GENERATOR MATCHES "Visual Studio"
|
||||
AND NOT CMAKE_GENERATOR MATCHES "Xcode")
|
||||
# This is the case of no CMAKE_BUILD_TYPE choosen, typical for VS and Xcode
|
||||
# or if custom C flags are set. In VS and Xcode for non-Debug configurations
|
||||
# DBUG_OFF is already correctly set. Use DBUG_OFF for Makefile based projects
|
||||
# without build type too, unless user specifically requests DBUG.
|
||||
IF(NOT CMAKE_C_FLAGS MATCHES "-DDBUG_ON")
|
||||
ADD_DEFINITIONS(-DDBUG_OFF)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF (WITH_${ENGINE}_STORAGE_ENGINE AND MYSQL_PLUGIN_STATIC)
|
||||
SET(ENGINE_BUILD_TYPE "STATIC")
|
||||
ELSEIF(NOT WITHOUT_${ENGINE}_STORAGE_ENGINE AND MYSQL_PLUGIN_DYNAMIC AND NOT WITHOUT_DYNAMIC_PLUGINS)
|
||||
SET(ENGINE_BUILD_TYPE "DYNAMIC")
|
||||
ELSE(WITH_${ENGINE}_STORAGE_ENGINE AND MYSQL_PLUGIN_STATIC)
|
||||
SET(ENGINE_BUILD_TYPE "NONE")
|
||||
ENDIF(WITH_${ENGINE}_STORAGE_ENGINE AND MYSQL_PLUGIN_STATIC)
|
||||
IF (ENGINE_BUILD_TYPE STREQUAL "STATIC")
|
||||
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_${ENGINE_LOWER}_plugin")
|
||||
SET (MYSQLD_STATIC_ENGINE_LIBS ${MYSQLD_STATIC_ENGINE_LIBS} ${ENGINE_LOWER})
|
||||
SET (STORAGE_ENGINE_DEFS "${STORAGE_ENGINE_DEFS} -DWITH_${ENGINE}_STORAGE_ENGINE")
|
||||
SET (WITH_${ENGINE}_STORAGE_ENGINE TRUE)
|
||||
SET (${ENGINE}_DIR ${DIRNAME})
|
||||
ENDIF (ENGINE_BUILD_TYPE STREQUAL "STATIC")
|
||||
ENDIF(EXISTS ${SUBDIR}/plug.in)
|
||||
# Add safemalloc and safemutex for debug condifurations, except on Windows
|
||||
# (C runtime library provides safemalloc functionality and safemutex has never
|
||||
# worked there)
|
||||
IF(WITH_DEBUG OR WITH_DEBUG_FULL AND NOT WIN32)
|
||||
FOREACH(LANG C CXX)
|
||||
IF(WITH_DEBUG_FULL)
|
||||
SET(CMAKE_${LANG}_FLAGS_DEBUG "-DSAFEMALLOC -DSAFE_MUTEX")
|
||||
ELSE()
|
||||
SET(CMAKE_${LANG}_FLAGS_DEBUG "-DSAFE_MUTEX")
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
ENDIF()
|
||||
|
||||
IF(NOT ENGINE_BUILD_TYPE STREQUAL "NONE")
|
||||
LIST(APPEND ${ENGINE_BUILD_TYPE}_ENGINE_DIRECTORIES ${SUBDIR})
|
||||
ENDIF(NOT ENGINE_BUILD_TYPE STREQUAL "NONE")
|
||||
|
||||
ENDIF(HAVE_STORAGE_ENGINE)
|
||||
ENDIF(EXISTS ${SUBDIR}/CMakeLists.txt)
|
||||
ENDFOREACH(SUBDIR ${STORAGE_SUBDIRS})
|
||||
|
||||
# Special handling for partition(not really pluggable)
|
||||
IF(NOT WITHOUT_PARTITION_STORAGE_ENGINE)
|
||||
SET (STORAGE_ENGINE_DEFS "${STORAGE_ENGINE_DEFS} -DWITH_PARTITION_STORAGE_ENGINE")
|
||||
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_partition_plugin")
|
||||
ENDIF(NOT WITHOUT_PARTITION_STORAGE_ENGINE)
|
||||
|
||||
ADD_DEFINITIONS(${STORAGE_ENGINE_DEFS})
|
||||
|
||||
# Now write out our mysql_plugin_defs struct
|
||||
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/sql/sql_builtin.cc.in
|
||||
${CMAKE_SOURCE_DIR}/sql/sql_builtin.cc @ONLY)
|
||||
# Set commonly used variables
|
||||
IF(WIN32)
|
||||
SET(DEFAULT_MYSQL_HOME "C:/Program Files/MySQL/MySQL Server ${MYSQL_BASE_VERSION}/" )
|
||||
SET(SHAREDIR share)
|
||||
ELSE()
|
||||
SET(DEFAULT_MYSQL_HOME ${CMAKE_INSTALL_PREFIX}/mysql/)
|
||||
SET(SHAREDIR ${DEFAULT_MYSQL_HOME}share)
|
||||
ENDIF()
|
||||
|
||||
# Add subdirectories for storage engines
|
||||
SET (ENGINE_BUILD_TYPE "STATIC")
|
||||
FOREACH(DIR ${STATIC_ENGINE_DIRECTORIES})
|
||||
ADD_SUBDIRECTORY(${DIR})
|
||||
ENDFOREACH(DIR ${STATIC_ENGINE_DIRECTORIES})
|
||||
SET(DEFAULT_BASEDIR "${DEFAULT_MYSQL_HOME}")
|
||||
SET(MYSQL_DATADIR "${DEFAULT_MYSQL_HOME}data")
|
||||
SET(DEFAULT_CHARSET_HOME "${DEFAULT_MYSQL_HOME}")
|
||||
|
||||
SET (ENGINE_BUILD_TYPE "DYNAMIC")
|
||||
FOREACH(DIR ${DYNAMIC_ENGINE_DIRECTORIES})
|
||||
ADD_SUBDIRECTORY(${DIR})
|
||||
ENDFOREACH(DIR ${DYNAMIC_ENGINE_DIRECTORIES})
|
||||
|
||||
# Add subdirectories for semisync plugin
|
||||
IF(NOT WITHOUT_DYNAMIC_PLUGINS)
|
||||
ADD_SUBDIRECTORY(plugin/semisync)
|
||||
ENDIF(NOT WITHOUT_DYNAMIC_PLUGINS)
|
||||
# Optionally read user configuration, generated by configure.js.
|
||||
# This is left for backward compatibility reasons only.
|
||||
IF(WIN32)
|
||||
INCLUDE(win/configure.data OPTIONAL)
|
||||
ENDIF()
|
||||
|
||||
# FIXME "debug" only needed if build type is "Debug", but
|
||||
# CMAKE_BUILD_TYPE is not set during configure time.
|
||||
ADD_SUBDIRECTORY(vio)
|
||||
# Run platform tests
|
||||
INCLUDE(configure.cmake)
|
||||
|
||||
# Common defines and includes
|
||||
ADD_DEFINITIONS(-DHAVE_CONFIG_H)
|
||||
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/include)
|
||||
|
||||
# Add bundled or system zlib.
|
||||
MYSQL_CHECK_ZLIB_WITH_COMPRESS()
|
||||
# Optionally add bundled yassl/taocrypt or system openssl.
|
||||
MYSQL_CHECK_SSL()
|
||||
# Add readline or libedit.
|
||||
MYSQL_CHECK_READLINE()
|
||||
|
||||
IF(NOT WITHOUT_SERVER)
|
||||
# Add storage engines and plugins.
|
||||
CONFIGURE_PLUGINS()
|
||||
ENDIF()
|
||||
|
||||
ADD_SUBDIRECTORY(include)
|
||||
ADD_SUBDIRECTORY(dbug)
|
||||
ADD_SUBDIRECTORY(strings)
|
||||
ADD_SUBDIRECTORY(vio)
|
||||
ADD_SUBDIRECTORY(regex)
|
||||
ADD_SUBDIRECTORY(mysys)
|
||||
ADD_SUBDIRECTORY(scripts)
|
||||
ADD_SUBDIRECTORY(zlib)
|
||||
ADD_SUBDIRECTORY(extra/yassl)
|
||||
ADD_SUBDIRECTORY(extra/yassl/taocrypt)
|
||||
ADD_SUBDIRECTORY(extra)
|
||||
ADD_SUBDIRECTORY(client)
|
||||
ADD_SUBDIRECTORY(sql)
|
||||
ADD_SUBDIRECTORY(libmysql)
|
||||
ADD_SUBDIRECTORY(libservices)
|
||||
ADD_SUBDIRECTORY(tests)
|
||||
IF(WITH_EMBEDDED_SERVER)
|
||||
ADD_SUBDIRECTORY(libmysqld)
|
||||
ADD_SUBDIRECTORY(libmysqld/examples)
|
||||
ENDIF(WITH_EMBEDDED_SERVER)
|
||||
ADD_SUBDIRECTORY(mysql-test/lib/My/SafeProcess)
|
||||
|
||||
OPTION (WITH_UNIT_TESTS "Compile MySQL with unit tests" ON)
|
||||
IF(WITH_UNIT_TESTS)
|
||||
ENABLE_TESTING()
|
||||
ENDIF()
|
||||
IF(WITH_UNIT_TESTS)
|
||||
ADD_SUBDIRECTORY(unittest/mytap)
|
||||
ADD_SUBDIRECTORY(unittest/mysys)
|
||||
ENDIF()
|
||||
|
||||
IF(NOT WITHOUT_SERVER)
|
||||
ADD_SUBDIRECTORY(tests)
|
||||
ADD_SUBDIRECTORY(extra)
|
||||
ADD_SUBDIRECTORY(client)
|
||||
ADD_SUBDIRECTORY(sql)
|
||||
ADD_SUBDIRECTORY(sql/share)
|
||||
ADD_SUBDIRECTORY(libservices)
|
||||
OPTION (WITH_EMBEDDED_SERVER "Compile MySQL with embedded server" OFF)
|
||||
IF(WITH_EMBEDDED_SERVER)
|
||||
ADD_SUBDIRECTORY(libmysqld)
|
||||
ADD_SUBDIRECTORY(libmysqld/examples)
|
||||
ENDIF(WITH_EMBEDDED_SERVER)
|
||||
|
||||
ADD_SUBDIRECTORY(mysql-test)
|
||||
ADD_SUBDIRECTORY(mysql-test/lib/My/SafeProcess)
|
||||
ADD_SUBDIRECTORY(support-files)
|
||||
ADD_SUBDIRECTORY(scripts)
|
||||
ADD_SUBDIRECTORY(sql-bench)
|
||||
IF(UNIX)
|
||||
ADD_SUBDIRECTORY(man)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
INCLUDE(cmake/abi_check.cmake)
|
||||
|
||||
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_BINARY_DIR}/include/mysql_version.h )
|
||||
|
||||
|
||||
# Packaging
|
||||
IF(WIN32)
|
||||
SET(CPACK_GENERATOR "ZIP")
|
||||
ELSE()
|
||||
SET(CPACK_GENERATOR "TGZ")
|
||||
ENDIF()
|
||||
INCLUDE(CPack)
|
||||
INSTALL(FILES COPYING EXCEPTIONS-CLIENT README DESTINATION .)
|
||||
IF(UNIX)
|
||||
INSTALL(FILES Docs/INSTALL-BINARY DESTINATION .)
|
||||
ENDIF()
|
||||
|
|
|
@ -19,7 +19,8 @@ AUTOMAKE_OPTIONS = foreign
|
|||
|
||||
# These are built from source in the Docs directory
|
||||
EXTRA_DIST = INSTALL-SOURCE INSTALL-WIN-SOURCE \
|
||||
README COPYING EXCEPTIONS-CLIENT CMakeLists.txt
|
||||
README COPYING EXCEPTIONS-CLIENT \
|
||||
CMakeLists.txt configure.cmake config.h.cmake BUILD-CMAKE
|
||||
|
||||
SUBDIRS = . include @docs_dirs@ @zlib_dir@ \
|
||||
@readline_topdir@ sql-common scripts \
|
||||
|
@ -28,8 +29,8 @@ SUBDIRS = . include @docs_dirs@ @zlib_dir@ \
|
|||
@sql_server@ @man_dirs@ tests \
|
||||
netware @libmysqld_dirs@ \
|
||||
mysql-test support-files sql-bench \
|
||||
win
|
||||
|
||||
win \
|
||||
cmake
|
||||
DIST_SUBDIRS = . include Docs zlib \
|
||||
cmd-line-utils sql-common scripts \
|
||||
pstack libservices \
|
||||
|
@ -38,6 +39,7 @@ DIST_SUBDIRS = . include Docs zlib \
|
|||
netware libmysqld \
|
||||
mysql-test support-files sql-bench \
|
||||
win \
|
||||
cmake \
|
||||
BUILD
|
||||
DISTCLEANFILES = ac_available_languages_fragment
|
||||
|
||||
|
@ -58,6 +60,7 @@ dist-hook:
|
|||
--datadir=$(distdir)/win/data \
|
||||
--srcdir=$(top_srcdir)
|
||||
storage/myisam/myisamchk --silent --fast $(distdir)/win/data/mysql/*.MYI
|
||||
test ! -f configure.am || $(INSTALL_DATA) configure.am $(distdir)
|
||||
|
||||
all-local: @ABI_CHECK@
|
||||
|
||||
|
|
|
@ -12,46 +12,49 @@
|
|||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/win/mysql_manifest.cmake")
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
|
||||
${CMAKE_SOURCE_DIR}/zlib
|
||||
${CMAKE_SOURCE_DIR}/extra/yassl/include
|
||||
${CMAKE_SOURCE_DIR}/libmysql
|
||||
${CMAKE_SOURCE_DIR}/regex
|
||||
${CMAKE_SOURCE_DIR}/sql
|
||||
${CMAKE_SOURCE_DIR}/strings)
|
||||
INCLUDE_DIRECTORIES(
|
||||
${CMAKE_SOURCE_DIR}/include
|
||||
${ZLIB_INCLUDE_DIR}
|
||||
${SSL_INCLUDE_DIRS}
|
||||
${CMAKE_SOURCE_DIR}/libmysql
|
||||
${CMAKE_SOURCE_DIR}/regex
|
||||
${CMAKE_SOURCE_DIR}/sql
|
||||
${CMAKE_SOURCE_DIR}/strings
|
||||
${READLINE_INCLUDE_DIR}
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
)
|
||||
|
||||
ADD_EXECUTABLE(mysql completion_hash.cc mysql.cc readline.cc sql_string.cc ../mysys/my_conio.c)
|
||||
ADD_DEFINITIONS(${READLINE_DEFINES})
|
||||
ADD_DEFINITIONS(${SSL_DEFINES})
|
||||
ADD_EXECUTABLE(mysql completion_hash.cc mysql.cc readline.cc sql_string.cc)
|
||||
TARGET_LINK_LIBRARIES(mysql mysqlclient)
|
||||
IF(UNIX)
|
||||
TARGET_LINK_LIBRARIES(mysql ${READLINE_LIBRARY})
|
||||
ENDIF(UNIX)
|
||||
|
||||
ADD_EXECUTABLE(mysqltest mysqltest.cc)
|
||||
SET_SOURCE_FILES_PROPERTIES(mysqltest.cc PROPERTIES COMPILE_FLAGS "-DTHREADS")
|
||||
TARGET_LINK_LIBRARIES(mysqltest mysqlclient mysys regex dbug)
|
||||
TARGET_LINK_LIBRARIES(mysqltest mysqlclient regex)
|
||||
|
||||
|
||||
ADD_EXECUTABLE(mysqlcheck mysqlcheck.c)
|
||||
TARGET_LINK_LIBRARIES(mysqlcheck mysqlclient)
|
||||
|
||||
ADD_EXECUTABLE(mysqldump mysqldump.c ../sql-common/my_user.c ../mysys/mf_getdate.c)
|
||||
ADD_EXECUTABLE(mysqldump mysqldump.c ../sql-common/my_user.c)
|
||||
TARGET_LINK_LIBRARIES(mysqldump mysqlclient)
|
||||
|
||||
ADD_EXECUTABLE(mysqlimport mysqlimport.c)
|
||||
TARGET_LINK_LIBRARIES(mysqlimport mysqlclient)
|
||||
|
||||
ADD_EXECUTABLE(mysql_upgrade mysql_upgrade.c ../mysys/my_getpagesize.c)
|
||||
ADD_EXECUTABLE(mysql_upgrade mysql_upgrade.c)
|
||||
TARGET_LINK_LIBRARIES(mysql_upgrade mysqlclient)
|
||||
ADD_DEPENDENCIES(mysql_upgrade GenFixPrivs)
|
||||
|
||||
ADD_EXECUTABLE(mysqlshow mysqlshow.c)
|
||||
TARGET_LINK_LIBRARIES(mysqlshow mysqlclient)
|
||||
|
||||
ADD_EXECUTABLE(mysqlbinlog mysqlbinlog.cc
|
||||
../mysys/mf_tempdir.c
|
||||
../mysys/my_new.cc
|
||||
../mysys/my_bit.c
|
||||
../mysys/my_bitmap.c
|
||||
../mysys/my_vle.c
|
||||
../mysys/base64.c)
|
||||
ADD_EXECUTABLE(mysqlbinlog mysqlbinlog.cc)
|
||||
TARGET_LINK_LIBRARIES(mysqlbinlog mysqlclient)
|
||||
|
||||
ADD_EXECUTABLE(mysqladmin mysqladmin.cc)
|
||||
|
@ -59,20 +62,25 @@ TARGET_LINK_LIBRARIES(mysqladmin mysqlclient)
|
|||
|
||||
ADD_EXECUTABLE(mysqlslap mysqlslap.c)
|
||||
SET_SOURCE_FILES_PROPERTIES(mysqlslap.c PROPERTIES COMPILE_FLAGS "-DTHREADS")
|
||||
TARGET_LINK_LIBRARIES(mysqlslap mysqlclient mysys zlib dbug)
|
||||
TARGET_LINK_LIBRARIES(mysqlslap mysqlclient)
|
||||
|
||||
ADD_EXECUTABLE(echo echo.c)
|
||||
|
||||
IF(EMBED_MANIFESTS)
|
||||
MYSQL_EMBED_MANIFEST("mysql" "asInvoker")
|
||||
MYSQL_EMBED_MANIFEST("mysqltest" "asInvoker")
|
||||
MYSQL_EMBED_MANIFEST("mysqlcheck" "asInvoker")
|
||||
MYSQL_EMBED_MANIFEST("mysqldump" "asInvoker")
|
||||
MYSQL_EMBED_MANIFEST("mysqlimport" "asInvoker")
|
||||
MYSQL_EMBED_MANIFEST("mysql_upgrade" "asInvoker")
|
||||
MYSQL_EMBED_MANIFEST("mysqlshow" "asInvoker")
|
||||
MYSQL_EMBED_MANIFEST("mysqlbinlog" "asInvoker")
|
||||
MYSQL_EMBED_MANIFEST("mysqladmin" "asInvoker")
|
||||
MYSQL_EMBED_MANIFEST("echo" "asInvoker")
|
||||
ENDIF(EMBED_MANIFESTS)
|
||||
SET_TARGET_PROPERTIES (mysqlcheck mysqldump mysqlimport mysql_upgrade mysqlshow mysqlslap
|
||||
PROPERTIES HAS_CXX TRUE)
|
||||
|
||||
SET(INSTALL_EXES
|
||||
mysqlcheck
|
||||
mysqldump
|
||||
mysqlimport
|
||||
mysql_upgrade
|
||||
mysqlshow
|
||||
mysqlslap
|
||||
mysql
|
||||
mysqladmin
|
||||
mysqlbinlog
|
||||
mysqltest)
|
||||
|
||||
INSTALL(TARGETS ${INSTALL_EXES} DESTINATION bin)
|
||||
INSTALL_DEBUG_SYMBOLS("${INSTALL_EXES}")
|
||||
|
||||
|
|
21
cmake/Makefile.am
Normal file
21
cmake/Makefile.am
Normal file
|
@ -0,0 +1,21 @@
|
|||
EXTRA_DIST = \
|
||||
cat.cmake \
|
||||
check_minimal_version.cmake \
|
||||
create_initial_db.cmake.in \
|
||||
make_dist.cmake.in \
|
||||
dtrace.cmake \
|
||||
abi_check.cmake \
|
||||
bison.cmake \
|
||||
configure.pl \
|
||||
character_sets.cmake \
|
||||
misc.cmake \
|
||||
readline.cmake \
|
||||
mysql_version.cmake \
|
||||
install_macros.cmake \
|
||||
ssl.cmake \
|
||||
plugin.cmake \
|
||||
zlib.cmake \
|
||||
stack_direction.c \
|
||||
do_abi_check.cmake \
|
||||
merge_archives_unix.cmake.in \
|
||||
dtrace_prelink.cmake
|
60
cmake/abi_check.cmake
Normal file
60
cmake/abi_check.cmake
Normal file
|
@ -0,0 +1,60 @@
|
|||
# Copyright (C) 2009 Sun Microsystems, Inc
|
||||
#
|
||||
# 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
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
#
|
||||
# Headers which need to be checked for abi/api compatibility.
|
||||
# API_PREPROCESSOR_HEADER will be used until mysql_priv.h stablizes
|
||||
# after which TEST_PREPROCESSOR_HEADER will be used.
|
||||
#
|
||||
# We use gcc specific preprocessing command and sed/diff, so it will
|
||||
# only be run on Unix and only if gcc is used.
|
||||
IF(CMAKE_COMPILER_IS_GNUCC AND UNIX)
|
||||
IF(CMAKE_C_COMPILER MATCHES "ccache$")
|
||||
SET(COMPILER ${CMAKE_C_COMPILER_ARG1})
|
||||
STRING(REGEX REPLACE "^ " "" COMPILER ${COMPILER})
|
||||
ELSE()
|
||||
SET(COMPILER ${CMAKE_C_COMPILER})
|
||||
ENDIF()
|
||||
SET(API_PREPROCESSOR_HEADER
|
||||
${CMAKE_SOURCE_DIR}/include/mysql/plugin.h
|
||||
${CMAKE_SOURCE_DIR}/include/mysql.h)
|
||||
|
||||
SET(TEST_PREPROCESSOR_HEADER
|
||||
${CMAKE_SOURCE_DIR}/include/mysql/plugin.h
|
||||
${CMAKE_SOURCE_DIR}/sql/mysql_priv.h
|
||||
${CMAKE_SOURCE_DIR}/include/mysql.h)
|
||||
|
||||
|
||||
ADD_CUSTOM_TARGET(abi_check ALL
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
-DCOMPILER=${COMPILER}
|
||||
-DSOURCE_DIR=${CMAKE_SOURCE_DIR}
|
||||
-DBINARY_DIR=${CMAKE_BINARY_DIR}
|
||||
"-DABI_HEADERS=${API_PREPROCESSOR_HEADER}"
|
||||
-P ${CMAKE_SOURCE_DIR}/cmake/do_abi_check.cmake
|
||||
VERBATIM
|
||||
)
|
||||
|
||||
ADD_CUSTOM_TARGET(abi_check_all
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
-DCMAKE_C_COMPILER=${COMPILER}
|
||||
-DCMAKE_SOURCE_DIR=${CMAKE_SOURCE_DIR}
|
||||
-DCMAKE_BINARY_DIR=${CMAKE_BINARY_DIR}
|
||||
"-DABI_HEADERS=${TEST_PREPROCESSOR_HEADER}"
|
||||
-P ${CMAKE_SOURCE_DIR}/cmake/scripts/do_abi_check.cmake
|
||||
VERBATIM
|
||||
)
|
||||
ENDIF()
|
||||
|
64
cmake/bison.cmake
Normal file
64
cmake/bison.cmake
Normal file
|
@ -0,0 +1,64 @@
|
|||
# Copyright (C) 2009 Sun Microsystems, Inc
|
||||
#
|
||||
# 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
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
FIND_PROGRAM(BISON_EXECUTABLE bison DOC "path to the bison executable")
|
||||
MARK_AS_ADVANCED(BISON_EXECUTABLE "")
|
||||
IF(NOT BISON_EXECUTABLE)
|
||||
MESSAGE("Warning: Bison executable not found in PATH")
|
||||
ELSEIF(BISON_EXECUTABLE AND NOT BISON_USABLE)
|
||||
# Check version as well
|
||||
EXEC_PROGRAM(${BISON_EXECUTABLE} ARGS --version OUTPUT_VARIABLE BISON_VERSION_STR)
|
||||
# Get first line in case it's multiline
|
||||
STRING(REGEX REPLACE "([^\n]+).*" "\\1" FIRST_LINE "${BISON_VERSION_STR}")
|
||||
# get version information
|
||||
STRING(REGEX REPLACE ".* ([0-9]+)\\.([0-9]+)" "\\1" BISON_VERSION_MAJOR "${FIRST_LINE}")
|
||||
STRING(REGEX REPLACE ".* ([0-9]+)\\.([0-9]+)" "\\2" BISON_VERSION_MINOR "${FIRST_LINE}")
|
||||
IF (BISON_VERSION_MAJOR LESS 2)
|
||||
MESSAGE("Warning: bison version is old. please update to version 2")
|
||||
ELSE()
|
||||
SET(BISON_USABLE 1 CACHE INTERNAL "Bison version 2 or higher")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
# Use bison to generate C++ and header file
|
||||
MACRO (RUN_BISON input_yy output_cc output_h)
|
||||
IF(BISON_TOO_OLD)
|
||||
IF(EXISTS ${output_cc} AND EXISTS ${output_h})
|
||||
SET(BISON_USABLE FALSE)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
IF(BISON_USABLE)
|
||||
ADD_CUSTOM_COMMAND(
|
||||
OUTPUT ${output_cc}
|
||||
${output_h}
|
||||
COMMAND bison -y -p MYSQL
|
||||
--output=${output_cc}
|
||||
--defines=${output_h}
|
||||
${input_yy}
|
||||
DEPENDS ${input_yy}
|
||||
)
|
||||
ELSE()
|
||||
# Bison is missing or not usable, e.g too old
|
||||
IF(EXISTS ${output_cc} AND EXISTS ${output_h})
|
||||
IF(${input_yy} IS_NEWER_THAN ${output_cc} OR ${input_yy} IS_NEWER_THAN ${output_h})
|
||||
# Possibly timestamps are messed up in source distribution.
|
||||
MESSAGE("Warning: no usable bison found, ${input_yy} will not be rebuilt.")
|
||||
ENDIF()
|
||||
ELSE()
|
||||
# Output files are missing, bail out.
|
||||
MESSAGE(FATAL_ERROR "Please install bison.")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDMACRO()
|
27
cmake/cat.cmake
Normal file
27
cmake/cat.cmake
Normal file
|
@ -0,0 +1,27 @@
|
|||
# Copyright (C) 2009 Sun Microsystems, Inc
|
||||
#
|
||||
# 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
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
# Concatenate files
|
||||
#
|
||||
# Parameters :
|
||||
# IN - input files (list)
|
||||
# OUT - output file
|
||||
FILE(WRITE ${OUT} "")
|
||||
FOREACH(FILENAME ${IN})
|
||||
FILE(READ ${FILENAME} CONTENTS)
|
||||
FILE(APPEND ${OUT} "${CONTENTS}")
|
||||
ENDFOREACH()
|
||||
|
||||
|
63
cmake/character_sets.cmake
Normal file
63
cmake/character_sets.cmake
Normal file
|
@ -0,0 +1,63 @@
|
|||
# Copyright (C) 2009 Sun Microsystems, Inc
|
||||
#
|
||||
# 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
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
#Charsets and collations
|
||||
IF(NOT DEFAULT_CHARSET)
|
||||
SET(DEFAULT_CHARSET "latin1")
|
||||
ENDIF()
|
||||
|
||||
IF(NOT DEFAULT_COLLATIONS)
|
||||
SET(DEFAULT_COLLATION "latin1_swedish_ci")
|
||||
ENDIF()
|
||||
|
||||
SET(CHARSETS ${DEFAULT_CHARSET} latin1 utf8 utf8mb3)
|
||||
SET(CHARSETS_COMPLEX big5 cp1250 cp932 eucjpms euckr gb2312 gbk latin1 latin2 sjis tis620 ucs2 ujis utf8 utf8mb3 utf16 utf32)
|
||||
|
||||
SET(CHARSETS_AVAILABLE
|
||||
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 utf8mb3 utf16 utf32)
|
||||
|
||||
|
||||
IF(WIN32)
|
||||
SET (EXTRA_CHARSETS "all")
|
||||
ELSE()
|
||||
SET (EXTRA_CHARSETS "none")
|
||||
ENDIF()
|
||||
SET(WITH_EXTRA_CHARSETS ${EXTRA_CHARSETS} CACHE
|
||||
STRING "Options are: none, complex,all")
|
||||
|
||||
|
||||
IF(WITH_EXTRA_CHARSETS MATCHES "complex")
|
||||
SET(CHARSETS ${CHARSETS} ${CHARSETS_COMPLEX})
|
||||
ELSEIF(WITH_EXTRA_CHARSETS MATCHES "all")
|
||||
SET(CHARSETS ${CHARSETS} ${CHARSETS_AVAILABLE})
|
||||
ENDIF()
|
||||
|
||||
SET(MYSQL_DEFAULT_CHARSET_NAME "${DEFAULT_CHARSET}")
|
||||
SET(MYSQL_DEFAULT_COLLATION_NAME "${DEFAULT_COLLATION}")
|
||||
|
||||
FOREACH(cs in ${CHARSETS})
|
||||
SET(HAVE_CHARSET_${cs} 1)
|
||||
ENDFOREACH()
|
||||
|
||||
SET(HAVE_UCA_COLLATIONS 1)
|
||||
|
||||
SET(HAVE_UTF8_GENERAL_CS 1)
|
||||
SET(USE_MB 1)
|
||||
SET(USE_MB_IDENT 1)
|
||||
|
19
cmake/check_minimal_version.cmake
Normal file
19
cmake/check_minimal_version.cmake
Normal file
|
@ -0,0 +1,19 @@
|
|||
# Copyright (C) 2009 Sun Microsystems, Inc
|
||||
#
|
||||
# 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
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
# This is a helper script is used to check for the minimal required version
|
||||
# It helps to decide whether to use autoconf based configure or cmake's
|
||||
# configure
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 2.6.0 FATAL_ERROR)
|
79
cmake/configure.pl
Normal file
79
cmake/configure.pl
Normal file
|
@ -0,0 +1,79 @@
|
|||
#!/usr/bin/perl
|
||||
use Switch;
|
||||
|
||||
my $cmakeargs="";
|
||||
foreach $option (@ARGV)
|
||||
{
|
||||
if (substr ($option, 0, 2) == "--")
|
||||
{
|
||||
$option = substr($option, 2);
|
||||
}
|
||||
if($option =~ /help/)
|
||||
{
|
||||
system("cmake -LH");
|
||||
exit(0);
|
||||
}
|
||||
if($option =~ /with-plugins=/)
|
||||
{
|
||||
my @plugins= split(/,/, substr($option,13));
|
||||
foreach $p (@plugins)
|
||||
{
|
||||
$p =~ s/-/_/g;
|
||||
$cmakeargs = $cmakeargs." -DWITH_".uc($p)."=1";
|
||||
}
|
||||
next;
|
||||
}
|
||||
if($option =~ /with-extra-charsets=/)
|
||||
{
|
||||
my $charsets= substr($option,20);
|
||||
$cmakeargs = $cmakeargs." -DWITH_EXTRA_CHARSETS=".$charsets;
|
||||
next;
|
||||
}
|
||||
if($option =~ /without-plugin=/)
|
||||
{
|
||||
$cmakeargs = $cmakeargs." -DWITHOUT_".uc(substr($option,15))."=1";
|
||||
next;
|
||||
}
|
||||
if($option =~ /with-zlib-dir=bundled/)
|
||||
{
|
||||
$cmakeargs = $cmakeargs." -DWITH_ZLIB=bundled";
|
||||
next;
|
||||
}
|
||||
if($option =~ /with-zlib-dir=/)
|
||||
{
|
||||
$cmakeargs = $cmakeargs." -DWITH_ZLIB=system";
|
||||
next;
|
||||
}
|
||||
if($option =~ /with-ssl=/)
|
||||
{
|
||||
$cmakeargs = $cmakeargs." -DWITH_SSL=bundled";
|
||||
next;
|
||||
}
|
||||
if($option =~ /with-ssl/)
|
||||
{
|
||||
$cmakeargs = $cmakeargs." -DWITH_SSL=yes";
|
||||
next;
|
||||
}
|
||||
if($option =~ /prefix=/)
|
||||
{
|
||||
my $cmake_install_prefix= substr($option, 7);
|
||||
$cmakeargs = $cmakeargs." -DCMAKE_INSTALL_PREFIX=".$cmake_install_prefix;
|
||||
next;
|
||||
}
|
||||
if ($options =~ /extra-charsets=all/)
|
||||
{
|
||||
$cmakeargs = $cmakeargs." -DWITH_CHARSETS=all";
|
||||
next;
|
||||
}
|
||||
if ($options =~ /extra-charsets=complex/)
|
||||
{
|
||||
$cmakeargs = $cmakeargs." -DWITH_CHARSETS=complex";
|
||||
next;
|
||||
}
|
||||
$option = uc($option);
|
||||
$option =~ s/-/_/g;
|
||||
$cmakeargs = $cmakeargs." -D".$option."=1";
|
||||
}
|
||||
print("configure.pl : calling cmake . $cmakeargs\n");
|
||||
my $rc = system("cmake . $cmakeargs");
|
||||
exit($rc);
|
84
cmake/create_initial_db.cmake.in
Normal file
84
cmake/create_initial_db.cmake.in
Normal file
|
@ -0,0 +1,84 @@
|
|||
# Copyright (C) 2009 Sun Microsystems, Inc
|
||||
#
|
||||
# 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
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
# This script creates initial database for packaging on Windows
|
||||
SET(CMAKE_SOURCE_DIR "@CMAKE_SOURCE_DIR@")
|
||||
SET(CMAKE_CURRENT_BINARY_DIR "@CMAKE_CURRENT_BINARY_DIR@")
|
||||
SET(MYSQLD_EXECUTABLE "@MYSQLD_EXECUTABLE@")
|
||||
SET(CMAKE_CFG_INTDIR "@CMAKE_CFG_INTDIR@")
|
||||
SET(WIN32 "@WIN32@")
|
||||
SET ($ENV{VS_UNICODE_OUTPUT})
|
||||
IF(CMAKE_CFG_INTDIR)
|
||||
IF(CONFIG)
|
||||
MESSAGE(${CONFIG})
|
||||
#Resolve build configuration variables
|
||||
STRING(REPLACE "${CMAKE_CFG_INTDIR}" ${CONFIG} MYSQLD_EXECUTABLE
|
||||
"${MYSQLD_EXECUTABLE}")
|
||||
ELSE()
|
||||
MESSAGE(FATAL_ERROR "Please provide CONFIG parameter to the script")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
# Create bootstrapper SQL script
|
||||
FILE(WRITE bootstrap.sql "use mysql;\n" )
|
||||
FOREACH(FILENAME mysql_system_tables.sql mysql_system_tables_data.sql
|
||||
fill_help_tables.sql)
|
||||
FILE(STRINGS ${CMAKE_SOURCE_DIR}/scripts/${FILENAME} CONTENTS)
|
||||
FOREACH(STR ${CONTENTS})
|
||||
IF(NOT STR MATCHES "@current_hostname")
|
||||
FILE(APPEND bootstrap.sql "${STR}\n")
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
ENDFOREACH()
|
||||
|
||||
|
||||
MAKE_DIRECTORY(data)
|
||||
FILE(REMOVE_RECURSE data/mysql)
|
||||
MAKE_DIRECTORY(data/mysql)
|
||||
IF(WIN32)
|
||||
SET(CONSOLE --console)
|
||||
ENDIF()
|
||||
|
||||
SET(BOOTSTRAP_COMMAND
|
||||
${MYSQLD_EXECUTABLE}
|
||||
--no-defaults
|
||||
${CONSOLE}
|
||||
--bootstrap
|
||||
--lc-messages-dir=${CMAKE_CURRENT_BINARY_DIR}/share
|
||||
--basedir=.
|
||||
--datadir=.
|
||||
--loose-skip-innodb
|
||||
--loose-skip-ndbcluster
|
||||
--max_allowed_packet=8M
|
||||
--net_buffer_length=16K
|
||||
)
|
||||
|
||||
GET_FILENAME_COMPONENT(CWD . ABSOLUTE)
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND "@CMAKE_COMMAND@" -E echo Executing ${BOOTSTRAP_COMMAND}
|
||||
)
|
||||
EXECUTE_PROCESS (
|
||||
COMMAND "@CMAKE_COMMAND@" -E echo input file bootstrap.sql, current directory ${CWD}
|
||||
)
|
||||
EXECUTE_PROCESS (
|
||||
COMMAND ${BOOTSTRAP_COMMAND} INPUT_FILE bootstrap.sql OUTPUT_VARIABLE OUT
|
||||
ERROR_VARIABLE ERR
|
||||
RESULT_VARIABLE RESULT
|
||||
)
|
||||
|
||||
IF(NOT RESULT EQUAL 0)
|
||||
MESSAGE(FATAL_ERROR "Could not create initial database \n ${OUT} \n ${ERR}")
|
||||
ENDIF()
|
||||
|
78
cmake/do_abi_check.cmake
Normal file
78
cmake/do_abi_check.cmake
Normal file
|
@ -0,0 +1,78 @@
|
|||
# Copyright (C) 2009 Sun Microsystems, Inc
|
||||
#
|
||||
# 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
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
#
|
||||
# Rules for checking that the abi/api has not changed.
|
||||
#
|
||||
# The following steps are followed in the do_abi_check rule below
|
||||
#
|
||||
# 1) Generate preprocessor output for the files that need to
|
||||
# be tested for abi/api changes. use -nostdinc to prevent
|
||||
# generation of preprocessor output for system headers. This
|
||||
# results in messages in stderr saying that these headers
|
||||
# were not found. Redirect the stderr output to /dev/null
|
||||
# to prevent seeing these messages.
|
||||
# 2) sed the output to
|
||||
# 2.1) remove blank lines and lines that begin with "# "
|
||||
# 2.2) When gcc -E is run on the Mac OS and solaris sparc platforms it
|
||||
# introduces a line of output that shows up as a difference between
|
||||
# the .pp and .out files. Remove these OS specific preprocessor text
|
||||
# inserted by the preprocessor.
|
||||
# 3) diff the generated file and the canons (.pp files already in
|
||||
# the repository).
|
||||
# 4) delete the .out file that is generated.
|
||||
#
|
||||
# If the diff fails, the generated file is not removed. This will
|
||||
# be useful for analysis of ABI differences (e.g. using a visual
|
||||
# diff tool).
|
||||
#
|
||||
# A ABI change that causes a build to fail will always be accompanied
|
||||
# by new canons (.out files). The .out files that are not removed will
|
||||
# be replaced as the new .pp files.
|
||||
#
|
||||
# e.g. If include/mysql/plugin.h has an ABI change then this rule would
|
||||
# leave a <build directory>/abi_check.out file.
|
||||
#
|
||||
# A developer with a justified API change will then do a
|
||||
# mv <build directory>/abi_check.out include/mysql/plugin.pp
|
||||
# to replace the old canons with the new ones.
|
||||
#
|
||||
|
||||
SET(abi_check_out ${BINARY_DIR}/abi_check.out)
|
||||
|
||||
FOREACH(file ${ABI_HEADERS})
|
||||
SET(tmpfile ${file}.pp.tmp)
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${COMPILER}
|
||||
-E -nostdinc -dI -I${SOURCE_DIR}/include -I${BINARY_DIR}/include
|
||||
-I${SOURCE_DIR}/include/mysql -I${SOURCE_DIR}/sql ${file}
|
||||
ERROR_QUIET OUTPUT_FILE ${tmpfile})
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND sed -e
|
||||
"/^# /d" -e "/^[ ]*$/d" -e "/^#pragma GCC set_debug_pwd/d" -e "/^#ident/d"
|
||||
RESULT_VARIABLE result OUTPUT_FILE ${abi_check_out} INPUT_FILE ${tmpfile})
|
||||
IF(NOT ${result} EQUAL 0)
|
||||
MESSAGE(FATAL_ERROR "sed returned error ${result}")
|
||||
ENDIF()
|
||||
FILE(REMOVE ${tmpfile})
|
||||
EXECUTE_PROCESS(COMMAND diff -w ${file}.pp ${abi_check_out} RESULT_VARIABLE
|
||||
result)
|
||||
IF(NOT ${result} EQUAL 0)
|
||||
MESSAGE(FATAL_ERROR
|
||||
"ABI check found difference between ${file}.pp and ${abi_check_out}")
|
||||
ENDIF()
|
||||
FILE(REMOVE ${abi_check_out})
|
||||
ENDFOREACH()
|
||||
|
92
cmake/dtrace.cmake
Normal file
92
cmake/dtrace.cmake
Normal file
|
@ -0,0 +1,92 @@
|
|||
# Copyright (C) 2009 Sun Microsystems, Inc
|
||||
#
|
||||
# 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
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
# Check if OS supports DTrace
|
||||
MACRO(CHECK_DTRACE)
|
||||
FIND_PROGRAM(DTRACE dtrace)
|
||||
MARK_AS_ADVANCED(DTRACE)
|
||||
|
||||
# On FreeBSD, dtrace does not handle userland tracing yet
|
||||
IF(DTRACE AND NOT CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
|
||||
SET(ENABLE_DTRACE ON CACHE BOOL "Enable dtrace")
|
||||
ENDIF()
|
||||
SET(HAVE_DTRACE ${ENABLE_DTRACE})
|
||||
IF(CMAKE_SYSTEM_NAME MATCHES "SunOS")
|
||||
IF(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||
SET(DTRACE_FLAGS -32 CACHE INTERNAL "DTrace architecture flags")
|
||||
ELSE()
|
||||
SET(DTRACE_FLAGS -64 CACHE INTERNAL "DTrace architecture flags")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
CHECK_DTRACE()
|
||||
|
||||
# Produce a header file with
|
||||
# DTrace macros
|
||||
MACRO (DTRACE_HEADER provider header header_no_dtrace)
|
||||
IF(ENABLE_DTRACE)
|
||||
ADD_CUSTOM_COMMAND(
|
||||
OUTPUT ${header} ${header_no_dtrace}
|
||||
COMMAND ${DTRACE} -h -s ${provider} -o ${header}
|
||||
COMMAND perl ${CMAKE_SOURCE_DIR}/scripts/dheadgen.pl -f ${provider} > ${header_no_dtrace}
|
||||
DEPENDS ${provider}
|
||||
)
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
|
||||
# Create provider headers
|
||||
IF(ENABLE_DTRACE)
|
||||
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/include/probes_mysql.d.base
|
||||
${CMAKE_BINARY_DIR}/include/probes_mysql.d COPYONLY)
|
||||
DTRACE_HEADER(
|
||||
${CMAKE_BINARY_DIR}/include/probes_mysql.d
|
||||
${CMAKE_BINARY_DIR}/include/probes_mysql_dtrace.h
|
||||
${CMAKE_BINARY_DIR}/include/probes_mysql_nodtrace.h
|
||||
)
|
||||
ADD_CUSTOM_TARGET(gen_dtrace_header
|
||||
DEPENDS
|
||||
${CMAKE_BINARY_DIR}/include/probes_mysql.d
|
||||
${CMAKE_BINARY_DIR}/include/probes_mysql_dtrace.h
|
||||
${CMAKE_BINARY_DIR}/include/probes_mysql_nodtrace.h
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
|
||||
MACRO (DTRACE_INSTRUMENT target)
|
||||
IF(ENABLE_DTRACE)
|
||||
ADD_DEPENDENCIES(${target} gen_dtrace_header)
|
||||
|
||||
# On Solaris, invoke dtrace -G to generate object file and
|
||||
# link it together with target.
|
||||
IF(CMAKE_SYSTEM_NAME MATCHES "SunOS")
|
||||
SET(objdir ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${target}.dir)
|
||||
SET(outfile ${CMAKE_CURRENT_BINARY_DIR}/${target}_dtrace.o)
|
||||
|
||||
ADD_CUSTOM_COMMAND(
|
||||
TARGET ${target} PRE_LINK
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
-DDTRACE=${DTRACE}
|
||||
-DOUTFILE=${outfile}
|
||||
-DDFILE=${CMAKE_BINARY_DIR}/include/probes_mysql.d
|
||||
-DDTRACE_FLAGS=${DTRACE_FLAGS}
|
||||
-P ${CMAKE_SOURCE_DIR}/cmake/dtrace_prelink.cmake
|
||||
WORKING_DIRECTORY ${OBJDIR}
|
||||
)
|
||||
SET_TARGET_PROPERTIES(${target} PROPERTIES LINK_FLAGS "${outfile}")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDMACRO()
|
34
cmake/dtrace_prelink.cmake
Normal file
34
cmake/dtrace_prelink.cmake
Normal file
|
@ -0,0 +1,34 @@
|
|||
# Copyright (C) 2009 Sun Microsystems, Inc
|
||||
#
|
||||
# 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
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
# Generates an ELF object file with dtrace entry points.
|
||||
# This object that must to be linked with together with
|
||||
# the target. This script needs to run on Solaris only
|
||||
|
||||
# Do not follow symlinks in GLOB_RECURSE
|
||||
CMAKE_POLICY(SET CMP0009 NEW)
|
||||
FILE(GLOB_RECURSE OBJECTS *.o)
|
||||
|
||||
# Use relative paths to generate shorter command line
|
||||
GET_FILENAME_COMPONENT(CURRENT_ABS_DIR . ABSOLUTE)
|
||||
FOREACH(OBJ ${OBJECTS})
|
||||
FILE(RELATIVE_PATH REL ${CURRENT_ABS_DIR} ${OBJ})
|
||||
LIST(APPEND REL_OBJECTS ${REL})
|
||||
ENDFOREACH()
|
||||
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${DTRACE} ${DTRACE_FLAGS} -o ${OUTFILE} -G -s ${DFILE} ${REL_OBJECTS}
|
||||
)
|
||||
|
69
cmake/install_macros.cmake
Normal file
69
cmake/install_macros.cmake
Normal file
|
@ -0,0 +1,69 @@
|
|||
# Copyright (C) 2009 Sun Microsystems, Inc
|
||||
#
|
||||
# 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
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
MACRO (INSTALL_DEBUG_SYMBOLS targets)
|
||||
IF(MSVC)
|
||||
FOREACH(target ${targets})
|
||||
GET_TARGET_PROPERTY(location ${target} LOCATION)
|
||||
GET_TARGET_PROPERTY(type ${target} TYPE)
|
||||
IF(NOT INSTALL_LOCATION)
|
||||
IF(type MATCHES "STATIC_LIBRARY" OR type MATCHES "MODULE_LIBRARY" OR type MATCHES "SHARED_LIBRARY")
|
||||
SET(INSTALL_LOCATION "lib")
|
||||
ELSEIF(type MATCHES "EXECUTABLE")
|
||||
SET(INSTALL_LOCATION "bin")
|
||||
ELSE()
|
||||
MESSAGE(FATAL_ERROR "cannot determine type of ${target}. Don't now where to install")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
STRING(REPLACE ".exe" ".pdb" pdb_location ${location})
|
||||
STRING(REPLACE ".dll" ".pdb" pdb_location ${pdb_location})
|
||||
STRING(REPLACE ".lib" ".pdb" pdb_location ${pdb_location})
|
||||
STRING(REPLACE "$(OutDir)" "\${CMAKE_INSTALL_CONFIG_NAME}" pdb_location ${pdb_location})
|
||||
STRING(REPLACE "$(ConfigurationName)" "\${CMAKE_INSTALL_CONFIG_NAME}" pdb_location ${pdb_location})
|
||||
INSTALL(FILES ${pdb_location} DESTINATION ${INSTALL_LOCATION})
|
||||
ENDFOREACH()
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
# Install symbolic link to CMake target.
|
||||
# the link is created in the same directory as target
|
||||
# and extension will be the same as for target file.
|
||||
MACRO(INSTALL_SYMLINK linkbasename target destination)
|
||||
IF(UNIX)
|
||||
GET_TARGET_PROPERTY(location ${target} LOCATION)
|
||||
GET_FILENAME_COMPONENT(path ${location} PATH)
|
||||
GET_FILENAME_COMPONENT(name_we ${location} NAME_WE)
|
||||
GET_FILENAME_COMPONENT(ext ${location} EXT)
|
||||
SET(output ${path}/${linkbasename}${ext})
|
||||
ADD_CUSTOM_COMMAND(
|
||||
OUTPUT ${output}
|
||||
COMMAND ${CMAKE_COMMAND} ARGS -E remove -f ${output}
|
||||
COMMAND ${CMAKE_COMMAND} ARGS -E create_symlink
|
||||
${name_we}${ext}
|
||||
${linkbasename}${ext}
|
||||
WORKING_DIRECTORY ${path}
|
||||
DEPENDS ${target}
|
||||
)
|
||||
|
||||
ADD_CUSTOM_TARGET(symlink_${linkbasename}${ext}
|
||||
ALL
|
||||
DEPENDS ${output})
|
||||
SET_TARGET_PROPERTIES(symlink_${linkbasename}${ext} PROPERTIES CLEAN_DIRECT_OUTPUT 1)
|
||||
# For Xcode, replace project config with install config
|
||||
STRING(REPLACE "$(CONFIGURATION)" "\${CMAKE_INSTALL_CONFIG_NAME}" output ${output})
|
||||
INSTALL(FILES ${output} DESTINATION ${destination})
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
176
cmake/make_dist.cmake.in
Normal file
176
cmake/make_dist.cmake.in
Normal file
|
@ -0,0 +1,176 @@
|
|||
# Copyright (C) 2009 Sun Microsystems, Inc
|
||||
#
|
||||
# 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
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
# Make source distribution
|
||||
# If bzr is present, run bzr export, add output of BUILD/autorun.sh
|
||||
# if autotools are present, also pack bison output into it.
|
||||
# Otherwise, just run cpack with source configuration.
|
||||
|
||||
SET(CMAKE_SOURCE_DIR "@CMAKE_SOURCE_DIR@")
|
||||
SET(CMAKE_BINARY_DIR "@CMAKE_BINARY_DIR@")
|
||||
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "@CPACK_SOURCE_PACKAGE_FILE_NAME@")
|
||||
SET(GLIBTOOLIZE_EXECUTABLE "@GLIBTOOLIZE_EXECUTABLE@")
|
||||
SET(LIBTOOLIZE_EXECUTABLE "@LIBTOOLIZE_EXECUTABLE@")
|
||||
SET(ACLOCAL_EXECUTABLE "@ACLOCAL_EXECUTABLE@")
|
||||
SET(AUTOCONF_EXECUTABLE "@AUTOCONF_EXECUTABLE@")
|
||||
SET(AUTOHEADER_EXECUTABLE "@AUTOHEADER_EXECUTABLE@")
|
||||
SET(AUTOMAKE_EXECUTABLE "@AUTOMAKE_EXECUTABLE@")
|
||||
SET(CMAKE_CPACK_COMMAND "@CMAKE_CPACK_COMMAND@")
|
||||
SET(CMAKE_COMMAND "@CMAKE_COMMAND@")
|
||||
SET(BZR_EXECUTABLE "@BZR_EXECUTABLE@")
|
||||
SET(GTAR_EXECUTABLE "@GTAR_EXECUTABLE@")
|
||||
SET(TAR_EXECUTABLE "@TAR_EXECUTABLE@")
|
||||
SET(CMAKE_GENERATOR "@CMAKE_GENERATOR@")
|
||||
SET(CMAKE_MAKE_PROGRAM "@CMAKE_MAKE_PROGRAM@")
|
||||
SET(CMAKE_SYSTEM_NAME "@CMAKE_SYSTEM_NAME@")
|
||||
|
||||
|
||||
SET(PACKAGE_DIR ${CMAKE_BINARY_DIR}/${CPACK_SOURCE_PACKAGE_FILE_NAME})
|
||||
|
||||
FILE(REMOVE_RECURSE ${PACKAGE_DIR})
|
||||
FILE(REMOVE ${PACKAGE_DIR}.tar.gz )
|
||||
|
||||
IF(BZR_EXECUTABLE)
|
||||
MESSAGE(STATUS "Running bzr export")
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND "${BZR_EXECUTABLE}" export
|
||||
${PACKAGE_DIR}
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
RESULT_VARIABLE RESULT
|
||||
)
|
||||
|
||||
IF(NOT RESULT EQUAL 0)
|
||||
SET(BZR_EXECUTABLE)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF(NOT BZR_EXECUTABLE)
|
||||
MESSAGE(STATUS "bzr not found or source dir is not a repo, use CPack")
|
||||
|
||||
IF(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
|
||||
# In-source build is the worst option, we have to cleanup source tree.
|
||||
|
||||
# Save bison output first.
|
||||
CONFIGURE_FILE(${CMAKE_BINARY_DIR}/sql/sql_yacc.cc
|
||||
${CMAKE_BINARY_DIR}/sql_yacc.cc COPY_ONLY)
|
||||
CONFIGURE_FILE(${CMAKE_BINARY_DIR}/sql/sql_yacc.h
|
||||
${CMAKE_BINARY_DIR}/sql_yacc.h COPY_ONLY)
|
||||
|
||||
IF(CMAKE_GENERATOR MATCHES "Makefiles")
|
||||
# make clean
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${CMAKE_MAKE_PROGRAM} clean
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
# Restore bison output
|
||||
CONFIGURE_FILE(${CMAKE_BINARY_DIR}/sql_yacc.cc
|
||||
${CMAKE_BINARY_DIR}/sql/sql_yacc.cc COPY_ONLY)
|
||||
CONFIGURE_FILE(${CMAKE_BINARY_DIR}/sql_yacc.h
|
||||
${CMAKE_BINARY_DIR}/sql/sql_yacc.h COPY_ONLY)
|
||||
FILE(REMOVE ${CMAKE_BINARY_DIR}/sql_yacc.cc)
|
||||
FILE(REMOVE ${CMAKE_BINARY_DIR}/sql_yacc.h)
|
||||
ENDIF()
|
||||
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${CMAKE_CPACK_COMMAND} -G TGZ --config ./CPackSourceConfig.cmake
|
||||
${CMAKE_BINARY_DIR}/CPackSourceConfig.cmake
|
||||
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
)
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${CMAKE_COMMAND} -E tar xzf
|
||||
${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz
|
||||
${PACK_SOURCE_PACKAGE_FILE_NAME}
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
# Try to pack output of BUILD/autorun, if autotools are present
|
||||
IF(GLIBTOOLIZE_EXECUTABLE OR LIBTOOLIZE_EXECUTABLE)
|
||||
IF(ACLOCAL_EXECUTABLE AND AUTOMAKE_EXECUTABLE AND AUTOCONF_EXECUTABLE
|
||||
AND AUTOHEADER_EXECUTABLE)
|
||||
SET(HAVE_AUTOTOOLS 1)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF(HAVE_AUTOTOOLS)
|
||||
EXECUTE_PROCESS(COMMAND BUILD/autorun.sh
|
||||
WORKING_DIRECTORY ${PACKAGE_DIR})
|
||||
ELSE()
|
||||
MESSAGE( "Autotools not found, resulting source package can only be built"
|
||||
" with cmake")
|
||||
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/cmake/configure.pl
|
||||
${PACKAGE_DIR}/configure
|
||||
COPYONLY)
|
||||
IF(UNIX)
|
||||
EXECUTE_PROCESS(COMMAND chmod +x ${PACKAGE_DIR}/configure)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
# Copy bison output
|
||||
CONFIGURE_FILE(${CMAKE_BINARY_DIR}/sql/sql_yacc.h
|
||||
${PACKAGE_DIR}/sql/sql_yacc.h COPYONLY)
|
||||
CONFIGURE_FILE(${CMAKE_BINARY_DIR}/sql/sql_yacc.cc
|
||||
${PACKAGE_DIR}/sql/sql_yacc.cc COPYONLY)
|
||||
|
||||
|
||||
# In case we used CPack, it could have copied some
|
||||
# extra files that are not usable on different machines.
|
||||
FILE(REMOVE ${PACKAGE_DIR}/CMakeCache.txt)
|
||||
|
||||
# When packing source, prefer gnu tar to "cmake -P tar"
|
||||
# cmake does not preserve timestamps.gnuwin32 tar is broken, cygwin is ok
|
||||
|
||||
IF(CMAKE_SYSTEM_NAME MATCHES "Windows")
|
||||
IF (EXISTS C:/cygwin/bin/tar.exe)
|
||||
SET(TAR_EXECUTABLE C:/cygwin/bin/tar.exe)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF(GTAR_EXECUTABLE)
|
||||
SET(GNUTAR ${GTAR_EXECUTABLE})
|
||||
ELSEIF(TAR_EXECUTABLE)
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND "${TAR_EXECUTABLE}" --version
|
||||
RESULT_VARIABLE RESULT OUTPUT_VARIABLE OUT ERROR_VARIABLE ERR
|
||||
)
|
||||
IF(RESULT EQUAL 0 AND OUT MATCHES "GNU")
|
||||
SET(GNUTAR ${TAR_EXECUTABLE})
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
SET($ENV{GZIP} "--best")
|
||||
|
||||
IF(GNUTAR)
|
||||
SET(PACK_COMMAND
|
||||
${GNUTAR} cfz
|
||||
${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz
|
||||
${CPACK_SOURCE_PACKAGE_FILE_NAME}
|
||||
)
|
||||
ELSE()
|
||||
SET(PACK_COMMAND ${CMAKE_COMMAND} -E tar cfz
|
||||
${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz
|
||||
${CPACK_SOURCE_PACKAGE_FILE_NAME}
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
MESSAGE(STATUS "Creating source package")
|
||||
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${PACK_COMMAND}
|
||||
)
|
||||
MESSAGE(STATUS "Source package ${PACKAGE_DIR}.tar.gz created")
|
62
cmake/merge_archives_unix.cmake.in
Normal file
62
cmake/merge_archives_unix.cmake.in
Normal file
|
@ -0,0 +1,62 @@
|
|||
# Copyright (C) 2009 Sun Microsystems, Inc
|
||||
#
|
||||
# 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
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
# This script merges many static libraries into
|
||||
# one big library on Unix.
|
||||
SET(TARGET_LOCATION "@TARGET_LOCATION@")
|
||||
SET(TARGET "@TARGET@")
|
||||
SET(STATIC_LIBS "@STATIC_LIBS@")
|
||||
SET(CMAKE_CURRENT_BINARY_DIR "@CMAKE_CURRENT_BINARY_DIR@")
|
||||
SET(CMAKE_AR "@CMAKE_AR@")
|
||||
SET(CMAKE_RANLIB "@CMAKE_RANLIB@")
|
||||
|
||||
|
||||
SET(TEMP_DIR ${CMAKE_CURRENT_BINARY_DIR}/merge_archives_${TARGET})
|
||||
MAKE_DIRECTORY(${TEMP_DIR})
|
||||
# Extract each archive to its own subdirectory(avoid object filename clashes)
|
||||
FOREACH(LIB ${STATIC_LIBS})
|
||||
GET_FILENAME_COMPONENT(NAME_NO_EXT ${LIB} NAME_WE)
|
||||
SET(TEMP_SUBDIR ${TEMP_DIR}/${NAME_NO_EXT})
|
||||
MAKE_DIRECTORY(${TEMP_SUBDIR})
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${CMAKE_AR} -x ${LIB}
|
||||
WORKING_DIRECTORY ${TEMP_SUBDIR}
|
||||
)
|
||||
|
||||
FILE(GLOB_RECURSE LIB_OBJECTS "${TEMP_SUBDIR}/*")
|
||||
SET(OBJECTS ${OBJECTS} ${LIB_OBJECTS})
|
||||
ENDFOREACH()
|
||||
|
||||
# Use relative paths, makes command line shorter.
|
||||
GET_FILENAME_COMPONENT(ABS_TEMP_DIR ${TEMP_DIR} ABSOLUTE)
|
||||
FOREACH(OBJ ${OBJECTS})
|
||||
FILE(RELATIVE_PATH OBJ ${ABS_TEMP_DIR} ${OBJ})
|
||||
FILE(TO_NATIVE_PATH ${OBJ} OBJ)
|
||||
SET(ALL_OBJECTS ${ALL_OBJECTS} ${OBJ})
|
||||
ENDFOREACH()
|
||||
|
||||
FILE(TO_NATIVE_PATH ${TARGET_LOCATION} ${TARGET_LOCATION})
|
||||
# Now pack the objects into library with ar.
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${CMAKE_AR} -r ${TARGET_LOCATION} ${ALL_OBJECTS}
|
||||
WORKING_DIRECTORY ${TEMP_DIR}
|
||||
)
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${CMAKE_RANLIB} ${TARGET_LOCATION}
|
||||
WORKING_DIRECTORY ${TEMP_DIR}
|
||||
)
|
||||
|
||||
# Cleanup
|
||||
FILE(REMOVE_RECURSE ${TEMP_DIR})
|
128
cmake/misc.cmake
Normal file
128
cmake/misc.cmake
Normal file
|
@ -0,0 +1,128 @@
|
|||
# Copyright (C) 2009 Sun Microsystems, Inc
|
||||
#
|
||||
# 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
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
# Merge static libraries.
|
||||
MACRO(MERGE_STATIC_LIBS TARGET OUTPUT_NAME LIBS_TO_MERGE)
|
||||
# To produce a library we need at least one source file.
|
||||
# It is created by ADD_CUSTOM_COMMAND below and will helps
|
||||
# also help to track dependencies.
|
||||
SET(SOURCE_FILE ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_depends.c)
|
||||
ADD_LIBRARY(${TARGET} STATIC ${SOURCE_FILE})
|
||||
SET_TARGET_PROPERTIES(${TARGET} PROPERTIES OUTPUT_NAME ${OUTPUT_NAME})
|
||||
|
||||
FOREACH(LIB ${LIBS_TO_MERGE})
|
||||
GET_TARGET_PROPERTY(LIB_LOCATION ${LIB} LOCATION)
|
||||
GET_TARGET_PROPERTY(LIB_TYPE ${LIB} TYPE)
|
||||
IF(NOT LIB_LOCATION)
|
||||
# 3rd party library like libz.so. Make sure that everything
|
||||
# that links to our library links to this one as well.
|
||||
TARGET_LINK_LIBRARIES(${TARGET} ${LIB})
|
||||
ELSE()
|
||||
# This is a target in current project
|
||||
# (can be a static or shared lib)
|
||||
IF(LIB_TYPE STREQUAL "STATIC_LIBRARY")
|
||||
SET(STATIC_LIBS ${STATIC_LIBS} ${LIB_LOCATION})
|
||||
ADD_DEPENDENCIES(${TARGET} ${LIB})
|
||||
ELSE()
|
||||
# This is a shared library our static lib depends on.
|
||||
TARGET_LINK_LIBRARIES(${TARGET} ${LIB})
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
|
||||
# Make the generated dummy source file depended on all static input
|
||||
# libs. If input lib changes,the source file is touched
|
||||
# which causes the desired effect (relink).
|
||||
ADD_CUSTOM_COMMAND(
|
||||
OUTPUT ${SOURCE_FILE}
|
||||
COMMAND ${CMAKE_COMMAND} -E touch ${SOURCE_FILE}
|
||||
DEPENDS ${STATIC_LIBS})
|
||||
|
||||
IF(MSVC)
|
||||
# To merge libs, just pass them to lib.exe command line.
|
||||
SET(LINKER_EXTRA_FLAGS "")
|
||||
FOREACH(LIB ${STATIC_LIBS})
|
||||
SET(LINKER_EXTRA_FLAGS "${LINKER_EXTRA_FLAGS} ${LIB}")
|
||||
ENDFOREACH()
|
||||
SET_TARGET_PROPERTIES(${TARGET} PROPERTIES STATIC_LIBRARY_FLAGS
|
||||
"${LINKER_EXTRA_FLAGS}")
|
||||
ELSE()
|
||||
GET_TARGET_PROPERTY(TARGET_LOCATION ${TARGET} LOCATION)
|
||||
IF(APPLE)
|
||||
# Use OSX's libtool to merge archives (ihandles universal
|
||||
# binaries properly)
|
||||
ADD_CUSTOM_COMMAND(TARGET ${TARGET} POST_BUILD
|
||||
COMMAND rm ${TARGET_LOCATION}
|
||||
COMMAND /usr/bin/libtool -static -o ${TARGET_LOCATION}
|
||||
${STATIC_LIBS}
|
||||
)
|
||||
ELSE()
|
||||
# Generic Unix, Cygwin or MinGW. In post-build step, call
|
||||
# script, that extracts objects from archives with "ar x"
|
||||
# and repacks them with "ar r"
|
||||
SET(TARGET ${TARGET})
|
||||
CONFIGURE_FILE(
|
||||
${CMAKE_SOURCE_DIR}/cmake/merge_archives_unix.cmake.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/merge_archives_${TARGET}.cmake
|
||||
@ONLY
|
||||
)
|
||||
ADD_CUSTOM_COMMAND(TARGET ${TARGET} POST_BUILD
|
||||
COMMAND rm ${TARGET_LOCATION}
|
||||
COMMAND ${CMAKE_COMMAND} -P
|
||||
${CMAKE_CURRENT_BINARY_DIR}/merge_archives_${TARGET}.cmake
|
||||
)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
# Convert static library to shared
|
||||
MACRO(STATIC_TO_SHARED STATIC_LIB SHARED_LIB EXPORTS_FILE)
|
||||
IF(NOT MSVC)
|
||||
MESSAGE(FATAL_ERROR
|
||||
"Cannot convert static ${STATIC_LIB} to shared ${TARGET} library."
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
# Need one source file.
|
||||
SET(SOURCE_FILE ${CMAKE_CURRENT_BINARY_DIR}/${SHARED_LIB}_dummy.c)
|
||||
ADD_CUSTOM_COMMAND(
|
||||
OUTPUT ${SOURCE_FILE}
|
||||
COMMAND ${CMAKE_COMMAND} -E touch ${SOURCE_FILE}
|
||||
)
|
||||
|
||||
ADD_LIBRARY(${SHARED_LIB} SHARED ${SOURCE_FILE} ${EXPORTS_FILE})
|
||||
TARGET_LINK_LIBRARIES(${SHARED_LIB} ${STATIC_LIB})
|
||||
ENDMACRO()
|
||||
|
||||
MACRO(SET_TARGET_SOURCEDIR TARGET)
|
||||
SET(${TARGET}_SOURCEDIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "source directory for a target")
|
||||
ENDMACRO()
|
||||
|
||||
# Handy macro to use when source projects maybe used somewhere else
|
||||
# For example, embedded or client library may recompile mysys sources
|
||||
# In such cases, using absolute names in ADD_LIBRARY has the advantage that
|
||||
# GET_TARGET_PROPERTY(xxx SOURCES) also returns absolute names, so there is
|
||||
# no need to know the base directory of a target.
|
||||
MACRO(USE_ABSOLUTE_FILENAMES FILELIST)
|
||||
# Use absolute file paths for sources
|
||||
# It helps when building embedded where we need to
|
||||
# sources files for the plugin to recompile.
|
||||
SET(RESOLVED_PATHS)
|
||||
FOREACH(FILE ${${FILELIST}})
|
||||
GET_FILENAME_COMPONENT(ABSOLUTE_PATH ${FILE} ABSOLUTE)
|
||||
LIST(APPEND RESOLVED_PATHS ${ABSOLUTE_PATH})
|
||||
ENDFOREACH()
|
||||
SET(${FILELIST} ${RESOLVED_PATHS})
|
||||
ENDMACRO()
|
142
cmake/mysql_version.cmake
Normal file
142
cmake/mysql_version.cmake
Normal file
|
@ -0,0 +1,142 @@
|
|||
# Copyright (C) 2009 Sun Microsystems, Inc
|
||||
#
|
||||
# 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
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
# Read value for a variable from configure.in
|
||||
|
||||
MACRO(MYSQL_GET_CONFIG_VALUE keyword var)
|
||||
IF(NOT ${var})
|
||||
IF (EXISTS ${CMAKE_SOURCE_DIR}/configure.in)
|
||||
FILE (STRINGS ${CMAKE_SOURCE_DIR}/configure.in str REGEX "^[ ]*${keyword}=")
|
||||
IF(str)
|
||||
STRING(REPLACE "${keyword}=" "" str ${str})
|
||||
STRING(REGEX REPLACE "[ ].*" "" str ${str})
|
||||
SET(${var} ${str} CACHE INTERNAL "Config variable")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
|
||||
# Read mysql version for configure script
|
||||
|
||||
MACRO(GET_MYSQL_VERSION)
|
||||
|
||||
IF(NOT VERSION_STRING)
|
||||
IF(EXISTS ${CMAKE_SOURCE_DIR}/configure.in)
|
||||
FILE(STRINGS ${CMAKE_SOURCE_DIR}/configure.in str REGEX "AM_INIT_AUTOMAKE")
|
||||
STRING(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+[-][^ \\)]+" VERSION_STRING "${str}")
|
||||
IF(NOT VERSION_STRING)
|
||||
FILE(STRINGS configure.in str REGEX "AC_INIT\\(")
|
||||
STRING(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+[-][^ \\]]+" VERSION_STRING "${str}")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF(NOT VERSION_STRING)
|
||||
MESSAGE(FATAL_ERROR
|
||||
"VERSION_STRING cannot be parsed, please specify -DVERSION_STRING=major.minor.patch-extra"
|
||||
"when calling cmake")
|
||||
ENDIF()
|
||||
|
||||
SET(VERSION ${VERSION_STRING})
|
||||
|
||||
STRING(REGEX REPLACE "([0-9]+)\\.[0-9]+\\.[0-9]+[^ ]+" "\\1" MAJOR_VERSION "${VERSION_STRING}")
|
||||
STRING(REGEX REPLACE "[0-9]+\\.([0-9]+)\\.[0-9]+[^ ]+" "\\1" MINOR_VERSION "${VERSION_STRING}")
|
||||
STRING(REGEX REPLACE "[0-9]+\\.[0-9]+\\.([0-9]+)[^ ]+" "\\1" PATCH "${VERSION_STRING}")
|
||||
SET(MYSQL_BASE_VERSION "${MAJOR_VERSION}.${MINOR_VERSION}" CACHE INTERNAL "MySQL Base version")
|
||||
SET(MYSQL_NO_DASH_VERSION "${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH}")
|
||||
MATH(EXPR MYSQL_VERSION_ID "10000*${MAJOR_VERSION} + 100*${MINOR_VERSION} + ${PATCH}")
|
||||
MARK_AS_ADVANCED(VERSION MYSQL_VERSION_ID MYSQL_BASE_VERSION)
|
||||
SET(CPACK_PACKAGE_VERSION_MAJOR ${MAJOR_VERSION})
|
||||
SET(CPACK_PACKAGE_VERSION_MINOR ${MINOR_VERSION})
|
||||
SET(CPACK_PACKAGE_VERSION_PATCH ${PATCH})
|
||||
ENDMACRO()
|
||||
|
||||
# Get mysql version and other interesting variables
|
||||
GET_MYSQL_VERSION()
|
||||
|
||||
MYSQL_GET_CONFIG_VALUE("PROTOCOL_VERSION" PROTOCOL_VERSION)
|
||||
MYSQL_GET_CONFIG_VALUE("DOT_FRM_VERSION" DOT_FRM_VERSION)
|
||||
MYSQL_GET_CONFIG_VALUE("MYSQL_TCP_PORT_DEFAULT" MYSQL_TCP_PORT_DEFAULT)
|
||||
MYSQL_GET_CONFIG_VALUE("MYSQL_UNIX_ADDR_DEFAULT" MYSQL_UNIX_ADDR_DEFAULT)
|
||||
MYSQL_GET_CONFIG_VALUE("SHARED_LIB_MAJOR_VERSION" SHARED_LIB_MAJOR_VERSION)
|
||||
IF(NOT MYSQL_TCP_PORT_DEFAULT)
|
||||
SET(MYSQL_TCP_PORT_DEFAULT "3306")
|
||||
ENDIF()
|
||||
IF(NOT MYSQL_TCP_PORT)
|
||||
SET(MYSQL_TCP_PORT ${MYSQL_TCP_PORT_DEFAULT})
|
||||
SET(MYSQL_TCP_PORT_DEFAULT "0")
|
||||
ENDIF()
|
||||
IF(NOT MYSQL_UNIX_ADDR)
|
||||
SET(MYSQL_UNIX_ADDR "/tmp/mysql.sock")
|
||||
ENDIF()
|
||||
IF(NOT COMPILATION_COMMENT)
|
||||
SET(COMPILATION_COMMENT "Source distribution")
|
||||
ENDIF()
|
||||
|
||||
|
||||
|
||||
# Use meaningful package name for the binary package
|
||||
IF(NOT CPACK_PACKAGE_FILE_NAME)
|
||||
IF( NOT SYSTEM_NAME_AND_PROCESSOR)
|
||||
IF(WIN32)
|
||||
# CMake does not set CMAKE_SYSTEM_PROCESSOR correctly on Win64
|
||||
# (uses x86). Besides, we try to be compatible with existing naming
|
||||
IF(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
SET(SYSTEM_NAME_AND_PROCESSOR "winx64")
|
||||
ELSE()
|
||||
SET(SYSTEM_NAME_AND_PROCESSOR "win32")
|
||||
ENDIF()
|
||||
ELSE()
|
||||
IF(NOT PLATFORM)
|
||||
SET(PLATFORM ${CMAKE_SYSTEM_NAME})
|
||||
ENDIF()
|
||||
IF(NOT MACHINE)
|
||||
SET(MACHINE ${CMAKE_SYSTEM_PROCESSOR})
|
||||
IF(CMAKE_SIZEOF_VOID_P EQUAL 8 AND NOT ${MACHINE} MATCHES "ia64")
|
||||
# On almost every 64 bit machine (except IA64) it is possible
|
||||
# to build 32 bit packages. Add -64bit suffix to differentiate
|
||||
# between 32 and 64 bit packages.
|
||||
SET(MACHINE ${MACHINE}-64bit)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
SET(SYSTEM_NAME_AND_PROCESSOR "${PLATFORM}-${MACHINE}")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
SET(package_name "mysql-${VERSION}-${SYSTEM_NAME_AND_PROCESSOR}" )
|
||||
# Sometimes package suffix is added (something like icc-glibc23)
|
||||
IF(PACKAGE_SUFFIX)
|
||||
SET(package_name "${package_name}-${PACKAGE_SUFFIX}")
|
||||
ENDIF()
|
||||
STRING(TOLOWER ${package_name} package_name)
|
||||
SET(CPACK_PACKAGE_FILE_NAME ${package_name})
|
||||
ENDIF()
|
||||
|
||||
IF(NOT CPACK_SOURCE_PACKAGE_FILE_NAME)
|
||||
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "mysql-${VERSION}")
|
||||
ENDIF()
|
||||
SET(CPACK_PACKAGE_VENDOR "Sun Microsystems")
|
||||
SET(CPACK_SOURCE_GENERATOR "TGZ")
|
||||
SET(CPACK_SOURCE_IGNORE_FILES
|
||||
\\\\.bzr/
|
||||
\\\\.bzr-mysql
|
||||
.bzrignore
|
||||
CMakeCache.txt
|
||||
/CMakeFiles/
|
||||
/_CPack_Packages/
|
||||
$.gz
|
||||
$.zip
|
||||
)
|
171
cmake/plugin.cmake
Normal file
171
cmake/plugin.cmake
Normal file
|
@ -0,0 +1,171 @@
|
|||
# Copyright (C) 2009 Sun Microsystems, Inc
|
||||
#
|
||||
# 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
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
# Creates a project to build plugin either as static or shared library
|
||||
# Parameters:
|
||||
# plugin - storage engine name.
|
||||
# variable BUILD_TYPE should be set to "STATIC" or "DYNAMIC"
|
||||
# Remarks:
|
||||
# ${PLUGIN}_SOURCES variable containing source files to produce the
|
||||
# library must set before calling this macro
|
||||
|
||||
MACRO(MYSQL_PLUGIN plugin)
|
||||
# Add common include directories
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
|
||||
${CMAKE_SOURCE_DIR}/sql
|
||||
${CMAKE_SOURCE_DIR}/regex
|
||||
${SSL_INCLUDE_DIRS}
|
||||
${ZLIB_INCLUDE_DIR})
|
||||
|
||||
STRING(TOUPPER ${plugin} plugin)
|
||||
STRING(TOLOWER ${plugin} target)
|
||||
|
||||
IF(NOT ${plugin}_PLUGIN_STATIC AND NOT ${plugin}_PLUGIN_DYNAMIC)
|
||||
MESSAGE(FATAL_ERROR
|
||||
"Neither ${plugin}_PLUGIN_STATIC nor ${plugin}_PLUGIN_DYNAMIC is defined.
|
||||
Please set at least one of these variables to the name of the output
|
||||
library in CMakeLists.txt prior to calling MYSQL_PLUGIN"
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
IF(WITH_PLUGIN_${plugin})
|
||||
SET(WITH_${plugin} 1)
|
||||
ENDIF()
|
||||
|
||||
IF(WITH_${plugin}_STORAGE_ENGINE OR WITH_{$plugin} OR WITH_ALL
|
||||
OR WITH_MAX AND NOT WITHOUT_${plugin}_STORAGE_ENGINE AND NOT
|
||||
WITHOUT_${plugin})
|
||||
SET(WITH_${plugin} 1)
|
||||
ELSEIF(WITHOUT_${plugin}_STORAGE_ENGINE OR WITH_NONE OR ${plugin}_DISABLED)
|
||||
SET(WITHOUT_${plugin} 1)
|
||||
SET(WITH_${plugin}_STORAGE_ENGINE 0)
|
||||
SET(WITH_${plugin} 0)
|
||||
ENDIF()
|
||||
|
||||
IF(${plugin}_PLUGIN_MANDATORY)
|
||||
SET(WITH_${plugin} 1)
|
||||
ENDIF()
|
||||
|
||||
IF(${plugin} MATCHES NDBCLUSTER AND WITH_MAX_NO_NDB)
|
||||
SET(WITH_${plugin} 0)
|
||||
SET(WITH_${plugin}_STORAGE_ENGINE 0)
|
||||
SET(WITHOUT_${plugin} 1)
|
||||
SET(WITHOUT_${plugin}_STORAGE_ENGINE 0)
|
||||
ENDIF()
|
||||
|
||||
IF(STORAGE_ENGINE)
|
||||
SET(with_var "WITH_${plugin}_STORAGE_ENGINE" )
|
||||
ELSE()
|
||||
SET(with_var "WITH_${plugin}")
|
||||
ENDIF()
|
||||
|
||||
|
||||
USE_ABSOLUTE_FILENAMES(${plugin}_SOURCES)
|
||||
|
||||
IF (WITH_${plugin} AND ${plugin}_PLUGIN_STATIC)
|
||||
ADD_DEFINITIONS(-DMYSQL_SERVER)
|
||||
#Create static library.
|
||||
ADD_LIBRARY(${target} ${${plugin}_SOURCES})
|
||||
DTRACE_INSTRUMENT(${target})
|
||||
ADD_DEPENDENCIES(${target} GenError)
|
||||
IF(${plugin}_LIBS)
|
||||
TARGET_LINK_LIBRARIES(${target} ${${plugin}_LIBS})
|
||||
ENDIF()
|
||||
SET_TARGET_PROPERTIES(${target} PROPERTIES
|
||||
OUTPUT_NAME "${${plugin}_PLUGIN_STATIC}")
|
||||
# Update mysqld dependencies
|
||||
SET (MYSQLD_STATIC_PLUGIN_LIBS ${MYSQLD_STATIC_PLUGIN_LIBS}
|
||||
${target} PARENT_SCOPE)
|
||||
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_${target}_plugin"
|
||||
PARENT_SCOPE)
|
||||
SET(${with_var} ON CACHE BOOL "Link ${plugin} statically to the server"
|
||||
FORCE)
|
||||
ELSEIF(NOT WITHOUT_${plugin} AND ${plugin}_PLUGIN_DYNAMIC
|
||||
AND NOT WITHOUT_DYNAMIC_PLUGINS)
|
||||
|
||||
# Create a shared module.
|
||||
ADD_DEFINITIONS(-DMYSQL_DYNAMIC_PLUGIN)
|
||||
ADD_LIBRARY(${target} MODULE ${${plugin}_SOURCES})
|
||||
IF(${plugin}_LIBS)
|
||||
TARGET_LINK_LIBRARIES(${target} ${${plugin}_LIBS})
|
||||
ENDIF()
|
||||
DTRACE_INSTRUMENT(${target})
|
||||
SET_TARGET_PROPERTIES (${target} PROPERTIES PREFIX "")
|
||||
TARGET_LINK_LIBRARIES (${target} mysqlservices)
|
||||
|
||||
# Plugin uses symbols defined in mysqld executable.
|
||||
# Some operating systems like Windows and OSX and are pretty strict about
|
||||
# unresolved symbols. Others are less strict and allow unresolved symbols
|
||||
# in shared libraries. On Linux for example, CMake does not even add
|
||||
# executable to the linker command line (it would result into link error).
|
||||
# Thus we skip TARGET_LINK_LIBRARIES on Linux, as it would only generate
|
||||
# an additional dependency.
|
||||
IF(NOT CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
TARGET_LINK_LIBRARIES (${target} mysqld)
|
||||
ENDIF()
|
||||
|
||||
ADD_DEPENDENCIES(${target} GenError)
|
||||
|
||||
IF(${plugin}_PLUGIN_DYNAMIC)
|
||||
SET_TARGET_PROPERTIES(${target} PROPERTIES
|
||||
OUTPUT_NAME "${${plugin}_PLUGIN_DYNAMIC}")
|
||||
ENDIF()
|
||||
|
||||
# Update cache "WITH" variable for plugins that support static linking
|
||||
IF(${plugin}_PLUGIN_STATIC)
|
||||
SET(${with_var} OFF CACHE BOOL "Link ${plugin} statically to the server"
|
||||
FORCE)
|
||||
ENDIF()
|
||||
|
||||
# Install dynamic library
|
||||
SET(INSTALL_LOCATION lib/plugin)
|
||||
INSTALL(TARGETS ${target} DESTINATION ${INSTALL_LOCATION})
|
||||
INSTALL_DEBUG_SYMBOLS(${target})
|
||||
ELSE()
|
||||
IF(STORAGE_ENGINE)
|
||||
SET(without_var "WITHOUT_${plugin}_STORAGE_ENGINE")
|
||||
ELSE()
|
||||
SET(without_var "WITHOUT_${plugin}")
|
||||
ENDIF()
|
||||
SET(${without_var} ON CACHE BOOL "Link ${plugin} statically to the server"
|
||||
FORCE)
|
||||
MARK_AS_ADVANCED(${without_var})
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
MACRO (MYSQL_STORAGE_ENGINE engine)
|
||||
SET(STORAGE_ENGINE 1)
|
||||
MYSQL_PLUGIN(${engine})
|
||||
ENDMACRO()
|
||||
|
||||
# Add all CMake projects under storage and plugin
|
||||
# subdirectories, configure sql_builtins.cc
|
||||
MACRO(CONFIGURE_PLUGINS)
|
||||
FILE(GLOB dirs_storage ${CMAKE_SOURCE_DIR}/storage/*)
|
||||
FILE(GLOB dirs_plugin ${CMAKE_SOURCE_DIR}/plugin/*)
|
||||
FOREACH(dir ${dirs_storage} ${dirs_plugin})
|
||||
IF (EXISTS ${dir}/CMakeLists.txt)
|
||||
ADD_SUBDIRECTORY(${dir})
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
# Special handling for partition(not really pluggable)
|
||||
IF(NOT WITHOUT_PARTITION_STORAGE_ENGINE)
|
||||
SET (WITH_PARTITION_STORAGE_ENGINE 1)
|
||||
SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_partition_plugin")
|
||||
ENDIF(NOT WITHOUT_PARTITION_STORAGE_ENGINE)
|
||||
ADD_DEFINITIONS(${STORAGE_ENGINE_DEFS})
|
||||
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/sql/sql_builtin.cc.in
|
||||
${CMAKE_BINARY_DIR}/sql/sql_builtin.cc)
|
||||
ENDMACRO()
|
197
cmake/readline.cmake
Normal file
197
cmake/readline.cmake
Normal file
|
@ -0,0 +1,197 @@
|
|||
# Copyright (C) 2009 Sun Microsystems, Inc
|
||||
#
|
||||
# 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
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
MACRO(SET_WITH_BUNDLED_READLINE option)
|
||||
IF(option)
|
||||
SET(not_option OFF)
|
||||
ELSE()
|
||||
SET(not_option ON)
|
||||
ENDIF()
|
||||
SET(WITH_READLINE ${option} CACHE BOOL "Use bundled readline")
|
||||
SET(WITH_LIBEDIT ${not_option} CACHE BOOL "Use bundled libedit")
|
||||
ENDMACRO()
|
||||
|
||||
MACRO (MYSQL_CHECK_MULTIBYTE)
|
||||
CHECK_INCLUDE_FILE(wctype.h HAVE_WCTYPE_H)
|
||||
CHECK_INCLUDE_FILE(wchar.h HAVE_WCHAR_H)
|
||||
IF(HAVE_WCHAR_H)
|
||||
SET(CMAKE_EXTRA_INCLUDE_FILES wchar.h)
|
||||
CHECK_TYPE_SIZE(mbstate_t SIZEOF_MBSTATE_T)
|
||||
SET(CMAKE_EXTRA_INCLUDE_FILES)
|
||||
IF(SIZEOF_MBSTATE_T)
|
||||
SET(HAVE_MBSTATE_T 1)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
CHECK_C_SOURCE_COMPILES("
|
||||
#include <langinfo.h>
|
||||
int main(int ac, char **av)
|
||||
{
|
||||
char *cs = nl_langinfo(CODESET);
|
||||
return 0;
|
||||
}"
|
||||
HAVE_LANGINFO_CODESET)
|
||||
|
||||
CHECK_FUNCTION_EXISTS(mbrlen HAVE_MBRLEN)
|
||||
CHECK_FUNCTION_EXISTS(mbscmp HAVE_MBSCMP)
|
||||
CHECK_FUNCTION_EXISTS(mbsrtowcs HAVE_MBSRTOWCS)
|
||||
CHECK_FUNCTION_EXISTS(wcrtomb HAVE_WCRTOMB)
|
||||
CHECK_FUNCTION_EXISTS(mbrtowc HAVE_MBRTOWC)
|
||||
CHECK_FUNCTION_EXISTS(wcscoll HAVE_WCSCOLL)
|
||||
CHECK_FUNCTION_EXISTS(wcsdup HAVE_WCSDUP)
|
||||
CHECK_FUNCTION_EXISTS(wcwidth HAVE_WCWIDTH)
|
||||
CHECK_FUNCTION_EXISTS(wctype HAVE_WCTYPE)
|
||||
CHECK_FUNCTION_EXISTS(iswlower HAVE_ISWLOWER)
|
||||
CHECK_FUNCTION_EXISTS(iswupper HAVE_ISWUPPER)
|
||||
CHECK_FUNCTION_EXISTS(towlower HAVE_TOWLOWER)
|
||||
CHECK_FUNCTION_EXISTS(towupper HAVE_TOWUPPER)
|
||||
CHECK_FUNCTION_EXISTS(iswctype HAVE_ISWCTYPE)
|
||||
|
||||
SET(CMAKE_EXTRA_INCLUDE_FILES wchar.h)
|
||||
CHECK_TYPE_SIZE(wchar_t SIZEOF_WCHAR_T)
|
||||
IF(SIZEOF_WCHAR_T)
|
||||
SET(HAVE_WCHAR_T 1)
|
||||
ENDIF()
|
||||
|
||||
SET(CMAKE_EXTRA_INCLUDE_FILES wctype.h)
|
||||
CHECK_TYPE_SIZE(wctype_t SIZEOF_WCTYPE_T)
|
||||
IF(SIZEOF_WCTYPE_T)
|
||||
SET(HAVE_WCTYPE_T 1)
|
||||
ENDIF()
|
||||
CHECK_TYPE_SIZE(wint_t SIZEOF_WINT_T)
|
||||
IF(SIZEOF_WINT_T)
|
||||
SET(HAVE_WINT_T 1)
|
||||
ENDIF()
|
||||
SET(CMAKE_EXTRA_INCLUDE_FILES)
|
||||
|
||||
ENDMACRO()
|
||||
|
||||
MACRO (FIND_CURSES)
|
||||
INCLUDE (FindCurses)
|
||||
MARK_AS_ADVANCED(CURSES_CURSES_H_PATH CURSES_FORM_LIBRARY CURSES_HAVE_CURSES_H)
|
||||
IF(NOT CURSES_FOUND)
|
||||
MESSAGE(FATAL_ERROR "curses library not found")
|
||||
ENDIF()
|
||||
|
||||
IF(CURSES_HAVE_CURSES_H)
|
||||
SET(HAVE_CURSES_H 1 CACHE INTERNAL "")
|
||||
ELSEIF(CURSES_HAVE_NCURSES_H)
|
||||
SET(HAVE_NCURSES_H 1 CACHE INTERNAL "")
|
||||
ENDIF()
|
||||
IF(CMAKE_SYSTEM_NAME MATCHES "HP")
|
||||
# CMake uses full path to library /lib/libcurses.sl
|
||||
# On Itanium, it results into architecture mismatch+
|
||||
# the library is for PA-RISC
|
||||
SET(CURSES_LIBRARY "curses" CACHE INTERNAL "" FORCE)
|
||||
SET(CURSES_CURSES_LIBRARY "curses" CACHE INTERNAL "" FORCE)
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
MACRO (MYSQL_USE_BUNDLED_READLINE)
|
||||
SET_WITH_BUNDLED_READLINE(ON)
|
||||
SET(USE_NEW_READLINE_INTERFACE 1)
|
||||
SET(READLINE_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/cmd-line-utils)
|
||||
SET(READLINE_LIBRARY readline)
|
||||
FIND_CURSES()
|
||||
ADD_SUBDIRECTORY(${CMAKE_SOURCE_DIR}/cmd-line-utils/readline)
|
||||
ENDMACRO()
|
||||
|
||||
MACRO (MYSQL_USE_BUNDLED_LIBEDIT)
|
||||
SET_WITH_BUNDLED_READLINE(OFF)
|
||||
SET(USE_LIBEDIT_INTERFACE 1 CACHE INTERNAL "")
|
||||
SET(HAVE_HIST_ENTRY 1 CACHE INTERNAL "")
|
||||
SET(READLINE_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/cmd-line-utils/libedit")
|
||||
SET(READLINE_LIBRARY edit)
|
||||
FIND_CURSES()
|
||||
ADD_SUBDIRECTORY(${CMAKE_SOURCE_DIR}/cmd-line-utils/libedit)
|
||||
ENDMACRO()
|
||||
|
||||
MACRO (MYSQL_FIND_SYSTEM_READLINE name)
|
||||
FIND_PATH(SYSTEM_READLINE_INCLUDE_DIR readline/readline.h )
|
||||
FIND_LIBRARY(SYSTEM_READLINE_LIBRARY NAMES ${name})
|
||||
MARK_AS_ADVANCED(SYSTEM_READLINE_INCLUDE_DIR SYSTEM_READLINE_LIBRARY)
|
||||
|
||||
INCLUDE(CheckCXXSourceCompiles)
|
||||
SET(CMAKE_REQUIRES_LIBRARIES ${SYSTEM_READLINE_LIBRARY})
|
||||
|
||||
IF(SYSTEM_READLINE_LIBRARY AND SYSTEM_READLINE_INCLUDE_DIR)
|
||||
SET(SYSTEM_READLINE_FOUND 1)
|
||||
SET(CMAKE_REQUIRED_LIBRARIES ${SYSTEM_READLINE_LIBRARY})
|
||||
CHECK_CXX_SOURCE_COMPILES("
|
||||
#include <stdio.h>
|
||||
#include <readline/readline.h>
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
HIST_ENTRY entry;
|
||||
return 0;
|
||||
}"
|
||||
HAVE_HIST_ENTRY)
|
||||
|
||||
CHECK_CXX_SOURCE_COMPILES("
|
||||
#include <stdio.h>
|
||||
#include <readline/readline.h>
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
char res= *(*rl_completion_entry_function)(0,0);
|
||||
completion_matches(0,0);
|
||||
}"
|
||||
USE_LIBEDIT_INTERFACE)
|
||||
|
||||
|
||||
CHECK_CXX_SOURCE_COMPILES("
|
||||
#include <stdio.h>
|
||||
#include <readline/readline.h>
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
rl_completion_func_t *func1= (rl_completion_func_t*)0;
|
||||
rl_compentry_func_t *func2= (rl_compentry_func_t*)0;
|
||||
}"
|
||||
USE_NEW_READLINE_INTERFACE)
|
||||
|
||||
IF(USE_LIBEDIT_INTERFACE OR USE_NEW_READLINE_INTERFACE)
|
||||
SET(READLINE_LIBRARY ${SYSTEM_READLINE_LIBRARY})
|
||||
SET(READLINE_INCLUDE_DIR ${SYSTEM_READLINE_INCLUDE_DIR})
|
||||
SET(READLINE_FOUND 1)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
MACRO (MYSQL_CHECK_READLINE)
|
||||
IF (NOT WIN32)
|
||||
MYSQL_CHECK_MULTIBYTE()
|
||||
OPTION(WITH_READLINE "Use bundled readline" OFF)
|
||||
IF(NOT CYGWIN)
|
||||
# Bundled libedit does not compile on cygwin
|
||||
OPTION(WITH_LIBEDIT "Use bundled libedit" ON)
|
||||
ELSE()
|
||||
OPTION(WITH_LIBEDIT "Use bundled libedit" OFF)
|
||||
ENDIF()
|
||||
|
||||
IF(WITH_READLINE)
|
||||
MYSQL_USE_BUNDLED_READLINE()
|
||||
ELSEIF(WITH_LIBEDIT)
|
||||
MYSQL_USE_BUNDLED_LIBEDIT()
|
||||
ELSE()
|
||||
MYSQL_FIND_SYSTEM_READLINE(readline)
|
||||
IF(NOT READLINE_FOUND)
|
||||
MYSQL_FIND_SYSTEM_READLINE(edit)
|
||||
IF(NOT READLINE_FOUND)
|
||||
MESSAGE(FATAL_ERROR "Cannot find system readline or libedit libraries.Use WITH_READLINE or WITH_LIBEDIT")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDIF(NOT WIN32)
|
||||
ENDMACRO()
|
||||
|
88
cmake/ssl.cmake
Normal file
88
cmake/ssl.cmake
Normal file
|
@ -0,0 +1,88 @@
|
|||
# Copyright (C) 2009 Sun Microsystems, Inc
|
||||
#
|
||||
# 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
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
MACRO (CHANGE_SSL_SETTINGS string)
|
||||
SET(WITH_SSL ${string} CACHE STRING "Options are : no, bundled, yes (prefer os library if present otherwise use bundled), system (use os library)" FORCE)
|
||||
ENDMACRO()
|
||||
|
||||
MACRO (MYSQL_USE_BUNDLED_SSL)
|
||||
SET(INC_DIRS
|
||||
${CMAKE_SOURCE_DIR}/extra/yassl/include
|
||||
${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/include
|
||||
)
|
||||
SET(SSL_LIBRARIES yassl taocrypt)
|
||||
SET(SSL_INCLUDE_DIRS ${INC_DIRS})
|
||||
SET(SSL_INTERNAL_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/mySTL)
|
||||
SET(SSL_DEFINES "-DHAVE_YASSL -DYASSL_PURE_C -DYASSL_PREFIX -DHAVE_OPENSSL")
|
||||
CHANGE_SSL_SETTINGS("bundled")
|
||||
#Remove -fno-implicit-templates
|
||||
#(yassl sources cannot be compiled with it)
|
||||
SET(SAVE_CXX_FLAGS ${CXX_FLAGS})
|
||||
STRING(REPLACE "-fno-implicit-templates" "" CMAKE_CXX_FLAGS
|
||||
${CMAKE_CXX_FLAGS})
|
||||
ADD_SUBDIRECTORY(extra/yassl)
|
||||
ADD_SUBDIRECTORY(extra/yassl/taocrypt)
|
||||
SET(CXX_FLAGS ${SAVE_CXX_FLAGS})
|
||||
GET_TARGET_PROPERTY(src yassl SOURCES)
|
||||
FOREACH(file ${src})
|
||||
SET(SSL_SOURCES ${SSL_SOURCES} ${CMAKE_SOURCE_DIR}/extra/yassl/${file})
|
||||
ENDFOREACH()
|
||||
GET_TARGET_PROPERTY(src taocrypt SOURCES)
|
||||
FOREACH(file ${src})
|
||||
SET(SSL_SOURCES ${SSL_SOURCES} ${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/${file})
|
||||
ENDFOREACH()
|
||||
ENDMACRO()
|
||||
|
||||
# MYSQL_CHECK_SSL
|
||||
#
|
||||
# Provides the following configure options:
|
||||
# WITH_SSL=[yes|no|bundled]
|
||||
MACRO (MYSQL_CHECK_SSL)
|
||||
IF(NOT WITH_SSL)
|
||||
IF(WIN32)
|
||||
CHANGE_SSL_SETTINGS("bundled")
|
||||
ELSE()
|
||||
CHANGE_SSL_SETTINGS("no")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF(WITH_SSL STREQUAL "bundled")
|
||||
MYSQL_USE_BUNDLED_SSL()
|
||||
ELSEIF(WITH_SSL STREQUAL "system" OR WITH_SSL STREQUAL "yes")
|
||||
# Check for system library
|
||||
SET(OPENSSL_FIND_QUIETLY TRUE)
|
||||
INCLUDE(FindOpenSSL)
|
||||
FIND_LIBRARY(CRYPTO_LIBRARY crypto)
|
||||
MARK_AS_ADVANCED(CRYPTO_LIBRARY)
|
||||
INCLUDE(CheckSymbolExists)
|
||||
CHECK_SYMBOL_EXISTS(SHA512_DIGEST_LENGTH "openssl/sha.h"
|
||||
HAVE_SHA512_DIGEST_LENGTH)
|
||||
IF(OPENSSL_FOUND AND CRYPTO_LIBRARY AND HAVE_SHA512_DIGEST_LENGTH)
|
||||
SET(SSL_SOURCES "")
|
||||
SET(SSL_LIBRARIES ${OPENSSL_LIBRARIES} ${CRYPTO_LIBRARY})
|
||||
SET(SSL_INCLUDE_DIRS ${OPENSSL_INCLUDE_DIR})
|
||||
SET(SSL_INTERNAL_INCLUDE_DIRS "")
|
||||
SET(SSL_DEFINES "-DHAVE_OPENSSL")
|
||||
CHANGE_SSL_SETTINGS("system")
|
||||
ELSE()
|
||||
IF(WITH_SSL STREQUAL "system")
|
||||
MESSAGE(SEND_ERROR "Cannot find appropriate system libraries for SSL. Use WITH_SSL=bundled to enable SSL support")
|
||||
ENDIF()
|
||||
MYSQL_USE_BUNDLED_SSL()
|
||||
ENDIF()
|
||||
ELSEIF(NOT WITH_SSL STREQUAL "no")
|
||||
MESSAGE(SEND_ERROR "Wrong option for WITH_SSL. Valid values are : yes, no, bundled")
|
||||
ENDIF()
|
||||
ENDMACRO()
|
31
cmake/stack_direction.c
Normal file
31
cmake/stack_direction.c
Normal file
|
@ -0,0 +1,31 @@
|
|||
/* Copyright (C) 2009 Sun Microsystems, Inc
|
||||
|
||||
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
|
||||
the Free Software Foundation; version 2 of the License.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
|
||||
|
||||
/* Check stack direction (0-down, 1-up) */
|
||||
int f(int *a)
|
||||
{
|
||||
int b;
|
||||
return(&b > a)?1:0;
|
||||
}
|
||||
/*
|
||||
Prevent compiler optimizations by calling function
|
||||
through pointer.
|
||||
*/
|
||||
volatile int (*ptr_f)(int *) = f;
|
||||
int main()
|
||||
{
|
||||
int a;
|
||||
return ptr_f(&a);
|
||||
}
|
73
cmake/zlib.cmake
Normal file
73
cmake/zlib.cmake
Normal file
|
@ -0,0 +1,73 @@
|
|||
# Copyright (C) 2009 Sun Microsystems, Inc
|
||||
#
|
||||
# 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
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
MACRO (MYSQL_USE_BUNDLED_ZLIB)
|
||||
SET(ZLIB_LIBRARY zlib)
|
||||
SET(ZLIB_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/zlib)
|
||||
SET(ZLIB_FOUND TRUE)
|
||||
SET(WITH_ZLIB "bundled" CACHE STRING "Use bundled zlib")
|
||||
ADD_SUBDIRECTORY(zlib)
|
||||
GET_TARGET_PROPERTY(src zlib SOURCES)
|
||||
FOREACH(file ${src})
|
||||
SET(ZLIB_SOURCES ${ZLIB_SOURCES} ${CMAKE_SOURCE_DIR}/zlib/${file})
|
||||
ENDFOREACH()
|
||||
ENDMACRO()
|
||||
|
||||
# MYSQL_CHECK_ZLIB_WITH_COMPRESS
|
||||
#
|
||||
# Provides the following configure options:
|
||||
# WITH_ZLIB_BUNDLED
|
||||
# If this is set,we use bindled zlib
|
||||
# If this is not set,search for system zlib.
|
||||
# if system zlib is not found, use bundled copy
|
||||
# ZLIB_LIBRARIES, ZLIB_INCLUDE_DIR and ZLIB_SOURCES
|
||||
# are set after this macro has run
|
||||
|
||||
MACRO (MYSQL_CHECK_ZLIB_WITH_COMPRESS)
|
||||
|
||||
IF(CMAKE_SYSTEM_NAME STREQUAL "OS400" OR
|
||||
CMAKE_SYSTEM_NAME STREQUAL "AIX" OR
|
||||
CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
# Use bundled zlib on some platforms by default (system one is too
|
||||
# old or not existent)
|
||||
IF (NOT WITH_ZLIB)
|
||||
SET(WITH_ZLIB "bundled" CACHE STRING "By default use bundled zlib on this platform")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF(WITH_ZLIB STREQUAL "bundled")
|
||||
MYSQL_USE_BUNDLED_ZLIB()
|
||||
ELSE()
|
||||
SET(ZLIB_FIND_QUIETLY TRUE)
|
||||
INCLUDE(FindZLIB)
|
||||
IF(ZLIB_FOUND)
|
||||
INCLUDE(CheckFunctionExists)
|
||||
SET(CMAKE_REQUIRED_LIBRARIES z)
|
||||
CHECK_FUNCTION_EXISTS(crc32 HAVE_CRC32)
|
||||
SET(CMAKE_REQUIRED_LIBRARIES)
|
||||
IF(HAVE_CRC32)
|
||||
SET(ZLIB_LIBRARY z CACHE INTERNAL "System zlib library")
|
||||
SET(WITH_ZLIB "system" CACHE STRING "Which zlib to use (possible values are 'bundled' or 'system')")
|
||||
SET(ZLIB_SOURCES "")
|
||||
ELSE()
|
||||
SET(ZLIB_FOUND FALSE CACHE INTERNAL "Zlib found but not usable")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
IF(NOT ZLIB_FOUND)
|
||||
MYSQL_USE_BUNDLED_ZLIB()
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
SET(HAVE_COMPRESS 1)
|
||||
ENDMACRO()
|
167
cmd-line-utils/libedit/CMakeLists.txt
Normal file
167
cmd-line-utils/libedit/CMakeLists.txt
Normal file
|
@ -0,0 +1,167 @@
|
|||
# Copyright (C) 2009 Sun Microsystems, Inc
|
||||
#
|
||||
# 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
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
INCLUDE_DIRECTORIES(BEFORE ${CMAKE_CURRENT_SOURCE_DIR} )
|
||||
INCLUDE(CheckIncludeFile)
|
||||
CHECK_INCLUDE_FILES(term.h HAVE_TERM_H)
|
||||
|
||||
SET(CMAKE_REQUIRED_LIBRARIES ${CURSES_CURSES_LIBRARY})
|
||||
CHECK_CXX_SOURCE_COMPILES("
|
||||
#include <term.h>
|
||||
int main()
|
||||
{
|
||||
tgoto(0,0,0);
|
||||
return 0;
|
||||
}" HAVE_DECL_TGOTO)
|
||||
SET(CMAKE_REQUIRED_LIBRARIES)
|
||||
|
||||
|
||||
|
||||
IF(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
|
||||
#On Solaris, default awk is next to unusable while the xpg4 one is ok.
|
||||
IF(EXISTS /usr/xpg4/bin/awk)
|
||||
SET(AWK_EXECUTABLE /usr/xpg4/bin/awk)
|
||||
ENDIF()
|
||||
ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "OS400")
|
||||
#Workaround for cases, where /usr/bin/gawk is not executable
|
||||
IF(EXISTS /QOpenSys/usr/bin/awk)
|
||||
SET(AWK_EXECUTABLE /QOpenSys/usr/bin/awk)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF(NOT AWK_EXECUTABLE)
|
||||
FIND_PROGRAM(AWK_EXECUTABLE NAMES gawk awk DOC "path to the awk executable")
|
||||
ENDIF()
|
||||
|
||||
MARK_AS_ADVANCED(AWK_EXECUTABLE)
|
||||
SET(AWK ${AWK_EXECUTABLE})
|
||||
CONFIGURE_FILE(makelist.sh ${CMAKE_CURRENT_SOURCE_DIR}/makelist @ONLY)
|
||||
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
|
||||
${CURSES_INCLUDE_PATH}
|
||||
}
|
||||
)
|
||||
|
||||
SET(ASRC vi.c emacs.c common.c)
|
||||
SET(AHDR vi.h emacs.h common.h)
|
||||
|
||||
|
||||
SET(LIBEDIT_SOURCES
|
||||
chared.c el.c history.c map.c prompt.c readline.c
|
||||
search.c tokenizer.c vi.c common.c emacs.c
|
||||
hist.c key.c parse.c read.c refresh.c sig.c term.c
|
||||
tty.c help.c fcns.c filecomplete.c
|
||||
${AHDR}
|
||||
)
|
||||
|
||||
include(CheckFunctionExists)
|
||||
include(CheckIncludeFile)
|
||||
CHECK_INCLUDE_FILE(vis.h HAVE_VIS_H)
|
||||
|
||||
IF(HAVE_VIS_H)
|
||||
CHECK_FUNCTION_EXISTS(strvis HAVE_STRVIS)
|
||||
IF(NOT HAVE_STRVIS)
|
||||
SET(HAVE_VIS_H FALSE CACHE INTERNAL "" FORCE)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
CHECK_FUNCTION_EXISTS(strvis HAVE_STRVIS)
|
||||
IF(NOT HAVE_STRVIS)
|
||||
SET(LIBEDIT_SOURCES ${LIBEDIT_SOURCES} np/vis.c)
|
||||
ENDIF()
|
||||
|
||||
|
||||
CHECK_FUNCTION_EXISTS(strunvis HAVE_STRUNVIS)
|
||||
IF(NOT HAVE_STRUNVIS)
|
||||
SET(LIBEDIT_SOURCES ${LIBEDIT_SOURCES} np/unvis.c)
|
||||
ENDIF()
|
||||
|
||||
CHECK_FUNCTION_EXISTS(strlcpy HAVE_STRLCPY)
|
||||
IF(NOT HAVE_STRLCPY)
|
||||
SET(LIBEDIT_SOURCES ${LIBEDIT_SOURCES} np/strlcpy.c)
|
||||
ENDIF()
|
||||
|
||||
|
||||
CHECK_FUNCTION_EXISTS(strlcat HAVE_STRLCAT)
|
||||
IF(NOT HAVE_STRLCAT)
|
||||
SET(LIBEDIT_SOURCES ${LIBEDIT_SOURCES} np/strlcat.c)
|
||||
ENDIF()
|
||||
|
||||
|
||||
CHECK_FUNCTION_EXISTS(fgetln HAVE_FGETLN)
|
||||
IF(NOT HAVE_FGETLN)
|
||||
SET(LIBEDIT_SOURCES ${LIBEDIT_SOURCES} np/fgetln.c)
|
||||
ENDIF()
|
||||
|
||||
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/vi.h
|
||||
COMMAND sh ./makelist -h vi.c > vi.h
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
DEPENDS vi.c)
|
||||
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/emacs.h
|
||||
COMMAND sh ./makelist -h emacs.c > emacs.h
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
DEPENDS emacs.c)
|
||||
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/common.h
|
||||
COMMAND sh ./makelist -h common.c > common.h
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
DEPENDS common.c)
|
||||
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/help.c
|
||||
COMMAND sh ./makelist -bc ${ASRC} > help.c
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
DEPENDS ${ASRC}
|
||||
)
|
||||
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/help.h
|
||||
COMMAND sh ./makelist -bh ${ASRC} > help.h
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
DEPENDS ${ASRC}
|
||||
)
|
||||
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/fcns.h
|
||||
COMMAND sh ./makelist -fh ${AHDR} > fcns.h
|
||||
VERBATIM
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
DEPENDS ${AHDR}
|
||||
)
|
||||
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/fcns.c
|
||||
COMMAND sh ./makelist -fc ${AHDR} > fcns.c
|
||||
VERBATIM
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
DEPENDS ${AHDR}
|
||||
)
|
||||
|
||||
|
||||
ADD_CUSTOM_TARGET(
|
||||
GenLibeditSource
|
||||
DEPENDS
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/vi.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/emacs.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/common.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/help.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/help.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/fcns.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/fcns.h
|
||||
)
|
||||
|
||||
ADD_LIBRARY(edit ${LIBEDIT_SOURCES})
|
||||
ADD_DEPENDENCIES(edit GenLibeditSource)
|
||||
TARGET_LINK_LIBRARIES(edit ${CURSES_LIBRARY})
|
||||
|
|
@ -23,7 +23,7 @@ noinst_HEADERS = chared.h el.h el_term.h histedit.h key.h parse.h refresh.h sig.
|
|||
sys.h config.h hist.h map.h prompt.h read.h \
|
||||
search.h tty.h filecomplete.h np/vis.h
|
||||
|
||||
EXTRA_DIST = makelist.sh
|
||||
EXTRA_DIST = makelist.sh CMakeLists.txt
|
||||
|
||||
CLEANFILES = makelist common.h emacs.h vi.h fcns.h help.h fcns.c help.c
|
||||
|
||||
|
|
60
cmd-line-utils/readline/CMakeLists.txt
Normal file
60
cmd-line-utils/readline/CMakeLists.txt
Normal file
|
@ -0,0 +1,60 @@
|
|||
# Copyright (C) 2007 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
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
|
||||
${CMAKE_SOURCE_DIR}/cmd-line-utils)
|
||||
|
||||
ADD_DEFINITIONS(-DHAVE_CONFIG_H -DNO_KILL_INTR -DMYSQL_CLIENT_NO_THREADS)
|
||||
|
||||
INCLUDE_DIRECTORIES(${CURSES_INCLUDE_PATH})
|
||||
|
||||
ADD_LIBRARY(readline
|
||||
readline.c
|
||||
funmap.c
|
||||
keymaps.c
|
||||
vi_mode.c
|
||||
parens.c
|
||||
rltty.c
|
||||
complete.c
|
||||
bind.c
|
||||
isearch.c
|
||||
display.c
|
||||
signals.c
|
||||
util.c
|
||||
kill.c
|
||||
undo.c
|
||||
macro.c
|
||||
input.c
|
||||
callback.c
|
||||
terminal.c
|
||||
xmalloc.c
|
||||
history.c
|
||||
histsearch.c
|
||||
histexpand.c
|
||||
histfile.c
|
||||
nls.c
|
||||
search.c
|
||||
shell.c
|
||||
tilde.c
|
||||
misc.c
|
||||
text.c
|
||||
mbutil.c
|
||||
compat.c
|
||||
savestring.c
|
||||
)
|
||||
|
||||
# Declare dependency
|
||||
# so every executable that links with readline links with curses as well
|
||||
TARGET_LINK_LIBRARIES(readline ${CURSES_LIBRARY})
|
|
@ -29,7 +29,7 @@ noinst_HEADERS = readline.h chardefs.h keymaps.h \
|
|||
tilde.h rlconf.h rltty.h ansi_stdlib.h \
|
||||
tcap.h rlstdc.h
|
||||
|
||||
EXTRA_DIST= emacs_keymap.c vi_keymap.c
|
||||
EXTRA_DIST= emacs_keymap.c vi_keymap.c CMakeLists.txt
|
||||
|
||||
DEFS = -DMYSQL_CLIENT_NO_THREADS -DHAVE_CONFIG_H -DNO_KILL_INTR
|
||||
|
||||
|
|
618
config.h.cmake
Normal file
618
config.h.cmake
Normal file
|
@ -0,0 +1,618 @@
|
|||
/* Copyright (C) 2009 Sun Microsystems, Inc
|
||||
|
||||
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
|
||||
the Free Software Foundation; version 2 of the License.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
|
||||
|
||||
#ifndef MY_CONFIG_H
|
||||
#define MY_CONFIG_H
|
||||
#cmakedefine DOT_FRM_VERSION @DOT_FRM_VERSION@
|
||||
/* Headers we may want to use. */
|
||||
#cmakedefine STDC_HEADERS 1
|
||||
#cmakedefine HAVE_ALLOCA_H 1
|
||||
#cmakedefine HAVE_AIO_H 1
|
||||
#cmakedefine HAVE_ARPA_INET_H 1
|
||||
#cmakedefine HAVE_BSEARCH 1
|
||||
#cmakedefine HAVE_CRYPT_H 1
|
||||
#cmakedefine HAVE_CURSES_H 1
|
||||
#cmakedefine HAVE_CXXABI_H 1
|
||||
#cmakedefine HAVE_NCURSES_H 1
|
||||
#cmakedefine HAVE_DIRENT_H 1
|
||||
#cmakedefine HAVE_DLFCN_H 1
|
||||
#cmakedefine HAVE_EXECINFO_H 1
|
||||
#cmakedefine HAVE_FCNTL_H 1
|
||||
#cmakedefine HAVE_FENV_H 1
|
||||
#cmakedefine HAVE_FLOAT_H 1
|
||||
#cmakedefine HAVE_FLOATINGPOINT_H 1
|
||||
#cmakedefine HAVE_FNMATCH_H 1
|
||||
#cmakedefine HAVE_FPU_CONTROL_H 1
|
||||
#cmakedefine HAVE_GRP_H 1
|
||||
#cmakedefine HAVE_EXPLICIT_TEMPLATE_INSTANTIATION 1
|
||||
#cmakedefine HAVE_IEEEFP_H 1
|
||||
#cmakedefine HAVE_INTTYPES_H 1
|
||||
#cmakedefine HAVE_LIMITS_H 1
|
||||
#cmakedefine HAVE_LOCALE_H 1
|
||||
#cmakedefine HAVE_MALLOC_H 1
|
||||
#cmakedefine HAVE_MEMORY_H 1
|
||||
#cmakedefine HAVE_NETINET_IN_H 1
|
||||
#cmakedefine HAVE_PATHS_H 1
|
||||
#cmakedefine HAVE_PORT_H 1
|
||||
#cmakedefine HAVE_PWD_H 1
|
||||
#cmakedefine HAVE_SCHED_H 1
|
||||
#cmakedefine HAVE_SELECT_H 1
|
||||
#cmakedefine HAVE_SOLARIS_LARGE_PAGES 1
|
||||
#cmakedefine HAVE_STDDEF_H 1
|
||||
#cmakedefine HAVE_STDLIB_H 1
|
||||
#cmakedefine HAVE_STDARG_H 1
|
||||
#cmakedefine HAVE_STRINGS_H 1
|
||||
#cmakedefine HAVE_STRING_H 1
|
||||
#cmakedefine HAVE_STDINT_H 1
|
||||
#cmakedefine HAVE_SEMAPHORE_H 1
|
||||
#cmakedefine HAVE_SYNCH_H 1
|
||||
#cmakedefine HAVE_SYSENT_H 1
|
||||
#cmakedefine HAVE_SYS_DIR_H 1
|
||||
#cmakedefine HAVE_SYS_CDEFS_H 1
|
||||
#cmakedefine HAVE_SYS_FILE_H 1
|
||||
#cmakedefine HAVE_SYS_FPU_H 1
|
||||
#cmakedefine HAVE_SYS_IOCTL_H 1
|
||||
#cmakedefine HAVE_SYS_IPC_H 1
|
||||
#cmakedefine HAVE_SYS_MALLOC_H 1
|
||||
#cmakedefine HAVE_SYS_MMAN_H 1
|
||||
#cmakedefine HAVE_SYS_PTE_H 1
|
||||
#cmakedefine HAVE_SYS_PTEM_H 1
|
||||
#cmakedefine HAVE_SYS_PRCTL_H 1
|
||||
#cmakedefine HAVE_SYS_RESOURCE_H 1
|
||||
#cmakedefine HAVE_SYS_SELECT_H 1
|
||||
#cmakedefine HAVE_SYS_SHM_H 1
|
||||
#cmakedefine HAVE_SYS_SOCKET_H 1
|
||||
#cmakedefine HAVE_SYS_STAT_H 1
|
||||
#cmakedefine HAVE_SYS_STREAM_H 1
|
||||
#cmakedefine HAVE_SYS_TERMCAP_H 1
|
||||
#cmakedefine HAVE_SYS_TIMEB_H 1
|
||||
#cmakedefine HAVE_SYS_TYPES_H 1
|
||||
#cmakedefine HAVE_SYS_UN_H 1
|
||||
#cmakedefine HAVE_SYS_VADVISE_H 1
|
||||
#cmakedefine HAVE_TERM_H 1
|
||||
#cmakedefine HAVE_TERMIOS_H 1
|
||||
#cmakedefine HAVE_TERMIO_H 1
|
||||
#cmakedefine HAVE_TERMCAP_H 1
|
||||
#cmakedefine HAVE_UNISTD_H 1
|
||||
#cmakedefine HAVE_UTIME_H 1
|
||||
#cmakedefine HAVE_VARARGS_H 1
|
||||
#cmakedefine HAVE_VIS_H 1
|
||||
#cmakedefine HAVE_SYS_UTIME_H 1
|
||||
#cmakedefine HAVE_SYS_WAIT_H 1
|
||||
#cmakedefine HAVE_SYS_PARAM_H 1
|
||||
|
||||
/* Libraries */
|
||||
#cmakedefine HAVE_LIBPTHREAD 1
|
||||
#cmakedefine HAVE_LIBM 1
|
||||
#cmakedefine HAVE_LIBDL 1
|
||||
#cmakedefine HAVE_LIBRT 1
|
||||
#cmakedefine HAVE_LIBSOCKET 1
|
||||
#cmakedefine HAVE_LIBNSL 1
|
||||
#cmakedefine HAVE_LIBCRYPT 1
|
||||
#cmakedefine HAVE_LIBMTMALLOC 1
|
||||
#cmakedefine HAVE_LIBWRAP 1
|
||||
/* Does "struct timespec" have a "sec" and "nsec" field? */
|
||||
#cmakedefine HAVE_TIMESPEC_TS_SEC 1
|
||||
|
||||
/* Readline */
|
||||
#cmakedefine HAVE_HIST_ENTRY 1
|
||||
#cmakedefine USE_LIBEDIT_INTERFACE 1
|
||||
#cmakedefine USE_NEW_READLINE_INTERFACE 1
|
||||
|
||||
#cmakedefine FIONREAD_IN_SYS_IOCTL 1
|
||||
#cmakedefine GWINSZ_IN_SYS_IOCTL 1
|
||||
#cmakedefine TIOCSTAT_IN_SYS_IOCTL 1
|
||||
|
||||
/* Functions we may want to use. */
|
||||
#cmakedefine HAVE_AIOWAIT 1
|
||||
#cmakedefine HAVE_ALARM 1
|
||||
#cmakedefine HAVE_ALLOCA 1
|
||||
#cmakedefine HAVE_BCMP 1
|
||||
#cmakedefine HAVE_BFILL 1
|
||||
#cmakedefine HAVE_BMOVE 1
|
||||
#cmakedefine HAVE_BZERO 1
|
||||
#cmakedefine HAVE_INDEX 1
|
||||
#cmakedefine HAVE_CLOCK_GETTIME 1
|
||||
#cmakedefine HAVE_CRYPT 1
|
||||
#cmakedefine HAVE_CUSERID 1
|
||||
#cmakedefine HAVE_DIRECTIO 1
|
||||
#cmakedefine HAVE_DLERROR 1
|
||||
#cmakedefine HAVE_DLOPEN 1
|
||||
#cmakedefine HAVE_DOPRNT 1
|
||||
#cmakedefine HAVE_FCHMOD 1
|
||||
#cmakedefine HAVE_FCNTL 1
|
||||
#cmakedefine HAVE_FCONVERT 1
|
||||
#cmakedefine HAVE_FDATASYNC 1
|
||||
#cmakedefine HAVE_FESETROUND 1
|
||||
#cmakedefine HAVE_FINITE 1
|
||||
#cmakedefine HAVE_FP_EXCEPT 1
|
||||
#cmakedefine HAVE_FPSETMASK 1
|
||||
#cmakedefine HAVE_FSEEKO 1
|
||||
#cmakedefine HAVE_FSYNC 1
|
||||
#cmakedefine HAVE_GETADDRINFO 1
|
||||
#cmakedefine HAVE_GETCWD 1
|
||||
#cmakedefine HAVE_GETHOSTBYADDR_R 1
|
||||
#cmakedefine HAVE_GETHOSTBYNAME_R 1
|
||||
#cmakedefine HAVE_GETHRTIME 1
|
||||
#cmakedefine HAVE_GETLINE 1
|
||||
#cmakedefine HAVE_GETNAMEINFO 1
|
||||
#cmakedefine HAVE_GETPAGESIZE 1
|
||||
#cmakedefine HAVE_GETPASS 1
|
||||
#cmakedefine HAVE_GETPASSPHRASE 1
|
||||
#cmakedefine HAVE_GETPWNAM 1
|
||||
#cmakedefine HAVE_GETPWUID 1
|
||||
#cmakedefine HAVE_GETRLIMIT 1
|
||||
#cmakedefine HAVE_GETRUSAGE 1
|
||||
#cmakedefine HAVE_GETTIMEOFDAY 1
|
||||
#cmakedefine HAVE_GETWD 1
|
||||
#cmakedefine HAVE_GMTIME_R 1
|
||||
#cmakedefine gmtime_r @gmtime_r@
|
||||
#cmakedefine HAVE_INITGROUPS 1
|
||||
#cmakedefine HAVE_ISSETUGID 1
|
||||
#cmakedefine HAVE_ISNAN 1
|
||||
#cmakedefine HAVE_ISINF 1
|
||||
#cmakedefine HAVE_LARGE_PAGE_OPTION 1
|
||||
#cmakedefine HAVE_LDIV 1
|
||||
#cmakedefine HAVE_LRAND48 1
|
||||
#cmakedefine HAVE_LOCALTIME_R 1
|
||||
#cmakedefine HAVE_LOG2 1
|
||||
#cmakedefine HAVE_LONGJMP 1
|
||||
#cmakedefine HAVE_LSTAT 1
|
||||
#cmakedefine HAVE_NPTL 1
|
||||
#cmakedefine HAVE_NL_LANGINFO 1
|
||||
#cmakedefine HAVE_MADVISE 1
|
||||
#cmakedefine HAVE_DECL_MADVISE 1
|
||||
#cmakedefine HAVE_DECL_TGOTO 1
|
||||
#cmakedefine HAVE_DECL_MHA_MAPSIZE_VA
|
||||
#cmakedefine HAVE_MALLINFO 1
|
||||
#cmakedefine HAVE_MEMCPY 1
|
||||
#cmakedefine HAVE_MEMMOVE 1
|
||||
#cmakedefine HAVE_MKSTEMP 1
|
||||
#cmakedefine HAVE_MLOCKALL 1
|
||||
#cmakedefine HAVE_MMAP 1
|
||||
#cmakedefine HAVE_MMAP64 1
|
||||
#cmakedefine HAVE_PERROR 1
|
||||
#cmakedefine HAVE_POLL 1
|
||||
#cmakedefine HAVE_PORT_CREATE 1
|
||||
#cmakedefine HAVE_POSIX_FALLOCATE 1
|
||||
#cmakedefine HAVE_PREAD 1
|
||||
#cmakedefine HAVE_PAUSE_INSTRUCTION 1
|
||||
#cmakedefine HAVE_FAKE_PAUSE_INSTRUCTION 1
|
||||
#cmakedefine HAVE_PTHREAD_ATTR_CREATE 1
|
||||
#cmakedefine HAVE_PTHREAD_ATTR_GETSTACKSIZE 1
|
||||
#cmakedefine HAVE_PTHREAD_ATTR_SETPRIO 1
|
||||
#cmakedefine HAVE_PTHREAD_ATTR_SETSCHEDPARAM 1
|
||||
#cmakedefine HAVE_PTHREAD_ATTR_SETSCOPE 1
|
||||
#cmakedefine HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
|
||||
#cmakedefine HAVE_PTHREAD_CONDATTR_CREATE 1
|
||||
#cmakedefine HAVE_PTHREAD_CONDATTR_SETCLOCK 1
|
||||
#cmakedefine HAVE_PTHREAD_INIT 1
|
||||
#cmakedefine HAVE_PTHREAD_KEY_DELETE 1
|
||||
#cmakedefine HAVE_PTHREAD_KEY_DELETE 1
|
||||
#cmakedefine HAVE_PTHREAD_KILL 1
|
||||
#cmakedefine HAVE_PTHREAD_RWLOCK_RDLOCK 1
|
||||
#cmakedefine HAVE_PTHREAD_SETPRIO_NP 1
|
||||
#cmakedefine HAVE_PTHREAD_SETSCHEDPARAM 1
|
||||
#cmakedefine HAVE_PTHREAD_SIGMASK 1
|
||||
#cmakedefine HAVE_PTHREAD_THREADMASK 1
|
||||
#cmakedefine HAVE_PTHREAD_YIELD_NP 1
|
||||
#cmakedefine HAVE_PTHREAD_YIELD_ZERO_ARG 1
|
||||
#cmakedefine HAVE_PUTENV 1
|
||||
#cmakedefine HAVE_RE_COMP 1
|
||||
#cmakedefine HAVE_REGCOMP 1
|
||||
#cmakedefine HAVE_READDIR_R 1
|
||||
#cmakedefine HAVE_READLINK 1
|
||||
#cmakedefine HAVE_REALPATH 1
|
||||
#cmakedefine HAVE_RENAME 1
|
||||
#cmakedefine HAVE_RINT 1
|
||||
#cmakedefine HAVE_RWLOCK_INIT 1
|
||||
#cmakedefine HAVE_SCHED_YIELD 1
|
||||
#cmakedefine HAVE_SELECT 1
|
||||
#cmakedefine HAVE_SETFD 1
|
||||
#cmakedefine HAVE_SETENV 1
|
||||
#cmakedefine HAVE_SETLOCALE 1
|
||||
#cmakedefine HAVE_SIGADDSET 1
|
||||
#cmakedefine HAVE_SIGEMPTYSET 1
|
||||
#cmakedefine HAVE_SIGHOLD 1
|
||||
#cmakedefine HAVE_SIGSET 1
|
||||
#cmakedefine HAVE_SIGSET_T 1
|
||||
#cmakedefine HAVE_SIGACTION 1
|
||||
#cmakedefine HAVE_SIGTHREADMASK 1
|
||||
#cmakedefine HAVE_SIGWAIT 1
|
||||
#cmakedefine HAVE_SLEEP 1
|
||||
#cmakedefine HAVE_SNPRINTF 1
|
||||
#cmakedefine HAVE_STPCPY 1
|
||||
#cmakedefine HAVE_STRERROR 1
|
||||
#cmakedefine HAVE_STRCOLL 1
|
||||
#cmakedefine HAVE_STRSIGNAL 1
|
||||
#cmakedefine HAVE_STRLCPY 1
|
||||
#cmakedefine HAVE_STRLCAT 1
|
||||
#cmakedefine HAVE_FGETLN 1
|
||||
#cmakedefine HAVE_STRNLEN 1
|
||||
#cmakedefine HAVE_STRPBRK 1
|
||||
#cmakedefine HAVE_STRSEP 1
|
||||
#cmakedefine HAVE_STRSTR 1
|
||||
#cmakedefine HAVE_STRTOK_R 1
|
||||
#cmakedefine HAVE_STRTOL 1
|
||||
#cmakedefine HAVE_STRTOLL 1
|
||||
#cmakedefine HAVE_STRTOUL 1
|
||||
#cmakedefine HAVE_STRTOULL 1
|
||||
#cmakedefine HAVE_SHMAT 1
|
||||
#cmakedefine HAVE_SHMCTL 1
|
||||
#cmakedefine HAVE_SHMDT 1
|
||||
#cmakedefine HAVE_SHMGET 1
|
||||
#cmakedefine HAVE_TELL 1
|
||||
#cmakedefine HAVE_TEMPNAM 1
|
||||
#cmakedefine HAVE_THR_SETCONCURRENCY 1
|
||||
#cmakedefine HAVE_THR_YIELD 1
|
||||
#cmakedefine HAVE_VALLOC 1
|
||||
#define HAVE_VIO_READ_BUFF 1
|
||||
#cmakedefine HAVE_VASPRINTF 1
|
||||
#cmakedefine HAVE_VPRINTF 1
|
||||
#cmakedefine HAVE_VSNPRINTF 1
|
||||
#cmakedefine HAVE_FTRUNCATE 1
|
||||
#cmakedefine HAVE_TZNAME 1
|
||||
#cmakedefine HAVE_AIO_READ 1
|
||||
/* Symbols we may use */
|
||||
#cmakedefine HAVE_SYS_ERRLIST 1
|
||||
/* used by stacktrace functions */
|
||||
#cmakedefine HAVE_BSS_START 1
|
||||
#cmakedefine HAVE_BACKTRACE 1
|
||||
#cmakedefine HAVE_BACKTRACE_SYMBOLS 1
|
||||
#cmakedefine HAVE_BACKTRACE_SYMBOLS_FD 1
|
||||
#cmakedefine HAVE_STRUCT_SOCKADDR_IN6 1
|
||||
#cmakedefine HAVE_STRUCT_IN6_ADDR 1
|
||||
#cmakedefine HAVE_NETINET_IN6_H 1
|
||||
#cmakedefine HAVE_IPV6 1
|
||||
#cmakedefine ss_family @ss_family@
|
||||
#cmakedefine HAVE_TIMESPEC_TS_SEC 1
|
||||
#cmakedefine STRUCT_DIRENT_HAS_D_INO 1
|
||||
#cmakedefine STRUCT_DIRENT_HAS_D_NAMLEN 1
|
||||
#cmakedefine SPRINTF_RETURNS_INT 1
|
||||
|
||||
#define USE_MB 1
|
||||
#define USE_MB_IDENT 1
|
||||
|
||||
|
||||
|
||||
/* Types we may use */
|
||||
#cmakedefine SIZEOF_CHAR @SIZEOF_CHAR@
|
||||
#if SIZEOF_CHAR
|
||||
# define HAVE_CHAR 1
|
||||
#endif
|
||||
|
||||
#cmakedefine SIZEOF_CHARP @SIZEOF_CHARP@
|
||||
#if SIZEOF_CHARP
|
||||
#define HAVE_CHARP 1
|
||||
#define SIZEOF_VOIDP SIZEOF_CHARP
|
||||
#endif
|
||||
|
||||
#cmakedefine SIZEOF_SHORT @SIZEOF_SHORT@
|
||||
#if SIZEOF_SHORT
|
||||
# define HAVE_SHORT 1
|
||||
#endif
|
||||
|
||||
#cmakedefine SIZEOF_INT @SIZEOF_INT@
|
||||
#if SIZEOF_INT
|
||||
# define HAVE_INT 1
|
||||
#endif
|
||||
|
||||
#cmakedefine SIZEOF_LONG @SIZEOF_LONG@
|
||||
#if SIZEOF_LONG
|
||||
# define HAVE_LONG 1
|
||||
#endif
|
||||
|
||||
#cmakedefine SIZEOF_LONG_LONG @SIZEOF_LONG_LONG@
|
||||
#if SIZEOF_LONG_LONG
|
||||
# define HAVE_LONG_LONG 1
|
||||
#endif
|
||||
|
||||
#cmakedefine SIZEOF_OFF_T @SIZEOF_OFF_T@
|
||||
#if SIZEOF_OFF_T
|
||||
#define HAVE_OFF_T 1
|
||||
#endif
|
||||
|
||||
#cmakedefine SIZEOF_SIGSET_T @SIZEOF_SIGSET_T@
|
||||
#if SIZEOF_SIGSET_T
|
||||
#define HAVE_SIGSET_T 1
|
||||
#endif
|
||||
|
||||
#cmakedefine SIZEOF_SIZE_T @SIZEOF_SIZE_T@
|
||||
#if SIZEOF_SIZE_T
|
||||
#define HAVE_SIZE_T 1
|
||||
#endif
|
||||
|
||||
#cmakedefine SIZEOF_UCHAR @SIZEOF_UCHAR@
|
||||
#if SIZEOF_UCHAR
|
||||
#define HAVE_UCHAR 1
|
||||
#endif
|
||||
|
||||
#cmakedefine SIZEOF_UINT @SIZEOF_UINT@
|
||||
#if SIZEOF_UINT
|
||||
#define HAVE_UINT 1
|
||||
#endif
|
||||
|
||||
#cmakedefine SIZEOF_ULONG @SIZEOF_ULONG@
|
||||
#if SIZEOF_ULONG
|
||||
#define HAVE_ULONG 1
|
||||
#endif
|
||||
|
||||
#cmakedefine SIZEOF_INT8 @SIZEOF_INT8@
|
||||
#if SIZEOF_INT8
|
||||
#define HAVE_INT8 1
|
||||
#endif
|
||||
#cmakedefine SIZEOF_UINT8 @SIZEOF_UINT8@
|
||||
#if SIZEOF_UINT8
|
||||
#define HAVE_UINT8 1
|
||||
#endif
|
||||
|
||||
#cmakedefine SIZEOF_INT16 @SIZEOF_INT16@
|
||||
#if SIZEOF_INT16
|
||||
# define HAVE_INT16 1
|
||||
#endif
|
||||
#cmakedefine SIZEOF_UINT16 @SIZEOF_UINT16@
|
||||
#if SIZEOF_UINT16
|
||||
#define HAVE_UINT16 1
|
||||
#endif
|
||||
|
||||
#cmakedefine SIZEOF_INT32 @SIZEOF_INT32@
|
||||
#if SIZEOF_INT32
|
||||
#define HAVE_INT32 1
|
||||
#endif
|
||||
#cmakedefine SIZEOF_UINT32 @SIZEOF_UINT32@
|
||||
#if SIZEOF_UINT32
|
||||
#define HAVE_UINT32 1
|
||||
#endif
|
||||
#cmakedefine SIZEOF_U_INT32_T @SIZEOF_U_INT32_T@
|
||||
#if SIZEOF_U_INT32_T
|
||||
#define HAVE_U_INT32_T 1
|
||||
#endif
|
||||
|
||||
#cmakedefine SIZEOF_INT64 @SIZEOF_INT64@
|
||||
#if SIZEOF_INT64
|
||||
#define HAVE_INT64 1
|
||||
#endif
|
||||
#cmakedefine SIZEOF_UINT64 @SIZEOF_UINT64@
|
||||
#if SIZEOF_UINT64
|
||||
#define HAVE_UINT64 1
|
||||
#endif
|
||||
|
||||
#cmakedefine SOCKET_SIZE_TYPE @SOCKET_SIZE_TYPE@
|
||||
|
||||
#cmakedefine SIZEOF_BOOL @SIZEOF_BOOL@
|
||||
#if SIZEOF_BOOL
|
||||
#define HAVE_BOOL 1
|
||||
#endif
|
||||
#cmakedefine HAVE_MBSTATE_T
|
||||
|
||||
#define MAX_INDEXES 64
|
||||
|
||||
#cmakedefine QSORT_TYPE_IS_VOID 1
|
||||
#define RETQSORTTYPE void
|
||||
|
||||
#cmakedefine SIGNAL_RETURN_TYPE_IS_VOID 1
|
||||
#define RETSIGTYPE void
|
||||
#if SIGNAL_RETURN_TYPE_IS_VOID
|
||||
#define VOID_SIGHANDLER 1
|
||||
#endif
|
||||
#define STRUCT_RLIMIT struct rlimit
|
||||
|
||||
#cmakedefine WORDS_BIGENDIAN 1
|
||||
|
||||
/* Define to `__inline__' or `__inline' if that's what the C compiler calls
|
||||
it, or to nothing if 'inline' is not supported under any name. */
|
||||
#cmakedefine C_HAS_inline 1
|
||||
#if !(C_HAS_inline)
|
||||
#ifndef __cplusplus
|
||||
# define inline @C_INLINE@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#cmakedefine TARGET_OS_LINUX 1
|
||||
#cmakedefine TARGET_OS_SOLARIS 1
|
||||
|
||||
#cmakedefine HAVE_WCTYPE_H 1
|
||||
#cmakedefine HAVE_WCHAR_H 1
|
||||
#cmakedefine HAVE_LANGINFO_H 1
|
||||
#cmakedefine HAVE_MBRLEN
|
||||
#cmakedefine HAVE_MBSCMP
|
||||
#cmakedefine HAVE_MBSRTOWCS
|
||||
#cmakedefine HAVE_WCRTOMB
|
||||
#cmakedefine HAVE_MBRTOWC
|
||||
#cmakedefine HAVE_WCSCOLL
|
||||
#cmakedefine HAVE_WCSDUP
|
||||
#cmakedefine HAVE_WCWIDTH
|
||||
#cmakedefine HAVE_WCTYPE
|
||||
#cmakedefine HAVE_ISWLOWER 1
|
||||
#cmakedefine HAVE_ISWUPPER 1
|
||||
#cmakedefine HAVE_TOWLOWER 1
|
||||
#cmakedefine HAVE_TOWUPPER 1
|
||||
#cmakedefine HAVE_ISWCTYPE 1
|
||||
#cmakedefine HAVE_WCHAR_T 1
|
||||
#cmakedefine HAVE_WCTYPE_T 1
|
||||
#cmakedefine HAVE_WINT_T 1
|
||||
|
||||
|
||||
#cmakedefine HAVE_STRCASECMP 1
|
||||
#cmakedefine HAVE_STRNCASECMP 1
|
||||
#cmakedefine HAVE_STRDUP 1
|
||||
#cmakedefine HAVE_LANGINFO_CODESET
|
||||
#cmakedefine HAVE_TCGETATTR 1
|
||||
#cmakedefine HAVE_FLOCKFILE 1
|
||||
|
||||
#cmakedefine HAVE_WEAK_SYMBOL 1
|
||||
#cmakedefine HAVE_ABI_CXA_DEMANGLE 1
|
||||
|
||||
|
||||
#cmakedefine HAVE_POSIX_SIGNALS 1
|
||||
#cmakedefine HAVE_BSD_SIGNALS 1
|
||||
#cmakedefine HAVE_SVR3_SIGNALS 1
|
||||
#cmakedefine HAVE_V7_SIGNALS 1
|
||||
|
||||
|
||||
#cmakedefine HAVE_SOLARIS_STYLE_GETHOST 1
|
||||
#cmakedefine HAVE_GETHOSTBYNAME_R_GLIBC2_STYLE 1
|
||||
#cmakedefine HAVE_GETHOSTBYNAME_R_RETURN_INT 1
|
||||
|
||||
#cmakedefine MY_ATOMIC_MODE_DUMMY 1
|
||||
#cmakedefine MY_ATOMIC_MODE_RWLOCKS 1
|
||||
#cmakedefine HAVE_GCC_ATOMIC_BUILTINS 1
|
||||
#cmakedefine HAVE_SOLARIS_ATOMIC 1
|
||||
#cmakedefine HAVE_DECL_SHM_HUGETLB 1
|
||||
#cmakedefine HAVE_LARGE_PAGES 1
|
||||
#cmakedefine HUGETLB_USE_PROC_MEMINFO 1
|
||||
#cmakedefine NO_FCNTL_NONBLOCK 1
|
||||
|
||||
#cmakedefine _LARGE_FILES 1
|
||||
#cmakedefine _LARGEFILE_SOURCE 1
|
||||
#cmakedefine _LARGEFILE64_SOURCE 1
|
||||
#cmakedefine _FILE_OFFSET_BITS @_FILE_OFFSET_BITS@
|
||||
|
||||
#cmakedefine TIME_WITH_SYS_TIME 1
|
||||
|
||||
#cmakedefine STACK_DIRECTION @STACK_DIRECTION@
|
||||
|
||||
#define THREAD 1
|
||||
#define THREAD_SAFE_CLIENT 1
|
||||
|
||||
#define SYSTEM_TYPE "@SYSTEM_TYPE@"
|
||||
#define MACHINE_TYPE "@CMAKE_SYSTEM_PROCESSOR@"
|
||||
#cmakedefine HAVE_DTRACE 1
|
||||
|
||||
#cmakedefine SIGNAL_WITH_VIO_CLOSE 1
|
||||
|
||||
/* Windows stuff, mostly functions, that have Posix analogs but named differently */
|
||||
#cmakedefine S_IROTH @S_IROTH@
|
||||
#cmakedefine S_IFIFO @S_IFIFO@
|
||||
#cmakedefine IPPROTO_IPV6 @IPPROTO_IPV6@
|
||||
#cmakedefine IPV6_V6ONLY @IPV6_V6ONLY@
|
||||
#cmakedefine sigset_t @sigset_t@
|
||||
#cmakedefine mode_t @mode_t@
|
||||
#cmakedefine SIGQUIT @SIGQUIT@
|
||||
#cmakedefine SIGPIPE @SIGPIPE@
|
||||
#cmakedefine isnan @isnan@
|
||||
#cmakedefine finite @finite@
|
||||
#cmakedefine popen @popen@
|
||||
#cmakedefine pclose @pclose@
|
||||
#cmakedefine ssize_t @ssize_t@
|
||||
#cmakedefine strcasecmp @strcasecmp@
|
||||
#cmakedefine strncasecmp @strncasecmp@
|
||||
#cmakedefine snprintf @snprintf@
|
||||
#cmakedefine strtok_r @strtok_r@
|
||||
#cmakedefine strtoll @strtoll@
|
||||
#cmakedefine strtoull @strtoull@
|
||||
|
||||
|
||||
|
||||
/*
|
||||
MySQL features
|
||||
*/
|
||||
#cmakedefine ENABLED_LOCAL_INFILE 1
|
||||
#cmakedefine ENABLED_PROFILING 1
|
||||
#cmakedefine EXTRA_DEBUG 1
|
||||
#cmakedefine BACKUP_TEST 1
|
||||
#cmakedefine CYBOZU 1
|
||||
|
||||
/* Character sets and collations */
|
||||
#cmakedefine MYSQL_DEFAULT_CHARSET_NAME "latin1"
|
||||
#cmakedefine MYSQL_DEFAULT_COLLATION_NAME "latin1_swedish_ci"
|
||||
|
||||
#cmakedefine USE_MB 1
|
||||
#cmakedefine USE_MB_IDENT 1
|
||||
#cmakedefine USE_STRCOLL 1
|
||||
|
||||
#cmakedefine HAVE_CHARSET_armscii8 1
|
||||
#cmakedefine HAVE_CHARSET_ascii
|
||||
#cmakedefine HAVE_CHARSET_big5 1
|
||||
#cmakedefine HAVE_CHARSET_cp1250 1
|
||||
#cmakedefine HAVE_CHARSET_cp1251 1
|
||||
#cmakedefine HAVE_CHARSET_cp1256 1
|
||||
#cmakedefine HAVE_CHARSET_cp1257 1
|
||||
#cmakedefine HAVE_CHARSET_cp850 1
|
||||
#cmakedefine HAVE_CHARSET_cp852 1
|
||||
#cmakedefine HAVE_CHARSET_cp866 1
|
||||
#cmakedefine HAVE_CHARSET_cp932 1
|
||||
#cmakedefine HAVE_CHARSET_dec8 1
|
||||
#cmakedefine HAVE_CHARSET_eucjpms 1
|
||||
#cmakedefine HAVE_CHARSET_euckr 1
|
||||
#cmakedefine HAVE_CHARSET_gb2312 1
|
||||
#cmakedefine HAVE_CHARSET_gbk 1
|
||||
#cmakedefine HAVE_CHARSET_geostd8 1
|
||||
#cmakedefine HAVE_CHARSET_greek 1
|
||||
#cmakedefine HAVE_CHARSET_hebrew 1
|
||||
#cmakedefine HAVE_CHARSET_hp8 1
|
||||
#cmakedefine HAVE_CHARSET_keybcs2 1
|
||||
#cmakedefine HAVE_CHARSET_koi8r 1
|
||||
#cmakedefine HAVE_CHARSET_koi8u 1
|
||||
#cmakedefine HAVE_CHARSET_latin1 1
|
||||
#cmakedefine HAVE_CHARSET_latin2 1
|
||||
#cmakedefine HAVE_CHARSET_latin5 1
|
||||
#cmakedefine HAVE_CHARSET_latin7 1
|
||||
#cmakedefine HAVE_CHARSET_macce 1
|
||||
#cmakedefine HAVE_CHARSET_macroman 1
|
||||
#cmakedefine HAVE_CHARSET_sjis 1
|
||||
#cmakedefine HAVE_CHARSET_swe7 1
|
||||
#cmakedefine HAVE_CHARSET_tis620 1
|
||||
#cmakedefine HAVE_CHARSET_ucs2 1
|
||||
#cmakedefine HAVE_CHARSET_ujis 1
|
||||
#cmakedefine HAVE_CHARSET_utf8mb4 1
|
||||
#cmakedefine HAVE_CHARSET_utf8mb3 1
|
||||
#cmakedefine HAVE_CHARSET_utf8 1
|
||||
#cmakedefine HAVE_CHARSET_utf16 1
|
||||
#cmakedefine HAVE_CHARSET_utf32 1
|
||||
#cmakedefine HAVE_UCA_COLLATIONS 1
|
||||
#cmakedefine HAVE_COMPRESS 1
|
||||
|
||||
|
||||
/*
|
||||
Stuff that always need to be defined (compile breaks without it)
|
||||
*/
|
||||
#define HAVE_SPATIAL 1
|
||||
#define HAVE_RTREE_KEYS 1
|
||||
#define HAVE_QUERY_CACHE 1
|
||||
|
||||
/*
|
||||
Important storage engines (those that really need define
|
||||
WITH_<ENGINE>_STORAGE_ENGINE for the whole server)
|
||||
*/
|
||||
#cmakedefine WITH_MYISAM_STORAGE_ENGINE 1
|
||||
#cmakedefine WITH_MYISAMMRG_STORAGE_ENGINE 1
|
||||
#cmakedefine WITH_HEAP_STORAGE_ENGINE 1
|
||||
#cmakedefine WITH_CSV_STORAGE_ENGINE 1
|
||||
#cmakedefine WITH_PARTITION_STORAGE_ENGINE 1
|
||||
#cmakedefine WITH_PERFSCHEMA_STORAGE_ENGINE 1
|
||||
#cmakedefine WITH_NDBCLUSTER_STORAGE_ENGINE 1
|
||||
#if (WITH_NDBCLUSTER_STORAGE_ENGINE) && !defined(EMBEDDED_LIBRARY)
|
||||
#define HAVE_NDB_BINLOG 1
|
||||
#endif
|
||||
|
||||
#cmakedefine DEFAULT_MYSQL_HOME "@DEFAULT_MYSQL_HOME@"
|
||||
#cmakedefine SHAREDIR "@SHAREDIR@"
|
||||
#cmakedefine DEFAULT_BASEDIR "@DEFAULT_BASEDIR@"
|
||||
#cmakedefine MYSQL_DATADIR "@MYSQL_DATADIR@"
|
||||
#cmakedefine DEFAULT_CHARSET_HOME "@DEFAULT_CHARSET_HOME@"
|
||||
|
||||
#define PACKAGE "mysql"
|
||||
#define PACKAGE_BUGREPORT ""
|
||||
#define PACKAGE_NAME "MySQL Server"
|
||||
#define PACKAGE_STRING "MySQL Server @VERSION@"
|
||||
#define PACKAGE_TARNAME "mysql"
|
||||
#define PACKAGE_VERSION "@VERSION@"
|
||||
#define VERSION "@VERSION@"
|
||||
#define PROTOCOL_VERSION 10
|
||||
|
||||
|
||||
#endif
|
1335
configure.cmake
Normal file
1335
configure.cmake
Normal file
File diff suppressed because it is too large
Load diff
|
@ -2929,7 +2929,9 @@ AC_CONFIG_FILES(Makefile extra/Makefile mysys/Makefile dnl
|
|||
libmysqld/Makefile libmysqld/examples/Makefile dnl
|
||||
mysql-test/Makefile mysql-test/lib/My/SafeProcess/Makefile dnl
|
||||
netware/Makefile sql-bench/Makefile dnl
|
||||
include/mysql_version.h plugin/Makefile win/Makefile)
|
||||
include/mysql_version.h plugin/Makefile win/Makefile
|
||||
cmake/Makefile
|
||||
)
|
||||
|
||||
AC_CONFIG_COMMANDS([default], , test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h)
|
||||
|
||||
|
|
|
@ -13,11 +13,11 @@
|
|||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/dbug)
|
||||
|
||||
SET(DBUG_SOURCES dbug.c factorial.c sanity.c)
|
||||
|
||||
IF(NOT SOURCE_SUBLIBS)
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
|
||||
ADD_LIBRARY(dbug ${DBUG_SOURCES})
|
||||
ENDIF(NOT SOURCE_SUBLIBS)
|
||||
INCLUDE_DIRECTORIES(
|
||||
${CMAKE_SOURCE_DIR}/dbug
|
||||
${CMAKE_SOURCE_DIR}/include
|
||||
)
|
||||
SET(DBUG_SOURCES dbug.c sanity.c)
|
||||
USE_ABSOLUTE_FILENAMES(DBUG_SOURCES)
|
||||
ADD_LIBRARY(dbug ${DBUG_SOURCES})
|
||||
TARGET_LINK_LIBRARIES(dbug mysys)
|
||||
|
|
|
@ -12,42 +12,78 @@
|
|||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/win/mysql_manifest.cmake")
|
||||
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
|
||||
INCLUDE_DIRECTORIES(
|
||||
${CMAKE_SOURCE_DIR}/include
|
||||
${ZLIB_INCLUDE_DIR}
|
||||
# Following is for perror, in case NDB is compiled in.
|
||||
${CMAKE_SOURCE_DIR}/storage/ndb/include
|
||||
${CMAKE_SOURCE_DIR}/storage/ndb/include/util
|
||||
${CMAKE_SOURCE_DIR}/storage/ndb/include/ndbapi
|
||||
${CMAKE_SOURCE_DIR}/storage/ndb/include/portlib
|
||||
${CMAKE_SOURCE_DIR}/storage/ndb/include/mgmapi)
|
||||
|
||||
ADD_EXECUTABLE(comp_err comp_err.c)
|
||||
TARGET_LINK_LIBRARIES(comp_err dbug mysys strings zlib)
|
||||
|
||||
GET_TARGET_PROPERTY(COMP_ERR_EXE comp_err LOCATION)
|
||||
IF(NOT CMAKE_CROSSCOMPILING)
|
||||
ADD_EXECUTABLE(comp_err comp_err.c)
|
||||
TARGET_LINK_LIBRARIES(comp_err ${ZLIB_LIBRARY} mysys)
|
||||
ENDIF()
|
||||
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_SOURCE_DIR}/include/mysqld_error.h
|
||||
COMMAND ${COMP_ERR_EXE}
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_BINARY_DIR}/include/mysqld_error.h
|
||||
${PROJECT_BINARY_DIR}/sql/share/english/errmsg.sys
|
||||
COMMAND comp_err
|
||||
--charset=${PROJECT_SOURCE_DIR}/sql/share/charsets
|
||||
--out-dir=${PROJECT_SOURCE_DIR}/sql/share/
|
||||
--header_file=${PROJECT_SOURCE_DIR}/include/mysqld_error.h
|
||||
--name_file=${PROJECT_SOURCE_DIR}/include/mysqld_ername.h
|
||||
--state_file=${PROJECT_SOURCE_DIR}/include/sql_state.h
|
||||
--out-dir=${PROJECT_BINARY_DIR}/sql/share/
|
||||
--header_file=${PROJECT_BINARY_DIR}/include/mysqld_error.h
|
||||
--name_file=${PROJECT_BINARY_DIR}/include/mysqld_ername.h
|
||||
--state_file=${PROJECT_BINARY_DIR}/include/sql_state.h
|
||||
--in_file=${PROJECT_SOURCE_DIR}/sql/share/errmsg-utf8.txt
|
||||
DEPENDS comp_err ${PROJECT_SOURCE_DIR}/sql/share/errmsg-utf8.txt)
|
||||
DEPENDS ${PROJECT_SOURCE_DIR}/sql/share/errmsg-utf8.txt
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/comp_err.c)
|
||||
|
||||
ADD_CUSTOM_TARGET(GenError
|
||||
ALL
|
||||
DEPENDS ${PROJECT_SOURCE_DIR}/include/mysqld_error.h)
|
||||
DEPENDS
|
||||
${PROJECT_BINARY_DIR}/include/mysqld_error.h
|
||||
${PROJECT_BINARY_DIR}/sql/share/english/errmsg.sys
|
||||
${PROJECT_SOURCE_DIR}/sql/share/errmsg-utf8.txt)
|
||||
|
||||
ADD_EXECUTABLE(my_print_defaults my_print_defaults.c)
|
||||
TARGET_LINK_LIBRARIES(my_print_defaults strings mysys dbug taocrypt)
|
||||
TARGET_LINK_LIBRARIES(my_print_defaults mysys)
|
||||
|
||||
ADD_EXECUTABLE(perror perror.c)
|
||||
TARGET_LINK_LIBRARIES(perror strings mysys dbug)
|
||||
ADD_DEPENDENCIES(perror GenError)
|
||||
TARGET_LINK_LIBRARIES(perror mysys)
|
||||
|
||||
ADD_EXECUTABLE(resolveip resolveip.c)
|
||||
TARGET_LINK_LIBRARIES(resolveip strings mysys dbug)
|
||||
TARGET_LINK_LIBRARIES(resolveip mysys)
|
||||
# On Solaris, inet_aton() function used by resolveip could be in resolv library
|
||||
IF(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
|
||||
INCLUDE(CheckFunctionExists)
|
||||
INCLUDE(CheckLibraryExists)
|
||||
CHECK_FUNCTION_EXISTS(inet_aton HAVE_INET_ATON)
|
||||
IF(NOT HAVE_INET_ATON)
|
||||
CHECK_LIBRARY_EXISTS(resolv inet_aton "" HAVE_INET_ATON_IN_RESOLV)
|
||||
IF(HAVE_INET_ATON_IN_RESOLV)
|
||||
TARGET_LINK_LIBRARIES(resolveip resolv)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
|
||||
ADD_EXECUTABLE(replace replace.c)
|
||||
TARGET_LINK_LIBRARIES(replace strings mysys dbug)
|
||||
TARGET_LINK_LIBRARIES(replace mysys)
|
||||
IF(UNIX)
|
||||
ADD_EXECUTABLE(innochecksum innochecksum.c)
|
||||
|
||||
ADD_EXECUTABLE(resolve_stack_dump resolve_stack_dump.c)
|
||||
TARGET_LINK_LIBRARIES(resolve_stack_dump mysys)
|
||||
|
||||
ADD_EXECUTABLE(mysql_waitpid mysql_waitpid.c)
|
||||
TARGET_LINK_LIBRARIES(mysql_waitpid mysys)
|
||||
|
||||
INSTALL(TARGETS innochecksum mysql_waitpid resolve_stack_dump DESTINATION bin)
|
||||
ENDIF()
|
||||
|
||||
IF(EMBED_MANIFESTS)
|
||||
MYSQL_EMBED_MANIFEST("myTest" "asInvoker")
|
||||
ENDIF(EMBED_MANIFESTS)
|
||||
INSTALL(TARGETS perror resolveip my_print_defaults replace DESTINATION bin)
|
||||
|
|
|
@ -13,16 +13,22 @@
|
|||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/extra/yassl/include
|
||||
${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/include
|
||||
${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/mySTL)
|
||||
|
||||
ADD_DEFINITIONS("-D_LIB -DYASSL_PREFIX")
|
||||
INCLUDE_DIRECTORIES(
|
||||
${CMAKE_SOURCE_DIR}/include
|
||||
${CMAKE_SOURCE_DIR}/extra/yassl/include
|
||||
${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/include
|
||||
${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/mySTL)
|
||||
|
||||
ADD_DEFINITIONS(${SSL_DEFINES})
|
||||
IF(CMAKE_COMPILER_IS_GNUXX)
|
||||
#Remove -fno-implicit-templates
|
||||
#(yassl sources cannot be compiled with it)
|
||||
STRING(REPLACE "-fno-implicit-templates" "" CMAKE_CXX_FLAGS
|
||||
${CMAKE_CXX_FLAGS})
|
||||
ENDIF()
|
||||
SET(YASSL_SOURCES src/buffer.cpp src/cert_wrapper.cpp src/crypto_wrapper.cpp src/handshake.cpp src/lock.cpp
|
||||
src/log.cpp src/socket_wrapper.cpp src/ssl.cpp src/timer.cpp src/yassl_error.cpp
|
||||
src/yassl_imp.cpp src/yassl_int.cpp)
|
||||
IF(NOT SOURCE_SUBLIBS)
|
||||
ADD_LIBRARY(yassl ${YASSL_SOURCES})
|
||||
ADD_DEPENDENCIES(yassl GenError)
|
||||
ENDIF(NOT SOURCE_SUBLIBS)
|
||||
USE_ABSOLUTE_FILENAMES(YASSL_SOURCES)
|
||||
ADD_LIBRARY(yassl ${YASSL_SOURCES})
|
||||
|
||||
|
|
|
@ -16,6 +16,11 @@
|
|||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/mySTL
|
||||
${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/include)
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
|
||||
ADD_DEFINITIONS(${SSL_DEFINES})
|
||||
IF(PREVENT_CPP_RUNTIME)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${PREVENT_CPP_RUNTIME}")
|
||||
ENDIF()
|
||||
SET(TAOCRYPT_SOURCES src/aes.cpp src/aestables.cpp src/algebra.cpp src/arc4.cpp src/asn.cpp src/coding.cpp
|
||||
src/des.cpp src/dh.cpp src/dsa.cpp src/file.cpp src/hash.cpp src/integer.cpp src/md2.cpp
|
||||
src/md4.cpp src/md5.cpp src/misc.cpp src/random.cpp src/ripemd.cpp src/rsa.cpp src/sha.cpp
|
||||
|
@ -24,6 +29,6 @@ SET(TAOCRYPT_SOURCES src/aes.cpp src/aestables.cpp src/algebra.cpp src/arc4.cpp
|
|||
include/error.hpp include/file.hpp include/hash.hpp include/hmac.hpp include/integer.hpp
|
||||
include/md2.hpp include/md5.hpp include/misc.hpp include/modarith.hpp include/modes.hpp
|
||||
include/random.hpp include/ripemd.hpp include/rsa.hpp include/sha.hpp)
|
||||
IF(NOT SOURCE_SUBLIBS)
|
||||
ADD_LIBRARY(taocrypt ${TAOCRYPT_SOURCES})
|
||||
ENDIF(NOT SOURCE_SUBLIBS)
|
||||
USE_ABSOLUTE_FILENAMES(TAOCRYPT_SOURCES)
|
||||
ADD_LIBRARY(taocrypt ${TAOCRYPT_SOURCES})
|
||||
|
||||
|
|
61
include/CMakeLists.txt
Normal file
61
include/CMakeLists.txt
Normal file
|
@ -0,0 +1,61 @@
|
|||
# Copyright (C) 2009 Sun Microsystems, Inc
|
||||
#
|
||||
# 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
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
SET(HEADERS_GEN_CONFIGURE
|
||||
${CMAKE_CURRENT_BINARY_DIR}/mysql_version.h
|
||||
${CMAKE_CURRENT_BINARY_DIR}/my_config.h
|
||||
${CMAKE_CURRENT_BINARY_DIR}/mysqld_ername.h
|
||||
${CMAKE_CURRENT_BINARY_DIR}/mysqld_error.h
|
||||
${CMAKE_CURRENT_BINARY_DIR}/sql_state.h
|
||||
)
|
||||
SET(HEADERS_ABI
|
||||
mysql.h
|
||||
mysql_com.h
|
||||
mysql_time.h
|
||||
my_list.h
|
||||
my_alloc.h
|
||||
typelib.h
|
||||
)
|
||||
|
||||
SET(HEADERS
|
||||
${HEADERS_ABI}
|
||||
my_dbug.h
|
||||
m_string.h
|
||||
my_sys.h
|
||||
my_xml.h
|
||||
mysql_embed.h
|
||||
my_pthread.h
|
||||
my_no_pthread.h
|
||||
decimal.h
|
||||
errmsg.h
|
||||
my_global.h
|
||||
my_net.h
|
||||
my_getopt.h
|
||||
sslopt-longopts.h
|
||||
my_dir.h
|
||||
sslopt-vars.h
|
||||
sslopt-case.h
|
||||
sql_common.h
|
||||
keycache.h
|
||||
m_ctype.h
|
||||
my_attribute.h
|
||||
${HEADERS_GEN_CONFIGURE}
|
||||
)
|
||||
|
||||
INSTALL(FILES ${HEADERS} DESTINATION include)
|
||||
INSTALL(DIRECTORY mysql/ DESTINATION include
|
||||
FILES_MATCHING PATTERN "*.h")
|
||||
|
||||
|
|
@ -43,7 +43,8 @@ noinst_HEADERS = config-win.h config-netware.h my_bit.h \
|
|||
atomic/solaris.h \
|
||||
atomic/gcc_builtins.h my_libwrap.h my_stacktrace.h
|
||||
|
||||
EXTRA_DIST = mysql.h.pp mysql/plugin.h.pp probes_mysql.d.base
|
||||
EXTRA_DIST = mysql.h.pp mysql/plugin.h.pp probes_mysql.d.base \
|
||||
CMakeLists.txt
|
||||
|
||||
# Remove built files and the symlinked directories
|
||||
CLEANFILES = $(BUILT_SOURCES) readline openssl probes_mysql.d probes_mysql_nodtrace.h
|
||||
|
|
|
@ -67,7 +67,7 @@ typedef struct st_key_cache
|
|||
HASH_LINK *free_hash_list; /* list of free hash links */
|
||||
BLOCK_LINK *free_block_list; /* list of free blocks */
|
||||
BLOCK_LINK *block_root; /* memory for block links */
|
||||
uchar HUGE_PTR *block_mem; /* memory for block buffers */
|
||||
uchar *block_mem; /* memory for block buffers */
|
||||
BLOCK_LINK *used_last; /* ptr to the last block of the LRU chain */
|
||||
BLOCK_LINK *used_ins; /* ptr to the insertion block in LRU chain */
|
||||
pthread_mutex_t cache_lock; /* to lock access to the cache structure */
|
||||
|
|
|
@ -68,8 +68,8 @@
|
|||
#define C_MODE_END
|
||||
#endif
|
||||
|
||||
#if defined(_WIN32) || defined(_WIN64) || defined(__WIN32__) || defined(WIN32)
|
||||
#include <config-win.h>
|
||||
#if defined(_WIN32)
|
||||
#include <my_config.h>
|
||||
#elif defined(__NETWARE__)
|
||||
#include <my_config.h>
|
||||
#include <config-netware.h>
|
||||
|
@ -107,6 +107,49 @@
|
|||
#define NETWARE_SET_SCREEN_MODE(A)
|
||||
#endif
|
||||
|
||||
#if defined (_WIN32)
|
||||
/*
|
||||
off_t is 32 bit long. We do not use C runtime functions
|
||||
with off_t but native Win32 file IO APIs, that work with
|
||||
64 bit offsets.
|
||||
*/
|
||||
#undef SIZEOF_OFF_T
|
||||
#define SIZEOF_OFF_T 8
|
||||
|
||||
/*
|
||||
Prevent inclusion of Windows GDI headers - they define symbol
|
||||
ERROR that conflicts with mysql headers.
|
||||
*/
|
||||
#ifndef NOGDI
|
||||
#define NOGDI
|
||||
#endif
|
||||
|
||||
/* Include common headers.*/
|
||||
#include <winsock2.h>
|
||||
#include <ws2tcpip.h> /* SOCKET */
|
||||
#include <io.h> /* access(), chmod() */
|
||||
#include <process.h> /* getpid() */
|
||||
|
||||
#define sleep(a) Sleep((a)*1000)
|
||||
|
||||
/* Define missing access() modes. */
|
||||
#define F_OK 0
|
||||
#define W_OK 2
|
||||
|
||||
/* Define missing file locking constants. */
|
||||
#define F_RDLCK 1
|
||||
#define F_WRLCK 2
|
||||
#define F_UNLCK 3
|
||||
#define F_TO_EOF 0x3FFFFFFF
|
||||
|
||||
/* Shared memory and named pipe connections are supported. */
|
||||
#define HAVE_SMEM 1
|
||||
#define HAVE_NAMED_PIPE 1
|
||||
#define shared_memory_buffer_length 16000
|
||||
#define default_shared_memory_base_name "MYSQL"
|
||||
#endif /* _WIN32*/
|
||||
|
||||
|
||||
/* Workaround for _LARGE_FILES and _LARGE_FILE_API incompatibility on AIX */
|
||||
#if defined(_AIX) && defined(_LARGE_FILE_API)
|
||||
#undef _LARGE_FILE_API
|
||||
|
@ -486,8 +529,11 @@ C_MODE_END
|
|||
|
||||
/* Go around some bugs in different OS and compilers */
|
||||
#if defined (HPUX11) && defined(_LARGEFILE_SOURCE)
|
||||
#ifndef _LARGEFILE64_SOURCE
|
||||
#define _LARGEFILE64_SOURCE
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(_HPUX_SOURCE) && defined(HAVE_SYS_STREAM_H)
|
||||
#include <sys/stream.h> /* HPUX 10.20 defines ulong here. UGLY !!! */
|
||||
#define HAVE_ULONG
|
||||
|
@ -656,7 +702,9 @@ C_MODE_END
|
|||
/* Some types that is different between systems */
|
||||
|
||||
typedef int File; /* File descriptor */
|
||||
#ifndef Socket_defined
|
||||
#ifdef _WIN32
|
||||
typedef SOCKET my_socket;
|
||||
#else
|
||||
typedef int my_socket; /* File descriptor for sockets */
|
||||
#define INVALID_SOCKET -1
|
||||
#endif
|
||||
|
@ -744,7 +792,13 @@ typedef SOCKET_SIZE_TYPE size_socket;
|
|||
#define FN_CURLIB '.' /* ./ is used as abbrev for current dir */
|
||||
#define FN_PARENTDIR ".." /* Parent directory; Must be a string */
|
||||
|
||||
#ifndef FN_LIBCHAR
|
||||
#ifdef _WIN32
|
||||
#define FN_LIBCHAR '\\'
|
||||
#define FN_ROOTDIR "\\"
|
||||
#define FN_DEVCHAR ':'
|
||||
#define FN_NETWORK_DRIVES /* Uses \\ to indicate network drives */
|
||||
#define FN_NO_CASE_SENCE /* Files are not case-sensitive */
|
||||
#else
|
||||
#define FN_LIBCHAR '/'
|
||||
#define FN_ROOTDIR "/"
|
||||
#endif
|
||||
|
@ -828,6 +882,31 @@ typedef SOCKET_SIZE_TYPE size_socket;
|
|||
#undef remove /* Crashes MySQL on SCO 5.0.0 */
|
||||
#ifndef __WIN__
|
||||
#define closesocket(A) close(A)
|
||||
#endif
|
||||
|
||||
#if (_MSC_VER)
|
||||
#if !defined(_WIN64)
|
||||
inline double my_ulonglong2double(unsigned long long value)
|
||||
{
|
||||
long long nr=(long long) value;
|
||||
if (nr >= 0)
|
||||
return (double) nr;
|
||||
return (18446744073709551616.0 + (double) nr);
|
||||
}
|
||||
#define ulonglong2double my_ulonglong2double
|
||||
#define my_off_t2double my_ulonglong2double
|
||||
#endif /* _WIN64 */
|
||||
inline unsigned long long my_double2ulonglong(double d)
|
||||
{
|
||||
double t= d - (double) 0x8000000000000000ULL;
|
||||
|
||||
if (t >= 0)
|
||||
return ((unsigned long long) t) + 0x8000000000000000ULL;
|
||||
return (unsigned long long) d;
|
||||
}
|
||||
#define double2ulonglong my_double2ulonglong
|
||||
#endif
|
||||
|
||||
#ifndef ulonglong2double
|
||||
#define ulonglong2double(A) ((double) (ulonglong) (A))
|
||||
#define my_off_t2double(A) ((double) (my_off_t) (A))
|
||||
|
@ -835,7 +914,6 @@ typedef SOCKET_SIZE_TYPE size_socket;
|
|||
#ifndef double2ulonglong
|
||||
#define double2ulonglong(A) ((ulonglong) (double) (A))
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef offsetof
|
||||
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
|
||||
|
@ -1092,15 +1170,18 @@ typedef long long intptr;
|
|||
#define SYSTEM_SIZEOF_OFF_T SIZEOF_OFF_T
|
||||
#endif /* USE_RAID */
|
||||
|
||||
#if defined(_WIN32)
|
||||
typedef unsigned long long my_off_t;
|
||||
typedef unsigned long long os_off_t;
|
||||
#else
|
||||
typedef off_t os_off_t;
|
||||
#if SIZEOF_OFF_T > 4
|
||||
typedef ulonglong my_off_t;
|
||||
#else
|
||||
typedef unsigned long my_off_t;
|
||||
#endif
|
||||
#endif /*_WIN32*/
|
||||
#define MY_FILEPOS_ERROR (~(my_off_t) 0)
|
||||
#if !defined(__WIN__)
|
||||
typedef off_t os_off_t;
|
||||
#endif
|
||||
|
||||
#if defined(__WIN__)
|
||||
#define socket_errno WSAGetLastError()
|
||||
|
@ -1127,9 +1208,6 @@ typedef uint8 int7; /* Most effective integer 0 <= x <= 127 */
|
|||
typedef short int15; /* Most effective integer 0 <= x <= 32767 */
|
||||
typedef int myf; /* Type of MyFlags in my_funcs */
|
||||
typedef char my_bool; /* Small bool */
|
||||
#if !defined(bool) && (!defined(HAVE_BOOL) || !defined(__cplusplus))
|
||||
typedef char bool; /* Ordinary boolean values 0 1 */
|
||||
#endif
|
||||
/* Macros for converting *constants* to the right type */
|
||||
#define INT8(v) (int8) (v)
|
||||
#define INT16(v) (int16) (v)
|
||||
|
@ -1522,12 +1600,15 @@ do { doubleget_union _tmp; \
|
|||
#define NO_EMBEDDED_ACCESS_CHECKS
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_DLOPEN
|
||||
#if defined(__WIN__)
|
||||
#define dlsym(lib, name) GetProcAddress((HMODULE)lib, name)
|
||||
#if defined(_WIN32)
|
||||
#define dlsym(lib, name) (void*)GetProcAddress((HMODULE)lib, name)
|
||||
#define dlopen(libname, unused) LoadLibraryEx(libname, NULL, 0)
|
||||
#define dlclose(lib) FreeLibrary((HMODULE)lib)
|
||||
#elif defined(HAVE_DLFCN_H)
|
||||
#define HAVE_DLOPEN
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_DLOPEN
|
||||
#if defined(HAVE_DLFCN_H)
|
||||
#include <dlfcn.h>
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -117,9 +117,11 @@ struct tm *gmtime_r(const time_t *timep,struct tm *tmp);
|
|||
|
||||
void pthread_exit(void *a);
|
||||
int pthread_join(pthread_t thread, void **value_ptr);
|
||||
int pthread_cancel(pthread_t thread);
|
||||
|
||||
|
||||
#ifndef ETIMEDOUT
|
||||
#define ETIMEDOUT 145 /* Win32 doesn't have this */
|
||||
#endif
|
||||
#define HAVE_LOCALTIME_R 1
|
||||
#define _REENTRANT 1
|
||||
#define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
|
||||
|
@ -154,6 +156,7 @@ int pthread_join(pthread_t thread, void **value_ptr);
|
|||
#define pthread_condattr_destroy(A)
|
||||
|
||||
#define my_pthread_getprio(thread_id) pthread_dummy(0)
|
||||
#define my_sigset(A,B) signal(A,B)
|
||||
|
||||
#else /* Normal threads */
|
||||
|
||||
|
@ -699,25 +702,32 @@ extern uint thd_lib_detected;
|
|||
Warning:
|
||||
When compiling without threads, this file is not included.
|
||||
See the *other* declarations of thread_safe_xxx in include/my_global.h
|
||||
|
||||
Second warning:
|
||||
See include/config-win.h, for yet another implementation.
|
||||
*/
|
||||
#ifdef THREAD
|
||||
#ifndef thread_safe_increment
|
||||
#ifdef _WIN32
|
||||
#define thread_safe_increment(V,L) InterlockedIncrement((long*) &(V))
|
||||
#define thread_safe_decrement(V,L) InterlockedDecrement((long*) &(V))
|
||||
#else
|
||||
#define thread_safe_increment(V,L) \
|
||||
(pthread_mutex_lock((L)), (V)++, pthread_mutex_unlock((L)))
|
||||
#define thread_safe_decrement(V,L) \
|
||||
(pthread_mutex_lock((L)), (V)--, pthread_mutex_unlock((L)))
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef thread_safe_add
|
||||
#ifdef _WIN32
|
||||
#define thread_safe_add(V,C,L) InterlockedExchangeAdd((long*) &(V),(C))
|
||||
#define thread_safe_sub(V,C,L) InterlockedExchangeAdd((long*) &(V),-(long) (C))
|
||||
#else
|
||||
#define thread_safe_add(V,C,L) \
|
||||
(pthread_mutex_lock((L)), (V)+=(C), pthread_mutex_unlock((L)))
|
||||
#define thread_safe_sub(V,C,L) \
|
||||
(pthread_mutex_lock((L)), (V)-=(C), pthread_mutex_unlock((L)))
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
statistics_xxx functions are for non critical statistic,
|
||||
|
|
|
@ -34,6 +34,9 @@ extern int NEAR my_errno; /* Last error in mysys */
|
|||
#include <m_ctype.h> /* for CHARSET_INFO */
|
||||
#include <stdarg.h>
|
||||
#include <typelib.h>
|
||||
#ifdef _WIN32
|
||||
#include <malloc.h> /*for alloca*/
|
||||
#endif
|
||||
|
||||
#define MYSYS_PROGRAM_USES_CURSES() { error_handler_hook = my_message_curses; mysys_uses_curses=1; }
|
||||
#define MYSYS_PROGRAM_DONT_USE_CURSES() { error_handler_hook = my_message_no_curses; mysys_uses_curses=0;}
|
||||
|
|
|
@ -18,10 +18,25 @@
|
|||
|
||||
/*
|
||||
On Windows, exports from DLL need to be declared
|
||||
Also, plugin needs to be declared as extern "C" because MSVC
|
||||
unlike other compilers, uses C++ mangling for variables not only
|
||||
for functions.
|
||||
*/
|
||||
#if (defined(_WIN32) && defined(MYSQL_DYNAMIC_PLUGIN))
|
||||
#define MYSQL_PLUGIN_EXPORT extern "C" __declspec(dllexport)
|
||||
#else
|
||||
#if defined(_MSC_VER)
|
||||
#if defined(MYSQL_DYNAMIC_PLUGIN)
|
||||
#ifdef __cplusplus
|
||||
#define MYSQL_PLUGIN_EXPORT extern "C" __declspec(dllexport)
|
||||
#else
|
||||
#define MYSQL_PLUGIN_EXPORT __declspec(dllexport)
|
||||
#endif
|
||||
#else /* MYSQL_DYNAMIC_PLUGIN */
|
||||
#ifdef __cplusplus
|
||||
#define MYSQL_PLUGIN_EXPORT extern "C"
|
||||
#else
|
||||
#define MYSQL_PLUGIN_EXPORT
|
||||
#endif
|
||||
#endif /*MYSQL_DYNAMIC_PLUGIN */
|
||||
#else /*_MSC_VER */
|
||||
#define MYSQL_PLUGIN_EXPORT
|
||||
#endif
|
||||
|
||||
|
@ -87,9 +102,9 @@ typedef struct st_mysql_xid MYSQL_XID;
|
|||
|
||||
#ifndef MYSQL_DYNAMIC_PLUGIN
|
||||
#define __MYSQL_DECLARE_PLUGIN(NAME, VERSION, PSIZE, DECLS) \
|
||||
int VERSION= MYSQL_PLUGIN_INTERFACE_VERSION; \
|
||||
int PSIZE= sizeof(struct st_mysql_plugin); \
|
||||
struct st_mysql_plugin DECLS[]= {
|
||||
MYSQL_PLUGIN_EXPORT int VERSION= MYSQL_PLUGIN_INTERFACE_VERSION; \
|
||||
MYSQL_PLUGIN_EXPORT int PSIZE= sizeof(struct st_mysql_plugin); \
|
||||
MYSQL_PLUGIN_EXPORT struct st_mysql_plugin DECLS[]= {
|
||||
#else
|
||||
#define __MYSQL_DECLARE_PLUGIN(NAME, VERSION, PSIZE, DECLS) \
|
||||
MYSQL_PLUGIN_EXPORT int _mysql_plugin_interface_version_= MYSQL_PLUGIN_INTERFACE_VERSION; \
|
||||
|
|
|
@ -64,7 +64,7 @@ typedef my_bool ALARM;
|
|||
#if defined(__WIN__)
|
||||
typedef struct st_thr_alarm_entry
|
||||
{
|
||||
rf_SetTimer crono;
|
||||
UINT_PTR crono;
|
||||
} thr_alarm_entry;
|
||||
|
||||
#else /* System with posix threads */
|
||||
|
|
|
@ -12,102 +12,106 @@
|
|||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/win/mysql_manifest.cmake")
|
||||
|
||||
INCLUDE_DIRECTORIES(
|
||||
${CMAKE_SOURCE_DIR}/include
|
||||
${CMAKE_SOURCE_DIR}/libmysql
|
||||
${CMAKE_SOURCE_DIR}/regex
|
||||
${CMAKE_SOURCE_DIR}/sql
|
||||
${CMAKE_SOURCE_DIR}/strings
|
||||
${SSL_INCLUDE_DIRS}
|
||||
${SSL_INTERNAL_INCLUDE_DIRS}
|
||||
${ZLIB_INCLUDE_DIR})
|
||||
ADD_DEFINITIONS(${SSL_DEFINES})
|
||||
|
||||
|
||||
# Note that we don't link with the libraries "strings" or "mysys"
|
||||
# here, instead we recompile the files needed and include them
|
||||
# directly. This means we don't have to worry here about if these
|
||||
# libraries are compiled defining USE_TLS or not. Not that it *should*
|
||||
# have been a problem anyway, they don't use thread local storage.
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
|
||||
${CMAKE_SOURCE_DIR}/libmysql
|
||||
${CMAKE_SOURCE_DIR}/regex
|
||||
${CMAKE_SOURCE_DIR}/sql
|
||||
${CMAKE_SOURCE_DIR}/strings)
|
||||
|
||||
# We include the source file listing instead of referencing the
|
||||
# libraries. At least with CMake 2.4 and Visual Studio 2005 a static
|
||||
# library created from other static libraries would not be complete,
|
||||
# i.e. the libraries listed in TARGET_LINK_LIBRARIES() were just
|
||||
# ignored.
|
||||
|
||||
|
||||
# Include and add the directory path
|
||||
SET(SOURCE_SUBLIBS TRUE)
|
||||
SET(LIB_SOURCES "")
|
||||
|
||||
INCLUDE(${CMAKE_SOURCE_DIR}/zlib/CMakeLists.txt)
|
||||
FOREACH(rpath ${ZLIB_SOURCES})
|
||||
SET(LIB_SOURCES ${LIB_SOURCES} ../zlib/${rpath})
|
||||
ENDFOREACH(rpath)
|
||||
|
||||
# FIXME only needed if build type is "Debug", but CMAKE_BUILD_TYPE is
|
||||
# not set during configure time.
|
||||
INCLUDE(${CMAKE_SOURCE_DIR}/dbug/CMakeLists.txt)
|
||||
FOREACH(rpath ${DBUG_SOURCES})
|
||||
SET(LIB_SOURCES ${LIB_SOURCES} ../dbug/${rpath})
|
||||
ENDFOREACH(rpath)
|
||||
|
||||
INCLUDE(${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/CMakeLists.txt)
|
||||
FOREACH(rpath ${TAOCRYPT_SOURCES})
|
||||
SET(LIB_SOURCES ${LIB_SOURCES} ../extra/yassl/taocrypt/${rpath})
|
||||
ENDFOREACH(rpath)
|
||||
|
||||
INCLUDE(${CMAKE_SOURCE_DIR}/extra/yassl/CMakeLists.txt)
|
||||
FOREACH(rpath ${YASSL_SOURCES})
|
||||
SET(LIB_SOURCES ${LIB_SOURCES} ../extra/yassl/${rpath})
|
||||
ENDFOREACH(rpath)
|
||||
|
||||
SET(CLIENT_SOURCES ../mysys/array.c ../strings/bchange.c ../strings/bmove.c
|
||||
../strings/bmove_upp.c ../mysys/charset-def.c ../mysys/charset.c
|
||||
../sql-common/client.c ../strings/ctype-big5.c ../strings/ctype-bin.c
|
||||
../strings/ctype-cp932.c ../strings/ctype-czech.c ../strings/ctype-euc_kr.c
|
||||
../strings/ctype-eucjpms.c ../strings/ctype-extra.c ../strings/ctype-gb2312.c
|
||||
../strings/ctype-gbk.c ../strings/ctype-latin1.c ../strings/ctype-mb.c
|
||||
../strings/ctype-simple.c ../strings/ctype-sjis.c ../strings/ctype-tis620.c
|
||||
../strings/ctype-uca.c ../strings/ctype-ucs2.c ../strings/ctype-ujis.c
|
||||
../strings/ctype-utf8.c ../strings/ctype-win1250ch.c ../strings/ctype.c
|
||||
../mysys/default.c errmsg.c ../mysys/errors.c
|
||||
../mysys/hash.c ../mysys/my_sleep.c ../mysys/default_modify.c
|
||||
get_password.c ../strings/int2str.c ../strings/is_prefix.c
|
||||
libmysql.c ../mysys/list.c ../strings/llstr.c
|
||||
../strings/longlong2str.c ../mysys/mf_arr_appstr.c ../mysys/mf_cache.c
|
||||
../mysys/mf_dirname.c ../mysys/mf_fn_ext.c ../mysys/mf_format.c
|
||||
../mysys/mf_iocache.c ../mysys/mf_iocache2.c ../mysys/mf_loadpath.c
|
||||
../mysys/mf_pack.c ../mysys/mf_path.c ../mysys/mf_tempfile.c ../mysys/mf_unixpath.c
|
||||
../mysys/mf_wcomp.c ../mysys/mulalloc.c ../mysys/my_access.c ../mysys/my_alloc.c
|
||||
../mysys/my_chsize.c ../mysys/my_compress.c ../mysys/my_create.c
|
||||
../mysys/my_delete.c ../mysys/my_div.c ../mysys/my_error.c ../mysys/my_file.c
|
||||
../mysys/my_fopen.c ../mysys/my_fstream.c ../mysys/my_gethostbyname.c
|
||||
../mysys/my_getopt.c ../mysys/my_getwd.c ../mysys/my_init.c ../mysys/my_lib.c
|
||||
../mysys/my_malloc.c ../mysys/my_messnc.c ../mysys/my_net.c ../mysys/my_once.c
|
||||
../mysys/my_open.c ../mysys/my_pread.c ../mysys/my_pthread.c ../mysys/my_read.c
|
||||
../mysys/my_realloc.c ../mysys/my_rename.c ../mysys/my_seek.c
|
||||
../mysys/my_static.c ../strings/my_strtoll10.c ../mysys/my_symlink.c
|
||||
../mysys/my_symlink2.c ../mysys/my_thr_init.c ../sql-common/my_time.c
|
||||
../strings/my_vsnprintf.c ../mysys/my_wincond.c ../mysys/my_winthread.c
|
||||
../mysys/my_write.c ../sql/net_serv.cc ../sql-common/pack.c ../sql/password.c
|
||||
../mysys/safemalloc.c ../mysys/sha1.c ../strings/str2int.c
|
||||
../strings/str_alloc.c ../strings/strcend.c ../strings/strcont.c ../strings/strend.c
|
||||
../strings/strfill.c ../mysys/string.c ../strings/strinstr.c ../strings/strmake.c
|
||||
../strings/strmov.c ../strings/strnlen.c ../strings/strnmov.c ../strings/strtod.c
|
||||
../strings/strtoll.c ../strings/strtoull.c ../strings/strxmov.c ../strings/strxnmov.c
|
||||
../mysys/thr_mutex.c ../mysys/typelib.c ../vio/vio.c ../vio/viosocket.c
|
||||
../vio/viossl.c ../vio/viosslfactories.c ../strings/xml.c ../mysys/mf_qsort.c
|
||||
../mysys/my_getsystime.c ../mysys/my_sync.c ../mysys/my_winerr.c ../mysys/my_winfile.c ${LIB_SOURCES})
|
||||
#Remove -fno-implicit-templates
|
||||
#(yassl sources cannot be compiled with it)
|
||||
STRING(REPLACE "-fno-implicit-templates" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
ADD_DEFINITIONS(-DDISABLE_DTRACE)
|
||||
|
||||
|
||||
|
||||
ADD_LIBRARY(mysqlclient STATIC ${CLIENT_SOURCES})
|
||||
SET(CLIENT_SOURCES
|
||||
get_password.c
|
||||
libmysql.c
|
||||
errmsg.c
|
||||
../sql-common/client.c
|
||||
../sql-common/my_time.c
|
||||
../sql/net_serv.cc
|
||||
../sql-common/pack.c
|
||||
../sql/password.c
|
||||
)
|
||||
|
||||
ADD_LIBRARY(clientlib STATIC ${CLIENT_SOURCES})
|
||||
ADD_DEPENDENCIES(clientlib GenError)
|
||||
|
||||
# Merge several static libraries into one big mysqlclient.
|
||||
SET(LIBS dbug strings vio mysys ${ZLIB_LIBRARY} ${SSL_LIBRARIES})
|
||||
MERGE_STATIC_LIBS(mysqlclient mysqlclient "${LIBS};clientlib")
|
||||
|
||||
ADD_DEPENDENCIES(mysqlclient GenError)
|
||||
TARGET_LINK_LIBRARIES(mysqlclient)
|
||||
SET_TARGET_PROPERTIES(mysqlclient PROPERTIES CLEAN_DIRECT_OUTPUT 1)
|
||||
|
||||
ADD_LIBRARY(libmysql SHARED ${CLIENT_SOURCES} dll.c libmysql.def)
|
||||
ADD_DEPENDENCIES(libmysql GenError)
|
||||
TARGET_LINK_LIBRARIES(libmysql)
|
||||
|
||||
IF(EMBED_MANIFESTS)
|
||||
MYSQL_EMBED_MANIFEST("myTest" "asInvoker")
|
||||
ENDIF(EMBED_MANIFESTS)
|
||||
# Make shared client library
|
||||
IF(WIN32)
|
||||
SET(SHARED_OUTPUT_NAME libmysql)
|
||||
ELSE()
|
||||
SET(SHARED_OUTPUT_NAME mysqlclient)
|
||||
ENDIF()
|
||||
|
||||
# On Windows, we can make a shared library out of static.
|
||||
# On Unix, we need to recompile all sources, unless we compiled with -fPIC, in
|
||||
# which case we can link static libraries to shared.
|
||||
IF(MSVC)
|
||||
STATIC_TO_SHARED(mysqlclient libmysql libmysql.def)
|
||||
ELSE()
|
||||
SET(LIBMYSQL_SOURCES ${CLIENT_SOURCES})
|
||||
|
||||
IF(NOT WITH_PIC)
|
||||
# Add all sources that come into common static libs.
|
||||
FOREACH(LIB ${LIBS})
|
||||
GET_TARGET_PROPERTY(SRC ${LIB} SOURCES)
|
||||
IF (NOT SRC)
|
||||
# This must be system shared lib (zlib or openssl)
|
||||
# Users of libmysql must link with it too.
|
||||
LIST(APPEND OS_LIBS ${LIB})
|
||||
ELSE()
|
||||
LIST(APPEND LIBMYSQL_SOURCES ${SRC})
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
|
||||
# Some extra flags as in mysys
|
||||
IF(CMAKE_COMPILER_IS_GNUCC AND NOT HAVE_CXX_NEW)
|
||||
SET_SOURCE_FILES_PROPERTIES(${CMAKE_SOURCE_DIR}/mysys/my_new.cc
|
||||
PROPERTIES COMPILE_FLAGS "-DUSE_MYSYS_NEW")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
|
||||
ADD_LIBRARY(libmysql SHARED ${LIBMYSQL_SOURCES})
|
||||
ADD_DEPENDENCIES(libmysql GenError)
|
||||
SET_TARGET_PROPERTIES(libmysql PROPERTIES OUTPUT_NAME ${SHARED_OUTPUT_NAME}
|
||||
SOVERSION "${SHARED_LIB_MAJOR_VERSION}.0")
|
||||
SET_TARGET_PROPERTIES(libmysql PROPERTIES CLEAN_DIRECT_OUTPUT 1)
|
||||
|
||||
IF(WITH_PIC)
|
||||
TARGET_LINK_LIBRARIES(libmysql ${LIBS})
|
||||
ENDIF()
|
||||
|
||||
IF(OS_LIBS)
|
||||
TARGET_LINK_LIBRARIES(libmysql ${OS_LIBS})
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
|
||||
IF(UNIX)
|
||||
# Install links to shared and static libraries
|
||||
# (append _r to base name)
|
||||
INSTALL_SYMLINK(${CMAKE_SHARED_LIBRARY_PREFIX}mysqlclient_r libmysql lib)
|
||||
INSTALL_SYMLINK(${CMAKE_STATIC_LIBRARY_PREFIX}mysqlclient_r mysqlclient lib)
|
||||
ENDIF()
|
||||
|
||||
INSTALL(TARGETS mysqlclient libmysql DESTINATION lib)
|
||||
INSTALL_DEBUG_SYMBOLS( "mysqlclient;libmysql")
|
||||
|
|
|
@ -13,84 +13,45 @@
|
|||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
ADD_DEFINITIONS(-DMYSQL_SERVER -DEMBEDDED_LIBRARY -DHAVE_DLOPEN)
|
||||
ADD_DEFINITIONS(-DMYSQL_SERVER -DEMBEDDED_LIBRARY -DDISABLE_DTRACE
|
||||
${SSL_DEFINES})
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
|
||||
${CMAKE_SOURCE_DIR}/libmysqld
|
||||
${CMAKE_SOURCE_DIR}/libmysql
|
||||
${CMAKE_SOURCE_DIR}/sql
|
||||
${CMAKE_SOURCE_DIR}/regex
|
||||
${CMAKE_SOURCE_DIR}/extra/yassl/include
|
||||
${CMAKE_SOURCE_DIR}/zlib)
|
||||
INCLUDE_DIRECTORIES(
|
||||
${CMAKE_SOURCE_DIR}/include
|
||||
${CMAKE_SOURCE_DIR}/libmysql
|
||||
${CMAKE_SOURCE_DIR}/libmysqld
|
||||
${CMAKE_SOURCE_DIR}/sql
|
||||
${CMAKE_BINARY_DIR}/sql
|
||||
${CMAKE_SOURCE_DIR}/regex
|
||||
${ZLIB_INCLUDE_DIR}
|
||||
${SSL_INCLUDE_DIRS}
|
||||
${SSL_INTERNAL_INCLUDE_DIRS}
|
||||
${NDB_CLUSTER_INCLUDES}
|
||||
${CMAKE_SOURCE_DIR}/sql/backup
|
||||
)
|
||||
|
||||
SET(GEN_SOURCES
|
||||
${CMAKE_BINARY_DIR}/sql/sql_yacc.h
|
||||
${CMAKE_BINARY_DIR}/sql/sql_yacc.cc
|
||||
${CMAKE_BINARY_DIR}/sql/lex_hash.h
|
||||
)
|
||||
|
||||
SET(GEN_SOURCES ${CMAKE_SOURCE_DIR}/sql/sql_yacc.cc
|
||||
${CMAKE_SOURCE_DIR}/sql/sql_yacc.h
|
||||
${CMAKE_SOURCE_DIR}/sql/message.h
|
||||
${CMAKE_SOURCE_DIR}/sql/message.rc
|
||||
${CMAKE_SOURCE_DIR}/sql/sql_builtin.cc
|
||||
${CMAKE_SOURCE_DIR}/sql/lex_hash.h)
|
||||
SET_SOURCE_FILES_PROPERTIES(${GEN_SOURCES} PROPERTIES GENERATED TRUE)
|
||||
SET(LIBS dbug strings regex mysys vio ${ZLIB_LIBRARY} ${SSL_LIBRARIES}
|
||||
${MYSQLD_STATIC_PLUGIN_LIBS} ${NDB_CLIENT_LIBS})
|
||||
|
||||
SET_SOURCE_FILES_PROPERTIES(${GEN_SOURCES} PROPERTIES GENERATED 1)
|
||||
|
||||
# Include and add the directory path
|
||||
SET(SOURCE_SUBLIBS TRUE)
|
||||
SET(LIB_SOURCES "")
|
||||
|
||||
INCLUDE(${CMAKE_SOURCE_DIR}/zlib/CMakeLists.txt)
|
||||
FOREACH(rpath ${ZLIB_SOURCES})
|
||||
SET(LIB_SOURCES ${LIB_SOURCES} ../zlib/${rpath})
|
||||
ENDFOREACH(rpath)
|
||||
|
||||
# FIXME only needed if build type is "Debug", but CMAKE_BUILD_TYPE is
|
||||
# not set during configure time.
|
||||
INCLUDE(${CMAKE_SOURCE_DIR}/dbug/CMakeLists.txt)
|
||||
FOREACH(rpath ${DBUG_SOURCES})
|
||||
SET(LIB_SOURCES ${LIB_SOURCES} ../dbug/${rpath})
|
||||
ENDFOREACH(rpath)
|
||||
|
||||
INCLUDE(${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/CMakeLists.txt)
|
||||
FOREACH(rpath ${TAOCRYPT_SOURCES})
|
||||
SET(LIB_SOURCES ${LIB_SOURCES} ../extra/yassl/taocrypt/${rpath})
|
||||
ENDFOREACH(rpath)
|
||||
|
||||
INCLUDE(${CMAKE_SOURCE_DIR}/extra/yassl/CMakeLists.txt)
|
||||
FOREACH(rpath ${YASSL_SOURCES})
|
||||
SET(LIB_SOURCES ${LIB_SOURCES} ../extra/yassl/${rpath})
|
||||
ENDFOREACH(rpath)
|
||||
|
||||
INCLUDE(${CMAKE_SOURCE_DIR}/strings/CMakeLists.txt)
|
||||
FOREACH(rpath ${STRINGS_SOURCES})
|
||||
SET(LIB_SOURCES ${LIB_SOURCES} ../strings/${rpath})
|
||||
ENDFOREACH(rpath)
|
||||
|
||||
INCLUDE(${CMAKE_SOURCE_DIR}/regex/CMakeLists.txt)
|
||||
FOREACH(rpath ${REGEX_SOURCES})
|
||||
SET(LIB_SOURCES ${LIB_SOURCES} ../regex/${rpath})
|
||||
ENDFOREACH(rpath)
|
||||
|
||||
INCLUDE(${CMAKE_SOURCE_DIR}/mysys/CMakeLists.txt)
|
||||
FOREACH(rpath ${MYSYS_SOURCES})
|
||||
SET(LIB_SOURCES ${LIB_SOURCES} ../mysys/${rpath})
|
||||
ENDFOREACH(rpath)
|
||||
|
||||
INCLUDE(${CMAKE_SOURCE_DIR}/vio/CMakeLists.txt)
|
||||
FOREACH(rpath ${VIO_SOURCES})
|
||||
SET(LIB_SOURCES ${LIB_SOURCES} ../vio/${rpath})
|
||||
ENDFOREACH(rpath)
|
||||
# Quirk: recompile selected storage engines with -DEMBEDDED_LIBRARY
|
||||
# They depend on internal structures like THD that is different in embedded.
|
||||
SET(RECOMPILE_ENGINES myisam myisammrg heap ndbcluster)
|
||||
FOREACH(ENGINE ${RECOMPILE_ENGINES})
|
||||
LIST(REMOVE_ITEM LIBS ${ENGINE})
|
||||
GET_TARGET_PROPERTY(SRC ${ENGINE} SOURCES)
|
||||
IF(SRC)
|
||||
LIST(APPEND ENGINE_SOURCES ${SRC})
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
|
||||
|
||||
|
||||
FOREACH (ENGINE_LIB ${MYSQLD_STATIC_ENGINE_LIBS})
|
||||
STRING(TOUPPER ${ENGINE_LIB} ENGINE_LIB_UPPER)
|
||||
SET(ENGINE_DIR ${${ENGINE_LIB_UPPER}_DIR})
|
||||
INCLUDE(${CMAKE_SOURCE_DIR}/storage/${ENGINE_DIR}/CMakeLists.txt)
|
||||
FOREACH(rpath ${${ENGINE_LIB_UPPER}_SOURCES})
|
||||
SET(LIB_SOURCES ${LIB_SOURCES} ${CMAKE_SOURCE_DIR}/storage/${ENGINE_DIR}/${rpath})
|
||||
ENDFOREACH(rpath)
|
||||
ENDFOREACH(ENGINE_LIB)
|
||||
|
||||
|
||||
SET(SOURCE_SUBLIBS FALSE)
|
||||
|
||||
SET(LIBMYSQLD_SOURCES emb_qcache.cc libmysqld.c lib_sql.cc
|
||||
../libmysql/libmysql.c ../libmysql/errmsg.c ../client/get_password.c
|
||||
|
@ -133,29 +94,35 @@ SET(LIBMYSQLD_SOURCES emb_qcache.cc libmysqld.c lib_sql.cc
|
|||
../sql/partition_info.cc ../sql/sql_connect.cc
|
||||
../sql/scheduler.cc ../sql/event_parse_data.cc
|
||||
../sql/sql_signal.cc ../sql/rpl_handler.cc
|
||||
${CMAKE_BINARY_DIR}/sql/sql_builtin.cc
|
||||
${GEN_SOURCES}
|
||||
${LIB_SOURCES})
|
||||
${ENGINE_SOURCES}
|
||||
${MYSYS_LIBWRAP_SOURCE}
|
||||
)
|
||||
|
||||
# Seems we cannot make a library without at least one source file. So use a
|
||||
# dummy empty file
|
||||
FILE(WRITE cmake_dummy.c " ")
|
||||
|
||||
# Tried use the correct ${GEN_SOURCES} as dependency, worked on Unix
|
||||
# but not on Windows and Visual Studio generators. Likely because they
|
||||
# are no real targets from the Visual Studio project files view. Added
|
||||
# custom targets to "sql/CMakeLists.txt" and reference them here.
|
||||
ADD_LIBRARY(mysqlserver STATIC ${LIBMYSQLD_SOURCES})
|
||||
ADD_DEPENDENCIES(mysqlserver GenServerSource GenError)
|
||||
TARGET_LINK_LIBRARIES(mysqlserver)
|
||||
ADD_LIBRARY(mysqlserver_int STATIC ${LIBMYSQLD_SOURCES})
|
||||
ADD_DEPENDENCIES(mysqlserver_int GenError GenServerSource)
|
||||
|
||||
# Add any additional libraries requested by engine(s)
|
||||
FOREACH (ENGINE_LIB ${MYSQLD_STATIC_ENGINE_LIBS})
|
||||
STRING(TOUPPER ${ENGINE_LIB} ENGINE_LIB_UPPER)
|
||||
IF(${ENGINE_LIB_UPPER}_LIBS)
|
||||
TARGET_LINK_LIBRARIES(mysqlserver ${${ENGINE_LIB_UPPER}_LIBS})
|
||||
ENDIF(${ENGINE_LIB_UPPER}_LIBS)
|
||||
ENDFOREACH(ENGINE_LIB)
|
||||
# On Windows, static embedded server library is called mysqlserver.lib
|
||||
# On Unix, it is libmysqld.a
|
||||
IF(WIN32)
|
||||
SET(MYSQLSERVER_OUTPUT_NAME mysqlserver)
|
||||
ELSE()
|
||||
SET(MYSQLSERVER_OUTPUT_NAME mysqld)
|
||||
ENDIF()
|
||||
|
||||
ADD_LIBRARY(libmysqld SHARED cmake_dummy.c libmysqld.def)
|
||||
ADD_DEPENDENCIES(libmysqld mysqlserver)
|
||||
TARGET_LINK_LIBRARIES(libmysqld mysqlserver wsock32)
|
||||
# Merge slim mysqlserver_int with other libraries like mysys to create a big
|
||||
# static library that contains everything.
|
||||
MERGE_STATIC_LIBS(mysqlserver ${MYSQLSERVER_OUTPUT_NAME}
|
||||
"mysqlserver_int;${LIBS}")
|
||||
|
||||
IF(LIBWRAP_LIBRARY)
|
||||
TARGET_LINK_LIBRARIES(mysqlserver ${LIBWRAP_LIBRARY})
|
||||
ENDIF()
|
||||
INSTALL(TARGETS mysqlserver DESTINATION lib)
|
||||
|
||||
IF(MSVC)
|
||||
STATIC_TO_SHARED(mysqlserver libmysqld libmysqld.def)
|
||||
INSTALL(TARGETS libmysqld DESTINATION lib)
|
||||
ENDIF()
|
||||
|
|
|
@ -15,24 +15,44 @@
|
|||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
|
||||
${CMAKE_SOURCE_DIR}/libmysqld/include
|
||||
${CMAKE_SOURCE_DIR}/regex
|
||||
${CMAKE_SOURCE_DIR}/zlib
|
||||
${CMAKE_SOURCE_DIR}/extra/yassl/include)
|
||||
${CMAKE_SOURCE_DIR}/regex
|
||||
${READLINE_INCLUDE_DIR}
|
||||
)
|
||||
|
||||
# Currently does not work with DBUG, there are missing symbols reported.
|
||||
|
||||
ADD_DEFINITIONS(-DEMBEDDED_LIBRARY)
|
||||
ADD_DEFINITIONS(-DEMBEDDED_LIBRARY -UMYSQL_CLIENT)
|
||||
|
||||
|
||||
ADD_EXECUTABLE(mysql_embedded ../../client/completion_hash.cc
|
||||
../../client/mysql.cc ../../client/readline.cc
|
||||
../../client/sql_string.cc)
|
||||
TARGET_LINK_LIBRARIES(mysql_embedded debug dbug strings mysys vio yassl taocrypt regex ws2_32)
|
||||
TARGET_LINK_LIBRARIES(mysql_embedded libmysqld)
|
||||
../../client/mysql.cc ../../client/readline.cc)
|
||||
TARGET_LINK_LIBRARIES(mysql_embedded mysqlserver)
|
||||
IF(UNIX)
|
||||
ADD_DEFINITIONS(${READLINE_DEFINES})
|
||||
TARGET_LINK_LIBRARIES(mysql_embedded ${READLINE_LIBRARY})
|
||||
ENDIF(UNIX)
|
||||
|
||||
ADD_EXECUTABLE(mysqltest_embedded ../../client/mysqltest.cc)
|
||||
TARGET_LINK_LIBRARIES(mysqltest_embedded debug dbug strings mysys vio yassl taocrypt regex ws2_32)
|
||||
TARGET_LINK_LIBRARIES(mysqltest_embedded libmysqld)
|
||||
TARGET_LINK_LIBRARIES(mysqltest_embedded mysqlserver)
|
||||
|
||||
ADD_EXECUTABLE(mysql_client_test_embedded ../../tests/mysql_client_test.c)
|
||||
TARGET_LINK_LIBRARIES(mysql_client_test_embedded debug dbug strings mysys vio yassl taocrypt regex ws2_32)
|
||||
TARGET_LINK_LIBRARIES(mysql_client_test_embedded libmysqld)
|
||||
|
||||
IF(CMAKE_GENERATOR MATCHES "Xcode")
|
||||
# It does not seem possible to tell Xcode the resulting target might need
|
||||
# to be linked with C++ runtime. The project needs to have at least one C++
|
||||
# file. Add a dummy one.
|
||||
MYSQL_CREATE_EMPTY_FILE(mysql_client_test_embedded_dummy.cc)
|
||||
ADD_EXECUTABLE(mysql_client_test_embedded
|
||||
mysql_client_test_embedded_dummy.cc
|
||||
../../tests/mysql_client_test.c)
|
||||
ELSE()
|
||||
ADD_EXECUTABLE(mysql_client_test_embedded ../../tests/mysql_client_test.c)
|
||||
SET_TARGET_PROPERTIES(mysql_client_test_embedded PROPERTIES HAS_CXX TRUE)
|
||||
ENDIF()
|
||||
TARGET_LINK_LIBRARIES(mysql_client_test_embedded mysqlserver)
|
||||
|
||||
IF(UNIX)
|
||||
SET_TARGET_PROPERTIES(mysql_embedded PROPERTIES ENABLE_EXPORTS TRUE)
|
||||
SET_TARGET_PROPERTIES(mysqltest_embedded PROPERTIES ENABLE_EXPORTS TRUE)
|
||||
SET_TARGET_PROPERTIES(mysql_client_test_embedded PROPERTIES ENABLE_EXPORTS TRUE)
|
||||
ENDIF()
|
||||
|
||||
INSTALL(TARGETS mysql_embedded mysqltest_embedded mysql_client_test_embedded DESTINATION bin)
|
||||
|
|
|
@ -731,11 +731,6 @@ void THD::clear_data_list()
|
|||
cur_data= 0;
|
||||
}
|
||||
|
||||
void THD::clear_error()
|
||||
{
|
||||
if (stmt_da->is_error())
|
||||
stmt_da->reset_diagnostics_area();
|
||||
}
|
||||
|
||||
static char *dup_str_aux(MEM_ROOT *root, const char *from, uint length,
|
||||
CHARSET_INFO *fromcs, CHARSET_INFO *tocs)
|
||||
|
|
24
man/CMakeLists.txt
Normal file
24
man/CMakeLists.txt
Normal file
|
@ -0,0 +1,24 @@
|
|||
# Copyright (C) 2009 Sun Microsystems, Inc
|
||||
#
|
||||
# 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
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
# Copy man pages
|
||||
FILE(GLOB MAN1_FILES *.1)
|
||||
FILE(GLOB MAN8_FILES *.8)
|
||||
IF(MAN1_FILES)
|
||||
INSTALL(FILES ${MAN1_FILES} DESTINATION man/man1)
|
||||
ENDIF()
|
||||
IF(MAN8_FILES)
|
||||
INSTALL(FILES ${MAN8_FILES} DESTINATION man/man8)
|
||||
ENDIF()
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
man1_MANS = @man1_files@
|
||||
man8_MANS = @man8_files@
|
||||
EXTRA_DIST = $(man1_MANS) $(man8_MANS)
|
||||
EXTRA_DIST = $(man1_MANS) $(man8_MANS) CMakeLists.txt
|
||||
|
||||
# "make_win_*" are not needed in Unix binary packages,
|
||||
install-data-hook:
|
||||
|
|
110
mysql-test/CMakeLists.txt
Normal file
110
mysql-test/CMakeLists.txt
Normal file
|
@ -0,0 +1,110 @@
|
|||
# Copyright (C) 2009 Sun Microsystems, Inc
|
||||
#
|
||||
# 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
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
INSTALL(
|
||||
DIRECTORY .
|
||||
DESTINATION mysql-test
|
||||
PATTERN "var/" EXCLUDE
|
||||
PATTERN "lib/My/SafeProcess" EXCLUDE
|
||||
PATTERN "CPack" EXCLUDE
|
||||
PATTERN "CMake" EXCLUDE
|
||||
PATTERN "mtr.out" EXCLUDE
|
||||
PATTERN ".cvsignore" EXCLUDE
|
||||
)
|
||||
|
||||
|
||||
|
||||
IF(NOT ${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
|
||||
# Enable running mtr from build directory
|
||||
CONFIGURE_FILE(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/mtr.out-of-source
|
||||
${CMAKE_CURRENT_BINARY_DIR}/mysql-test-run.pl
|
||||
@ONLY
|
||||
)
|
||||
ENDIF()
|
||||
IF(UNIX)
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND chmod +x mysql-test-run.pl
|
||||
COMMAND ${CMAKE_COMMAND} -E create_symlink
|
||||
./mysql-test-run.pl mtr
|
||||
COMMAND ${CMAKE_COMMAND} -E create_symlink
|
||||
./mysql-test-run.pl mysql-test-run
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
)
|
||||
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/mtr
|
||||
${CMAKE_CURRENT_BINARY_DIR}/mysql-test-run DESTINATION mysql-test)
|
||||
ENDIF()
|
||||
|
||||
IF(CMAKE_GENERATOR MATCHES "Visual Studio")
|
||||
SET(SETCONFIG_COMMAND set MTR_VS_CONFIG=$(OutDir))
|
||||
ELSEIF(CMAKE_GENERATOR MATCHES "Xcode")
|
||||
SET(SETCONFIG_COMMAND export MTR_VS_CONFIG=$(CONFIGURATION))
|
||||
ELSE()
|
||||
SET(SETCONFIG_COMMAND echo Running tests)
|
||||
ENDIF()
|
||||
IF(CYGWIN)
|
||||
# On cygwin, pretend to be "Unix" system
|
||||
SET(SETOS_COMMAND export MTR_CYGWIN_IS_UNIX=1)
|
||||
ELSE()
|
||||
SET(SETOS_COMMAND echo OS=${CMAKE_SYSTEM_NAME})
|
||||
ENDIF()
|
||||
|
||||
|
||||
ADD_CUSTOM_TARGET(test-force
|
||||
COMMAND ${SETCONFIG_COMMAND}
|
||||
COMMAND ${SETOS_COMMAND}
|
||||
COMMAND perl mysql-test-run.pl --force
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
)
|
||||
|
||||
SET(EXP --experimental=collections/default.experimental)
|
||||
IF(WIN32)
|
||||
SET(SET_ENV set)
|
||||
ELSE()
|
||||
SET(SET_ENV export)
|
||||
ENDIF()
|
||||
|
||||
|
||||
SET(MTR_FORCE perl ./mysql-test-run.pl --force)
|
||||
IF(EXISTS ${CMAKE_SOURCE_DIR}/mysql-test/suite/nist)
|
||||
SET(TEST_NIST ${MTR_FORCE} --comment=nist suite=nist ${EXP} &&
|
||||
${MTR_FORCE} --comment=nist --force --suite=nist+ps ${EXP})
|
||||
ELSE()
|
||||
SET(TEST_NIST echo "NIST tests not found")
|
||||
ENDIF()
|
||||
|
||||
IF(WITH_EMBEDDED_SERVER)
|
||||
SET(TEST_EMBEDDED ${MTR_FORCE} --comment=embedded --timer --embedded-server
|
||||
--skip-rpl --skip-ndbcluster $(EXP))
|
||||
ELSE()
|
||||
SET(TEST_EMBEDDED echo "Can not test embedded, not compiled in")
|
||||
ENDIF()
|
||||
|
||||
ADD_CUSTOM_TARGET(test-bt
|
||||
COMMAND ${SETCONFIG_COMMAND}
|
||||
COMMAND ${SETOS_COMMAND}
|
||||
COMMAND ${SET_ENV} MTR_BUILD_THREAD=auto
|
||||
COMMAND ${MTR_FORCE} --comment=normal --timer --skip-ndbcluster --report-features ${EXP}
|
||||
COMMAND ${MTR_FORCE} --comment=ps --timer --skip-ndbcluster --ps-protocol ${EXP}
|
||||
COMMAND ${MTR_FORCE} --comment=funcs1+ps --ps-protocol --reorder --suite=funcs_1 ${EXP}
|
||||
COMMAND ${MTR_FORCE} --comment=funcs2 --suite=funcs_2 ${EXP}
|
||||
COMMAND ${MTR_FORCE} --comment=partitions --suite=parts ${EXP}
|
||||
COMMAND ${MTR_FORCE} --comment=stress --suite=stress ${EXP}
|
||||
COMMAND ${MTR_FORCE} --force --comment=jp --suite=jp ${EXP}
|
||||
COMMAND ${TEST_NIST}
|
||||
COMMAND ${TEST_EMBEDDED}
|
||||
)
|
||||
|
||||
|
|
@ -71,7 +71,10 @@ SUBDIRS = lib/My/SafeProcess
|
|||
|
||||
EXTRA_DIST = README \
|
||||
$(test_SCRIPTS) \
|
||||
$(nobase_test_DATA)
|
||||
$(nobase_test_DATA) \
|
||||
CMakeLists.txt \
|
||||
mtr.out-of-source
|
||||
|
||||
|
||||
# List of directories containing test + result files and the
|
||||
# related test data files that should be copied
|
||||
|
|
|
@ -29,6 +29,15 @@ sub get_basedir {
|
|||
return $basedir;
|
||||
}
|
||||
|
||||
# Retrive build directory (which is different from basedir in out-of-source build)
|
||||
sub get_bindir {
|
||||
if (defined $ENV{MTR_BINDIR})
|
||||
{
|
||||
return $ENV{MTR_BINDIR};
|
||||
}
|
||||
my ($self, $group)= @_;
|
||||
return $self->get_basedir($group);
|
||||
}
|
||||
|
||||
sub fix_charset_dir {
|
||||
my ($self, $config, $group_name, $group)= @_;
|
||||
|
@ -38,7 +47,7 @@ sub fix_charset_dir {
|
|||
|
||||
sub fix_language {
|
||||
my ($self, $config, $group_name, $group)= @_;
|
||||
return my_find_dir($self->get_basedir($group),
|
||||
return my_find_dir($self->get_bindir($group),
|
||||
\@share_locations);
|
||||
}
|
||||
|
||||
|
|
|
@ -167,16 +167,16 @@ sub my_find_paths {
|
|||
}
|
||||
|
||||
# -------------------------------------------------------
|
||||
# Windows specific
|
||||
# CMake generator specific (Visual Studio and Xcode have multimode builds)
|
||||
# -------------------------------------------------------
|
||||
if (IS_WINDOWS) {
|
||||
# Add the default extra build dirs unless a specific one has
|
||||
# already been selected
|
||||
push(@extra_dirs,
|
||||
("release",
|
||||
"relwithdebinfo",
|
||||
"debug")) if @extra_dirs == 0;
|
||||
}
|
||||
|
||||
# Add the default extra build dirs unless a specific one has
|
||||
# already been selected
|
||||
push(@extra_dirs,
|
||||
("Release",
|
||||
"Relwithdebinfo",
|
||||
"Debug")) if @extra_dirs == 0;
|
||||
|
||||
|
||||
#print "extra_build_dir: @extra_dirs\n";
|
||||
|
||||
|
|
|
@ -84,19 +84,31 @@ sub is_child {
|
|||
# Find the safe process binary or script
|
||||
my @safe_process_cmd;
|
||||
my $safe_kill;
|
||||
my $bindir;
|
||||
if(defined $ENV{MTR_BINDIR})
|
||||
{
|
||||
# This is an out-of-source build. Build directory
|
||||
# is given in MTR_BINDIR env.variable
|
||||
$bindir = $ENV{MTR_BINDIR}."/mysql-test";
|
||||
}
|
||||
else
|
||||
{
|
||||
$bindir = ".";
|
||||
}
|
||||
|
||||
if (IS_WIN32PERL or IS_CYGWIN){
|
||||
# Use my_safe_process.exe
|
||||
my $exe= my_find_bin(".", ["lib/My/SafeProcess", "My/SafeProcess"],
|
||||
my $exe= my_find_bin($bindir, ["lib/My/SafeProcess", "My/SafeProcess"],
|
||||
"my_safe_process");
|
||||
push(@safe_process_cmd, $exe);
|
||||
|
||||
# Use my_safe_kill.exe
|
||||
$safe_kill= my_find_bin(".", "lib/My/SafeProcess", "my_safe_kill");
|
||||
$safe_kill= my_find_bin($bindir, "lib/My/SafeProcess", "my_safe_kill");
|
||||
}
|
||||
else
|
||||
{
|
||||
# Use my_safe_process
|
||||
my $exe= my_find_bin(".", ["lib/My/SafeProcess", "My/SafeProcess"],
|
||||
my $exe= my_find_bin($bindir, ["lib/My/SafeProcess", "My/SafeProcess"],
|
||||
"my_safe_process");
|
||||
push(@safe_process_cmd, $exe);
|
||||
}
|
||||
|
|
|
@ -13,5 +13,15 @@
|
|||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
ADD_EXECUTABLE(my_safe_process safe_process_win.cc)
|
||||
ADD_EXECUTABLE(my_safe_kill safe_kill_win.cc)
|
||||
IF (WIN32)
|
||||
ADD_EXECUTABLE(my_safe_process safe_process_win.cc)
|
||||
ADD_EXECUTABLE(my_safe_kill safe_kill_win.cc)
|
||||
ELSE()
|
||||
ADD_EXECUTABLE(my_safe_process safe_process.cc)
|
||||
ENDIF()
|
||||
|
||||
INSTALL(TARGETS my_safe_process DESTINATION "mysql-test/lib/My/SafeProcess")
|
||||
IF(WIN32)
|
||||
INSTALL(TARGETS my_safe_kill DESTINATION "mysql-test/lib/My/SafeProcess")
|
||||
ENDIF()
|
||||
INSTALL(FILES safe_process.pl Base.pm DESTINATION "mysql-test/lib/My/SafeProcess")
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <signal.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int main(int argc, const char** argv )
|
||||
{
|
||||
|
|
|
@ -57,6 +57,7 @@
|
|||
#include <stdio.h>
|
||||
#include <tlhelp32.h>
|
||||
#include <signal.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
static int verbose= 0;
|
||||
static char safe_process_name[32]= {0};
|
||||
|
@ -248,6 +249,10 @@ int main(int argc, const char** argv )
|
|||
Make all processes associated with the job terminate when the
|
||||
last handle to the job is closed.
|
||||
*/
|
||||
#ifndef JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE
|
||||
#define JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE 0x00002000
|
||||
#endif
|
||||
|
||||
jeli.BasicLimitInformation.LimitFlags = JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE;
|
||||
if (SetInformationJobObject(job_handle, JobObjectExtendedLimitInformation,
|
||||
&jeli, sizeof(jeli)) == 0)
|
||||
|
|
5
mysql-test/mtr.out-of-source
Normal file
5
mysql-test/mtr.out-of-source
Normal file
|
@ -0,0 +1,5 @@
|
|||
#!/usr/bin/perl
|
||||
# Call mtr in out-of-source build
|
||||
$ENV{MTR_BINDIR} = "@CMAKE_BINARY_DIR@";
|
||||
chdir("@CMAKE_SOURCE_DIR@/mysql-test");
|
||||
exit(system($^X, "@CMAKE_SOURCE_DIR@/mysql-test/mysql-test-run.pl", @ARGV) >> 8);
|
|
@ -94,6 +94,7 @@ $SIG{INT}= sub { mtr_error("Got ^C signal"); };
|
|||
our $mysql_version_id;
|
||||
our $glob_mysql_test_dir;
|
||||
our $basedir;
|
||||
our $bindir;
|
||||
|
||||
our $path_charsetsdir;
|
||||
our $path_client_bindir;
|
||||
|
@ -943,7 +944,11 @@ sub command_line_setup {
|
|||
{
|
||||
$basedir= dirname($basedir);
|
||||
}
|
||||
|
||||
|
||||
# Respect MTR_BINDIR variable, which is typically set in to the
|
||||
# build directory in out-of-source builds.
|
||||
$bindir=$ENV{MTR_BINDIR}||$basedir;
|
||||
|
||||
# Look for the client binaries directory
|
||||
if ($path_client_bindir)
|
||||
{
|
||||
|
@ -952,21 +957,21 @@ sub command_line_setup {
|
|||
}
|
||||
else
|
||||
{
|
||||
$path_client_bindir= mtr_path_exists("$basedir/client_release",
|
||||
"$basedir/client_debug",
|
||||
$path_client_bindir= mtr_path_exists("$bindir/client_release",
|
||||
"$bindir/client_debug",
|
||||
vs_config_dirs('client', ''),
|
||||
"$basedir/client",
|
||||
"$basedir/bin");
|
||||
"$bindir/client",
|
||||
"$bindir/bin");
|
||||
}
|
||||
|
||||
# Look for language files and charsetsdir, use same share
|
||||
$path_language= mtr_path_exists("$basedir/share/mysql",
|
||||
"$basedir/sql/share",
|
||||
"$basedir/share");
|
||||
|
||||
|
||||
$path_language= mtr_path_exists("$bindir/share/mysql",
|
||||
"$bindir/sql/share",
|
||||
"$bindir/share");
|
||||
my $path_share= $path_language;
|
||||
$path_charsetsdir= mtr_path_exists("$path_share/charsets");
|
||||
$path_charsetsdir = mtr_path_exists("$basedir/share/mysql/charsets",
|
||||
"$basedir/sql/share/charsets",
|
||||
"$basedir/share/charsets");
|
||||
|
||||
if (using_extern())
|
||||
{
|
||||
|
@ -1104,7 +1109,14 @@ sub command_line_setup {
|
|||
# --------------------------------------------------------------------------
|
||||
# Set the "var/" directory, the base for everything else
|
||||
# --------------------------------------------------------------------------
|
||||
$default_vardir= "$glob_mysql_test_dir/var";
|
||||
if(defined $ENV{MTR_BINDIR})
|
||||
{
|
||||
$default_vardir= "$ENV{MTR_BINDIR}/mysql-test/var";
|
||||
}
|
||||
else
|
||||
{
|
||||
$default_vardir= "$glob_mysql_test_dir/var";
|
||||
}
|
||||
if ( ! $opt_vardir )
|
||||
{
|
||||
$opt_vardir= $default_vardir;
|
||||
|
@ -1558,7 +1570,8 @@ sub collect_mysqld_features_from_running_server ()
|
|||
}
|
||||
|
||||
sub find_mysqld {
|
||||
my ($mysqld_basedir)= @_;
|
||||
|
||||
my ($mysqld_basedir)= $ENV{MTR_BINDIR}|| @_;
|
||||
|
||||
my @mysqld_names= ("mysqld", "mysqld-max-nt", "mysqld-max",
|
||||
"mysqld-nt");
|
||||
|
@ -1644,7 +1657,7 @@ sub client_debug_arg($$) {
|
|||
|
||||
sub mysql_fix_arguments () {
|
||||
|
||||
return "" if ( IS_WINDOWS );
|
||||
return "" ;
|
||||
|
||||
my $exe=
|
||||
mtr_script_exists("$basedir/scripts/mysql_fix_privilege_tables",
|
||||
|
@ -1744,6 +1757,30 @@ sub mysql_client_test_arguments(){
|
|||
# Set environment to be used by childs of this process for
|
||||
# things that are constant during the whole lifetime of mysql-test-run
|
||||
#
|
||||
|
||||
sub find_plugin($$)
|
||||
{
|
||||
my ($plugin, $location) = @_;
|
||||
my $plugin_filename;
|
||||
|
||||
if (IS_WINDOWS)
|
||||
{
|
||||
$plugin_filename = $plugin.".dll";
|
||||
}
|
||||
else
|
||||
{
|
||||
$plugin_filename = $plugin.".so";
|
||||
}
|
||||
|
||||
my $lib_example_plugin=
|
||||
mtr_file_exists(vs_config_dirs($location,$plugin_filename),
|
||||
"$basedir/lib/plugin/".$plugin_filename,
|
||||
"$basedir/$location/.libs/".$plugin_filename,
|
||||
"$basedir/lib/mysql/plugin/".$plugin_filename,
|
||||
);
|
||||
return $lib_example_plugin;
|
||||
}
|
||||
|
||||
sub environment_setup {
|
||||
|
||||
umask(022);
|
||||
|
@ -1782,9 +1819,18 @@ sub environment_setup {
|
|||
# --------------------------------------------------------------------------
|
||||
# Add the path where mysqld will find udf_example.so
|
||||
# --------------------------------------------------------------------------
|
||||
my $udf_example_filename;
|
||||
if (IS_WINDOWS)
|
||||
{
|
||||
$udf_example_filename = "udf_example.dll";
|
||||
}
|
||||
else
|
||||
{
|
||||
$udf_example_filename = "udf_example.so";
|
||||
}
|
||||
my $lib_udf_example=
|
||||
mtr_file_exists(vs_config_dirs('sql', 'udf_example.dll'),
|
||||
"$basedir/sql/.libs/udf_example.so",);
|
||||
mtr_file_exists(vs_config_dirs('sql', $udf_example_filename),
|
||||
"$basedir/sql/.libs/$udf_example_filename",);
|
||||
|
||||
if ( $lib_udf_example )
|
||||
{
|
||||
|
@ -1800,60 +1846,46 @@ sub environment_setup {
|
|||
# Add the path where mysqld will find ha_example.so
|
||||
# --------------------------------------------------------------------------
|
||||
if ($mysql_version_id >= 50100) {
|
||||
my $plugin_filename;
|
||||
if (IS_WINDOWS)
|
||||
{
|
||||
$plugin_filename = "ha_example.dll";
|
||||
}
|
||||
else
|
||||
{
|
||||
$plugin_filename = "ha_example.so";
|
||||
}
|
||||
my $lib_example_plugin=
|
||||
mtr_file_exists(vs_config_dirs('storage/example',$plugin_filename),
|
||||
"$basedir/storage/example/.libs/".$plugin_filename,
|
||||
"$basedir/lib/mysql/plugin/".$plugin_filename);
|
||||
$ENV{'EXAMPLE_PLUGIN'}=
|
||||
($lib_example_plugin ? basename($lib_example_plugin) : "");
|
||||
$ENV{'EXAMPLE_PLUGIN_OPT'}= "--plugin-dir=".
|
||||
my ($lib_example_plugin) = find_plugin("ha_example", "storage/example");
|
||||
|
||||
if($lib_example_plugin)
|
||||
{
|
||||
$ENV{'EXAMPLE_PLUGIN'}=
|
||||
($lib_example_plugin ? basename($lib_example_plugin) : "");
|
||||
$ENV{'EXAMPLE_PLUGIN_OPT'}= "--plugin-dir=".
|
||||
($lib_example_plugin ? dirname($lib_example_plugin) : "");
|
||||
|
||||
$ENV{'HA_EXAMPLE_SO'}="'".$plugin_filename."'";
|
||||
$ENV{'EXAMPLE_PLUGIN_LOAD'}="--plugin_load=EXAMPLE=".$plugin_filename;
|
||||
}
|
||||
else
|
||||
{
|
||||
# Some ".opt" files use some of these variables, so they must be defined
|
||||
$ENV{'EXAMPLE_PLUGIN'}= "";
|
||||
$ENV{'EXAMPLE_PLUGIN_OPT'}= "";
|
||||
$ENV{'HA_EXAMPLE_SO'}= "";
|
||||
$ENV{'EXAMPLE_PLUGIN_LOAD'}= "";
|
||||
$ENV{'HA_EXAMPLE_SO'}="'".basename($lib_example_plugin)."'";
|
||||
$ENV{'EXAMPLE_PLUGIN_LOAD'}="--plugin_load=EXAMPLE=".basename($lib_example_plugin);
|
||||
}
|
||||
else
|
||||
{
|
||||
# Some ".opt" files use some of these variables, so they must be defined
|
||||
$ENV{'EXAMPLE_PLUGIN'}= "";
|
||||
$ENV{'EXAMPLE_PLUGIN_OPT'}= "";
|
||||
$ENV{'HA_EXAMPLE_SO'}= "";
|
||||
$ENV{'EXAMPLE_PLUGIN_LOAD'}= "";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# Add the path where mysqld will find semisync plugins
|
||||
# --------------------------------------------------------------------------
|
||||
if (!$opt_embedded_server) {
|
||||
my $semisync_master_filename;
|
||||
my $semisync_slave_filename;
|
||||
my $semisync_lib_prefix;
|
||||
if (IS_WINDOWS)
|
||||
{
|
||||
$semisync_master_filename = "semisync_master.dll";
|
||||
$semisync_slave_filename = "semisync_slave.dll";
|
||||
$semisync_lib_prefix = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
$semisync_master_filename = "libsemisync_master.so";
|
||||
$semisync_slave_filename = "libsemisync_slave.so";
|
||||
$semisync_lib_prefix= "lib";
|
||||
}
|
||||
my $lib_semisync_master_plugin=
|
||||
mtr_file_exists(vs_config_dirs('plugin/semisync',$semisync_master_filename),
|
||||
"$basedir/plugin/semisync/.libs/" . $semisync_master_filename,
|
||||
"$basedir/lib/mysql/plugin/" . $semisync_master_filename);
|
||||
my $lib_semisync_slave_plugin=
|
||||
mtr_file_exists(vs_config_dirs('plugin/semisync',$semisync_slave_filename),
|
||||
"$basedir/plugin/semisync/.libs/" . $semisync_slave_filename,
|
||||
"$basedir/lib/mysql/plugin/" . $semisync_slave_filename);
|
||||
|
||||
my ($lib_semisync_master_plugin) = find_plugin($semisync_lib_prefix."semisync_master", "plugin/semisync");
|
||||
my ($lib_semisync_slave_plugin) = find_plugin($semisync_lib_prefix."semisync_slave", "plugin/semisync");
|
||||
|
||||
if ($lib_semisync_master_plugin && $lib_semisync_slave_plugin)
|
||||
{
|
||||
$ENV{'SEMISYNC_MASTER_PLUGIN'}= basename($lib_semisync_master_plugin);
|
||||
|
@ -1871,10 +1903,10 @@ sub environment_setup {
|
|||
# ----------------------------------------------------
|
||||
# Add the path where mysqld will find mypluglib.so
|
||||
# ----------------------------------------------------
|
||||
my $lib_simple_parser=
|
||||
mtr_file_exists(vs_config_dirs('plugin/fulltext', 'mypluglib.dll'),
|
||||
"$basedir/plugin/fulltext/.libs/mypluglib.so",);
|
||||
|
||||
my ($lib_simple_parser) = find_plugin("mypluglib", "plugin/fulltext");
|
||||
|
||||
$ENV{'MYPLUGLIB_SO'}="'".basename($lib_simple_parser)."'";
|
||||
$ENV{'SIMPLE_PARSER'}=
|
||||
($lib_simple_parser ? basename($lib_simple_parser) : "");
|
||||
$ENV{'SIMPLE_PARSER_OPT'}= "--plugin-dir=".
|
||||
|
@ -2303,18 +2335,15 @@ sub vs_config_dirs ($$) {
|
|||
my ($path_part, $exe) = @_;
|
||||
|
||||
$exe = "" if not defined $exe;
|
||||
|
||||
# Don't look in these dirs when not on windows
|
||||
return () unless IS_WINDOWS;
|
||||
|
||||
if ($opt_vs_config)
|
||||
{
|
||||
return ("$basedir/$path_part/$opt_vs_config/$exe");
|
||||
return ("$bindir/$path_part/$opt_vs_config/$exe");
|
||||
}
|
||||
|
||||
return ("$basedir/$path_part/release/$exe",
|
||||
"$basedir/$path_part/relwithdebinfo/$exe",
|
||||
"$basedir/$path_part/debug/$exe");
|
||||
return ("$bindir/$path_part/Release/$exe",
|
||||
"$bindir/$path_part/RelWithDebinfo/$exe",
|
||||
"$bindir/$path_part/Debug/$exe",
|
||||
"$bindir/$path_part/$exe");
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
#
|
||||
# BUG#39746 - Debug flag breaks struct definition (server crash)
|
||||
#
|
||||
INSTALL PLUGIN simple_parser SONAME 'mypluglib.so';
|
||||
--replace_regex /\.dll/.so/
|
||||
eval INSTALL PLUGIN simple_parser SONAME $MYPLUGLIB_SO;
|
||||
CREATE TABLE t1(a TEXT, b TEXT, FULLTEXT(a) WITH PARSER simple_parser);
|
||||
ALTER TABLE t1 ADD FULLTEXT(b) WITH PARSER simple_parser;
|
||||
DROP TABLE t1;
|
||||
|
|
|
@ -13,15 +13,9 @@
|
|||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
# Only the server link with this library, the client libraries and the client
|
||||
# executables all link with recompiles of source found in the "mysys" directory.
|
||||
# So we only need to create one version of this library, with the "static"
|
||||
# Thread Local Storage model.
|
||||
#
|
||||
# Exception is the embedded server that needs this library compiled with
|
||||
# dynamic TLS, i.e. define USE_TLS
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/zlib ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/mysys)
|
||||
|
||||
INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR} ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/mysys)
|
||||
|
||||
SET(MYSYS_SOURCES array.c charset-def.c charset.c checksum.c default.c default_modify.c
|
||||
errors.c hash.c list.c md5.c mf_brkhant.c mf_cache.c mf_dirname.c mf_fn_ext.c
|
||||
|
@ -30,17 +24,39 @@ SET(MYSYS_SOURCES array.c charset-def.c charset.c checksum.c default.c default_
|
|||
mf_radix.c mf_same.c mf_sort.c mf_soundex.c mf_arr_appstr.c mf_tempdir.c
|
||||
mf_tempfile.c mf_unixpath.c mf_wcomp.c mf_wfile.c mulalloc.c my_access.c
|
||||
my_aes.c my_alarm.c my_alloc.c my_append.c my_bit.c my_bitmap.c my_chsize.c
|
||||
my_clock.c my_compress.c my_conio.c my_copy.c my_crc32.c my_create.c my_delete.c
|
||||
my_clock.c my_compress.c my_copy.c my_crc32.c my_create.c my_delete.c
|
||||
my_div.c my_error.c my_file.c my_fopen.c my_fstream.c my_gethostbyname.c
|
||||
my_gethwaddr.c my_getopt.c my_getsystime.c my_getwd.c my_handler.c my_init.c
|
||||
my_lib.c my_lock.c my_lockmem.c my_malloc.c my_messnc.c
|
||||
my_mkdir.c my_mmap.c my_net.c my_once.c my_open.c my_pread.c my_pthread.c
|
||||
my_quick.c my_read.c my_realloc.c my_redel.c my_rename.c my_seek.c my_sleep.c
|
||||
my_static.c my_symlink.c my_symlink2.c my_sync.c my_thr_init.c my_wincond.c
|
||||
my_winerr.c my_winfile.c my_windac.c my_winthread.c my_write.c ptr_cmp.c queues.c stacktrace.c
|
||||
my_static.c my_symlink.c my_symlink2.c my_sync.c my_thr_init.c
|
||||
my_write.c ptr_cmp.c queues.c stacktrace.c
|
||||
rijndael.c safemalloc.c sha1.c string.c thr_alarm.c thr_lock.c thr_mutex.c
|
||||
thr_rwlock.c tree.c typelib.c my_vle.c base64.c my_memmem.c my_getpagesize.c)
|
||||
|
||||
IF(NOT SOURCE_SUBLIBS)
|
||||
ADD_LIBRARY(mysys ${MYSYS_SOURCES})
|
||||
ENDIF(NOT SOURCE_SUBLIBS)
|
||||
IF (WIN32)
|
||||
SET (MYSYS_SOURCES ${MYSYS_SOURCES} my_winthread.c my_wincond.c my_winerr.c my_winfile.c my_windac.c my_conio.c)
|
||||
ENDIF()
|
||||
|
||||
IF(CMAKE_COMPILER_IS_GNUCC AND NOT HAVE_CXX_NEW)
|
||||
# gcc as C++ compiler does not have new/delete
|
||||
SET(MYSYS_SOURCES ${MYSYS_SOURCES} my_new.cc)
|
||||
ADD_DEFINITIONS( -DUSE_MYSYS_NEW)
|
||||
ENDIF()
|
||||
|
||||
IF(HAVE_LARGE_PAGES)
|
||||
SET(MYSYS_SOURCES ${MYSYS_SOURCES} my_largepage.c)
|
||||
ENDIF()
|
||||
|
||||
IF(UNIX)
|
||||
# some workarounds
|
||||
SET(MYSYS_SOURCES ${MYSYS_SOURCES} my_port.c)
|
||||
# Some stuff not ported to windows
|
||||
SET(MYSYS_SOURCES ${MYSYS_SOURCES} my_atomic.c)
|
||||
SET(MYSYS_SOURCES ${MYSYS_SOURCES} my_getncpus.c)
|
||||
ENDIF()
|
||||
USE_ABSOLUTE_FILENAMES(MYSYS_SOURCES)
|
||||
ADD_LIBRARY(mysys ${MYSYS_SOURCES})
|
||||
TARGET_LINK_LIBRARIES(mysys dbug strings ${ZLIB_LIBRARY})
|
||||
DTRACE_INSTRUMENT(mysys)
|
||||
|
|
|
@ -39,14 +39,11 @@ File my_create(const char *FileName, int CreateFlags, int access_flags,
|
|||
DBUG_ENTER("my_create");
|
||||
DBUG_PRINT("my",("Name: '%s' CreateFlags: %d AccessFlags: %d MyFlags: %d",
|
||||
FileName, CreateFlags, access_flags, MyFlags));
|
||||
|
||||
#if !defined(NO_OPEN_3)
|
||||
fd= open((char *) FileName, access_flags | O_CREAT,
|
||||
CreateFlags ? CreateFlags : my_umask);
|
||||
#elif defined(_WIN32)
|
||||
#if defined(_WIN32)
|
||||
fd= my_win_open(FileName, access_flags | O_CREAT);
|
||||
#else
|
||||
fd= open(FileName, access_flags);
|
||||
fd= open((char *) FileName, access_flags | O_CREAT,
|
||||
CreateFlags ? CreateFlags : my_umask);
|
||||
#endif
|
||||
|
||||
if ((MyFlags & MY_SYNC_DIR) && (fd >=0) &&
|
||||
|
|
|
@ -150,7 +150,10 @@ ulonglong my_micro_time()
|
|||
Value in microseconds from some undefined point in time
|
||||
*/
|
||||
|
||||
#define DELTA_FOR_SECONDS LL(500000000) /* Half a second */
|
||||
#define DELTA_FOR_SECONDS 500000000LL /* Half a second */
|
||||
|
||||
/* Difference between GetSystemTimeAsFileTime() and now() */
|
||||
#define OFFSET_TO_EPOCH 116444736000000000ULL
|
||||
|
||||
ulonglong my_micro_time_and_time(time_t *time_arg)
|
||||
{
|
||||
|
|
|
@ -129,4 +129,22 @@ error_return:
|
|||
return -1;
|
||||
}
|
||||
|
||||
int pthread_cancel(pthread_t thread)
|
||||
{
|
||||
|
||||
HANDLE handle= 0;
|
||||
BOOL ok= FALSE;
|
||||
|
||||
handle= OpenThread(THREAD_TERMINATE, FALSE, thread);
|
||||
if (handle)
|
||||
{
|
||||
ok= TerminateThread(handle,0);
|
||||
CloseHandle(handle);
|
||||
}
|
||||
if (ok)
|
||||
return 0;
|
||||
|
||||
errno= EINVAL;
|
||||
return -1;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -44,6 +44,7 @@ extern pthread_mutex_t THR_LOCK_charset, THR_LOCK_time;
|
|||
void my_error_unregister_all(void);
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <sys/stat.h>
|
||||
/* my_winfile.c exports, should not be used outside mysys */
|
||||
extern File my_win_open(const char *path, int oflag);
|
||||
extern int my_win_close(File fd);
|
||||
|
@ -59,8 +60,8 @@ extern FILE* my_win_fopen(const char *filename, const char *type);
|
|||
extern File my_win_fclose(FILE *file);
|
||||
extern File my_win_fileno(FILE *file);
|
||||
extern FILE* my_win_fdopen(File Filedes, const char *type);
|
||||
extern int my_win_stat(const char *path, struct _stat64 *buf);
|
||||
extern int my_win_fstat(File fd, struct _stat64 *buf);
|
||||
extern int my_win_stat(const char *path, struct _stati64 *buf);
|
||||
extern int my_win_fstat(File fd, struct _stati64 *buf);
|
||||
extern int my_win_fsync(File fd);
|
||||
extern File my_win_dup(File fd);
|
||||
extern File my_win_sopen(const char *path, int oflag, int shflag, int perm);
|
||||
|
|
18
plugin/daemon_example/CMakeLists.txt
Normal file
18
plugin/daemon_example/CMakeLists.txt
Normal file
|
@ -0,0 +1,18 @@
|
|||
# Copyright (C) 2009 Sun Microsystems, Inc
|
||||
#
|
||||
# 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
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
SET(DAEMON_EXAMPLE_PLUGIN_DYNAMIC daemon_example)
|
||||
SET(DAEMON_EXAMPLE_SOURCES daemon_example.cc)
|
||||
MYSQL_PLUGIN(DAEMON_EXAMPLE)
|
|
@ -38,6 +38,7 @@ noinst_LIBRARIES = @plugin_daemon_example_static_target@
|
|||
libdaemon_example_a_CXXFLAGS = $(AM_CFLAGS)
|
||||
libdaemon_example_a_CFLAGS = $(AM_CFLAGS)
|
||||
libdaemon_example_a_SOURCES= daemon_example.cc
|
||||
EXTRA_DIST = CMakeLists.txt
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
|
18
plugin/fulltext/CMakeLists.txt
Normal file
18
plugin/fulltext/CMakeLists.txt
Normal file
|
@ -0,0 +1,18 @@
|
|||
# Copyright (C) 2009 Sun Microsystems, Inc
|
||||
#
|
||||
# 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
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
SET(FTEXAMPLE_PLUGIN_DYNAMIC mypluglib)
|
||||
SET(FTEXAMPLE_SOURCES plugin_example.c)
|
||||
MYSQL_PLUGIN(FTEXAMPLE)
|
|
@ -22,6 +22,7 @@ pkgplugin_LTLIBRARIES= mypluglib.la
|
|||
mypluglib_la_SOURCES= plugin_example.c
|
||||
mypluglib_la_LDFLAGS= -module -rpath $(pkgplugindir)
|
||||
mypluglib_la_CFLAGS= -DMYSQL_DYNAMIC_PLUGIN
|
||||
EXTRA_DIST= CMakeLists.txt
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Copyright (C) 2006 MySQL AB
|
||||
# Copyright (C) 2009 Sun Microsystems,Inc
|
||||
#
|
||||
# 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
|
||||
|
@ -11,25 +11,22 @@
|
|||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02
|
||||
|
||||
# This is CMakeLists.txt for semi-sync replication plugins
|
||||
IF(WIN32)
|
||||
SET(LIBPREFIX "")
|
||||
ELSE()
|
||||
SET(LIBPREFIX "lib")
|
||||
ENDIF()
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
SET(SEMISYNC_MASTER_SOURCES semisync.cc semisync_master.cc semisync_master_plugin.cc
|
||||
semisync.h semisync_master.h)
|
||||
|
||||
# Add common include directories
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/zlib
|
||||
${CMAKE_SOURCE_DIR}/sql
|
||||
${CMAKE_SOURCE_DIR}/regex
|
||||
${CMAKE_SOURCE_DIR}/extra/yassl/include)
|
||||
SET(SEMISYNC_MASTER_PLUGIN_DYNAMIC ${LIBPREFIX}semisync_master)
|
||||
MYSQL_PLUGIN(SEMISYNC_MASTER)
|
||||
|
||||
SET(SEMISYNC_MASTER_SOURCES semisync.cc semisync_master.cc semisync_master_plugin.cc)
|
||||
SET(SEMISYNC_SLAVE_SOURCES semisync.cc semisync_slave.cc semisync_slave_plugin.cc)
|
||||
SET(SEMISYNC_SLAVE_SOURCES semisync.cc semisync_slave.cc semisync_slave_plugin.cc
|
||||
semisync.h semisync_slave.h )
|
||||
SET(SEMISYNC_SLAVE_PLUGIN_DYNAMIC ${LIBPREFIX}semisync_slave)
|
||||
MYSQL_PLUGIN(SEMISYNC_SLAVE)
|
||||
|
||||
ADD_DEFINITIONS(-DMYSQL_DYNAMIC_PLUGIN)
|
||||
ADD_LIBRARY(semisync_master SHARED ${SEMISYNC_MASTER_SOURCES})
|
||||
TARGET_LINK_LIBRARIES(semisync_master mysqld)
|
||||
ADD_LIBRARY(semisync_slave SHARED ${SEMISYNC_SLAVE_SOURCES})
|
||||
TARGET_LINK_LIBRARIES(semisync_slave mysqld)
|
||||
MESSAGE("build SEMISYNC as DLL")
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
|
||||
|
||||
SET(REGEX_SOURCES regcomp.c regerror.c regexec.c regfree.c reginit.c)
|
||||
USE_ABSOLUTE_FILENAMES(REGEX_SOURCES)
|
||||
ADD_LIBRARY(regex ${REGEX_SOURCES})
|
||||
|
||||
IF(NOT SOURCE_SUBLIBS)
|
||||
ADD_LIBRARY(regex ${REGEX_SOURCES})
|
||||
ENDIF(NOT SOURCE_SUBLIBS)
|
||||
|
|
|
@ -83,9 +83,7 @@ typedef long sopno;
|
|||
* a string of multi-character elements, and decide the size of the
|
||||
* vectors at run time.
|
||||
*/
|
||||
#ifdef __WIN__
|
||||
typedef unsigned char uch ;
|
||||
#endif
|
||||
|
||||
|
||||
typedef struct {
|
||||
uch *ptr; /* -> uch [csetsize] */
|
||||
|
|
|
@ -13,65 +13,257 @@
|
|||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
# Build mysql_fix_privilege_tables.sql
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_SOURCE_DIR}/scripts/mysql_fix_privilege_tables.sql
|
||||
COMMAND copy /b
|
||||
mysql_system_tables.sql + mysql_system_tables_fix.sql
|
||||
mysql_fix_privilege_tables.sql
|
||||
DEPENDS
|
||||
${PROJECT_SOURCE_DIR}/scripts/mysql_system_tables.sql
|
||||
${PROJECT_SOURCE_DIR}/scripts/mysql_system_tables_fix.sql)
|
||||
IF(UNIX)
|
||||
# FIND_PROC and CHECK_PID are used by mysqld_safe
|
||||
IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
SET (FIND_PROC
|
||||
"ps wwwp $PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"$MYSQLD\" > /dev/null")
|
||||
ENDIF()
|
||||
IF(NOT FIND_PROC AND CMAKE_SYSTEM_NAME MATCHES "SunOS")
|
||||
SET (FIND_PROC
|
||||
"ps -p $PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"$MYSQLD\" > /dev/null")
|
||||
ENDIF()
|
||||
|
||||
IF(NOT FIND_PROC)
|
||||
# BSD style
|
||||
EXECUTE_PROCESS(COMMAND ps -uaxww OUTPUT_QUIET ERROR_QUIET RESULT_VARIABLE result)
|
||||
IF(result MATCHES 0)
|
||||
SET( FIND_PROC
|
||||
"ps -uaxww | grep -v \" grep\" | grep -v mysqld_safe | grep -- "\$MYSQLD\" | grep \" $PID \" > /dev/null")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF(NOT FIND_PROC)
|
||||
# SysV style
|
||||
EXECUTE_PROCESS(COMMAND ps -ef OUTPUT_QUIET ERROR_QUIET RESULT_VARIABLE result)
|
||||
IF(result MATCHES 0)
|
||||
SET( FIND_PROC "ps -ef | grep -v \" grep\" | grep -v mysqld_safe | grep -- "\$MYSQLD\" | grep \" $PID \" > /dev/null")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
EXECUTE_PROCESS(COMMAND sh -c "kill -0 $$" OUTPUT_QUIET ERROR_QUIET RESULT_VARIABLE result2)
|
||||
IF(result3 MATCHES 0)
|
||||
SET(CHECK_PID "kill -0 $PID > /dev/null 2> /dev/null")
|
||||
ELSE()
|
||||
EXECUTE_PROCESS(COMMAND sh -c "kill -s 0 $$" OUTPUT_QUIET ERROR_QUIET RESULT_VARIABLE result3)
|
||||
IF(result4 MATCHES 0)
|
||||
SET(CHECK_PID "kill -s 0 $PID > /dev/null 2> /dev/null")
|
||||
ELSE()
|
||||
SET(CHECK_PID "kill -s SIGCONT $PID > /dev/null 2> /dev/null")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
ENDIF(UNIX)
|
||||
|
||||
|
||||
# Build comp_sql - used for embedding SQL in C or C++ programs
|
||||
ADD_EXECUTABLE(comp_sql comp_sql.c)
|
||||
TARGET_LINK_LIBRARIES(comp_sql dbug mysys strings)
|
||||
IF(NOT CMAKE_CROSSCOMPILING)
|
||||
ADD_EXECUTABLE(comp_sql comp_sql.c)
|
||||
TARGET_LINK_LIBRARIES(comp_sql)
|
||||
ENDIF()
|
||||
|
||||
# Use comp_sql to build mysql_fix_privilege_tables_sql.c
|
||||
GET_TARGET_PROPERTY(COMP_SQL_EXE comp_sql LOCATION)
|
||||
SET(FIX_PRIVS_IN
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/mysql_system_tables.sql
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/mysql_system_tables_fix.sql
|
||||
)
|
||||
SET(FIX_PRIVILEGES_SQL
|
||||
${CMAKE_CURRENT_BINARY_DIR}/mysql_fix_privilege_tables.sql
|
||||
)
|
||||
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_SOURCE_DIR}/scripts/mysql_fix_privilege_tables_sql.c
|
||||
COMMAND ${COMP_SQL_EXE}
|
||||
mysql_fix_privilege_tables
|
||||
mysql_fix_privilege_tables.sql
|
||||
mysql_fix_privilege_tables_sql.c
|
||||
DEPENDS comp_sql ${PROJECT_SOURCE_DIR}/scripts/mysql_fix_privilege_tables.sql)
|
||||
# Build mysql_fix_privilege_tables.sql (concatenate 2 sql scripts)
|
||||
ADD_CUSTOM_COMMAND(
|
||||
OUTPUT ${FIX_PRIVILEGES_SQL}
|
||||
COMMAND ${CMAKE_COMMAND} "-DIN=${FIX_PRIVS_IN}" "-DOUT=${FIX_PRIVILEGES_SQL}"
|
||||
-P "${CMAKE_SOURCE_DIR}/cmake/cat.cmake"
|
||||
VERBATIM
|
||||
DEPENDS ${FIX_PRIVS_IN}
|
||||
)
|
||||
|
||||
# Add dummy target for the above to be built
|
||||
# Build mysql_fix_privilege_tables.c
|
||||
ADD_CUSTOM_COMMAND(
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/mysql_fix_privilege_tables_sql.c
|
||||
COMMAND comp_sql
|
||||
mysql_fix_privilege_tables
|
||||
mysql_fix_privilege_tables.sql
|
||||
mysql_fix_privilege_tables_sql.c
|
||||
DEPENDS comp_sql ${CMAKE_CURRENT_BINARY_DIR}/mysql_fix_privilege_tables.sql
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
)
|
||||
|
||||
# Add target for the above to be built
|
||||
ADD_CUSTOM_TARGET(GenFixPrivs
|
||||
ALL
|
||||
DEPENDS ${PROJECT_SOURCE_DIR}/scripts/mysql_fix_privilege_tables_sql.c)
|
||||
ALL
|
||||
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/mysql_fix_privilege_tables_sql.c
|
||||
)
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Replace some variables @foo@ in the .in/.sh file, and write the new script
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
SET(CFLAGS "-D_WINDOWS ${CMAKE_C_FLAGS_RELWITHDEBINFO}")
|
||||
SET(prefix "${CMAKE_INSTALL_PREFIX}/MySQL Server ${MYSQL_BASE_VERSION}")
|
||||
SET(sysconfdir ${prefix})
|
||||
SET(bindir ${prefix}/bin)
|
||||
SET(libexecdir ${prefix}/bin)
|
||||
SET(scriptdir ${prefix}/bin)
|
||||
SET(datadir ${prefix}/share)
|
||||
SET(pkgdatadir ${prefix}/share)
|
||||
SET(localstatedir ${prefix}/data)
|
||||
SET(CFLAGS "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
|
||||
SET(CXXFLAGS "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
|
||||
SET(LDFLAGS "${CMAKE_SHARED_LIBRARY_LINK_FLAGS}")
|
||||
|
||||
CONFIGURE_FILE(mysql_config.pl.in
|
||||
scripts/mysql_config.pl ESCAPE_QUOTES @ONLY)
|
||||
IF(WIN32)
|
||||
SET(prefix "${CMAKE_INSTALL_PREFIX}/MySQL Server ${MYSQL_BASE_VERSION}")
|
||||
ELSE()
|
||||
set(prefix "${CMAKE_INSTALL_PREFIX}/mysql")
|
||||
ENDIF()
|
||||
|
||||
CONFIGURE_FILE(mysql_convert_table_format.sh
|
||||
scripts/mysql_convert_table_format.pl ESCAPE_QUOTES @ONLY)
|
||||
SET(sysconfdir ${prefix})
|
||||
SET(bindir ${prefix}/bin)
|
||||
SET(libexecdir ${prefix}/bin)
|
||||
SET(scriptdir ${prefix}/bin)
|
||||
SET(datadir ${prefix}/share)
|
||||
SET(pkgdatadir ${prefix}/share)
|
||||
SET(pkgincludedir ${prefix}/include)
|
||||
SET(pkglibdir ${prefix}/lib)
|
||||
SET(pkgplugindir ${prefix}/lib/plugin)
|
||||
SET(localstatedir ${prefix}/data)
|
||||
|
||||
CONFIGURE_FILE(mysql_install_db.pl.in
|
||||
scripts/mysql_install_db.pl ESCAPE_QUOTES @ONLY)
|
||||
# Use cmake variables to inspect dependencies for
|
||||
# mysqlclient library
|
||||
SET(CLIENT_LIBS "")
|
||||
SET(LIBS "")
|
||||
FOREACH(lib ${mysqlclient_LIB_DEPENDS})
|
||||
# Filter out general, it is CMake hint
|
||||
# not real
|
||||
IF(NOT lib STREQUAL "general" AND NOT CLIENT_LIBS MATCHES "-l${lib} ")
|
||||
SET(CLIENT_LIBS "${CLIENT_LIBS}-l${lib} " )
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
FOREACH(lib ${mysqlserver_LIB_DEPENDS})
|
||||
IF(NOT lib STREQUAL "general" AND NOT LIBS MATCHES "-l${lib} ")
|
||||
SET(LIBS "${LIBS}-l${lib} " )
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
IF(MSVC)
|
||||
STRING(REPLACE "-l" "" CLIENT_LIBS "${CLIENT_LIBS}")
|
||||
STRING(REPLACE "-l" "" LIBS "${LIBS}" )
|
||||
ENDIF()
|
||||
|
||||
CONFIGURE_FILE(mysql_secure_installation.pl.in
|
||||
scripts/mysql_secure_installation.pl ESCAPE_QUOTES @ONLY)
|
||||
SET(NON_THREADED_LIBS ${CLIENT_LIBS})
|
||||
|
||||
CONFIGURE_FILE(mysqld_multi.sh
|
||||
scripts/mysqld_multi.pl ESCAPE_QUOTES @ONLY)
|
||||
IF(WIN32)
|
||||
# On Windows, some .sh and some .pl.in files are configured
|
||||
# The resulting files will have .pl extension (those are perl scripts)
|
||||
|
||||
CONFIGURE_FILE(mysqldumpslow.sh
|
||||
scripts/mysqldumpslow.pl ESCAPE_QUOTES @ONLY)
|
||||
# Input files with pl.in extension
|
||||
SET(PLIN_FILES mysql_config mysql_secure_installation)
|
||||
# Input files with .sh extension
|
||||
SET(SH_FILES mysql_convert_table_format mysqld_multi)
|
||||
|
||||
CONFIGURE_FILE(mysqlhotcopy.sh
|
||||
scripts/mysqlhotcopy.pl ESCAPE_QUOTES @ONLY)
|
||||
FOREACH(file ${PLIN_FILES})
|
||||
CONFIGURE_FILE(${file}.pl.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${file}.pl ESCAPE_QUOTES @ONLY)
|
||||
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${file}.pl DESTINATION scripts)
|
||||
ENDFOREACH()
|
||||
|
||||
FOREACH(file ${SH_FILES})
|
||||
CONFIGURE_FILE(${file}.sh
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${file}.pl ESCAPE_QUOTES @ONLY)
|
||||
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${file}.pl DESTINATION scripts)
|
||||
ENDFOREACH()
|
||||
ELSE()
|
||||
# On Unix, most of the files end up in the bin directory
|
||||
SET(BIN_SCRIPTS
|
||||
msql2mysql
|
||||
mysql_config
|
||||
mysql_fix_extensions
|
||||
mysql_setpermission
|
||||
mysql_secure_installation
|
||||
mysql_zap
|
||||
mysqlaccess
|
||||
mysqlbug
|
||||
mysql_convert_table_format
|
||||
mysql_find_rows
|
||||
mysqlhotcopy
|
||||
mysqldumpslow
|
||||
mysqld_multi
|
||||
mysqlaccess
|
||||
mysqlaccess.conf
|
||||
mysql_install_db
|
||||
)
|
||||
FOREACH(file ${BIN_SCRIPTS})
|
||||
IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${file}.sh)
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${file}.sh
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${file} ESCAPE_QUOTES @ONLY)
|
||||
ELSEIF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${file})
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${file}
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${file} COPYONLY)
|
||||
ELSE()
|
||||
MESSAGE(FATAL_ERROR "Can not find ${file}.sh or ${file} in "
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}" )
|
||||
ENDIF()
|
||||
|
||||
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${file} DESTINATION bin
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ
|
||||
GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
|
||||
ENDFOREACH()
|
||||
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysqld_safe.sh
|
||||
${CMAKE_CURRENT_BINARY_DIR}/mysqld_safe @ONLY)
|
||||
|
||||
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/mysqld_safe DESTINATION bin
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ
|
||||
GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
|
||||
|
||||
# For some reason, mysqld_safe needs to be also in scripts directory
|
||||
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/mysql_install_db
|
||||
DESTINATION scripts
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ
|
||||
GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
INSTALL(FILES mysql_test_data_timezone.sql DESTINATION share)
|
||||
|
||||
IF(UNIX)
|
||||
FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/make_binary_distribution
|
||||
"cd ${CMAKE_BINARY_DIR} && ${CMAKE_CPACK_COMMAND} -G TGZ --config CPackConfig.cmake" )
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND chmod +x ${CMAKE_CURRENT_BINARY_DIR}/make_binary_distribution
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
# Install libgcc as mylibgcc.a
|
||||
IF(CMAKE_COMPILER_IS_GNUCXX)
|
||||
IF(NOT LIBGCC_LOCATION)
|
||||
EXECUTE_PROCESS (
|
||||
COMMAND ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1}
|
||||
${CMAKE_CXX_FLAGS} --print-libgcc
|
||||
OUTPUT_VARIABLE LIBGCC_LOCATION
|
||||
RESULT_VARIABLE RESULT
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_QUIET
|
||||
)
|
||||
IF(${RESULT} EQUAL 0 AND EXISTS ${LIBGCC_LOCATION})
|
||||
SET(LIBGCC_LOCATION "${LIBGCC_LOCATION}" CACHE INTERNAL
|
||||
"location of libgcc" )
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF(LIBGCC_LOCATION)
|
||||
INSTALL (CODE "CONFIGURE_FILE (${LIBGCC_LOCATION}
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libmygcc.a COPYONLY)")
|
||||
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libmygcc.a DESTINATION lib
|
||||
OPTIONAL)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
|
||||
INSTALL (FILES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/mysql_system_tables.sql
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/mysql_system_tables_data.sql
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/fill_help_tables.sql
|
||||
DESTINATION share
|
||||
)
|
||||
|
||||
# TCMalloc hacks
|
||||
IF($ENV{MALLOC_LIB})
|
||||
SET(MALLOC_LIB $ENV{MALLOC_LIB} CACHE STRING "malloc library")
|
||||
ENDIF()
|
||||
|
||||
IF(MALLOC_LIB)
|
||||
INSTALL(FILES ${MALLOC_LIB} DESTINATION lib OPTIONAL)
|
||||
ENDIF()
|
||||
|
|
51
sql-bench/CMakeLists.txt
Normal file
51
sql-bench/CMakeLists.txt
Normal file
|
@ -0,0 +1,51 @@
|
|||
# Copyright (C) 2009 Sun Microsystems, Inc
|
||||
#
|
||||
# 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
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
# Install sql-bench files
|
||||
FILE(GLOB all_files
|
||||
${CMAKE_SOURCE_DIR}/sql-bench/*
|
||||
${CMAKE_SOURCE_DIR}/sql-bench/Data/ATIS/*
|
||||
${CMAKE_SOURCE_DIR}/sql-bench/Data/Wisconsin/*
|
||||
${CMAKE_SOURCE_DIR}/sql-bench/Comments/*
|
||||
${CMAKE_SOURCE_DIR}/sql-bench/limits/*
|
||||
)
|
||||
|
||||
GET_FILENAME_COMPONENT(basedir ${CMAKE_SOURCE_DIR} ABSOLUTE)
|
||||
FOREACH(file ${all_files})
|
||||
IF(NOT IS_DIRECTORY ${file} AND NOT ${file} MATCHES "Make" )
|
||||
FILE(RELATIVE_PATH relpath ${basedir} ${file})
|
||||
SET(target_relpath ${relpath})
|
||||
GET_FILENAME_COMPONENT(ext ${file} EXT)
|
||||
GET_FILENAME_COMPONENT(dir ${relpath} PATH)
|
||||
IF(ext MATCHES ".sh$")
|
||||
# Those are perl files actually
|
||||
STRING(REPLACE ".sh" "" target_relpath ${target_relpath} )
|
||||
IF(WIN32)
|
||||
IF(NOT ext MATCHES ".pl")
|
||||
SET(target_relpath "${target_relpath}.pl")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
SET(target "${CMAKE_BINARY_DIR}/${target_relpath}")
|
||||
CONFIGURE_FILE(${file} ${target} COPYONLY)
|
||||
IF (ext MATCHES ".bat")
|
||||
IF(WIN32)
|
||||
INSTALL(FILES ${target} DESTINATION ${dir})
|
||||
ENDIF()
|
||||
ELSE()
|
||||
INSTALL(FILES ${target} DESTINATION ${dir})
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
|
@ -37,7 +37,7 @@ EXTRA_SCRIPTS = test-ATIS.sh test-connect.sh test-create.sh \
|
|||
graph-compare-results.sh innotest1.sh innotest1a.sh \
|
||||
innotest1b.sh innotest2.sh innotest2a.sh innotest2b.sh \
|
||||
bench-count-distinct.sh
|
||||
EXTRA_DIST = $(EXTRA_SCRIPTS)
|
||||
EXTRA_DIST = $(EXTRA_SCRIPTS) CMakeLists.txt
|
||||
|
||||
dist-hook:
|
||||
mkdir -p $(distdir)/Data/ATIS $(distdir)/Data/Wisconsin \
|
||||
|
|
|
@ -12,32 +12,36 @@
|
|||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/win/mysql_manifest.cmake")
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG
|
||||
"${CMAKE_CXX_FLAGS_DEBUG} -DUSE_SYMDIR /Zi")
|
||||
SET(CMAKE_C_FLAGS_DEBUG
|
||||
"${CMAKE_C_FLAGS_DEBUG} -DUSE_SYMDIR /Zi")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /MAP /MAPINFO:EXPORTS")
|
||||
IF(MSVC)
|
||||
#Innodb plugin needs linker-generated map file to locate server exports
|
||||
#see bug#42001
|
||||
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MAP /MAPINFO:EXPORTS")
|
||||
ENDIF(MSVC)
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
|
||||
${CMAKE_SOURCE_DIR}/extra/yassl/include
|
||||
${CMAKE_SOURCE_DIR}/sql
|
||||
${CMAKE_SOURCE_DIR}/regex
|
||||
${CMAKE_SOURCE_DIR}/zlib
|
||||
INCLUDE_DIRECTORIES(
|
||||
${CMAKE_SOURCE_DIR}/include
|
||||
${CMAKE_SOURCE_DIR}/sql
|
||||
${CMAKE_SOURCE_DIR}/regex
|
||||
${ZLIB_INCLUDE_DIR}
|
||||
${SSL_INCLUDE_DIRS}
|
||||
${CMAKE_BINARY_DIR}/sql
|
||||
)
|
||||
|
||||
SET_SOURCE_FILES_PROPERTIES(${CMAKE_SOURCE_DIR}/sql/sql_yacc.h
|
||||
${CMAKE_SOURCE_DIR}/sql/sql_yacc.cc
|
||||
${CMAKE_SOURCE_DIR}/include/mysql_version.h
|
||||
${CMAKE_SOURCE_DIR}/sql/sql_builtin.cc
|
||||
${CMAKE_SOURCE_DIR}/sql/lex_hash.h
|
||||
${PROJECT_SOURCE_DIR}/include/mysqld_error.h
|
||||
${PROJECT_SOURCE_DIR}/include/mysqld_ername.h
|
||||
${PROJECT_SOURCE_DIR}/include/sql_state.h
|
||||
PROPERTIES GENERATED 1)
|
||||
SET(GEN_SOURCES
|
||||
${CMAKE_BINARY_DIR}/sql/sql_yacc.h
|
||||
${CMAKE_BINARY_DIR}/sql/sql_yacc.cc
|
||||
${CMAKE_BINARY_DIR}/sql/sql_builtin.cc
|
||||
${CMAKE_BINARY_DIR}/sql/lex_hash.h
|
||||
)
|
||||
|
||||
SET_SOURCE_FILES_PROPERTIES(${GEN_SOURCES} PROPERTIES GENERATED 1)
|
||||
|
||||
ADD_DEFINITIONS(-DMYSQL_SERVER -DHAVE_EVENT_SCHEDULER)
|
||||
IF(SSL_DEFINES)
|
||||
ADD_DEFINITIONS(${SSL_DEFINES})
|
||||
ENDIF()
|
||||
|
||||
ADD_DEFINITIONS(-DMYSQL_SERVER -D_CONSOLE -DHAVE_DLOPEN -DHAVE_EVENT_SCHEDULER)
|
||||
|
||||
|
||||
SET (SQL_SOURCE
|
||||
|
@ -54,7 +58,7 @@ SET (SQL_SOURCE
|
|||
log_event_old.cc rpl_record_old.cc
|
||||
message.h mf_iocache.cc my_decimal.cc ../sql-common/my_time.c
|
||||
mysqld.cc net_serv.cc
|
||||
nt_servc.cc nt_servc.h opt_range.cc opt_range.h opt_sum.cc
|
||||
opt_range.cc opt_range.h opt_sum.cc
|
||||
../sql-common/pack.c parse_file.cc password.c procedure.cc
|
||||
protocol.cc records.cc repl_failsafe.cc rpl_filter.cc set_var.cc
|
||||
slave.cc sp.cc sp_cache.cc sp_head.cc sp_pcontext.cc
|
||||
|
@ -77,79 +81,169 @@ SET (SQL_SOURCE
|
|||
sql_connect.cc scheduler.cc
|
||||
sql_profile.cc event_parse_data.cc
|
||||
sql_signal.cc rpl_handler.cc
|
||||
${PROJECT_SOURCE_DIR}/sql/sql_yacc.cc
|
||||
${PROJECT_SOURCE_DIR}/sql/sql_yacc.h
|
||||
${PROJECT_SOURCE_DIR}/include/mysqld_error.h
|
||||
${PROJECT_SOURCE_DIR}/include/mysqld_ername.h
|
||||
${PROJECT_SOURCE_DIR}/include/sql_state.h
|
||||
${PROJECT_SOURCE_DIR}/include/mysql_version.h
|
||||
${PROJECT_SOURCE_DIR}/sql/sql_builtin.cc
|
||||
${PROJECT_SOURCE_DIR}/sql/lex_hash.h)
|
||||
ADD_LIBRARY(sql ${SQL_SOURCE})
|
||||
|
||||
IF (NOT EXISTS cmake_dummy.cc)
|
||||
FILE (WRITE cmake_dummy.cc "")
|
||||
ENDIF (NOT EXISTS cmake_dummy.cc)
|
||||
ADD_EXECUTABLE(mysqld cmake_dummy.cc)
|
||||
|
||||
SET_TARGET_PROPERTIES(mysqld PROPERTIES OUTPUT_NAME mysqld${MYSQLD_EXE_SUFFIX})
|
||||
SET_TARGET_PROPERTIES(mysqld PROPERTIES ENABLE_EXPORTS TRUE)
|
||||
|
||||
SET (MYSQLD_CORE_LIBS mysys zlib dbug strings yassl taocrypt vio regex sql)
|
||||
TARGET_LINK_LIBRARIES(mysqld ${MYSQLD_CORE_LIBS} ${MYSQLD_STATIC_ENGINE_LIBS})
|
||||
${GEN_SOURCES}
|
||||
${MYSYS_LIBWRAP_SOURCE})
|
||||
|
||||
|
||||
IF(MSVC AND NOT WITHOUT_DYNAMIC_PLUGINS)
|
||||
# Set module definition file. Also use non-incremental linker,
|
||||
# incremental appears to crash from time to time,if used with /DEF option
|
||||
SET_TARGET_PROPERTIES(mysqld PROPERTIES LINK_FLAGS "/DEF:mysqld.def /INCREMENTAL:NO")
|
||||
SET (MYSQLD_CORE_LIBS mysys ${ZLIB_LIBRARY} ${SSL_LIBRARIES} vio regex )
|
||||
IF(WIN32)
|
||||
SET(SQL_SOURCE ${SQL_SOURCE} nt_servc.cc nt_servc.h)
|
||||
ENDIF()
|
||||
IF(MSVC)
|
||||
ADD_LIBRARY(sql ${SQL_SOURCE})
|
||||
ADD_EXECUTABLE(mysqld mysqld_dummy.cc)
|
||||
ADD_CUSTOM_COMMAND(
|
||||
OUTPUT mysqld_dummy.cc
|
||||
COMMAND cmake ARGS -E touch mysqld_dummy.cc
|
||||
VERBATIM)
|
||||
SET(MYSQLD_CORE_LIBS ${MYSQLD_CORE_LIBS} sql)
|
||||
|
||||
ELSE()
|
||||
ADD_EXECUTABLE(mysqld ${SQL_SOURCE})
|
||||
DTRACE_INSTRUMENT(mysqld)
|
||||
ENDIF()
|
||||
|
||||
FOREACH (CORELIB ${MYSQLD_CORE_LIBS})
|
||||
GET_TARGET_PROPERTY(LOC ${CORELIB} LOCATION)
|
||||
FILE(TO_NATIVE_PATH ${LOC} LOC)
|
||||
SET (LIB_LOCATIONS ${LIB_LOCATIONS} ${LOC})
|
||||
ENDFOREACH (CORELIB ${MYSQLD_CORE_LIBS})
|
||||
IF(NOT WITHOUT_DYNAMIC_PLUGINS)
|
||||
SET_TARGET_PROPERTIES(mysqld PROPERTIES ENABLE_EXPORTS TRUE)
|
||||
IF (MINGW OR CYGWIN)
|
||||
SET_TARGET_PROPERTIES(mysqld PROPERTIES LINK_FLAGS "-Wl,--export-all-symbols")
|
||||
ENDIF()
|
||||
IF(MSVC)
|
||||
# Set module definition file. Also use non-incremental linker,
|
||||
# incremental appears to crash from time to time,if used with /DEF option
|
||||
SET_TARGET_PROPERTIES(mysqld PROPERTIES LINK_FLAGS "/DEF:mysqld.def /INCREMENTAL:NO")
|
||||
|
||||
FOREACH (CORELIB ${MYSQLD_CORE_LIBS} dbug strings)
|
||||
GET_TARGET_PROPERTY(LOC ${CORELIB} LOCATION)
|
||||
FILE(TO_NATIVE_PATH ${LOC} LOC)
|
||||
SET (LIB_LOCATIONS ${LIB_LOCATIONS} ${LOC})
|
||||
ENDFOREACH (CORELIB ${MYSQLD_CORE_LIBS})
|
||||
|
||||
ADD_CUSTOM_COMMAND(TARGET mysqld PRE_LINK
|
||||
COMMAND cscript ARGS //nologo ${PROJECT_SOURCE_DIR}/win/create_def_file.js
|
||||
ADD_CUSTOM_COMMAND(TARGET mysqld PRE_LINK
|
||||
COMMAND echo ${PLATFORM} && cscript ARGS //nologo ${PROJECT_SOURCE_DIR}/win/create_def_file.js
|
||||
${PLATFORM} ${LIB_LOCATIONS} > mysqld.def
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/sql)
|
||||
ENDIF(MSVC AND NOT WITHOUT_DYNAMIC_PLUGINS)
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
ADD_DEPENDENCIES(sql GenError)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
ADD_DEPENDENCIES(sql GenError)
|
||||
SET_TARGET_PROPERTIES(mysqld PROPERTIES ENABLE_EXPORTS TRUE)
|
||||
SET_TARGET_PROPERTIES(mysqld PROPERTIES OUTPUT_NAME mysqld${MYSQLD_EXE_SUFFIX})
|
||||
TARGET_LINK_LIBRARIES(mysqld ${MYSQLD_STATIC_PLUGIN_LIBS} ${MYSQLD_CORE_LIBS} ${LIBWRAP_LIBRARY})
|
||||
INSTALL(TARGETS mysqld DESTINATION bin)
|
||||
INSTALL_DEBUG_SYMBOLS(mysqld)
|
||||
|
||||
|
||||
# Sql Parser custom command
|
||||
ADD_CUSTOM_COMMAND(
|
||||
OUTPUT ${PROJECT_SOURCE_DIR}/sql/sql_yacc.h
|
||||
${PROJECT_SOURCE_DIR}/sql/sql_yacc.cc
|
||||
COMMAND bison ARGS -y -p MYSQL --defines=sql_yacc.h
|
||||
--output=sql_yacc.cc sql_yacc.yy
|
||||
DEPENDS ${PROJECT_SOURCE_DIR}/sql/sql_yacc.yy)
|
||||
FIND_PROGRAM(BISON_EXECUTABLE bison DOC "path to the bison executable")
|
||||
MARK_AS_ADVANCED(BISON_EXECUTABLE "")
|
||||
|
||||
|
||||
# Handle out-of-source build from source package with possibly broken
|
||||
# bison. Copy bison output to from source to build directory, if not already
|
||||
# there
|
||||
IF (NOT ${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR})
|
||||
IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/sql_yacc.cc)
|
||||
IF(NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/sql_yacc.cc)
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/sql_yacc.cc
|
||||
${CMAKE_CURRENT_BINARY_DIR}/sql_yacc.cc COPYONLY)
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/sql_yacc.h
|
||||
${CMAKE_CURRENT_BINARY_DIR}/sql_yacc.h COPYONLY)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
|
||||
INCLUDE(${CMAKE_SOURCE_DIR}/cmake/bison.cmake)
|
||||
RUN_BISON(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/sql_yacc.yy
|
||||
${CMAKE_CURRENT_BINARY_DIR}/sql_yacc.cc
|
||||
${CMAKE_CURRENT_BINARY_DIR}/sql_yacc.h
|
||||
)
|
||||
|
||||
# Gen_lex_hash
|
||||
ADD_EXECUTABLE(gen_lex_hash gen_lex_hash.cc)
|
||||
TARGET_LINK_LIBRARIES(gen_lex_hash dbug mysqlclient)
|
||||
GET_TARGET_PROPERTY(GEN_LEX_HASH_EXE gen_lex_hash LOCATION)
|
||||
TARGET_LINK_LIBRARIES(gen_lex_hash mysys)
|
||||
|
||||
ADD_CUSTOM_COMMAND(
|
||||
OUTPUT ${PROJECT_SOURCE_DIR}/sql/lex_hash.h
|
||||
COMMAND ${GEN_LEX_HASH_EXE} ARGS > lex_hash.h
|
||||
DEPENDS ${GEN_LEX_HASH_EXE})
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
|
||||
COMMAND gen_lex_hash ARGS > lex_hash.h
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/gen_lex_hash.cc)
|
||||
|
||||
ADD_CUSTOM_TARGET(
|
||||
GenServerSource
|
||||
DEPENDS ${GEN_SOURCES}
|
||||
)
|
||||
|
||||
ADD_CUSTOM_TARGET(
|
||||
GenServerSource ALL
|
||||
DEPENDS ${PROJECT_SOURCE_DIR}/sql/sql_yacc.h
|
||||
${PROJECT_SOURCE_DIR}/sql/sql_yacc.cc
|
||||
${PROJECT_SOURCE_DIR}/sql/message.h
|
||||
${PROJECT_SOURCE_DIR}/sql/message.rc
|
||||
${PROJECT_SOURCE_DIR}/sql/lex_hash.h)
|
||||
#Need this only for embedded
|
||||
SET_TARGET_PROPERTIES(GenServerSource PROPERTIES EXCLUDE_FROM_ALL TRUE)
|
||||
|
||||
ADD_DEPENDENCIES(mysqld GenServerSource)
|
||||
IF(WIN32 OR HAVE_DLOPEN)
|
||||
ADD_LIBRARY(udf_example MODULE udf_example.c)
|
||||
SET_TARGET_PROPERTIES(udf_example PROPERTIES PREFIX "")
|
||||
# udf_example depends on strings
|
||||
IF(WIN32)
|
||||
IF(MSVC)
|
||||
SET_TARGET_PROPERTIES(udf_example PROPERTIES LINK_FLAGS "/DEF:${CMAKE_CURRENT_SOURCE_DIR}/udf_example.def")
|
||||
ENDIF()
|
||||
TARGET_LINK_LIBRARIES(udf_example strings)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
# Remove the auto-generated files as part of 'Clean Solution'
|
||||
SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES
|
||||
"lex_hash.h;sql_yacc.h;sql_yacc.cc;mysqld.def")
|
||||
FOREACH(tool glibtoolize libtoolize aclocal autoconf autoheader automake gtar
|
||||
tar bzr)
|
||||
STRING(TOUPPER ${tool} TOOL)
|
||||
FIND_PROGRAM(${TOOL}_EXECUTABLE ${tool} DOC "path to the executable")
|
||||
MARK_AS_ADVANCED(${TOOL}_EXECUTABLE)
|
||||
ENDFOREACH()
|
||||
|
||||
ADD_LIBRARY(udf_example MODULE udf_example.c udf_example.def)
|
||||
ADD_DEPENDENCIES(udf_example strings GenError)
|
||||
TARGET_LINK_LIBRARIES(udf_example strings)
|
||||
CONFIGURE_FILE(
|
||||
${CMAKE_SOURCE_DIR}/cmake/make_dist.cmake.in ${CMAKE_BINARY_DIR}/make_dist.cmake @ONLY)
|
||||
|
||||
ADD_CUSTOM_TARGET(dist
|
||||
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_BINARY_DIR}/make_dist.cmake
|
||||
DEPENDS ${CMAKE_BINARY_DIR}/sql/sql_yacc.cc ${CMAKE_BINARY_DIR}/sql/sql_yacc.h
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# We need to create empty directories (data/test) the installation.
|
||||
# This does not work with current CPack due to http://www.cmake.org/Bug/view.php?id=8767
|
||||
# Avoid completely empty directories and install dummy file instead.
|
||||
|
||||
SET(DUMMY_FILE ${CMAKE_CURRENT_BINARY_DIR}/.empty )
|
||||
FILE(WRITE ${DUMMY_FILE} "")
|
||||
INSTALL(FILES ${DUMMY_FILE} DESTINATION data/test)
|
||||
|
||||
# Install initial database on windows
|
||||
IF(NOT CMAKE_CROSSCOMPILING)
|
||||
GET_TARGET_PROPERTY(MYSQLD_EXECUTABLE mysqld LOCATION)
|
||||
ENDIF()
|
||||
IF(WIN32 AND MYSQLD_EXECUTABLE)
|
||||
CONFIGURE_FILE(
|
||||
${CMAKE_SOURCE_DIR}/cmake/create_initial_db.cmake.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/create_initial_db.cmake
|
||||
@ONLY
|
||||
)
|
||||
|
||||
MAKE_DIRECTORY(${CMAKE_CURRENT_BINARY_DIR}/data)
|
||||
ADD_CUSTOM_COMMAND(
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/data/mysql/user.frm
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
-DCONFIG=${CMAKE_CFG_INTDIR}
|
||||
-P ${CMAKE_CURRENT_BINARY_DIR}/create_initial_db.cmake
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/data
|
||||
DEPENDS mysqld
|
||||
)
|
||||
ADD_CUSTOM_TARGET(initial_database
|
||||
ALL
|
||||
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/data/mysql/user.frm
|
||||
)
|
||||
INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/data/mysql DESTINATION data)
|
||||
ELSE()
|
||||
# Not windows or cross compiling, just install an empty directory
|
||||
INSTALL(FILES ${DUMMY_FILE} DESTINATION data/mysql)
|
||||
ENDIF()
|
|
@ -10,6 +10,7 @@
|
|||
#include <windows.h>
|
||||
#include <process.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "nt_servc.h"
|
||||
|
||||
|
||||
|
|
52
sql/share/CMakeLists.txt
Normal file
52
sql/share/CMakeLists.txt
Normal file
|
@ -0,0 +1,52 @@
|
|||
# Copyright (C) 2009 Sun Microsystems, Inc
|
||||
#
|
||||
# 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
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
SET (dirs
|
||||
danish
|
||||
german
|
||||
slovak
|
||||
dutch
|
||||
greek
|
||||
norwegian
|
||||
spanish
|
||||
english
|
||||
hungarian
|
||||
norwegian-ny
|
||||
swedish
|
||||
italian
|
||||
polish
|
||||
ukrainian
|
||||
japanese
|
||||
portuguese
|
||||
romanian
|
||||
estonian
|
||||
korean
|
||||
russian
|
||||
czech
|
||||
french
|
||||
serbian
|
||||
)
|
||||
|
||||
SET(files
|
||||
errmsg-utf8.txt
|
||||
)
|
||||
|
||||
FOREACH (dir ${dirs})
|
||||
INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${dir}
|
||||
DESTINATION share)
|
||||
ENDFOREACH()
|
||||
INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/charsets DESTINATION share)
|
||||
|
||||
INSTALL(FILES ${files} DESTINATION share)
|
|
@ -15,8 +15,9 @@
|
|||
|
||||
## Process this file with automake to create Makefile.in
|
||||
|
||||
EXTRA_DIST= errmsg-utf8.txt
|
||||
|
||||
EXTRA_DIST= errmsg-utf8.txt \
|
||||
CMakeLists.txt
|
||||
|
||||
dist-hook:
|
||||
for dir in charsets @AVAILABLE_LANGUAGES@; do \
|
||||
test -d $(distdir)/$$dir || mkdir $(distdir)/$$dir; \
|
||||
|
|
|
@ -17,7 +17,12 @@
|
|||
|
||||
typedef struct st_mysql_plugin builtin_plugin[];
|
||||
|
||||
extern builtin_plugin
|
||||
#if defined(_MSC_VER)
|
||||
extern "C"
|
||||
#else
|
||||
extern
|
||||
#endif
|
||||
builtin_plugin
|
||||
builtin_binlog_plugin@mysql_plugin_defs@;
|
||||
|
||||
struct st_mysql_plugin *mysqld_builtins[]=
|
||||
|
|
|
@ -1960,7 +1960,7 @@ public:
|
|||
void add_changed_table(const char *key, long key_length);
|
||||
CHANGED_TABLE_LIST * changed_table_dup(const char *key, long key_length);
|
||||
int send_explain_fields(select_result *result);
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
|
||||
/**
|
||||
Clear the current error, if any.
|
||||
We do not clear is_fatal_error or is_fatal_sub_stmt_error since we
|
||||
|
@ -1976,9 +1976,9 @@ public:
|
|||
is_slave_error= 0;
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
inline bool vio_ok() const { return net.vio != 0; }
|
||||
#else
|
||||
void clear_error();
|
||||
inline bool vio_ok() const { return true; }
|
||||
#endif
|
||||
/**
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
AUTOMAKE_OPTIONS = foreign
|
||||
|
||||
# These are built from source in the Docs directory
|
||||
EXTRA_DIST = mysql_storage_engine.cmake
|
||||
SUBDIRS = @mysql_se_dirs@
|
||||
DIST_SUBDIRS = @mysql_se_distdirs@
|
||||
|
||||
|
|
|
@ -13,6 +13,14 @@
|
|||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
|
||||
SET(ARCHIVE_PLUGIN_STATIC "archive")
|
||||
SET(ARCHIVE_PLUGIN_DYNAMIC "ha_archive")
|
||||
|
||||
SET(ARCHIVE_SOURCES azio.c ha_archive.cc ha_archive.h)
|
||||
MYSQL_STORAGE_ENGINE(ARCHIVE)
|
||||
IF(NOT WITH_ARCHIVE_STORAGE_ENGINE AND NOT WITHOUT_ARCHIVE_STORAGE_ENGINE
|
||||
AND NOT WITH_ZLIB STREQUAL "bundled")
|
||||
TARGET_LINK_LIBRARIES(archive ${ZLIB_LIBRARY})
|
||||
ENDIF()
|
||||
|
||||
|
||||
|
|
|
@ -13,7 +13,8 @@
|
|||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
|
||||
SET(BLACKHOLE_SOURCES ha_blackhole.cc ha_blackhole.h)
|
||||
SET(BLACKHOLE_PLUGIN_STATIC "blackhole")
|
||||
SET(BLACKHOLE_PLUGIN_DYNAMIC "ha_blackhole")
|
||||
|
||||
SET(BLACKHOLE_SOURCES ha_blackhole.cc ha_blackhole.h)
|
||||
MYSQL_STORAGE_ENGINE(BLACKHOLE)
|
||||
|
|
|
@ -13,7 +13,8 @@
|
|||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
SET(CSV_PLUGIN_STATIC "csv")
|
||||
SET(CSV_PLUGIN_MANDATORY TRUE)
|
||||
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
|
||||
SET(CSV_SOURCES ha_tina.cc ha_tina.h transparent_file.cc transparent_file.h)
|
||||
MYSQL_STORAGE_ENGINE(CSV)
|
|
@ -13,6 +13,6 @@
|
|||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
|
||||
SET(EXAMPLE_PLUGIN_DYNAMIC "ha_example")
|
||||
SET(EXAMPLE_SOURCES ha_example.cc)
|
||||
MYSQL_STORAGE_ENGINE(EXAMPLE)
|
||||
|
|
|
@ -13,6 +13,12 @@
|
|||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
|
||||
SET(FEDERATED_PLUGIN_STATIC "federated")
|
||||
SET(FEDERATED_PLUGIN_DYNAMIC "ha_federated")
|
||||
SET(FEDERATED_SOURCES ha_federated.cc)
|
||||
IF(NOT WITH_FEDERATED AND NOT WITH_FEDERATED_STORAGE_ENGINE)
|
||||
# Bug#45488- federated uses symbols that are not used anywhere in
|
||||
# mysqld and are optimized away by the linker.
|
||||
SET(FEDERATED_SOURCES ${FEDERATED_SOURCES} ${CMAKE_SOURCE_DIR}/mysys/string.c)
|
||||
ENDIF()
|
||||
MYSQL_STORAGE_ENGINE(FEDERATED)
|
||||
|
|
|
@ -13,8 +13,9 @@
|
|||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
SET(HEAP_PLUGIN_STATIC "heap")
|
||||
SET(HEAP_PLUGIN_MANDATORY TRUE)
|
||||
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
|
||||
SET(HEAP_SOURCES _check.c _rectest.c hp_block.c hp_clear.c hp_close.c hp_create.c
|
||||
ha_heap.cc
|
||||
hp_delete.c hp_extra.c hp_hash.c hp_info.c hp_open.c hp_panic.c
|
||||
|
|
|
@ -13,13 +13,28 @@
|
|||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
SET(IBMDB2I_PLUGIN_DYNAMIC "ha_ibmdb2i")
|
||||
CHECK_INCLUDE_FILES(qlgusr.h HAVE_PASE_ENVIRONMENT)
|
||||
IF(HAVE_PASE_ENVIRONMENT)
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/sql
|
||||
${CMAKE_SOURCE_DIR}/regex
|
||||
${CMAKE_SOURCE_DIR}/extra/yassl/include)
|
||||
ADD_LIBRARY(ibmdb2i ha_ibmdb2i.cc db2i_ileBridge.cc db2i_conversion.cc
|
||||
INCLUDE_DIRECTORIES(
|
||||
${CMAKE_SOURCE_DIR}/include
|
||||
${CMAKE_BINARY_DIR}/include
|
||||
${CMAKE_SOURCE_DIR}/regex
|
||||
${CMAKE_SOURCE_DIR}/sql
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
/afs/rchland.ibm.com/lande/shadow/dev2000/osxpf/v5r4m0f.xpf/cur/cmvc/base.pgm/my.xpf/apis
|
||||
/afs/rchland.ibm.com/lande/shadow/dev2000/osxpf/v5r4m0.xpf/bld/cmvc/base.pgm/lg.xpf
|
||||
/afs/rchland.ibm.com/lande/shadow/dev2000/osxpf/v5r4m0.xpf/bld/cmvc/base.pgm/tq.xpf
|
||||
)
|
||||
|
||||
|
||||
SET (IBMDB2I_SOURCES ha_ibmdb2i.cc db2i_ileBridge.cc db2i_conversion.cc
|
||||
db2i_blobCollection.cc db2i_file.cc db2i_charsetSupport.cc
|
||||
db2i_collationSupport.cc db2i_errors.cc db2i_constraints.cc
|
||||
db2i_rir.cc db2i_sqlStatementStream.cc db2i_ioBuffers.cc db2i_myconv.cc)
|
||||
|
||||
SET(IBMDB2I_LIBS iconv)
|
||||
MYSQL_STORAGE_ENGINE(IBMDB2I)
|
||||
|
||||
ENDIF(HAVE_PASE_ENVIRONMENT)
|
||||
|
|
|
@ -15,40 +15,127 @@
|
|||
|
||||
# This is the CMakeLists for InnoDB Plugin
|
||||
|
||||
INCLUDE(CheckFunctionExists)
|
||||
INCLUDE(CheckCSourceCompiles)
|
||||
INCLUDE(CheckCSourceRuns)
|
||||
|
||||
# TODO: remove the two FLAGS_DEBUG settings when merging into
|
||||
# 6.0-based trees, like is already the case for other engines in
|
||||
# those trees.
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
|
||||
# OS tests
|
||||
IF(UNIX)
|
||||
IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
ADD_DEFINITIONS("-DUNIV_LINUX")
|
||||
ELSEIF(CMAKE_SYSTEM_NAME MATCHES "HP*")
|
||||
ADD_DEFINITIONS("-DUNIV_HPUX -DUNIV_MUST_NOT_INLINE")
|
||||
ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "AIX")
|
||||
ADD_DEFINITIONS("-DUNIV_AIX -DUNIX_MUST_NOT_INLINE")
|
||||
ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
|
||||
ADD_DEFINITIONS("-DUNIV_SOLARIS")
|
||||
ELSE()
|
||||
ADD_DEFINITIONS("-DUNIV_MUST_NOT_INLINE")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
# Starting at 5.1.38, MySQL CMake files are simplified. But the plugin
|
||||
# CMakeLists.txt still needs to work with previous versions of MySQL.
|
||||
IF (MYSQL_VERSION_ID GREATER "50137")
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
|
||||
ENDIF (MYSQL_VERSION_ID GREATER "50137")
|
||||
# Solaris atomics
|
||||
IF(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
|
||||
CHECK_FUNCTION_EXISTS(atomic_cas_ulong HAVE_ATOMIC_CAS_ULONG)
|
||||
CHECK_FUNCTION_EXISTS(atomic_cas_32 HAVE_ATOMIC_CAS_32)
|
||||
CHECK_FUNCTION_EXISTS(atomic_cas_64 HAVE_ATOMIC_CAS_64)
|
||||
CHECK_FUNCTION_EXISTS(atomic_add_long HAVE_ATOMIC_ADD_LONG)
|
||||
IF(HAVE_ATOMIC_CAS_ULONG AND HAVE_ATOMIC_CAS_32 AND
|
||||
HAVE_ATOMIC_CAS_64 AND HAVE_ATOMIC_ADD_LONG)
|
||||
SET(HAVE_SOLARIS_ATOMICS 1)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF(HAVE_GCC_ATOMIC_BUILTINS)
|
||||
CHECK_C_SOURCE_COMPILES("
|
||||
#include <pthread.h>
|
||||
#include <string.h>
|
||||
int main()
|
||||
{
|
||||
pthread_t x1;
|
||||
pthread_t x2;
|
||||
pthread_t x3;
|
||||
__sync_bool_compare_and_swap(&x1, x2, x3);
|
||||
return 0;
|
||||
}" HAVE_ATOMIC_PTHREAD_T_GCC
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
IF(NOT HAVE_ATOMIC_PTHREAD_T_GCC AND HAVE_SOLARIS_ATOMICS)
|
||||
CHECK_C_SOURCE_COMPILES("
|
||||
#include <pthread.h>
|
||||
int main()
|
||||
{
|
||||
pthread_t x = 0;
|
||||
return(0);
|
||||
}" HAVE_ATOMIC_PTHREAD_T_SOLARIS
|
||||
)
|
||||
IF(HAVE_ATOMIC_PTHREAD_T_SOLARIS)
|
||||
SET(CMAKE_EXTRA_INCLUDE_FILES pthread.h)
|
||||
CHECK_TYPE_SIZE(pthread_t SIZEOF_PTHREAD_T)
|
||||
SET(CMAKE_EXTRA_INCLUDE_FILES)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF(NOT CMAKE_CROSSCOMPILING)
|
||||
STRING(TOLOWER ${CMAKE_SYSTEM_PROCESSOR} processor)
|
||||
IF(NOT WIN32 AND processor MATCHES "86" OR processor MATCHES "amd64"
|
||||
OR processor MATCHES "x64")
|
||||
# Check for x86 PAUSE instruction
|
||||
# We have to actually try running the test program, because of a bug
|
||||
# in Solaris on x86_64, where it wrongly reports that PAUSE is not
|
||||
# supported when trying to run an application. See
|
||||
# http://bugs.opensolaris.org/bugdatabase/printableBug.do?bug_id=6478684
|
||||
CHECK_C_SOURCE_RUNS("
|
||||
int main()
|
||||
{
|
||||
__asm__ __volatile__ (\"pause\");
|
||||
return 0;
|
||||
}" IB_HAVE_PAUSE_INSTRUCTION)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF(HAVE_ATOMIC_PTHREAD_T_SOLARIS OR HAVE_ATOMIC_PTHREAD_T_GCC)
|
||||
ADD_DEFINITIONS(-DHAVE_ATOMIC_PTHREAD_T=1)
|
||||
ENDIF()
|
||||
|
||||
IF(HAVE_SOLARIS_ATOMICS)
|
||||
ADD_DEFINITIONS(-DHAVE_SOLARIS_ATOMICS=1)
|
||||
ENDIF()
|
||||
|
||||
IF(IB_HAVE_PAUSE_INSTRUCTIONS)
|
||||
ADD_DEFINITIONS(-DIB_HAVE_PAUSE_INSTRUCTIONS=1)
|
||||
ENDIF()
|
||||
|
||||
IF(SIZEOF_PTHREAD_T)
|
||||
ADD_DEFINITIONS(-DSIZEOF_PTHREAD_T=${SIZEOF_PTHREAD_T})
|
||||
ENDIF()
|
||||
|
||||
IF(MSVC)
|
||||
ADD_DEFINITIONS(-DHAVE_WINDOWS_ATOMICS -DIB_HAVE_PAUSE_INSTRUCTION)
|
||||
ENDIF()
|
||||
|
||||
IF (CMAKE_SIZEOF_VOID_P MATCHES 8)
|
||||
SET(WIN64 TRUE)
|
||||
ENDIF (CMAKE_SIZEOF_VOID_P MATCHES 8)
|
||||
|
||||
# Include directories under innobase
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/storage/innobase/include
|
||||
${CMAKE_SOURCE_DIR}/storage/innobase/handler)
|
||||
|
||||
# Include directories under mysql
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
|
||||
${CMAKE_SOURCE_DIR}/sql
|
||||
${CMAKE_SOURCE_DIR}/regex
|
||||
${CMAKE_SOURCE_DIR}/zlib
|
||||
${CMAKE_SOURCE_DIR}/extra/yassl/include)
|
||||
# Sun Studio bug with -xO2
|
||||
IF(CMAKE_C_COMPILER_ID MATCHES "SunPro"
|
||||
AND CMAKE_C_FLAGS_RELEASE MATCHES "O2"
|
||||
AND NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
# Sun Studio 12 crashes with -xO2 flag, but not with higher optimization
|
||||
# -xO3
|
||||
SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_SOURCE_DIR}/rem/rem0rec.c
|
||||
PROPERTIES COMPILE_FLAGS -xO3)
|
||||
ENDIF()
|
||||
|
||||
# Removing compiler optimizations for innodb/mem/* files on 64-bit Windows
|
||||
# due to 64-bit compiler error, See MySQL Bug #19424, #36366, #34297
|
||||
IF (MSVC AND $(WIN64))
|
||||
IF (MSVC AND CMAKE_SIZEOF_VOIDP EQUAL 8)
|
||||
SET_SOURCE_FILES_PROPERTIES(mem/mem0mem.c mem/mem0pool.c
|
||||
PROPERTIES COMPILE_FLAGS -Od)
|
||||
ENDIF (MSVC AND $(WIN64))
|
||||
ENDIF()
|
||||
|
||||
SET(INNOBASE_SOURCES btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c btr/btr0sea.c
|
||||
buf/buf0buddy.c buf/buf0buf.c buf/buf0flu.c buf/buf0lru.c buf/buf0rea.c
|
||||
|
@ -83,20 +170,42 @@ SET(INNOBASE_SOURCES btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c btr/btr0sea.c
|
|||
usr/usr0sess.c
|
||||
ut/ut0byte.c ut/ut0dbg.c ut/ut0mem.c ut/ut0rnd.c ut/ut0ut.c ut/ut0vec.c
|
||||
ut/ut0list.c ut/ut0wqueue.c)
|
||||
ADD_DEFINITIONS(-DHAVE_WINDOWS_ATOMICS -DIB_HAVE_PAUSE_INSTRUCTION)
|
||||
|
||||
IF (MYSQL_VERSION_ID GREATER "50137")
|
||||
IF(WITH_INNODB)
|
||||
# Legacy option
|
||||
SET(WITH_INNOBASE_STORAGE_ENGINE TRUE)
|
||||
ENDIF()
|
||||
|
||||
SET(INNOBASE_PLUGIN_STATIC "innobase")
|
||||
SET(INNOBASE_PLUGIN_DYNAMIC "ha_innodb")
|
||||
|
||||
# Innobase depends on zlib. If server links with system
|
||||
# zlib shared library, and innobase builds as shared library,
|
||||
# innobase need to link with it too, to avoid unresolved symbols.
|
||||
IF(ZLIB_FOUND AND NOT WITH_ZLIB STREQUAL "bundled")
|
||||
SET(INNOBASE_LIBS ${ZLIB_LIBRARY})
|
||||
ENDIF()
|
||||
|
||||
#The plugin's CMakeLists.txt still needs to work with previous versions of MySQL.
|
||||
IF(EXISTS ${SOURCE_DIR}/storage/mysql_storage_engine.cmake)
|
||||
# Old plugin support on Windows only,
|
||||
# use tricks to force ha_innodb.dll name for DLL
|
||||
INCLUDE(${SOURCE_DIR}/storage/mysql_storage_engine.cmake)
|
||||
MYSQL_STORAGE_ENGINE(INNOBASE)
|
||||
# Use ha_innodb for plugin name, if plugin is built
|
||||
GET_TARGET_PROPERTY(LIB_LOCATION ha_innobase LOCATION)
|
||||
IF(LIB_LOCATION)
|
||||
SET_TARGET_PROPERTIES(ha_innobase PROPERTIES OUTPUT_NAME ha_innodb)
|
||||
ENDIF(LIB_LOCATION)
|
||||
ELSE (MYSQL_VERSION_ID GREATER "50137")
|
||||
ENDIF()
|
||||
ELSEIF (MYSQL_VERSION_ID LESS "50137")
|
||||
# Windows only, no plugin support
|
||||
IF (NOT SOURCE_SUBLIBS)
|
||||
ADD_DEFINITIONS(-D_WIN32 -DMYSQL_SERVER)
|
||||
ADD_DEFINITIONS(-DMYSQL_SERVER)
|
||||
ADD_LIBRARY(innobase STATIC ${INNOBASE_SOURCES})
|
||||
# Require mysqld_error.h, which is built as part of the GenError
|
||||
ADD_DEPENDENCIES(innobase GenError)
|
||||
ENDIF (NOT SOURCE_SUBLIBS)
|
||||
ENDIF (MYSQL_VERSION_ID GREATER "50137")
|
||||
ENDIF()
|
||||
ELSE()
|
||||
# New plugin support, cross-platform , name for shared library
|
||||
# is given in INNOBASE_PLUGIN_STATIC and INNOBASE_PLUGIN_DYNAMIC
|
||||
MYSQL_STORAGE_ENGINE(INNOBASE)
|
||||
ENDIF()
|
||||
|
|
|
@ -907,7 +907,7 @@ page_get_data_size(
|
|||
|
||||
/************************************************************//**
|
||||
Allocates a block of memory from the free list of an index page. */
|
||||
UNIV_INTERN
|
||||
UNIV_INLINE
|
||||
void
|
||||
page_mem_alloc_free(
|
||||
/*================*/
|
||||
|
|
|
@ -12,9 +12,9 @@
|
|||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/win/mysql_manifest.cmake")
|
||||
|
||||
SET(MYISAM_PLUGIN_STATIC "myisam")
|
||||
SET(MYISAM_PLUGIN_MANDATORY TRUE)
|
||||
|
||||
SET(MYISAM_SOURCES ft_boolean_search.c ft_nlq_search.c ft_parser.c ft_static.c ft_stem.c
|
||||
ha_myisam.cc
|
||||
|
@ -30,26 +30,38 @@ SET(MYISAM_SOURCES ft_boolean_search.c ft_nlq_search.c ft_parser.c ft_static.c
|
|||
|
||||
MYSQL_STORAGE_ENGINE(MYISAM)
|
||||
|
||||
IF(NOT SOURCE_SUBLIBS)
|
||||
ADD_EXECUTABLE(myisam_ftdump myisam_ftdump.c)
|
||||
TARGET_LINK_LIBRARIES(myisam_ftdump myisam mysys dbug strings zlib)
|
||||
ADD_EXECUTABLE(myisam_ftdump myisam_ftdump.c)
|
||||
TARGET_LINK_LIBRARIES(myisam_ftdump myisam mysys)
|
||||
|
||||
ADD_EXECUTABLE(myisamchk myisamchk.c)
|
||||
TARGET_LINK_LIBRARIES(myisamchk myisam mysys dbug strings zlib)
|
||||
ADD_EXECUTABLE(myisamchk myisamchk.c)
|
||||
TARGET_LINK_LIBRARIES(myisamchk myisam mysys)
|
||||
|
||||
ADD_EXECUTABLE(myisamlog myisamlog.c)
|
||||
TARGET_LINK_LIBRARIES(myisamlog myisam mysys dbug strings zlib)
|
||||
ADD_EXECUTABLE(myisamlog myisamlog.c)
|
||||
TARGET_LINK_LIBRARIES(myisamlog myisam mysys)
|
||||
|
||||
ADD_EXECUTABLE(myisampack myisampack.c)
|
||||
TARGET_LINK_LIBRARIES(myisampack myisam mysys dbug strings zlib)
|
||||
ADD_EXECUTABLE(myisampack myisampack.c)
|
||||
|
||||
TARGET_LINK_LIBRARIES(myisampack myisam mysys)
|
||||
|
||||
IF(WITH_UNIT_TESTS AND FALSE)
|
||||
ADD_EXECUTABLE(mi_test1 mi_test1.c)
|
||||
TARGET_LINK_LIBRARIES(mi_test1 myisam mysys)
|
||||
|
||||
ADD_EXECUTABLE(mi_test2 mi_test2.c)
|
||||
TARGET_LINK_LIBRARIES(mi_test2 myisam mysys)
|
||||
|
||||
ADD_EXECUTABLE(mi_test3 mi_test3.c)
|
||||
TARGET_LINK_LIBRARIES(mi_test3 myisam mysys)
|
||||
|
||||
ADD_EXECUTABLE(sp_test sp_test.c)
|
||||
TARGET_LINK_LIBRARIES(sp_test myisam mysys)
|
||||
|
||||
ADD_EXECUTABLE(rt_test rt_test.c)
|
||||
TARGET_LINK_LIBRARIES(rt_test myisam mysys)
|
||||
ENDIF()
|
||||
|
||||
IF (MSVC)
|
||||
SET_TARGET_PROPERTIES(myisamchk myisampack PROPERTIES LINK_FLAGS "setargv.obj")
|
||||
ENDIF()
|
||||
|
||||
IF(EMBED_MANIFESTS)
|
||||
MYSQL_EMBED_MANIFEST("myisam_ftdump" "asInvoker")
|
||||
MYSQL_EMBED_MANIFEST("myisamchk" "asInvoker")
|
||||
MYSQL_EMBED_MANIFEST("myisamlog" "asInvoker")
|
||||
MYSQL_EMBED_MANIFEST("myisampack" "asInvoker")
|
||||
ENDIF(EMBED_MANIFESTS)
|
||||
|
||||
ENDIF(NOT SOURCE_SUBLIBS)
|
||||
INSTALL(TARGETS myisamchk myisamlog myisampack myisam_ftdump DESTINATION bin)
|
||||
|
|
|
@ -13,7 +13,8 @@
|
|||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
|
||||
SET(MYISAMMRG_PLUGIN_STATIC "myisammrg")
|
||||
SET(MYISAMMRG_PLUGIN_MANDATORY 1)
|
||||
|
||||
SET(MYISAMMRG_SOURCES myrg_close.c myrg_create.c myrg_delete.c myrg_extra.c myrg_info.c
|
||||
ha_myisammrg.cc
|
||||
|
|
|
@ -1,44 +0,0 @@
|
|||
# MYSQL_STORAGE_ENGINE Macro creates a project to build storage engine
|
||||
# library.
|
||||
#
|
||||
# Parameters:
|
||||
# engine - storage engine name.
|
||||
# variable ENGINE_BUILD_TYPE should be set to "STATIC" or "DYNAMIC"
|
||||
# Remarks:
|
||||
# ${engine}_SOURCES variable containing source files to produce the library must set before
|
||||
# calling this macro
|
||||
# ${engine}_LIBS variable containing extra libraries to link with may be set
|
||||
|
||||
|
||||
MACRO(MYSQL_STORAGE_ENGINE engine)
|
||||
IF(NOT SOURCE_SUBLIBS)
|
||||
# Add common include directories
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/zlib
|
||||
${CMAKE_SOURCE_DIR}/sql
|
||||
${CMAKE_SOURCE_DIR}/regex
|
||||
${CMAKE_SOURCE_DIR}/extra/yassl/include)
|
||||
STRING(TOUPPER ${engine} engine)
|
||||
STRING(TOLOWER ${engine} libname)
|
||||
IF(${ENGINE_BUILD_TYPE} STREQUAL "STATIC")
|
||||
ADD_DEFINITIONS(-DWITH_${engine}_STORAGE_ENGINE -DMYSQL_SERVER)
|
||||
#Create static library. The name of the library is <storage_engine>.lib
|
||||
ADD_LIBRARY(${libname} ${${engine}_SOURCES})
|
||||
ADD_DEPENDENCIES(${libname} GenError)
|
||||
IF(${engine}_LIBS)
|
||||
TARGET_LINK_LIBRARIES(${libname} ${${engine}_LIBS})
|
||||
ENDIF(${engine}_LIBS)
|
||||
MESSAGE("build ${engine} as static library")
|
||||
ELSEIF(${ENGINE_BUILD_TYPE} STREQUAL "DYNAMIC")
|
||||
ADD_DEFINITIONS(-DMYSQL_DYNAMIC_PLUGIN)
|
||||
#Create a DLL.The name of the dll is ha_<storage_engine>.dll
|
||||
#The dll is linked to the mysqld executable
|
||||
SET(dyn_libname ha_${libname})
|
||||
ADD_LIBRARY(${dyn_libname} SHARED ${${engine}_SOURCES})
|
||||
TARGET_LINK_LIBRARIES (${dyn_libname} mysqlservices mysqld)
|
||||
IF(${engine}_LIBS)
|
||||
TARGET_LINK_LIBRARIES(${dyn_libname} ${${engine}_LIBS})
|
||||
ENDIF(${engine}_LIBS)
|
||||
MESSAGE("build ${engine} as DLL")
|
||||
ENDIF(${ENGINE_BUILD_TYPE} STREQUAL "STATIC")
|
||||
ENDIF(NOT SOURCE_SUBLIBS)
|
||||
ENDMACRO(MYSQL_STORAGE_ENGINE)
|
|
@ -22,8 +22,8 @@ SET(STRINGS_SOURCES bchange.c bcmp.c bfill.c bmove512.c bmove_upp.c ctype-big5.c
|
|||
is_prefix.c llstr.c longlong2str.c my_strtoll10.c my_vsnprintf.c r_strinstr.c
|
||||
str2int.c str_alloc.c strcend.c strend.c strfill.c strmake.c strmov.c strnmov.c
|
||||
strtod.c strtol.c strtoll.c strtoul.c strtoull.c strxmov.c strxnmov.c xml.c
|
||||
my_strchr.c strcont.c strinstr.c strnlen.c)
|
||||
my_strchr.c strcont.c strinstr.c strnlen.c strappend.c)
|
||||
|
||||
USE_ABSOLUTE_FILENAMES(STRINGS_SOURCES)
|
||||
ADD_LIBRARY(strings ${STRINGS_SOURCES})
|
||||
|
||||
IF(NOT SOURCE_SUBLIBS)
|
||||
ADD_LIBRARY(strings ${STRINGS_SOURCES})
|
||||
ENDIF(NOT SOURCE_SUBLIBS)
|
||||
|
|
61
support-files/CMakeLists.txt
Normal file
61
support-files/CMakeLists.txt
Normal file
|
@ -0,0 +1,61 @@
|
|||
# Copyright (C) 2009 Sun Microsystems, Inc
|
||||
#
|
||||
# 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
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
IF(WIN32)
|
||||
SET(localstatedir "C:\\mysql\\data")
|
||||
SET(install_destination .)
|
||||
SET(ini_file_extension "ini")
|
||||
ELSE()
|
||||
SET(localstatedir "/usr/local/mysql/data")
|
||||
SET(prefix "/usr/local")
|
||||
SET(libexedir "/usr/local/mysql/bin")
|
||||
SET(bindir "/usr/local/mysql/bin" )
|
||||
SET(sbindir "/usr/local/mysql/bin")
|
||||
SET(datadir "/usr/local/mysql/data")
|
||||
SET(CC ${CMAKE_C_COMPILER})
|
||||
SET(CXX ${CMAKE_CXX_COMPILER})
|
||||
SET(CFLAGS ${CMAKE_C_COMPILE_FLAGS})
|
||||
SET(CXXFLAGS ${CMAKE_COMPILE_CXX_FLAGS})
|
||||
SET(MYSQLD_USER "mysql")
|
||||
SET(install_destination "support-files")
|
||||
SET(ini_file_extension "cnf")
|
||||
ENDIF()
|
||||
|
||||
FOREACH(inifile my-huge my-innodb-heavy-4G my-large my-medium my-small)
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${inifile}.cnf.sh
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${inifile}.${ini_file_extension} @ONLY)
|
||||
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${inifile}.${ini_file_extension} DESTINATION ${install_destination})
|
||||
|
||||
ENDFOREACH()
|
||||
|
||||
IF(UNIX)
|
||||
FILE(GLOB ndb_ini_files ${CMAKE_CURRENT_SOURCE_DIR}/*.ini)
|
||||
INSTALL(FILES ${ndb_ini_files} DESTINATION ${install_destination})
|
||||
|
||||
FOREACH(script mysql.server mysqld_multi.server mysql-log-rotate)
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${script}.sh
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${script} @ONLY )
|
||||
|
||||
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${script} DESTINATION support-files
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
|
||||
ENDFOREACH()
|
||||
INSTALL(FILES magic DESTINATION support-files)
|
||||
INSTALL(FILES mysql.m4 DESTINATION share/aclocal)
|
||||
CONFIGURE_FILE(MySQL-shared-compat.spec.sh ${CMAKE_CURRENT_BINARY_DIR}/MySQL-shared-compat.spec @ONLY)
|
||||
CONFIGURE_FILE(mysql.spec.sh ${CMAKE_CURRENT_BINARY_DIR}/mysql.spec @ONLY)
|
||||
CONFIGURE_FILE(mysql.spec.sh ${CMAKE_CURRENT_BINARY_DIR}/mysql.${VERSION}.spec @ONLY)
|
||||
CONFIGURE_FILE(MySQL-shared-compat.spec.sh ${CMAKE_CURRENT_BINARY_DIR}/MySQL-shared-compat.spec @ONLY)
|
||||
ENDIF()
|
||||
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue