sourcemod/extensions/mysql/AMBuilder
Nicholas Hastings f3319ccc82 Add support for compiling MySQL ext against MySQL Connector/C instead of
full client lib. This makes for a lighter dependency, both in size and not being
tied to MySQL client version.

Tested against previous GA version, 6.0.2. Latest, 6.1.11 requires dynamic
linking with CRT on Windows, making specific MSVC redist required on client.

Only tested with Windows so far. Still need to test compile/run on Linux and Mac.
Dependency checkout scripts and MYSQL env vars in our own build environment need
to be checked as well.
2018-02-25 12:38:19 -05:00

48 lines
1.6 KiB
Python

# vim: set sts=2 ts=8 sw=2 tw=99 et ft=python:
import os
if SM.mysql_root:
for arch in SM.archs:
binary = SM.ExtLibrary(builder, 'dbi.mysql.ext', arch)
binary.compiler.cxxincludes += [
os.path.join(SM.mysql_root[arch], 'include'),
os.path.join(SM.mms_root, 'core', 'sourcehook')
]
if binary.compiler.family == 'gcc' or binary.compiler.family == 'clang':
binary.compiler.cxxflags += ['-fno-rtti']
elif binary.compiler.family == 'msvc':
binary.compiler.cxxflags += ['/GR-']
if builder.target.platform == 'linux' or builder.target.platform == 'mac':
binary.compiler.postlink += [
os.path.join(SM.mysql_root[arch], 'lib', 'libmysqlclient_r.a'),
'-lz',
'-lpthread',
'-lm',
]
if builder.target.platform == 'linux':
binary.compiler.postlink += ['-lrt']
elif builder.target.platform == 'windows':
binary.compiler.defines += ['WIN32_LEAN_AND_MEAN']
binary.compiler.postlink += [
os.path.join(SM.mysql_root[arch], 'lib', 'mysqlclient.lib'),
'wsock32.lib'
]
binary.sources += [
'../../public/smsdk_ext.cpp',
'mysql/MyBasicResults.cpp',
'mysql/MyBoundResults.cpp',
'mysql/MyDatabase.cpp',
'mysql/MyDriver.cpp',
'mysql/MyStatement.cpp',
'extension.cpp'
]
if binary.compiler.family == 'msvc' and binary.compiler.version >= 1900:
binary.sources += [ 'msvc15hack.c' ]
binary.compiler.linkflags += ['legacy_stdio_definitions.lib', 'legacy_stdio_wide_specifiers.lib']
SM.extensions += [builder.Add(binary)]