Commit f19b2c0a authored by unknown's avatar unknown

Updated CMake stuff to handle the configurations needed for release

builds.


cmakelists.txt:
  Get the correct options for storage engines and defines from
  config-version.js.
mysys/cmakelists.txt:
  Set USE_TLS only for release builds, as it crashes in debug builds.
sql/cmakelists.txt:
  Fix build options to only include the configured storage engines.
sql/mysqld.cc:
  Fix dummy innodb declarations, otherwise non-innodb build fails.
storage/bdb/cmakelists.txt:
  Create cmakelists.txt for BDB.
win/README:
  Update with new configure.js options.
win/config-handlerton.js:
  Extend with more storage engines.
win/config-version.js:
  Extend to handle storage engines and other configuration parameters.
parent e29144b4
PROJECT(MySql)
EXEC_PROGRAM(cscript.exe win ARGS config-version.js OUT_VARIABLE out)
EXEC_PROGRAM(cscript.exe ${PROJECT_SOURCE_DIR}/win
ARGS config-version.js ${PROJECT_SOURCE_DIR}/win/configure.data
OUTPUT_VARIABLE out)
STRING(REGEX REPLACE ".*DEFINITIONS@ *([^@]*)@.*" \\1 cfg_def ${out})
STRING(REGEX REPLACE ".*HANDLERTONS@ *([^@]*)@.*" \\1 handlertons ${out})
SEPARATE_ARGUMENTS(handlertons)
STRING(REGEX REPLACE ".*DEPENDS@ *([^@]*)@.*" \\1 se_deps ${out})
SEPARATE_ARGUMENTS(se_deps)
STRING(REGEX REPLACE ".*SUBDIRS@ *([^@]*)@.*" \\1 se_subdirs ${out})
SEPARATE_ARGUMENTS(se_subdirs)
ADD_DEFINITIONS(${cfg_def})
# in some places we use DBUG_OFF
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -D DBUG_OFF")
......@@ -32,5 +42,6 @@ ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 7" OR CMAKE_GENERATOR MATCHES "Visu
ADD_DEFINITIONS("-D_WINDOWS -D__WIN__")
SUBDIRS(vio dbug strings regex mysys extra/yassl extra/yassl/taocrypt extra
zlib storage/innobase storage/heap storage/myisam storage/myisammrg
client sql server-tools/instance-manager libmysql tests)
zlib storage/heap storage/myisam storage/myisammrg client sql
server-tools/instance-manager libmysql tests
${se_subdirs})
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
# Need to set USE_TLS, since mysys is linked into libmysql.dll and
# libmysqld.dll, and __declspec(thread) approach to thread local storage does
# not work properly in DLLs.
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX -DUSE_SYMDIR -DUSE_TLS")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX -DUSE_SYMDIR -DUSE_TLS")
# Currently, USE_TLS crashes in Debug builds, so until that is fixed Debug
# .dlls cannot be loaded at runtime.
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DUSE_TLS")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DUSE_TLS")
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/zlib ${CMAKE_SOURCE_DIR}/include)
ADD_LIBRARY(mysys array.c charset-def.c charset.c checksum.c default.c default_modify.c
......
......@@ -5,7 +5,9 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
${CMAKE_SOURCE_DIR}/extra/yassl/include
${CMAKE_SOURCE_DIR}/sql
${CMAKE_SOURCE_DIR}/regex
${CMAKE_SOURCE_DIR}/zlib)
${CMAKE_SOURCE_DIR}/zlib
${CMAKE_SOURCE_DIR}/storage/bdb/build_win32
${CMAKE_SOURCE_DIR}/storage/bdb/dbinc)
SET_SOURCE_FILES_PROPERTIES(${CMAKE_SOURCE_DIR}/sql/message.rc
${CMAKE_SOURCE_DIR}/sql/message.h
......@@ -18,13 +20,11 @@ SET_SOURCE_FILES_PROPERTIES(${CMAKE_SOURCE_DIR}/sql/message.rc
${PROJECT_SOURCE_DIR}/include/mysqld_ername.h
${PROJECT_SOURCE_DIR}/include/sql_state.h PROPERTIES GENERATED 1)
ADD_DEFINITIONS(-DWITH_INNOBASE_STORAGE_ENGINE -DHAVE_ARCHIVE_DB -DHAVE_BLACKHOLE_DB -DHAVE_EXAMPLE_DB)
ADD_DEFINITIONS(-DHAVE_ROW_BASED_REPLICATION -DHAVE_FEDERATED_DB -DMYSQL_SERVER -D_CONSOLE -DHAVE_DLOPEN -DWITH_PARTITION_STORAGE_ENGINE -D_CRT_SECURE_NO_DEPRECATE)
ADD_DEFINITIONS(-DHAVE_ROW_BASED_REPLICATION -DMYSQL_SERVER -D_CONSOLE -DHAVE_DLOPEN -D_CRT_SECURE_NO_DEPRECATE)
ADD_EXECUTABLE(mysqld ../sql-common/client.c derror.cc des_key_file.cc discover.cc ../libmysql/errmsg.c field.cc
field_conv.cc filesort.cc gstream.cc ha_blackhole.cc
ha_federated.cc ha_heap.cc ha_innodb.cc ha_myisam.cc ha_myisammrg.cc
ha_partition.cc handler.cc hash_filo.cc hash_filo.h hostname.cc
field_conv.cc filesort.cc gstream.cc ha_heap.cc ha_myisam.cc ha_myisammrg.cc
${handlertons} handler.cc hash_filo.cc hash_filo.h hostname.cc
init.cc item.cc item_buff.cc item_cmpfunc.cc item_create.cc item_func.cc item_geofunc.cc
item_row.cc item_strfunc.cc item_subselect.cc item_sum.cc item_timefunc.cc item_uniq.cc
key.cc log.cc lock.cc log_event.cc message.rc message.h mf_iocache.cc
......@@ -49,7 +49,7 @@ ADD_EXECUTABLE(mysqld ../sql-common/client.c derror.cc des_key_file.cc discover.
${PROJECT_SOURCE_DIR}/include/mysql_version.h
${PROJECT_SOURCE_DIR}/sql/handlerton.cc
${PROJECT_SOURCE_DIR}/sql/lex_hash.h)
TARGET_LINK_LIBRARIES(mysqld heap myisam myisammrg innobase mysys yassl zlib dbug yassl taocrypt strings vio regex wsock32)
TARGET_LINK_LIBRARIES(mysqld heap myisam myisammrg ${se_deps} mysys yassl zlib dbug yassl taocrypt strings vio regex wsock32)
ADD_DEPENDENCIES(mysqld GenError)
# Sql Parser custom command
......
......@@ -8166,6 +8166,7 @@ my_bool innobase_log_archive,
innobase_file_per_table,
innobase_locks_unsafe_for_binlog;
extern "C" {
ulong srv_max_buf_pool_modified_pct;
ulong srv_max_purge_lag;
ulong srv_auto_extend_increment;
......@@ -8174,6 +8175,7 @@ ulong srv_n_free_tickets_to_enter;
ulong srv_thread_sleep_delay;
ulong srv_thread_concurrency;
ulong srv_commit_concurrency;
}
#endif
#ifndef WITH_NDBCLUSTER_STORAGE_ENGINE
......
SET(CMAKE_CXX_FLAGS_DEBUG "-DSAFEMALLOC -DSAFE_MUTEX")
SET(CMAKE_C_FLAGS_DEBUG "-DSAFEMALLOC -DSAFE_MUTEX")
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
#INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/extra/yassl/include)
ADD_LIBRARY(bdb _check.c _rectest.c hp_block.c hp_clear.c hp_close.c hp_create.c
hp_delete.c hp_extra.c hp_hash.c hp_info.c hp_open.c hp_panic.c
hp_rename.c hp_rfirst.c hp_rkey.c hp_rlast.c hp_rnext.c hp_rprev.c
hp_rrnd.c hp_rsame.c hp_scan.c hp_static.c hp_update.c hp_write.c)
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/storage/bdb/build_win32
${CMAKE_SOURCE_DIR}/storage/bdb/dbinc
${CMAKE_SOURCE_DIR}/storage/bdb)
# BDB needs a number of source files that are auto-generated by the unix
# configure. So to build BDB, it is necessary to copy these over to the Windows
# bitkeeper tree, or to use a source .tar.gz package which already has these
# files.
ADD_LIBRARY(bdb crypto/aes_method.c btree/bt_compact.c btree/bt_compare.c
btree/bt_conv.c btree/bt_curadj.c btree/bt_cursor.c
btree/bt_delete.c btree/bt_method.c btree/bt_open.c btree/bt_put.c
btree/bt_rec.c btree/bt_reclaim.c btree/bt_recno.c
btree/bt_rsearch.c btree/bt_search.c btree/bt_split.c
btree/bt_stat.c btree/bt_upgrade.c btree/bt_verify.c
btree/btree_auto.c db/crdel_auto.c db/crdel_rec.c crypto/crypto.c
db/db.c db/db_am.c db/db_auto.c common/db_byteorder.c db/db_cam.c
common/db_clock.c db/db_conv.c db/db_dispatch.c db/db_dup.c
common/db_err.c common/db_getlong.c common/db_idspace.c
db/db_iface.c db/db_join.c common/db_log2.c db/db_meta.c
db/db_method.c db/db_open.c db/db_overflow.c db/db_ovfl_vrfy.c
db/db_pr.c db/db_rec.c db/db_reclaim.c db/db_remove.c
db/db_rename.c db/db_ret.c env/db_salloc.c db/db_setid.c
db/db_setlsn.c env/db_shash.c db/db_stati.c db/db_truncate.c
db/db_upg.c db/db_upg_opd.c db/db_vrfy.c db/db_vrfyutil.c
dbm/dbm.c dbreg/dbreg.c dbreg/dbreg_auto.c dbreg/dbreg_rec.c
dbreg/dbreg_stat.c dbreg/dbreg_util.c env/env_failchk.c
env/env_file.c env/env_method.c env/env_open.c env/env_recover.c
env/env_region.c env/env_register.c env/env_stat.c
fileops/fileops_auto.c fileops/fop_basic.c fileops/fop_rec.c
fileops/fop_util.c hash/hash.c hash/hash_auto.c hash/hash_conv.c
hash/hash_dup.c hash/hash_func.c hash/hash_meta.c
hash/hash_method.c hash/hash_open.c hash/hash_page.c
hash/hash_rec.c hash/hash_reclaim.c hash/hash_stat.c
hash/hash_upgrade.c hash/hash_verify.c hmac/hmac.c
hsearch/hsearch.c lock/lock.c lock/lock_deadlock.c
lock/lock_failchk.c lock/lock_id.c lock/lock_list.c
lock/lock_method.c lock/lock_region.c lock/lock_stat.c
lock/lock_timer.c lock/lock_util.c log/log.c log/log_archive.c
log/log_compare.c log/log_debug.c log/log_get.c log/log_method.c
log/log_put.c log/log_stat.c mp/mp_alloc.c mp/mp_bh.c mp/mp_fget.c
mp/mp_fmethod.c mp/mp_fopen.c mp/mp_fput.c mp/mp_fset.c
mp/mp_method.c mp/mp_region.c mp/mp_register.c mp/mp_stat.c
mp/mp_sync.c mp/mp_trickle.c crypto/mersenne/mt19937db.c
mutex/mut_alloc.c mutex/mut_method.c mutex/mut_region.c
mutex/mut_stat.c mutex/mut_tas.c mutex/mut_win32.c
os_win32/os_abs.c os/os_alloc.c os_win32/os_clock.c
os_win32/os_config.c os_win32/os_dir.c os_win32/os_errno.c
os_win32/os_fid.c os_win32/os_flock.c os_win32/os_fsync.c
os_win32/os_handle.c os/os_id.c os_win32/os_map.c os/os_method.c
os/os_oflags.c os_win32/os_open.c os/os_region.c
os_win32/os_rename.c os/os_root.c os/os_rpath.c os_win32/os_rw.c
os_win32/os_seek.c os_win32/os_sleep.c os_win32/os_spin.c
os_win32/os_stat.c os/os_tmpdir.c os_win32/os_truncate.c
os/os_unlink.c qam/qam.c qam/qam_auto.c qam/qam_conv.c
qam/qam_files.c qam/qam_method.c qam/qam_open.c qam/qam_rec.c
qam/qam_stat.c qam/qam_upgrade.c qam/qam_verify.c rep/rep_auto.c
rep/rep_backup.c rep/rep_elect.c rep/rep_log.c rep/rep_method.c
rep/rep_record.c rep/rep_region.c rep/rep_stat.c rep/rep_stub.c
rep/rep_util.c rep/rep_verify.c crypto/rijndael/rijndael-alg-fst.c
crypto/rijndael/rijndael-api-fst.c hmac/sha1.c clib/strcasecmp.c
txn/txn.c txn/txn_auto.c txn/txn_chkpt.c txn/txn_failchk.c
txn/txn_method.c txn/txn_rec.c txn/txn_recover.c txn/txn_region.c
txn/txn_stat.c txn/txn_util.c common/util_log.c common/util_sig.c
xa/xa.c xa/xa_db.c xa/xa_map.c)
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/sql
${CMAKE_SOURCE_DIR}/extra/yassl/include)
ADD_LIBRARY(example ha_example.cc)
......@@ -34,12 +34,25 @@ Clone your bk tree to any location you like.
Step 4
------
From the root of your bk clone, execute the command: win\configure <options>.
The options right now are WITH_INNODB and WITH_PARTITION. So the command line
would look like:
win\configure WITH_INNODB WITH_PARTITION
These are the only two flags supported right now. Others will come later.
The options right now are
WITH_INNOBASE_STORAGE_ENGINE Enable particular storage engines
WITH_PARTITION_STORAGE_ENGINE
WITH_ARCHIVE_STORAGE_ENGINE
WITH_BERKELEY_STORAGE_ENGINE
WITH_BLACKHOLE_STORAGE_ENGINE
WITH_EXAMPLE_STORAGE_ENGINE
WITH_FEDERATED_STORAGE_ENGINE
WITH_INNOBASE_STORAGE_ENGINE
__NT__ Enable named pipe support
MYSQL_SERVER_SUFFIX=<suffix> Server suffix, default none
COMPILATION_COMMENT=<comment> Server comment, default "Source distribution"
MYSQL_TCP_PORT=<port> Server port, default 3306
CYBOZU
So the command line could look like:
win\configure WITH_INNOBASE_STORAGE_ENGINE WITH_PARTITION_STORAGE_ENGINE MYSQL_SERVER_SUFFIX=-pro
Step 5
------
......@@ -60,11 +73,5 @@ click the build solution menu option.
Current issues
--------------
1. Not all configurations are currently available. i.e. Classic, Pro, Max.
Currently, only debug and release are available. This will change in the near
future.
2. The definitions set for features (partitioning, blackhole, etc) are not
changed based on the options given with configure. This will soon be fixed
as well.
1. After changing configuration (eg. adding or removing a storage engine), it
may be necessary to clean the build tree to remove any stale objects.
......@@ -17,16 +17,41 @@ try
while (! datafile.AtEndOfStream)
{
var line = datafile.ReadLine();
if (line == "WITH_INNODB")
if (line == "WITH_INNOBASE_STORAGE_ENGINE")
{
extern_line += ",innobase_hton";
address_line += ",&innobase_hton";
}
else if (line == "WITH_PARTITION")
else if (line == "WITH_PARTITION_STORAGE_ENGINE")
{
extern_line += ",partition_hton";
address_line += ",&partition_hton";
}
else if (line == "WITH_ARCHIVE_STORAGE_ENGINE")
{
extern_line += ",archive_hton";
address_line += ",&archive_hton";
}
else if (line == "WITH_BERKELEY_STORAGE_ENGINE")
{
extern_line += ",berkeley_hton";
address_line += ",&berkeley_hton";
}
else if (line == "WITH_BLACKHOLE_STORAGE_ENGINE")
{
extern_line += ",blackhole_hton";
address_line += ",&blackhole_hton";
}
else if (line == "WITH_EXAMPLE_STORAGE_ENGINE")
{
extern_line += ",example_hton";
address_line += ",&example_hton";
}
else if (line == "WITH_FEDERATED_STORAGE_ENGINE")
{
extern_line += ",federated_hton";
address_line += ",&federated_hton";
}
}
datafile.Close();
......
......@@ -9,11 +9,91 @@ try
// first we attempt to open the main configure.in file
var fso = new ActiveXObject("Scripting.FileSystemObject");
var args = WScript.Arguments
// Find any configured MYSQL_SERVER_SUFFIX.
// Find any extra preprocessor definitions.
var datafile = fso.OpenTextFile(args.Item(0), ForReading);
var server_suffix = '';
var server_comment = 'Source distribution';
var server_port = '';
var defs = '';
var htons = '';
var subdirs = '';
var depends = '';
while (! datafile.AtEndOfStream)
{
var line = datafile.ReadLine();
if (line.indexOf("MYSQL_SERVER_SUFFIX=") == 0)
{
server_suffix = line.substring(20, line.length);
}
else if (line.indexOf("COMPILATION_COMMENT=") == 0)
{
server_comment = line.substring(20, line.length);
}
else if (line.indexOf("MYSQL_TCP_PORT=") == 0)
{
server_port = line.substring(15, line.length);
}
else if (line == "WITH_ARCHIVE_STORAGE_ENGINE")
{
defs += " -D" + line;
htons += " ha_archive.cc";
subdirs += " storage/archive";
depends += " archive";
}
else if (line == "WITH_BERKELEY_STORAGE_ENGINE")
{
defs += " -D" + line;
htons += " ha_berkeley.cc";
subdirs += " storage/bdb";
depends += " bdb";
}
else if (line == "WITH_BLACKHOLE_STORAGE_ENGINE")
{
defs += " -D" + line;
htons += " ha_blackhole.cc";
}
else if (line == "WITH_EXAMPLE_STORAGE_ENGINE")
{
defs += " -D" + line;
subdirs += " storage/example";
depends += " example";
}
else if (line == "WITH_FEDERATED_STORAGE_ENGINE")
{
defs += " -D" + line;
htons += " ha_federated.cc";
}
else if (line == "WITH_INNOBASE_STORAGE_ENGINE")
{
defs += " -D" + line;
htons += " ha_innodb.cc";
subdirs += " storage/innobase";
depends += " innobase";
}
else if (line == "WITH_PARTITION_STORAGE_ENGINE")
{
defs += " -D" + line;
htons += " ha_partition.cc";
}
else if (line == "__NT__" ||
line == "CYBOZU" ||
line.indexOf("LICENSE=") == 0) {
defs += " -D" + line;
}
}
datafile.Close();
ConfigureMySqlVersion();
//ConfigureBDB();
fso = null;
WScript.Echo("done!");
WScript.Echo("DEFINITIONS@" + defs + "@");
WScript.Echo("HANDLERTONS@" + htons + "@");
WScript.Echo("DEPENDS@" + depends + "@");
WScript.Echo("SUBDIRS@" + subdirs + "@");
}
catch (e)
{
......@@ -63,10 +143,11 @@ function ConfigureMySqlVersion()
mysqlin = mysqlin.replace("@PROTOCOL_VERSION@", GetValue(configureIn, "PROTOCOL_VERSION"));
mysqlin = mysqlin.replace("@DOT_FRM_VERSION@", GetValue(configureIn, "DOT_FRM_VERSION"));
mysqlin = mysqlin.replace("@MYSQL_TCP_PORT@", GetValue(configureIn, "MYSQL_TCP_PORT_DEFAULT"));
if (server_port == '') { server_port = GetValue(configureIn, "MYSQL_TCP_PORT_DEFAULT"); }
mysqlin = mysqlin.replace("@MYSQL_TCP_PORT@", server_port);
mysqlin = mysqlin.replace("@MYSQL_UNIX_ADDR@", GetValue(configureIn, "MYSQL_UNIX_ADDR_DEFAULT"));
mysqlin = mysqlin.replace("@MYSQL_SERVER_SUFFIX@", '');
mysqlin = mysqlin.replace("@COMPILATION_COMMENT@", 'Source distribution');
mysqlin = mysqlin.replace("@MYSQL_SERVER_SUFFIX@", server_suffix);
mysqlin = mysqlin.replace("@COMPILATION_COMMENT@", server_comment);
var version = GetVersion(configureIn);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment