From 72e7f011b29998d8a3e15eb5b381ef962af5fe5b Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Fri, 5 Apr 2019 10:30:58 +0300 Subject: Upgrade to 8.0.15 --- libmysqlclient/mysql/buildfile | 285 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 285 insertions(+) create mode 100644 libmysqlclient/mysql/buildfile (limited to 'libmysqlclient/mysql/buildfile') diff --git a/libmysqlclient/mysql/buildfile b/libmysqlclient/mysql/buildfile new file mode 100644 index 0000000..03097c5 --- /dev/null +++ b/libmysqlclient/mysql/buildfile @@ -0,0 +1,285 @@ +# file : mysql/buildfile +# copyright : Copyright (c) 2016-2019 Code Synthesis Ltd +# license : GPLv2 with Universal FOSS Exception; see accompanying LICENSE file + +import imp_libs = libssl%lib{ssl} +import imp_libs += libcrypto%lib{crypto} + +tclass = $c.target.class +tsys = $c.target.system + +linux = ($tclass == 'linux') +bsd = ($tclass == 'bsd') +macos = ($tclass == 'macos') +windows = ($tclass == 'windows') + +gcc = ($c.class == 'gcc') +msvc = ($c.class == 'msvc') + +# Windows-specific utilities. +# +mysys_win32 = my_conio my_windac my_winerr my_winfile win_timers + +# Windows-specific named pipe and shared memory based communication channels. +# +vio_win32 = viopipe vioshm + +lib{mysqlclient}: {h c }{* -version -config} \ + {h }{ version config} \ + zlib/{h c }{* } \ + strings/{ hxx cxx}{* -do_ctype -*dump* -*_to_*} \ + mysql/{h }{** } \ + libbinlogevents/{h }{** } \ + mysys/{ hxx cxx}{* -posix_timers \ + -kqueue_timers \ + -my_largepage \ + -mf_qsort2 \ + -{$mysys_win32}} \ + mysys_ssl/{ hxx cxx}{* -*wolf*} \ + vio/{ hxx cxx}{* -*test* -{$vio_win32}} \ + sql/{ hxx }{* } \ + sql/auth/{ hxx }{* } \ + sql/auth/{ cxx}{password sha2_password_common} \ + sql-common/{ hxx cxx}{* } \ + libmysql/{ hxx cxx}{* -*test*} \ + { def}{libmysql_exports } \ + $imp_libs + +lib{mysqlclient}: mysys/cxx{posix_timers}: include = $linux +lib{mysqlclient}: mysys/cxx{kqueue_timers}: include = ($bsd || $macos) + +lib{mysqlclient}: mysys/{ cxx}{$mysys_win32} \ + vio/{ cxx}{$vio_win32 } \ +libmysql/authentication_win/{hxx cxx}{* }: include = $windows + +# Makes sense to distribute READMEs for the bundled libraries. Note that their +# licenses are incorporated into the root LICENSE file. +# +lib{mysqlclient}: zlib/file{README} strings/file{README} + +# Include the generated version header into the distribution (so that we +# don't pick up an installed one) and don't remove it when cleaning in src (so +# that clean results in a state identical to distributed). +# +# @@ We should probably allow to configure MYSQL_UNIX_ADDR via configuration +# variable config.libmysqlclient.unix_addr. Note that it is set differently +# for the upstream package and major Linux distributions: +# +# Debian/Ubuntu: /var/run/mysqld/mysqld.sock +# Fedora/RHEL: /var/lib/mysql/mysql.sock +# Source package: /tmp/mysql.sock +# +h{version}: mysql/in{mysql_version} $src_root/manifest +h{version}: +{ + dist = true + clean = ($src_root != $out_root) + + in.symbol = '@' + + PROTOCOL_VERSION = $protocol_version + VERSION = $version.project + MYSQL_BASE_VERSION = "$version.major.$version.minor" + + MYSQL_SERVER_SUFFIX = '' # Server-related. + + MYSQL_VERSION_ID = \ + "\(10000 * $version.major + 100 * $version.minor + $version.patch\)" + + MYSQL_TCP_PORT = 3306 + MYSQL_ADMIN_TCP_PORT = 33062 + MYSQL_TCP_PORT_DEFAULT = 0 + + MYSQL_UNIX_ADDR = ($windows ? '' : /tmp/mysql.sock) + + COMPILATION_COMMENT = 'Source distribution' + COMPILATION_COMMENT_SERVER = 'Source distribution' # Server-related. + + SYS_SCHEMA_VERSION = '2.0.0' # Server-related. +} + +h{config}: in{config} +h{config}: +{ + MYSQL_VERSION_MAJOR = $version.major + MYSQL_VERSION_MINOR = $version.minor + + MACHINE_TYPE = $c.target.cpu + SYSTEM_TYPE = $tsys + + DEFAULT_BASEDIR = ($install.root != [null] \ + ? $regex.replace("$install.resolve($install.root)", \ + '\\', \ + '/') \ + : '') + + PLUGINDIR = ($install.root != [null] \ + ? $regex.replace($install.resolve($install.lib)/mysql/plugin, \ + '\\', \ + '/') \ + : '') + + SHAREDIR = ($install.root != [null] \ + ? $regex.replace($install.resolve($install.data_root)/share/mysql, \ + '\\', \ + '/') \ + : '') +} + +# Build options. +# +# We have dropped the macro definitions that are not used in the package code: +# +# -DRAPIDJSON_NO_SIZETYPEDEFINE +# -DUNISTR_FROM_CHAR_EXPLICIT=explicit +# -DUNISTR_FROM_STRING_EXPLICIT=explicit +# -DHAVE_LIBEVENT2 +# -DNO_FSEEKO +# +cc.poptions += -DHAVE_CONFIG_H \ + -DHAVE_OPENSSL \ + -D__STDC_LIMIT_MACROS \ + -D__STDC_FORMAT_MACROS \ + -D_USE_MATH_DEFINES \ + -DDBUG_OFF + +if! $windows +{ + cc.poptions += -D_FILE_OFFSET_BITS=64 + + if $linux + cc.poptions += -D_GNU_SOURCE +} +else +{ + cc.poptions += -DWIN32 -D_WINDOWS -D_WIN32_WINNT=0x0601 -DNOGDI -DNOMINMAX \ + -DWIN32_LEAN_AND_MEAN -D_MBCS + + if $msvc + cc.coptions += /GS /fp:precise /Zc:wchar_t /Zc:forScope +} + +# Note that we add "-I$src_root" for the headers auto-generating machinery to +# work properly. +# +cc.poptions =+ "-I$out_root" "-I$src_root" "-I$src_base" "-I$src_base/mysql" + +zlib_dir = $src_base/zlib + +# To keep "-I$out_root" "-I$src_root" first we use '+=', rather than '=+' to +# append poptions for the directory scopes. +# +zlib/ cc.poptions += "-I$zlib_dir" + +strings/ cc.poptions += -DDISABLE_MYSQL_THREAD_H + +libbinlogevents_dir = $src_base/libbinlogevents + +mysys/ cc.poptions += "-I$zlib_dir" "-I$libbinlogevents_dir/export" + +libmysql/ cc.poptions += "-I$libbinlogevents_dir/export" \ + -DCLIENT_PROTOCOL_TRACING + +sql-common/ cc.poptions += "-I$zlib_dir" \ + "-I$libbinlogevents_dir/export" \ + "-I$libbinlogevents_dir/include" + +if! $windows +{ + zlib/ cc.poptions += -D_LARGEFILE64_SOURCE=1 +} +else +{ + sql-common/ cc.poptions += -DAUTHENTICATION_WIN + + # The upstream package always adds -DDEBUG_ERRROR_LOG -DWINAUTH_USE_DBUG_LIB. + # Looks like they are required for debugging only, so let's omit them. + # + libmysql/authentication_win/ cc.poptions += -DSECURITY_WIN32 +} + +if $msvc +{ + # Disable warnings that pop up with /W3. + # + cc.coptions += /wd4018 /wd4068 /wd4091 /wd4101 /wd4146 /wd4244 /wd4267 \ + /wd4477 /wd4700 /wd4805 /wd4996 +} +elif $gcc +{ + cc.coptions += -ffunction-sections -fdata-sections -fno-omit-frame-pointer + + # Disable warnings that pop up with -Wall -Wextra. Upstream doesn't seem to + # care about these and it is not easy to disable specific warnings in a way + # that works across compilers/version (some -Wno-* options are only + # recognized in newer versions). There are still some warnings left that + # appear for certain platforms/compilers. We pass them through but disable + # treating them as errors. + # + cc.coptions += -Wno-all -Wno-extra -Wno-error +} + +if! $windows +{ + # On Linux the upstream package also passes the cmake-generated libmysql.ver + # file. The symbols it contains are hard-coded into libmysql/CMakeList.txt. + # We have dropped the file for now. + # + if $linux + { + # Make sure all symbols are resolvable. + # + libs{mysqlclient}: cc.loptions += -Wl,--no-undefined + } + + cc.libs += ($bsd ? -lexecinfo : -ldl) -lpthread -lm + + if $linux + cc.libs += -lrt # Posix timers. +} +else + cc.libs += $regex.apply(advapi32, '(.+)', $msvc ? '\1.lib' : '-l\1') + +# Export options. +# +# The library clients must include the API header as . +# +lib{mysqlclient}: cc.export.poptions = "-I$out_root" \ + "-I$src_root" \ + "-I$src_base" \ + "-I$src_base/mysql" \ + "-I$libbinlogevents_dir/export" + +# See bootstrap.build for details. +# +if $version.pre_release + lib{mysqlclient}: bin.lib.version = @"-$version.project_id" +else + lib{mysqlclient}: bin.lib.version = @"-$abi_version" + +# Let's install the bare minimum of headers: mysql.h, errmsg.h, mysqld_error.h +# and headers they recursively include. Install them into the mysql/ +# subdirectory of, say, /usr/include/. +# +h{*}: install = false +hxx{*}: install = false + +# Install mysql/ sub-entries recreating subdirectories. +# +for h: mysql/{errmsg my_command my_list mysql_com mysql mysql_time \ + mysql/{client_plugin plugin_auth_common}} +{ + d = $path.directory($h) + + h{$h}@$d: install = include/$d +} + +# Install the remaining headers not recreating subdirectories. +# +for h: mysqld_error mysql_version libbinlogevents/export/binary_log_types \ + mysql/mysql/udf_registration_types +{ + h{$h}@./$path.directory($h): install = include/mysql/ +} + +h{version}: install = include/mysql/ -- cgit v1.1