Merge AMBuild2 upgrade from sourcemod-1.6 to sourcemod-1.5.

This commit is contained in:
David Anderson 2014-01-22 22:40:57 -08:00
parent de8157302d
commit 1030c9b1b3
61 changed files with 3829 additions and 1669 deletions

View File

@ -1,499 +1,476 @@
# vim: set ts=2 sw=2 tw=99 noet ft=python:
import os
import sys
from ambuild.command import Command
from ambuild.command import ShellCommand
from ambuild.command import SymlinkCommand
# vim: set sts=2 ts=8 sw=2 tw=99 et ft=python:
import os, sys
class ExtractDebugInfoCommand(Command):
def __init__(self, binary, outfile):
Command.__init__(self)
self.binary = binary
self.outfile = outfile
class SDK(object):
def __init__(self, sdk, ext, aDef, name, platform, dir):
if dir == 'ep1':
folder = 'hl2sdk'
else:
folder = 'hl2sdk-' + dir
self.envvar = sdk
self.ext = ext
self.code = aDef
self.define = name
self.platform = platform
self.folder = folder # Default folder name.
self.name = dir
self.path = None # Actual path
def run(self, runner, job):
if AMBuild.cache['debug']:
return
WinOnly = ['windows']
WinLinux = ['windows', 'linux']
WinLinuxMac = ['windows', 'linux', 'mac']
if not self.binary.NeedsRelink(self.outfile):
return
if AMBuild.target['platform'] == 'linux':
job.AddCommand(ShellCommand('objcopy --only-keep-debug ' + self.outfile + ' ' + self.outfile + '.dbg'))
job.AddCommand(ShellCommand('objcopy --strip-debug ' + self.outfile))
job.AddCommand(ShellCommand('objcopy --add-gnu-debuglink=' + os.path.basename(self.outfile) + '.dbg ' + self.outfile))
elif AMBuild.target['platform'] == 'darwin':
job.AddCommand(ShellCommand('dsymutil ' + self.outfile))
job.AddCommand(ShellCommand('strip -S ' + self.outfile))
class SM:
def __init__(self):
self.compiler = Cpp.Compiler()
#Build SDK info
self.possibleSdks = { }
self.possibleSdks['ep1'] = {'sdk': 'HL2SDK', 'ext': '1.ep1', 'def': '1',
'name': 'EPISODEONE', 'platform': ['windows', 'linux'],
'dir': 'hl2sdk'}
self.possibleSdks['ep2'] = {'sdk': 'HL2SDKOB', 'ext': '2.ep2', 'def': '3',
'name': 'ORANGEBOX', 'platform': ['windows', 'linux'],
'dir': 'hl2sdk-ob'}
self.possibleSdks['css'] = {'sdk': 'HL2SDKCSS', 'ext': '2.css', 'def': '6',
'name': 'CSS', 'platform': ['windows', 'linux', 'darwin'],
'dir': 'hl2sdk-css'}
self.possibleSdks['hl2dm'] = {'sdk': 'HL2SDKHL2DM', 'ext': '2.hl2dm', 'def': '7',
'name': 'HL2DM', 'platform': ['windows', 'linux', 'darwin'],
'dir': 'hl2sdk-hl2dm'}
self.possibleSdks['dods'] = {'sdk': 'HL2SDKDODS', 'ext': '2.dods', 'def': '8',
'name': 'DODS', 'platform': ['windows', 'linux', 'darwin'],
'dir': 'hl2sdk-dods'}
self.possibleSdks['tf2'] = {'sdk': 'HL2SDKTF2', 'ext': '2.tf2', 'def': '9',
'name': 'TF2', 'platform': ['windows', 'linux', 'darwin'],
'dir': 'hl2sdk-tf2'}
self.possibleSdks['l4d'] = {'sdk': 'HL2SDKL4D', 'ext': '2.l4d', 'def': '10',
'name': 'LEFT4DEAD', 'platform': ['windows', 'linux', 'darwin'],
'dir': 'hl2sdk-l4d'}
self.possibleSdks['nd'] = {'sdk': 'HL2SDKND', 'ext': '2.nd', 'def': '11',
'name': 'NUCLEARDAWN', 'platform': ['windows', 'linux', 'darwin'],
'dir': 'hl2sdk-nd'}
self.possibleSdks['l4d2'] = {'sdk': 'HL2SDKL4D2', 'ext': '2.l4d2', 'def': '12',
'name': 'LEFT4DEAD2', 'platform': ['windows', 'linux', 'darwin'],
'dir': 'hl2sdk-l4d2'}
self.possibleSdks['darkm'] = {'sdk': 'HL2SDK-DARKM', 'ext': '2.darkm', 'def': '2',
'name': 'DARKMESSIAH', 'platform': ['windows'],
'dir': 'hl2sdk-darkm'}
self.possibleSdks['swarm'] = {'sdk': 'HL2SDK-SWARM', 'ext': '2.swarm', 'def': '13',
'name': 'ALIENSWARM', 'platform': ['windows'],
'dir': 'hl2sdk-swarm'}
self.possibleSdks['bgt'] = {'sdk': 'HL2SDK-BGT', 'ext': '2.bgt', 'def': '4',
'name': 'BLOODYGOODTIME', 'platform': ['windows'],
'dir': 'hl2sdk-bgt'}
self.possibleSdks['eye'] = {'sdk': 'HL2SDK-EYE', 'ext': '2.eye', 'def': '5',
'name': 'EYE', 'platform': ['windows'],
'dir': 'hl2sdk-eye'}
self.possibleSdks['csgo'] = {'sdk': 'HL2SDKCSGO', 'ext': '2.csgo', 'def': '15',
'name': 'CSGO', 'platform': ['windows', 'linux', 'darwin'],
'dir': 'hl2sdk-csgo'}
# self.possibleSdks['portal2'] = {'sdk': 'HL2SDK-PORTAL2', 'ext': '2.portal2', 'def': '14',
# 'name': 'PORTAL2', 'platform': ['windows'],
# 'dir': 'hl2sdk-portal'}
self.sdkInfo = { }
if AMBuild.mode == 'config':
#Detect compilers
self.compiler.DetectAll(AMBuild)
self.hasMySql = AMBuild.options.hasMySql
AMBuild.cache.CacheVariable('hasMySql', self.hasMySql)
AMBuild.cache.CacheVariable('debug', AMBuild.options.debug)
#Environment variable paths to external headers
envvars = { 'MMSOURCE110': 'mmsource-1.10', 'MYSQL5': 'mysql-5.0' }
#Look for Metamod:Source and MySQL if not disabled
for env in envvars:
if not self.hasMySql and env == 'MYSQL5':
continue
path = self.ResolveEnvPath(env, envvars[env])
if path == None:
raise Exception('Could not find a valid path for {0}'.format(env))
AMBuild.cache.CacheVariable(env, path)
#Look for SDK directories
for sdk in self.possibleSdks:
#Get list of SDKs to build against or 'all' or 'present'
sdkList = AMBuild.options.sdks.split(',')
#Build against all supported SDKs?
useAll = sdkList[0] == 'all'
#Build against supported SDKs that exist?
usePresent = sdkList[0] == 'present'
info = self.possibleSdks[sdk]
if AMBuild.target['platform'] in info['platform']:
env = info['sdk']
dir = info['dir']
sdkPath = self.ResolveEnvPath(env, dir)
if sdkPath == None:
if useAll or sdk in sdkList:
raise Exception('Could not find a valid path for {0}'.format(env))
else:
continue
if useAll or usePresent or sdk in sdkList:
self.sdkInfo[sdk] = info
AMBuild.cache.CacheVariable(env, sdkPath)
if len(self.sdkInfo) < 1:
raise Exception('At least one SDK must be available.')
AMBuild.cache.CacheVariable('sdkInfo', self.sdkInfo)
#Set up defines
cxx = self.compiler.cxx
if isinstance(cxx, Cpp.CompatGCC):
if isinstance(cxx, Cpp.GCC):
self.vendor = 'gcc'
elif isinstance(cxx, Cpp.Clang):
self.vendor = 'clang'
self.compiler.AddToListVar('CDEFINES', 'stricmp=strcasecmp')
self.compiler.AddToListVar('CDEFINES', '_stricmp=strcasecmp')
self.compiler.AddToListVar('CDEFINES', '_snprintf=snprintf')
self.compiler.AddToListVar('CDEFINES', '_vsnprintf=vsnprintf')
self.compiler.AddToListVar('CFLAGS', '-pipe')
self.compiler.AddToListVar('CFLAGS', '-fno-strict-aliasing')
if (self.vendor == 'gcc' and cxx.majorVersion >= 4) or self.vendor == 'clang':
self.compiler.AddToListVar('CFLAGS', '-fvisibility=hidden')
self.compiler.AddToListVar('CXXFLAGS', '-fvisibility-inlines-hidden')
self.compiler.AddToListVar('CFLAGS', '-Wall')
self.compiler.AddToListVar('CFLAGS', '-Werror')
self.compiler.AddToListVar('CFLAGS', '-Wno-uninitialized')
self.compiler.AddToListVar('CFLAGS', '-Wno-unused')
self.compiler.AddToListVar('CFLAGS', '-Wno-switch')
self.compiler.AddToListVar('CFLAGS', '-msse')
self.compiler.AddToListVar('CFLAGS', '-g3')
self.compiler.AddToListVar('CFLAGS', '-m32')
self.compiler.AddToListVar('POSTLINKFLAGS', '-m32')
self.compiler.AddToListVar('CXXFLAGS', '-fno-exceptions')
self.compiler.AddToListVar('CXXFLAGS', '-fno-threadsafe-statics')
self.compiler.AddToListVar('CXXFLAGS', '-Wno-non-virtual-dtor')
self.compiler.AddToListVar('CXXFLAGS', '-Wno-overloaded-virtual')
if (self.vendor == 'gcc' and cxx.majorVersion >= 4 and cxx.minorVersion >= 7) or \
(self.vendor == 'clang' and cxx.majorVersion >= 3):
self.compiler.AddToListVar('CXXFLAGS', '-Wno-delete-non-virtual-dtor')
self.compiler.AddToListVar('CDEFINES', 'HAVE_STDINT_H')
self.compiler.AddToListVar('CDEFINES', 'GNUC')
if self.vendor == 'gcc':
self.compiler.AddToListVar('CFLAGS', '-mfpmath=sse')
elif isinstance(cxx, Cpp.MSVC):
self.vendor = 'msvc'
if AMBuild.options.debug == '1':
self.compiler.AddToListVar('CFLAGS', '/MTd')
self.compiler.AddToListVar('POSTLINKFLAGS', '/NODEFAULTLIB:libcmt')
else:
self.compiler.AddToListVar('CFLAGS', '/MT')
self.compiler.AddToListVar('CDEFINES', '_CRT_SECURE_NO_DEPRECATE')
self.compiler.AddToListVar('CDEFINES', '_CRT_SECURE_NO_WARNINGS')
self.compiler.AddToListVar('CDEFINES', '_CRT_NONSTDC_NO_DEPRECATE')
self.compiler.AddToListVar('CXXFLAGS', '/EHsc')
self.compiler.AddToListVar('CXXFLAGS', '/GR-')
self.compiler.AddToListVar('CFLAGS', '/W3')
self.compiler.AddToListVar('CFLAGS', '/nologo')
self.compiler.AddToListVar('CFLAGS', '/Zi')
self.compiler.AddToListVar('CXXFLAGS', '/TP')
self.compiler.AddToListVar('POSTLINKFLAGS', '/DEBUG')
self.compiler.AddToListVar('POSTLINKFLAGS', '/MACHINE:X86')
self.compiler.AddToListVar('POSTLINKFLAGS', '/SUBSYSTEM:WINDOWS')
self.compiler.AddToListVar('POSTLINKFLAGS', 'kernel32.lib')
self.compiler.AddToListVar('POSTLINKFLAGS', 'user32.lib')
self.compiler.AddToListVar('POSTLINKFLAGS', 'gdi32.lib')
self.compiler.AddToListVar('POSTLINKFLAGS', 'winspool.lib')
self.compiler.AddToListVar('POSTLINKFLAGS', 'comdlg32.lib')
self.compiler.AddToListVar('POSTLINKFLAGS', 'advapi32.lib')
self.compiler.AddToListVar('POSTLINKFLAGS', 'shell32.lib')
self.compiler.AddToListVar('POSTLINKFLAGS', 'ole32.lib')
self.compiler.AddToListVar('POSTLINKFLAGS', 'oleaut32.lib')
self.compiler.AddToListVar('POSTLINKFLAGS', 'uuid.lib')
self.compiler.AddToListVar('POSTLINKFLAGS', 'odbc32.lib')
self.compiler.AddToListVar('POSTLINKFLAGS', 'odbccp32.lib')
#Optimization
if AMBuild.options.opt == '1':
self.compiler.AddToListVar('CDEFINES', 'NDEBUG')
if self.vendor == 'gcc' or self.vendor == 'clang':
self.compiler.AddToListVar('CFLAGS', '-O3')
elif self.vendor == 'msvc':
self.compiler.AddToListVar('CFLAGS', '/Ox')
self.compiler.AddToListVar('POSTLINKFLAGS', '/OPT:ICF')
self.compiler.AddToListVar('POSTLINKFLAGS', '/OPT:REF')
#Debugging
if AMBuild.options.debug == '1':
self.compiler.AddToListVar('CDEFINES', 'DEBUG')
self.compiler.AddToListVar('CDEFINES', '_DEBUG')
if self.vendor == 'msvc':
self.compiler.AddToListVar('CFLAGS', '/Od')
self.compiler.AddToListVar('CFLAGS', '/RTC1')
#This needs to be after our optimization flags which could otherwise disable it.
if self.vendor == 'msvc':
# Don't omit frame pointer
self.compiler.AddToListVar('CFLAGS', '/Oy-')
#Platform-specifics
if AMBuild.target['platform'] == 'linux':
self.compiler.AddToListVar('CDEFINES', '_LINUX')
self.compiler.AddToListVar('CDEFINES', 'POSIX')
if self.vendor == 'gcc':
self.compiler.AddToListVar('POSTLINKFLAGS', '-static-libgcc')
if self.vendor == 'clang':
self.compiler.AddToListVar('POSTLINKFLAGS', '-lgcc_eh')
elif AMBuild.target['platform'] == 'darwin':
self.compiler.AddToListVar('CDEFINES', 'OSX')
self.compiler.AddToListVar('CDEFINES', '_OSX')
self.compiler.AddToListVar('CDEFINES', 'POSIX')
self.compiler.AddToListVar('POSTLINKFLAGS', '-mmacosx-version-min=10.5')
self.compiler.AddToListVar('POSTLINKFLAGS', ['-arch', 'i386'])
self.compiler.AddToListVar('POSTLINKFLAGS', '-lstdc++')
# For OS X dylib versioning
import re
productFile = open(os.path.join(AMBuild.sourceFolder, 'product.version'), 'r')
productContents = productFile.read()
productFile.close()
m = re.match('(\d+)\.(\d+)\.(\d+).*', productContents)
if m == None:
self.version = '1.0.0'
else:
major, minor, release = m.groups()
self.version = '{0}.{1}.{2}'.format(major, minor, release)
AMBuild.cache.CacheVariable('version', self.version)
elif AMBuild.target['platform'] == 'windows':
self.compiler.AddToListVar('CDEFINES', 'WIN32')
self.compiler.AddToListVar('CDEFINES', '_WINDOWS')
#Finish up
self.compiler.AddToListVar('CDEFINES', 'SOURCEMOD_BUILD')
self.compiler.AddToListVar('CDEFINES', 'SM_GENERATED_BUILD')
self.compiler.AddToListVar('CINCLUDES',
os.path.join(AMBuild.outputFolder, 'includes'))
self.compiler.ToConfig(AMBuild, 'compiler')
AMBuild.cache.CacheVariable('vendor', self.vendor)
self.targetMap = { }
AMBuild.cache.CacheVariable('targetMap', self.targetMap)
else:
self.sdkInfo = AMBuild.cache['sdkInfo']
self.compiler.FromConfig(AMBuild, 'compiler')
self.targetMap = AMBuild.cache['targetMap']
self.hasMySql = AMBuild.cache['hasMySql']
if AMBuild.target['platform'] == 'windows':
self.compiler.AddToListVar('RCINCLUDES', os.path.join(AMBuild.sourceFolder, 'public'))
self.compiler.AddToListVar('RCINCLUDES',
os.path.join(AMBuild.outputFolder, 'includes'))
self.mmsPath = AMBuild.cache['MMSOURCE110']
def DefaultCompiler(self):
return self.compiler.Clone()
def JobMatters(self, jobname):
file = sys._getframe().f_code.co_filename
if AMBuild.mode == 'config':
self.targetMap[jobname] = file
return True
if len(AMBuild.args) == 0:
return True
if not jobname in AMBuild.args:
return False
def DefaultExtCompiler(self, path):
compiler = self.DefaultCompiler()
compiler['CXXINCLUDES'].append(os.path.join(AMBuild.sourceFolder, path))
compiler['CXXINCLUDES'].append(os.path.join(AMBuild.sourceFolder, path, 'sdk'))
compiler['CXXINCLUDES'].append(os.path.join(AMBuild.sourceFolder, 'public'))
compiler['CXXINCLUDES'].append(os.path.join(AMBuild.sourceFolder, 'public', 'extensions'))
compiler['CXXINCLUDES'].append(os.path.join(AMBuild.sourceFolder, 'public', 'sourcepawn'))
return compiler
def AutoVersion(self, folder, binary):
if AMBuild.target['platform'] == 'windows':
env = {'RCDEFINES': ['BINARY_NAME="' + binary.binaryFile + '"', 'SM_GENERATED_BUILD']}
binary.AddResourceFile(os.path.join(folder, 'version.rc' ), env)
elif AMBuild.target['platform'] == 'darwin' and isinstance(binary, Cpp.LibraryBuilder):
binary.compiler['POSTLINKFLAGS'].extend(['-compatibility_version', '1.0.0'])
binary.compiler['POSTLINKFLAGS'].extend(['-current_version', AMBuild.cache['version']])
else:
return
def ExtractDebugInfo(self, job, binary):
src = os.path.join('..', AMBuild.outputFolder, job.workFolder, binary.binaryFile)
job.AddCommand(ExtractDebugInfoCommand(binary, src))
def PreSetupHL2Job(self, job, builder, sdk):
info = self.sdkInfo[sdk]
sdkPath = AMBuild.cache[info['sdk']]
if AMBuild.target['platform'] == 'linux':
if sdk == 'ep1':
staticLibs = os.path.join(sdkPath, 'linux_sdk')
else:
staticLibs = os.path.join(sdkPath, 'lib', 'linux')
workFolder = os.path.join(AMBuild.outputFolder, job.workFolder)
if sdk in ['css', 'hl2dm', 'dods', 'tf2', 'l4d2']:
libs = ['tier1_i486.a', 'mathlib_i486.a', 'libvstdlib_srv.so', 'libtier0_srv.so']
for lib in libs:
link = os.path.join(workFolder, lib)
target = os.path.join(staticLibs, lib)
try:
os.lstat(link)
except:
job.AddCommand(SymlinkCommand(link, target))
elif sdk in ['l4d', 'nd', 'csgo']:
libs = ['tier1_i486.a', 'mathlib_i486.a', 'libvstdlib.so', 'libtier0.so']
if sdk == 'csgo':
libs.append('interfaces_i486.a')
for lib in libs:
link = os.path.join(workFolder, lib)
target = os.path.join(staticLibs, lib)
try:
os.lstat(link)
except:
job.AddCommand(SymlinkCommand(link, target))
else:
libs = ['tier1_i486.a', 'mathlib_i486.a', 'vstdlib_i486.so', 'tier0_i486.so']
for lib in libs:
link = os.path.join(workFolder, lib)
target = os.path.join(staticLibs, lib)
try:
os.lstat(link)
except:
job.AddCommand(SymlinkCommand(link, target))
elif AMBuild.target['platform'] == 'darwin':
staticLibs = os.path.join(sdkPath, 'lib', 'mac')
workFolder = os.path.join(AMBuild.outputFolder, job.workFolder)
libs = ['tier1_i486.a', 'mathlib_i486.a', 'libvstdlib.dylib', 'libtier0.dylib']
if sdk == 'csgo':
libs.append('interfaces_i486.a')
for lib in libs:
link = os.path.join(workFolder, lib)
target = os.path.join(staticLibs, lib)
try:
os.lstat(link)
except:
job.AddCommand(SymlinkCommand(link, target))
elif AMBuild.target['platform'] == 'windows':
libs = ['tier0', 'tier1', 'vstdlib', 'mathlib']
if sdk in ['swarm', 'csgo']:
libs.append('interfaces')
for lib in libs:
libPath = os.path.join(sdkPath, 'lib', 'public', lib) + '.lib'
builder.RebuildIfNewer(libPath)
builder['POSTLINKFLAGS'].append(libPath)
def PostSetupHL2Job(self, job, builder, sdk):
if AMBuild.target['platform'] in ['linux', 'darwin']:
builder.AddObjectFiles(['tier1_i486.a', 'mathlib_i486.a'])
if sdk == 'csgo':
builder.AddObjectFiles(['interfaces_i486.a'])
def DefaultHL2Compiler(self, path, sdk, noLink = False, oldMms = '-legacy'):
compiler = self.DefaultExtCompiler(path)
mms = 'core'
if sdk == 'ep1':
mms += oldMms
compiler['CXXINCLUDES'].append(os.path.join(self.mmsPath, mms))
compiler['CXXINCLUDES'].append(os.path.join(self.mmsPath, mms, 'sourcehook'))
info = self.possibleSdks
compiler['CDEFINES'].extend(['SE_' + info[i]['name'] + '=' + info[i]['def'] for i in info])
# We don't build for Portal 2 (yet?, ever?), but using this define in code as
# it saves trouble if we ever need to
compiler['CDEFINES'].append('SE_PORTAL2=14')
paths = [['public'], ['public', 'engine'], ['public', 'mathlib'], ['public', 'vstdlib'],
['public', 'tier0'], ['public', 'tier1']]
if sdk == 'ep1' or sdk == 'darkm':
paths.append(['public', 'dlls'])
paths.append(['game_shared'])
else:
paths.append(['public', 'game', 'server'])
paths.append(['public', 'toolframework'])
paths.append(['game', 'shared'])
paths.append(['common'])
info = self.sdkInfo[sdk]
sdkPath = AMBuild.cache[info['sdk']]
compiler['CDEFINES'].append('SOURCE_ENGINE=' + info['def'])
if sdk in ['swarm','csgo']:
if AMBuild.target['platform'] == 'windows':
compiler['CDEFINES'].extend(['COMPILER_MSVC', 'COMPILER_MSVC32'])
else:
compiler['CDEFINES'].extend(['COMPILER_GCC'])
if sdk == 'ep1':
if AMBuild.target['platform'] == 'linux':
staticLibs = os.path.join(sdkPath, 'linux_sdk')
else:
if AMBuild.target['platform'] == 'linux':
staticLibs = os.path.join(sdkPath, 'lib', 'linux')
elif AMBuild.target['platform'] == 'darwin':
staticLibs = os.path.join(sdkPath, 'lib', 'mac')
for i in paths:
compiler['CXXINCLUDES'].append(os.path.join(sdkPath, *i))
if not noLink:
if AMBuild.target['platform'] == 'linux':
compiler['POSTLINKFLAGS'][0:0] = ['-lm']
if sdk in ['css', 'hl2dm', 'dods', 'tf2', 'l4d2']:
compiler['POSTLINKFLAGS'][0:0] = ['libtier0_srv.so']
compiler['POSTLINKFLAGS'][0:0] = ['libvstdlib_srv.so']
elif sdk in ['l4d', 'nd', 'csgo']:
compiler['POSTLINKFLAGS'][0:0] = ['libtier0.so']
compiler['POSTLINKFLAGS'][0:0] = ['libvstdlib.so']
else:
compiler['POSTLINKFLAGS'][0:0] = ['tier0_i486.so']
compiler['POSTLINKFLAGS'][0:0] = ['vstdlib_i486.so']
elif AMBuild.target['platform'] == 'darwin':
compiler['POSTLINKFLAGS'][0:0] = ['libtier0.dylib']
compiler['POSTLINKFLAGS'][0:0] = ['libvstdlib.dylib']
return compiler
def ResolveEnvPath(self, env, defaultDir):
if env in os.environ:
path = os.environ[env]
if os.path.isdir(path):
return path
else:
head = os.getcwd()
oldhead = None
while head != None and head != oldhead:
path = os.path.join(head, defaultDir)
if os.path.isdir(path):
return path
oldhead = head
head, tail = os.path.split(head)
return None
sm = SM()
globals = {
'SM': sm
PossibleSDKs = {
'ep1': SDK('HL2SDK', '1.ep1', '1', 'EPISODEONE', WinLinux, 'ep1'),
'ep2': SDK('HL2SDKOB', '2.ep2', '3', 'ORANGEBOX', WinLinux, 'ob'),
'css': SDK('HL2SDKCSS', '2.css', '6', 'CSS', WinLinuxMac, 'css'),
'hl2dm': SDK('HL2SDKHL2DM', '2.hl2dm', '7', 'HL2DM', WinLinuxMac, 'hl2dm'),
'dods': SDK('HL2SDKDODS', '2.dods', '8', 'DODS', WinLinuxMac, 'dods'),
# 'sdk2013': SDK('HL2SDK2013', '2.sdk2013', '9', 'SDK2013', WinLinuxMac, '2013'),
'tf2': SDK('HL2SDKTF2', '2.tf2', '10', 'TF2', WinLinuxMac, 'tf2'),
'l4d': SDK('HL2SDKL4D', '2.l4d', '11', 'LEFT4DEAD', WinLinuxMac, 'l4d'),
'nd': SDK('HL2SDKND', '2.nd', '12', 'NUCLEARDAWN', WinLinuxMac, 'nd'),
'l4d2': SDK('HL2SDKL4D2', '2.l4d2', '13', 'LEFT4DEAD2', WinLinuxMac, 'l4d2'),
'darkm': SDK('HL2SDK-DARKM', '2.darkm', '2', 'DARKMESSIAH', WinOnly, 'darkm'),
'swarm': SDK('HL2SDK-SWARM', '2.swarm', '14', 'ALIENSWARM', WinOnly, 'swarm'),
'bgt': SDK('HL2SDK-BGT', '2.bgt', '4', 'BLOODYGOODTIME', WinOnly, 'bgt'),
'eye': SDK('HL2SDK-EYE', '2.eye', '5', 'EYE', WinOnly, 'eye'),
'csgo': SDK('HL2SDKCSGO', '2.csgo', '18', 'CSGO', WinLinuxMac, 'csgo'),
'dota': SDK('HL2SDKDOTA', '2.dota', '19', 'DOTA', WinOnly, 'dota'),
'portal2': SDK('HL2SDKPORTAL2', '2.portal2', '15', 'PORTAL2', [], 'portal2'),
'blade': SDK('HL2SDKBLADE', '2.blade', '16', 'BLADE', WinLinux, 'blade'),
# 'insurgency': SDK('HL2SDKINSURGENCY', '2.insurgency', '17', 'INSURGENCY', WinLinuxMac, 'insurgency'),
}
AMBuild.Include(os.path.join('tools', 'buildbot', 'Versioning'), globals)
def ResolveEnvPath(env, folder):
if env in os.environ:
path = os.environ[env]
if os.path.isdir(path):
return path
else:
head = os.getcwd()
oldhead = None
while head != None and head != oldhead:
path = os.path.join(head, folder)
if os.path.isdir(path):
return path
oldhead = head
head, tail = os.path.split(head)
return None
FileList = [
['loader', 'AMBuilder'],
['core', 'AMBuilder'],
['core', 'logic', 'AMBuilder'],
['extensions', 'bintools', 'AMBuilder'],
['extensions', 'clientprefs', 'AMBuilder'],
['extensions', 'cstrike', 'AMBuilder'],
['extensions', 'curl', 'AMBuilder'],
['extensions', 'geoip', 'AMBuilder'],
['extensions', 'mysql', 'AMBuilder'],
['extensions', 'sdkhooks', 'AMBuilder'],
['extensions', 'sdktools', 'AMBuilder'],
['extensions', 'topmenus', 'AMBuilder'],
['extensions', 'updater', 'AMBuilder'],
['extensions', 'sqlite', 'AMBuilder'],
['extensions', 'regex', 'AMBuilder'],
['extensions', 'tf2', 'AMBuilder'],
['sourcepawn', 'jit', 'AMBuilder'],
['sourcepawn', 'compiler', 'AMBuilder'],
['plugins', 'AMBuilder'],
['tools', 'buildbot', 'PackageScript'],
['tools', 'buildbot', 'BreakpadSymbols']
]
class SMConfig(object):
def __init__(self):
self.sdks = {}
self.binaries = []
self.extensions = []
self.generated_headers = None
self.mms_root = None
self.mysql_root = None
self.spcomp = None
self.smx_files = {}
self.versionlib = None
if not sm.hasMySql:
FileList.remove(['extensions', 'mysql', 'AMBuilder'])
def detectProductVersion(self):
builder.AddConfigureFile('product.version')
for parts in FileList:
AMBuild.Include(os.path.join(*parts), globals)
# For OS X dylib versioning
import re
with open(os.path.join(builder.sourcePath, 'product.version'), 'r') as fp:
productContents = fp.read()
m = re.match('(\d+)\.(\d+)\.(\d+).*', productContents)
if m == None:
self.productVersion = '1.0.0'
else:
major, minor, release = m.groups()
self.productVersion = '{0}.{1}.{2}'.format(major, minor, release)
def detectSDKs(self):
sdk_list = builder.options.sdks.split(',')
use_all = sdk_list[0] == 'all'
use_present = sdk_list[0] == 'present'
for sdk_name in PossibleSDKs:
sdk = PossibleSDKs[sdk_name]
if builder.target_platform in sdk.platform:
sdk_path = ResolveEnvPath(sdk.envvar, sdk.folder)
if sdk_path is None:
if use_all or sdk_name in sdk_list:
raise Exception('Could not find a valid path for {0}'.format(sdk.envvar))
continue
if use_all or use_present or sdk_name in sdk_list:
sdk.path = sdk_path
self.sdks[sdk_name] = sdk
if len(self.sdks) < 1:
raise Exception('At least one SDK must be available.')
self.mms_root = ResolveEnvPath('MMSOURCE110', 'mmsource-1.10')
if not self.mms_root:
self.mms_root = ResolveEnvPath('MMSOURCE_DEV', 'mmsource-central')
if not self.mms_root:
raise Exception('Could not find a source copy of Metamod:Source')
if builder.options.hasMySql:
for i in range(7):
self.mysql_root = ResolveEnvPath('MYSQL5', 'mysql-5.' + str(i))
if self.mysql_root:
break
if not self.mysql_root:
raise Exception('Could not find a path to MySQL!')
def configure(self):
builder.AddConfigureFile('pushbuild.txt')
cfg = builder.DetectCompilers()
cxx = cfg.cxx
if cxx.behavior is 'gcc':
cfg.defines += [
'stricmp=strcasecmp',
'_stricmp=strcasecmp',
'_snprintf=snprintf',
'_vsnprintf=vsnprintf',
'HAVE_STDINT_H',
'GNUC',
]
cfg.cflags += [
'-pipe',
'-fno-strict-aliasing',
'-Wall',
'-Werror',
'-Wno-uninitialized',
'-Wno-unused',
'-Wno-logical-op-parentheses',
'-Wno-switch',
'-msse',
'-m32',
]
have_gcc = cxx.name is 'gcc'
have_clang = cxx.name is 'clang'
if have_clang or (have_gcc and cxx.majorVersion >= 4):
cfg.cflags += ['-fvisibility=hidden']
cfg.cxxflags += ['-fvisibility-inlines-hidden']
if have_clang or (have_gcc and cxx.minorVersion >= 6):
cfg.cflags += ['-Wno-narrowing']
if (have_gcc and cxx.minorVersion >= 7) or (have_clang and cxx.majorVersion >= 3):
cfg.cxxflags += ['-Wno-delete-non-virtual-dtor']
cfg.linkflags += ['-m32']
cfg.cxxflags += [
'-fno-exceptions',
'-fno-threadsafe-statics',
'-Wno-non-virtual-dtor',
'-Wno-overloaded-virtual',
]
if have_gcc:
cfg.cflags += ['-mfpmath=sse']
elif cxx.name == 'msvc':
if builder.options.debug == '1':
cfg.cflags += ['/MTd']
cfg.linkflags += ['/NODEFAULTLIB:libcmt']
else:
cfg.cflags += ['/MT']
cfg.defines += [
'_CRT_SECURE_NO_DEPRECATE',
'_CRT_SECURE_NO_WARNINGS',
'_CRT_NONSTDC_NO_DEPRECATE',
'_ITERATOR_DEBUG_LEVEL=0',
]
cfg.cflags += [
'/W3',
]
cfg.cxxflags += [
'/EHsc',
'/GR-',
'/TP',
]
cfg.linkflags += [
'/MACHINE:X86',
'/SUBSYSTEM:WINDOWS',
'kernel32.lib',
'user32.lib',
'gdi32.lib',
'winspool.lib',
'comdlg32.lib',
'advapi32.lib',
'shell32.lib',
'ole32.lib',
'oleaut32.lib',
'uuid.lib',
'odbc32.lib',
'odbccp32.lib',
]
# Optimization
if builder.options.opt == '1':
cfg.defines += ['NDEBUG']
if cxx.behavior == 'gcc':
cfg.cflags += ['-O3']
elif cxx.behavior == 'msvc':
cfg.cflags += ['/Ox']
cfg.linkflags += ['/OPT:ICF', '/OPT:REF']
# Debugging
if builder.options.debug == '1':
cfg.defines += ['DEBUG', '_DEBUG']
if cxx.behavior == 'msvc':
cfg.cflags += ['/Od', '/RTC1']
# This needs to be after our optimization flags which could otherwise disable it.
if cxx.name == 'msvc':
# Don't omit the frame pointer.
cfg.cflags += ['/Oy-']
# Platform-specifics
if builder.target_platform == 'linux':
cfg.defines += ['_LINUX', 'POSIX']
if cxx.name == 'gcc':
cfg.linkflags += ['-static-libgcc']
elif cxx.name == 'clang':
cfg.linkflags += ['-lgcc_eh']
elif builder.target_platform == 'mac':
cfg.defines += ['OSX', '_OSX', 'POSIX']
cfg.linkflags += [
'-mmacosx-version-min=10.5',
'-arch', 'i386',
'-lstdc++',
'-stdlib=libstdc++',
]
cfg.cxxflags += ['-stdlib=libstdc++']
elif builder.target_platform == 'windows':
cfg.defines += ['WIN32', '_WINDOWS']
# Finish up.
cfg.defines += [
'SOURCEMOD_BUILD',
'SM_GENERATED_BUILD',
'SM_USE_VERSIONLIB',
]
cfg.includes += [os.path.join(builder.buildPath, 'includes')]
cfg.includes += [os.path.join(builder.sourcePath, 'versionlib')]
def LibraryBuilder(self, compiler, name):
binary = compiler.Library(name)
if builder.target_platform == 'windows':
binary.sources += ['version.rc']
binary.compiler.rcdefines += [
'BINARY_NAME="{0}"'.format(binary.outputFile),
'SM_GENERATED_BUILD',
'RC_COMPILE',
]
elif builder.target_platform == 'mac':
binary.compiler.postlink += [
'-compatibility_version', '1.0.0',
'-current_version', self.productVersion
]
binary.compiler.linkflags += [self.versionlib]
binary.compiler.sourcedeps += SM.generated_headers
return binary
def ProgramBuilder(self, compiler, name):
binary = compiler.Program(name)
if builder.target_platform == 'windows':
binary.sources += ['version.rc']
binary.compiler.rcdefines += [
'BINARY_NAME="{0}"'.format(binary.outputFile),
'SM_GENERATED_BUILD',
'RC_COMPILE',
]
binary.compiler.linkflags += [self.versionlib]
binary.compiler.sourcedeps += SM.generated_headers
return binary
def Library(self, context, name):
compiler = context.compiler.clone()
return self.LibraryBuilder(compiler, name)
def Program(self, context, name):
compiler = context.compiler.clone()
return self.ProgramBuilder(compiler, name)
def ExtCompiler(self, context):
compiler = context.compiler.clone()
compiler.cxxincludes += [
os.path.join(context.currentSourcePath),
os.path.join(context.currentSourcePath, 'sdk'),
os.path.join(builder.sourcePath, 'public'),
os.path.join(builder.sourcePath, 'public', 'extensions'),
os.path.join(builder.sourcePath, 'public', 'sourcepawn'),
os.path.join(builder.sourcePath, 'public', 'amtl'),
]
return compiler
def HL2Compiler(self, context, sdk):
compiler = self.ExtCompiler(context)
if sdk.name == 'ep1':
mms_path = os.path.join(self.mms_root, 'core-legacy')
else:
mms_path = os.path.join(self.mms_root, 'core')
compiler.cxxincludes += [
os.path.join(mms_path),
os.path.join(mms_path, 'sourcehook'),
]
defines = ['SE_' + PossibleSDKs[i].define + '=' + PossibleSDKs[i].code for i in PossibleSDKs]
compiler.defines += defines
paths = [
['public'],
['public', 'engine'],
['public', 'mathlib'],
['public', 'vstdlib'],
['public', 'tier0'],
['public', 'tier1']
]
if sdk.name == 'ep1' or sdk.name == 'darkm':
paths.append(['public', 'dlls'])
paths.append(['game_shared'])
else:
paths.append(['public', 'game', 'server'])
paths.append(['public', 'toolframework'])
paths.append(['game', 'shared'])
paths.append(['common'])
compiler.defines += ['SOURCE_ENGINE=' + sdk.code]
if sdk.name == '2013' and compiler.cxx.behavior == 'gcc':
# The 2013 SDK already has these in public/tier0/basetypes.h
compiler.defines.remove('stricmp=strcasecmp')
compiler.defines.remove('_stricmp=strcasecmp')
compiler.defines.remove('_snprintf=snprintf')
compiler.defines.remove('_vsnprintf=vsnprintf')
if sdk.name in ['swarm', 'blade', 'insurgency', 'csgo', 'dota']:
if compiler.cc.behavior == 'msvc':
compiler.defines += ['COMPILER_MSVC', 'COMPILER_MSVC32']
else:
compiler.defines += ['COMPILER_GCC']
if sdk.name in ['css', 'hl2dm', 'dods', '2013', 'tf2', 'l4d2']:
if builder.target_platform in ['linux', 'mac']:
compiler.defines += ['NO_MALLOC_OVERRIDE']
for path in paths:
compiler.cxxincludes += [os.path.join(sdk.path, *path)]
return compiler
def ExtLibrary(self, context, name):
compiler = self.ExtCompiler(context)
return self.LibraryBuilder(compiler, name)
def HL2Library(self, context, name, sdk):
compiler = self.HL2Compiler(context, sdk)
if builder.target_platform is 'linux':
if sdk.name is 'ep1':
lib_folder = os.path.join(sdk.path, 'linux_sdk')
elif sdk.name is '2013':
lib_folder = os.path.join(sdk.path, 'lib', 'public', 'linux32')
else:
lib_folder = os.path.join(sdk.path, 'lib', 'linux')
elif builder.target_platform == 'mac':
if sdk.name is '2013':
lib_folder = os.path.join(sdk.path, 'lib', 'public', 'osx32')
else:
lib_folder = os.path.join(sdk.path, 'lib', 'mac')
if builder.target_platform in ['linux', 'mac']:
if sdk.name is '2013':
compiler.postlink += [
compiler.Dep(os.path.join(lib_folder, 'tier1.a')),
compiler.Dep(os.path.join(lib_folder, 'mathlib.a'))
]
else:
compiler.postlink += [
compiler.Dep(os.path.join(lib_folder, 'tier1_i486.a')),
compiler.Dep(os.path.join(lib_folder, 'mathlib_i486.a'))
]
if sdk.name in ['blade', 'insurgency', 'csgo', 'dota']:
compiler.postlink += [compiler.Dep(os.path.join(lib_folder, 'interfaces_i486.a'))]
binary = self.LibraryBuilder(compiler, name)
dynamic_libs = []
if builder.target_platform == 'linux':
compiler.linkflags[0:0] = ['-lm']
if sdk.name in ['css', 'hl2dm', 'dods', 'tf2', '2013', 'l4d2']:
dynamic_libs = ['libtier0_srv.so', 'libvstdlib_srv.so']
elif sdk.name in ['l4d', 'nd', 'blade', 'insurgency', 'csgo']:
dynamic_libs = ['libtier0.so', 'libvstdlib.so']
else:
dynamic_libs = ['tier0_i486.so', 'vstdlib_i486.so']
elif builder.target_platform == 'mac':
binary.compiler.linkflags.append('-liconv')
dynamic_libs = ['libtier0.dylib', 'libvstdlib.dylib']
elif builder.target_platform == 'windows':
libs = ['tier0', 'tier1', 'vstdlib', 'mathlib']
if sdk.name in ['swarm', 'blade', 'insurgency', 'csgo', 'dota']:
libs.append('interfaces')
for lib in libs:
lib_path = os.path.join(sdk.path, 'lib', 'public', lib) + '.lib'
binary.compiler.linkflags.append(binary.Dep(lib_path))
for library in dynamic_libs:
source_path = os.path.join(lib_folder, library)
output_path = os.path.join(binary.localFolder, library)
def make_linker(source_path, output_path):
def link(context, binary):
cmd_node, (output,) = context.AddSymlink(source_path, output_path)
return output
return link
linker = make_linker(source_path, output_path)
binary.compiler.linkflags[0:0] = [binary.Dep(library, linker)]
return binary
SM = SMConfig()
SM.detectProductVersion()
SM.detectSDKs()
SM.configure()
SM.generated_headers = builder.RunScript(
'tools/buildbot/Versioning',
{ 'SM': SM }
)
SM.versionlib = builder.RunScript(
'versionlib/AMBuilder',
{ 'SM': SM }
)
builder.RunBuildScripts(
[
'loader/AMBuilder',
'core/AMBuilder',
'core/logic/AMBuilder',
'extensions/bintools/AMBuilder',
'extensions/clientprefs/AMBuilder',
'extensions/curl/AMBuilder',
'extensions/cstrike/AMBuilder',
'extensions/geoip/AMBuilder',
'extensions/mysql/AMBuilder',
'extensions/regex/AMBuilder',
'extensions/sdkhooks/AMBuilder',
'extensions/sdktools/AMBuilder',
'extensions/sqlite/AMBuilder',
'extensions/tf2/AMBuilder',
'extensions/topmenus/AMBuilder',
'extensions/updater/AMBuilder',
'sourcepawn/compiler/AMBuilder',
'sourcepawn/jit/AMBuilder',
'plugins/AMBuilder',
'tools/buildbot/PackageScript',
],
{
'SM': SM
}
)
if builder.options.breakpad_dump:
builder.RunScript('tools/buildbot/BreakpadSymbols', { 'SM': SM })

View File

@ -1,8 +1,19 @@
# vim: set ts=2 sw=2 tw=99 noet:
import sys
import ambuild.runner as runner
try:
from ambuild2 import run
except:
try:
import ambuild
sys.stderr.write('It looks like you have AMBuild 1 installed, but this project uses AMBuild 2.\n')
sys.stderr.write('Upgrade to the latest version of AMBuild to continue.\n')
except:
sys.stderr.write('AMBuild must be installed to build this project.\n')
sys.stderr.write('http://www.alliedmods.net/ambuild\n')
sys.exit(1)
run = runner.Runner()
run = run.PrepareBuild(sourcePath=sys.path[0])
run.default_build_folder = 'obj-' + run.target_platform
run.options.add_option('--enable-debug', action='store_const', const='1', dest='debug',
help='Enable debugging symbols')
run.options.add_option('--enable-optimize', action='store_const', const='1', dest='opt',
@ -12,4 +23,6 @@ run.options.add_option('--no-mysql', action='store_false', default=True, dest='h
run.options.add_option('-s', '--sdks', default='all', dest='sdks',
help='Build against specified SDKs; valid args are "all", "present", or '
'comma-delimited list of engine names (default: %default)')
run.Configure(sys.path[0])
run.options.add_option('--breakpad-dump', action='store_true', dest='breakpad_dump',
default=False, help='Dump and upload breakpad symbols')
run.Configure()

View File

@ -1,128 +1,124 @@
# vim: set ts=2 sw=2 tw=99 noet ft=python:
# vim: set sts=2 ts=8 sw=2 tw=99 et ft=python:
import os
from ambuild.command import SymlinkCommand
for i in SM.sdkInfo:
sdk = SM.sdkInfo[i]
if AMBuild.target['platform'] not in sdk['platform']:
continue
for sdk_name in SM.sdks:
sdk = SM.sdks[sdk_name]
binary_name = 'sourcemod.' + sdk.ext
name = 'sourcemod.' + sdk['ext']
binary = SM.HL2Library(builder, binary_name, sdk)
compiler = binary.compiler
compiler = SM.DefaultHL2Compiler('core', i)
if sdk.name is 'csgo':
# Protobuf 2.3 headers have some signed/unsigned compares. I believe that it's fixed in later versions, but Valve.
if compiler.cxx.behavior is 'gcc':
compiler.cflags += ['-Wno-sign-compare']
compiler.cxxincludes += [
os.path.join(sdk.path, 'common', 'protobuf-2.3.0', 'src'),
os.path.join(sdk.path, 'public', 'engine', 'protobuf'),
os.path.join(sdk.path, 'public', 'game', 'shared', 'csgo', 'protobuf')
]
elif sdk.name is 'dota':
compiler.cxxincludes += [
os.path.join(sdk.path, 'common', 'protobuf-2.4.1', 'src'),
os.path.join(sdk.path, 'public', 'engine', 'protobuf'),
os.path.join(sdk.path, 'public', 'game', 'shared', 'protobuf'),
os.path.join(sdk.path, 'public', 'game', 'shared', 'dota', 'protobuf')
]
if i == 'csgo':
# Protobuf 2.3 headers have some signed/unsigned compares. I believe that it's fixed in later versions, but Valve.
if isinstance(compiler.cxx, Cpp.CompatGCC):
compiler.AddToListVar('CFLAGS', '-Wno-sign-compare')
compiler['CXXINCLUDES'].append(os.path.join(AMBuild.cache[sdk['sdk']], 'common', 'protobuf-2.3.0', 'src'))
compiler['CXXINCLUDES'].append(os.path.join(AMBuild.cache[sdk['sdk']], 'public', 'engine', 'protobuf'))
compiler['CXXINCLUDES'].append(os.path.join(AMBuild.cache[sdk['sdk']], 'public', 'game', 'shared', 'csgo', 'protobuf'))
if builder.target_platform is 'linux':
compiler.postlink += ['-lpthread', '-lrt']
extension = AMBuild.AddJob(name)
binary = Cpp.LibraryBuilder(name, AMBuild, extension, compiler)
SM.PreSetupHL2Job(extension, binary, i)
if sdk.name is 'csgo' or sdk.name is 'dota':
if builder.target_platform is 'linux':
lib_path = os.path.join(sdk.path, 'lib', 'linux32', 'release', 'libprotobuf.a')
elif builder.target_platform is 'mac':
lib_path = os.path.join(sdk.path, 'lib', 'osx32', 'release', 'libprotobuf.a')
elif builder.target_platform is 'windows':
if 'DEBUG' in compiler.defines:
lib_path = os.path.join(sdk.path, 'lib', 'win32', 'debug', 'vs2010', 'libprotobuf.lib')
else:
lib_path = os.path.join(sdk.path, 'lib', 'win32', 'release', 'vs2010', 'libprotobuf.lib')
compiler.linkflags.insert(0, binary.Dep(lib_path))
if i == 'csgo':
if AMBuild.target['platform'] == 'linux':
link = os.path.join(os.path.join(AMBuild.outputFolder, extension.workFolder), 'libprotobuf.a')
target = os.path.join(os.path.join(AMBuild.cache[sdk['sdk']], 'lib', 'linux32', 'release'), 'libprotobuf.a')
try:
os.lstat(link)
except:
extension.AddCommand(SymlinkCommand(link, target))
elif AMBuild.target['platform'] == 'darwin':
link = os.path.join(os.path.join(AMBuild.outputFolder, extension.workFolder), 'libprotobuf.a')
target = os.path.join(os.path.join(AMBuild.cache[sdk['sdk']], 'lib', 'osx32', 'release'), 'libprotobuf.a')
try:
os.lstat(link)
except:
extension.AddCommand(SymlinkCommand(link, target))
elif AMBuild.target['platform'] == 'windows':
libPath = os.path.join(AMBuild.cache[sdk['sdk']], 'lib', 'win32', 'release', 'vs2010', 'libprotobuf.lib')
binary.RebuildIfNewer(libPath)
binary['POSTLINKFLAGS'].append(libPath)
binary.sources += [
'AdminCache.cpp',
'MenuStyle_Valve.cpp',
'logic_bridge.cpp',
'smn_entities.cpp',
'sm_stringutil.cpp',
'MenuVoting.cpp',
'smn_events.cpp',
'smn_menus.cpp',
'sm_trie.cpp',
'CDataPack.cpp',
'frame_hooks.cpp',
'smn_nextmap.cpp',
'sourcemm_api.cpp',
'ChatTriggers.cpp',
'smn_player.cpp',
'sourcemod.cpp',
'concmd_cleaner.cpp',
'HalfLife2.cpp',
'NextMap.cpp',
'ConCmdManager.cpp',
'ConVarManager.cpp',
'LibrarySys.cpp',
'PlayerManager.cpp',
'TimerSys.cpp',
'CoreConfig.cpp',
'Logger.cpp',
'smn_halflife.cpp',
'smn_console.cpp',
'UserMessages.cpp',
'MenuManager.cpp',
'smn_core.cpp',
'smn_hudtext.cpp',
'smn_usermsgs.cpp',
'MenuStyle_Base.cpp',
'smn_keyvalues.cpp',
'smn_vector.cpp',
'EventManager.cpp',
'MenuStyle_Radio.cpp',
'sm_autonatives.cpp',
'sm_srvcmds.cpp',
'ConsoleDetours.cpp',
'NativeInvoker.cpp',
'smn_database.cpp',
'ForwardSys.cpp',
'Database.cpp',
'DebugReporter.cpp',
'ShareSys.cpp',
'PluginSys.cpp',
'HandleSys.cpp',
'NativeOwner.cpp',
'ExtensionSys.cpp',
'smn_fakenatives.cpp',
'smn_filesystem.cpp',
'ADTFactory.cpp',
'PluginInfoDatabase.cpp',
]
if sdk.name in ['csgo', 'dota']:
binary.sources += ['smn_protobuf.cpp']
else:
binary.sources += ['smn_bitbuffer.cpp']
files = [
'AdminCache.cpp',
'ExtensionSys.cpp',
'MenuStyle_Valve.cpp',
'logic_bridge.cpp',
'smn_entities.cpp',
'sm_stringutil.cpp',
'ADTFactory.cpp',
'ForwardSys.cpp',
'MenuVoting.cpp',
'smn_events.cpp',
'smn_menus.cpp',
'sm_trie.cpp',
'CDataPack.cpp',
'frame_hooks.cpp',
'NativeInvoker.cpp',
'smn_fakenatives.cpp',
'smn_nextmap.cpp',
'sourcemm_api.cpp',
'ChatTriggers.cpp',
'NativeOwner.cpp',
'smn_filesystem.cpp',
'smn_player.cpp',
'sourcemod.cpp',
'concmd_cleaner.cpp',
'HalfLife2.cpp',
'NextMap.cpp',
'ConCmdManager.cpp',
'HandleSys.cpp',
'ConVarManager.cpp',
'LibrarySys.cpp',
'PlayerManager.cpp',
'TimerSys.cpp',
'CoreConfig.cpp',
'Logger.cpp',
'PluginInfoDatabase.cpp',
'smn_halflife.cpp',
'PluginSys.cpp',
'smn_console.cpp',
'UserMessages.cpp',
'Database.cpp',
'MenuManager.cpp',
'smn_core.cpp',
'smn_hudtext.cpp',
'smn_usermsgs.cpp',
'DebugReporter.cpp',
'MenuStyle_Base.cpp',
'ShareSys.cpp',
'smn_database.cpp',
'smn_keyvalues.cpp',
'smn_vector.cpp',
'EventManager.cpp',
'MenuStyle_Radio.cpp',
'sm_autonatives.cpp',
'sm_srvcmds.cpp',
'ConsoleDetours.cpp'
]
if i == 'csgo':
files.append('smn_protobuf.cpp')
else:
files.append('smn_bitbuffer.cpp')
if sdk.name is 'csgo':
binary.sources += [
os.path.join(sdk.path, 'public', 'engine', 'protobuf', 'netmessages.pb.cc'),
os.path.join(sdk.path, 'public', 'game', 'shared', 'csgo', 'protobuf', 'cstrike15_usermessages.pb.cc'),
os.path.join(sdk.path, 'public', 'game', 'shared', 'csgo', 'protobuf', 'cstrike15_usermessage_helpers.cpp'),
]
elif sdk.name is 'dota':
binary.sources += [
os.path.join(sdk.path, 'public', 'engine', 'protobuf', 'networkbasetypes.pb.cc'),
os.path.join(sdk.path, 'public', 'engine', 'protobuf', 'netmessages.pb.cc'),
os.path.join(sdk.path, 'public', 'game', 'shared', 'protobuf', 'ai_activity.pb.cc'),
os.path.join(sdk.path, 'public', 'game', 'shared', 'protobuf', 'usermessages.pb.cc'),
os.path.join(sdk.path, 'public', 'game', 'shared', 'dota', 'protobuf', 'dota_commonmessages.pb.cc'),
os.path.join(sdk.path, 'public', 'game', 'shared', 'dota', 'protobuf', 'dota_usermessages.pb.cc'),
os.path.join(sdk.path, 'public', 'game', 'shared', 'dota', 'protobuf', 'dota_usermessage_helpers.cpp'),
]
binary.AddSourceFiles('core', files)
if i == 'csgo':
files = [
os.path.join('public', 'engine', 'protobuf', 'netmessages.pb.cc'),
os.path.join('public', 'game', 'shared', 'csgo', 'protobuf', 'cstrike15_usermessages.pb.cc'),
os.path.join('public', 'game', 'shared', 'csgo', 'protobuf', 'cstrike15_usermessage_helpers.cpp'),
]
binary.AddSourceFiles(AMBuild.cache[sdk['sdk']], files)
SM.PostSetupHL2Job(extension, binary, i)
if i == 'csgo':
if AMBuild.target['platform'] in ['linux', 'darwin']:
binary.AddObjectFiles(['libprotobuf.a'])
SM.AutoVersion('core', binary)
SM.ExtractDebugInfo(extension, binary)
binary.SendToJob()
SM.binaries += [builder.Add(binary)]

View File

@ -408,7 +408,7 @@ bool SM_ExecuteConfig(CPlugin *pl, AutoConfig *cfg, bool can_create)
FILE *fp = fopen(file, "wt");
if (fp)
{
fprintf(fp, "// This file was auto-generated by SourceMod (v%s)\n", SM_VERSION_STRING);
fprintf(fp, "// This file was auto-generated by SourceMod (v%s)\n", SOURCEMOD_VERSION);
fprintf(fp, "// ConVars for plugin \"%s\"\n", pl->GetFilename());
fprintf(fp, "\n\n");

View File

@ -149,7 +149,7 @@ void Logger::_NewMapFile()
} else {
char date[32];
strftime(date, sizeof(date), "%m/%d/%Y - %H:%M:%S", curtime);
fprintf(fp, "L %s: SourceMod log file started (file \"L%02d%02d%03d.log\") (Version \"%s\")\n", date, curtime->tm_mon + 1, curtime->tm_mday, i, SM_VERSION_STRING);
fprintf(fp, "L %s: SourceMod log file started (file \"L%02d%02d%03d.log\") (Version \"%s\")\n", date, curtime->tm_mon + 1, curtime->tm_mday, i, SOURCEMOD_VERSION);
fclose(fp);
}
}
@ -362,7 +362,7 @@ void Logger::LogMessage(const char *vafmt, ...)
char date[32];
m_DailyPrintHdr = false;
strftime(date, sizeof(date), "%m/%d/%Y - %H:%M:%S", curtime);
fprintf(fp, "L %s: SourceMod log file session started (file \"L%04d%02d%02d.log\") (Version \"%s\")\n", date, curtime->tm_year + 1900, curtime->tm_mon + 1, curtime->tm_mday, SM_VERSION_STRING);
fprintf(fp, "L %s: SourceMod log file session started (file \"L%04d%02d%02d.log\") (Version \"%s\")\n", date, curtime->tm_year + 1900, curtime->tm_mon + 1, curtime->tm_mday, SOURCEMOD_VERSION);
}
va_list ap;
va_start(ap, vafmt);

View File

@ -816,7 +816,7 @@ void PlayerManager::OnClientCommand(edict_t *pEntity)
}
ClientConsolePrint(pEntity,
"SourceMod %s, by AlliedModders LLC", SM_VERSION_STRING);
"SourceMod %s, by AlliedModders LLC", SOURCEMOD_VERSION);
ClientConsolePrint(pEntity,
"To see running plugins, type \"sm plugins\"");
ClientConsolePrint(pEntity,

View File

@ -1,61 +1,59 @@
# vim: set ts=2 sw=2 tw=99 noet ft=python:
# vim: set sts=2 ts=8 sw=2 tw=99 et ft=python:
import os
compiler = SM.DefaultCompiler()
base = AMBuild.sourceFolder
compiler['CXXINCLUDES'].append(os.path.join(SM.mmsPath, 'core', 'sourcehook'))
compiler['CXXINCLUDES'].append(os.path.join(base, 'core', 'logic'))
compiler['CXXINCLUDES'].append(os.path.join(base, 'public'))
compiler['CXXINCLUDES'].append(os.path.join(base, 'public', 'sourcepawn'))
compiler['CDEFINES'].append('SM_DEFAULT_THREADER')
compiler['CDEFINES'].append('SM_LOGIC')
if AMBuild.target['platform'] == 'linux':
compiler['POSTLINKFLAGS'].append('-lpthread')
if AMBuild.target['platform'] == 'darwin':
compiler['CFLAGS'].extend(['-Wno-deprecated-declarations'])
compiler['POSTLINKFLAGS'].extend(['-framework', 'CoreServices'])
extension = AMBuild.AddJob('sourcemod.logic')
binary = Cpp.LibraryBuilder('sourcemod.logic', AMBuild, extension, compiler)
files = [
'common_logic.cpp',
'smn_adt_array.cpp',
'smn_sorting.cpp',
'smn_maplists.cpp',
'smn_adt_stack.cpp',
'thread/ThreadWorker.cpp',
'thread/BaseWorker.cpp',
'ThreadSupport.cpp',
'smn_float.cpp',
'TextParsers.cpp',
'smn_textparse.cpp',
'smn_adt_trie.cpp',
'Profiler.cpp',
'smn_functions.cpp',
'smn_timers.cpp',
'smn_players.cpp',
'MemoryUtils.cpp',
'smn_admin.cpp',
'smn_banning.cpp',
'stringutil.cpp',
'Translator.cpp',
'PhraseCollection.cpp',
'smn_lang.cpp',
'smn_string.cpp',
'smn_handles.cpp',
'smn_datapacks.cpp',
'smn_gameconfigs.cpp',
'GameConfigs.cpp',
'sm_crc32.cpp',
'smn_profiler.cpp'
]
if AMBuild.target['platform'] == 'windows':
files.append('thread/WinThreads.cpp')
binary = SM.Library(builder, 'sourcemod.logic')
binary.compiler.cxxincludes += [
os.path.join(builder.sourcePath, 'core', 'logic'),
os.path.join(builder.sourcePath, 'public'),
os.path.join(builder.sourcePath, 'public', 'sourcepawn'),
os.path.join(builder.sourcePath, 'public', 'amtl'),
os.path.join(SM.mms_root, 'core', 'sourcehook')
]
binary.compiler.defines += [
'SM_DEFAULT_THREADER',
'SM_LOGIC'
]
if builder.target_platform is 'linux':
binary.compiler.postlink += ['-lpthread', '-lrt']
elif builder.target_platform is 'mac':
binary.compiler.cflags += ['-Wno-deprecated-declarations']
binary.compiler.postlink += ['-framework', 'CoreServices']
binary.sources += [
'common_logic.cpp',
'smn_adt_array.cpp',
'smn_sorting.cpp',
'smn_maplists.cpp',
'smn_adt_stack.cpp',
'thread/ThreadWorker.cpp',
'thread/BaseWorker.cpp',
'ThreadSupport.cpp',
'smn_float.cpp',
'TextParsers.cpp',
'smn_textparse.cpp',
'smn_adt_trie.cpp',
'Profiler.cpp',
'smn_functions.cpp',
'smn_timers.cpp',
'smn_players.cpp',
'MemoryUtils.cpp',
'smn_admin.cpp',
'smn_banning.cpp',
'stringutil.cpp',
'Translator.cpp',
'PhraseCollection.cpp',
'smn_lang.cpp',
'smn_string.cpp',
'smn_handles.cpp',
'smn_datapacks.cpp',
'smn_gameconfigs.cpp',
'GameConfigs.cpp',
'sm_crc32.cpp',
'smn_profiler.cpp',
]
if builder.target_platform is 'windows':
binary.sources += ['thread/WinThreads.cpp']
else:
files.append('thread/PosixThreads.cpp')
binary.AddSourceFiles('core/logic', files)
SM.AutoVersion('core/logic', binary)
SM.ExtractDebugInfo(extension, binary)
binary.SendToJob()
binary.sources += ['thread/PosixThreads.cpp']
SM.binaries += [builder.Add(binary)]

View File

@ -39,7 +39,7 @@
RootConsoleMenu g_RootMenu;
ConVar sourcemod_version("sourcemod_version", SM_VERSION_STRING, FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY, "SourceMod Version");
ConVar sourcemod_version("sourcemod_version", SOURCEMOD_VERSION, FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY, "SourceMod Version");
RootConsoleMenu::RootConsoleMenu()
{
@ -339,11 +339,11 @@ void RootConsoleMenu::OnRootConsoleCommand(const char *cmdname, const CCommand &
else if (strcmp(cmdname, "version") == 0)
{
ConsolePrint(" SourceMod Version Information:");
ConsolePrint(" SourceMod Version: %s", SM_VERSION_STRING);
ConsolePrint(" SourceMod Version: %s", SOURCEMOD_VERSION);
ConsolePrint(" SourcePawn Engine: %s (build %s)", g_pSourcePawn2->GetEngineName(), g_pSourcePawn2->GetVersionString());
ConsolePrint(" SourcePawn API: v1 = %d, v2 = %d", g_pSourcePawn->GetEngineAPIVersion(), g_pSourcePawn2->GetAPIVersion());
ConsolePrint(" Compiled on: %s %s", __DATE__, __TIME__);
ConsolePrint(" Build ID: %s", SM_BUILD_UNIQUEID);
ConsolePrint(" Build ID: %s", SOURCEMOD_BUILD_ID);
ConsolePrint(" http://www.sourcemod.net/");
}
}

View File

@ -147,7 +147,7 @@ const char *SourceMod_Core::GetLicense()
const char *SourceMod_Core::GetVersion()
{
return SM_VERSION_STRING;
return SOURCEMOD_VERSION;
}
const char *SourceMod_Core::GetDate()

View File

@ -1,25 +1,23 @@
# vim: set ts=2 sw=2 tw=99 noet ft=python:
# vim: set sts=2 ts=8 sw=2 tw=99 et ft=python:
import os
compiler = SM.DefaultExtCompiler('extensions/bintools')
compiler['CDEFINES'].append('HOOKING_ENABLED')
compiler['CXXINCLUDES'].append(os.path.join(SM.mmsPath, 'core', 'sourcehook'))
compiler['CXXINCLUDES'].append(os.path.join(AMBuild.sourceFolder, 'public', 'jit'))
compiler['CXXINCLUDES'].append(os.path.join(AMBuild.sourceFolder, 'public', 'jit', 'x86'))
binary = SM.ExtLibrary(builder, 'bintools.ext')
binary.compiler.defines += ['HOOKING_ENABLED']
binary.compiler.cxxincludes += [
os.path.join(SM.mms_root, 'core', 'sourcehook'),
os.path.join(builder.sourcePath, 'public', 'jit'),
os.path.join(builder.sourcePath, 'public', 'jit', 'x86'),
]
extension = AMBuild.AddJob('bintools.ext')
binary = Cpp.LibraryBuilder('bintools.ext', AMBuild, extension, compiler)
binary.AddSourceFiles('extensions/bintools', [
'extension.cpp',
'CallMaker.cpp',
'CallWrapper.cpp',
'HookWrapper.cpp',
'jit_call.cpp',
'jit_hook.cpp',
'sdk/smsdk_ext.cpp'
])
SM.AutoVersion('extensions/bintools', binary)
SM.ExtractDebugInfo(extension, binary)
binary.SendToJob()
binary.sources += [
'extension.cpp',
'CallMaker.cpp',
'CallWrapper.cpp',
'HookWrapper.cpp',
'jit_call.cpp',
'jit_hook.cpp',
'sdk/smsdk_ext.cpp'
]
SM.extensions += [builder.Add(binary)]

View File

@ -61,11 +61,11 @@ bool BinTools::SDK_OnLoad(char *error, size_t maxlength, bool late)
const char *BinTools::GetExtensionVerString()
{
return SM_VERSION_STRING;
return SOURCEMOD_VERSION;
}
const char *BinTools::GetExtensionDateString()
{
return SM_BUILD_TIMESTAMP;
return SOURCEMOD_BUILD_TIME;
}

View File

@ -1,20 +1,19 @@
# vim: set ts=2 sw=2 tw=99 noet ft=python:
# vim: set sts=2 ts=8 sw=2 tw=99 et ft=python:
import os
compiler = SM.DefaultExtCompiler('extensions/clientprefs')
compiler['CXXINCLUDES'].append(os.path.join(SM.mmsPath, 'core', 'sourcehook'))
binary = SM.ExtLibrary(builder, 'clientprefs.ext')
binary.compiler.cxxincludes += [
os.path.join(SM.mms_root, 'core', 'sourcehook'),
]
extension = AMBuild.AddJob('clientprefs.ext')
binary = Cpp.LibraryBuilder('clientprefs.ext', AMBuild, extension, compiler)
binary.AddSourceFiles('extensions/clientprefs', [
'extension.cpp',
'cookie.cpp',
'menus.cpp',
'natives.cpp',
'query.cpp',
'sdk/smsdk_ext.cpp'
])
SM.AutoVersion('extensions/clientprefs', binary)
SM.ExtractDebugInfo(extension, binary)
binary.SendToJob()
binary.sources += [
'extension.cpp',
'cookie.cpp',
'menus.cpp',
'natives.cpp',
'query.cpp',
'sdk/smsdk_ext.cpp'
]
SM.extensions += [builder.Add(binary)]

View File

@ -483,11 +483,11 @@ IdentityToken_t *ClientPrefs::GetIdentity() const
const char *ClientPrefs::GetExtensionVerString()
{
return SM_VERSION_STRING;
return SOURCEMOD_VERSION;
}
const char *ClientPrefs::GetExtensionDateString()
{
return SM_BUILD_TIMESTAMP;
return SOURCEMOD_BUILD_TIME;
}

View File

@ -1,33 +1,21 @@
# vim: set ts=2 sw=2 tw=99 noet ft=python:
# vim: set sts=2 ts=8 sw=2 tw=99 et ft=python:
import os
for i in SM.sdkInfo:
if i != 'css' and i != 'csgo':
continue
sdk = SM.sdkInfo[i]
if AMBuild.target['platform'] not in sdk['platform']:
continue
compiler = SM.DefaultHL2Compiler('extensions/cstrike', i)
name = 'game.cstrike.ext.' + sdk['ext']
extension = AMBuild.AddJob(name)
binary = Cpp.LibraryBuilder(name, AMBuild, extension, compiler)
SM.PreSetupHL2Job(extension, binary, i)
binary.AddSourceFiles('extensions/cstrike', [
'extension.cpp',
'natives.cpp',
'RegNatives.cpp',
'timeleft.cpp',
'forwards.cpp',
'util_cstrike.cpp',
'sdk/smsdk_ext.cpp',
'CDetour/detours.cpp',
'asm/asm.c'
])
SM.PostSetupHL2Job(extension, binary, i)
SM.AutoVersion('extensions/cstrike', binary)
SM.ExtractDebugInfo(extension, binary)
binary.SendToJob()
for sdk_name in ['css', 'csgo']:
if sdk_name not in SM.sdks:
continue
sdk = SM.sdks[sdk_name]
binary = SM.HL2Library(builder, 'game.cstrike.ext.' + sdk.ext, sdk)
binary.sources += [
'extension.cpp',
'natives.cpp',
'RegNatives.cpp',
'timeleft.cpp',
'forwards.cpp',
'util_cstrike.cpp',
'sdk/smsdk_ext.cpp',
'CDetour/detours.cpp',
'asm/asm.c'
]
SM.extensions += [builder.Add(binary)]

View File

@ -283,12 +283,12 @@ bool CStrike::ProcessCommandTarget(cmd_target_info_t *info)
const char *CStrike::GetExtensionVerString()
{
return SM_VERSION_STRING;
return SOURCEMOD_VERSION;
}
const char *CStrike::GetExtensionDateString()
{
return SM_BUILD_TIMESTAMP;
return SOURCEMOD_BUILD_TIME;
}
void CStrike::OnPluginLoaded(IPlugin *plugin)

View File

@ -1,87 +1,24 @@
# vim: set ts=2 sw=2 tw=99 noet ft=python :
import os.path
import subprocess
import ambuild.command as command
import ambuild.osutil as osutil
# vim: set sts=2 ts=8 sw=2 tw=99 et ft=python :
import os
def BuildCURL():
curl = AMBuild.AddJob('curl')
if AMBuild.target['platform'] in ['linux', 'darwin']:
if not osutil.FileExists(os.path.join(AMBuild.outputFolder, 'curl', 'Makefile')):
args = ['/bin/bash',
os.path.join(AMBuild.sourceFolder, 'extensions', 'curl', 'curl-src', 'configure'),
'--enable-static',
'--disable-shared',
'--disable-ldap',
'--without-ssl',
'--without-libidn',
'--without-libssh2',
'--without-zlib']
env = os.environ.copy()
env['CFLAGS'] = '-m32'
if AMBuild.target['platform'] == 'darwin':
env['LDFLAGS'] = '-mmacosx-version-min=10.5'
else:
env['CFLAGS'] += ' -D_GNU_SOURCE'
curl.AddCommand(command.DirectCommand(argv = args, env = env))
curl.AddCommand(command.ShellCommand('cd lib && make'))
else:
args = ''
projpath = os.path.join(AMBuild.sourceFolder, 'extensions', 'curl', 'curl-src', 'lib',
'build_libcurl.vcproj')
try:
subprocess.Popen('vcbuild')
except:
xprojpath = os.path.join(AMBuild.sourceFolder, 'extensions', 'curl', 'curl-src', 'lib',
'build_libcurl.vcxproj')
if not os.path.isfile(xprojpath):
curl.AddCommand(command.DirectCommand(['vcupgrade', projpath]))
args = ['msbuild', xprojpath, '/p:Configuration=LIB Release']
if not args:
args = ['vcbuild', projpath, 'LIB Release']
curl.AddCommand(command.DirectCommand(args))
#die "Unable to find libcurl.lib!\n" unless (-f "LIB-Release\\libcurl.lib");
libcurl = builder.RunScript('curl-src/lib/AMBuilder')
BuildCURL()
binary = SM.ExtLibrary(builder, 'webternet.ext')
binary.compiler.includes += [
os.path.join(builder.sourcePath, 'extensions', 'curl', 'curl-src', 'include')
]
binary.compiler.defines += ['CURL_STATICLIB']
binary.compiler.postlink += [libcurl.binary]
if builder.target_platform is 'linux':
binary.compiler.postlink += ['-lrt']
elif builder.target_platform is 'windows':
binary.compiler.postlink += ['ws2_32.lib']
compiler = SM.DefaultExtCompiler('extensions/curl')
extension = AMBuild.AddJob('webternet.ext')
binary = Cpp.LibraryBuilder('webternet.ext', AMBuild, extension, compiler)
binary.sources += [
'extension.cpp',
'curlapi.cpp',
'sdk/smsdk_ext.cpp',
]
curlPath = [AMBuild.sourceFolder, 'extensions', 'curl', 'curl-src', 'include']
compiler['CXXINCLUDES'].append(os.path.join(*curlPath))
compiler['CDEFINES'].append('CURL_STATICLIB')
binary.AddSourceFiles('extensions/curl', [
'extension.cpp',
'curlapi.cpp',
'sdk/smsdk_ext.cpp',
])
if AMBuild.target['platform'] == 'linux' or AMBuild.target['platform'] == 'darwin':
path = os.path.join(AMBuild.outputFolder,
'curl',
'lib',
'.libs',
'libcurl.a')
if AMBuild.target['platform'] == 'linux':
binary['POSTLINKFLAGS'].append('-lrt')
binary.AddObjectFiles([path])
elif AMBuild.target['platform'] == 'windows':
path = os.path.join(AMBuild.sourceFolder,
'extensions',
'curl',
'curl-src',
'lib',
'LIB-Release',
'libcurl.lib')
if os.path.isfile(path):
binary.RelinkIfNewer(path)
binary['POSTLINKFLAGS'].extend([path, 'ws2_32.lib'])
SM.AutoVersion('extensions/curl', binary)
SM.ExtractDebugInfo(extension, binary)
binary.SendToJob()
SM.extensions += [builder.Add(binary)]

View File

@ -0,0 +1,92 @@
# vim: sts=2 ts=8 sw=2 tw=99 et ft=python:
import os, platform
builder.SetBuildFolder('libcurl')
binary = builder.compiler.StaticLibrary('curl')
binary.compiler.includes += [
os.path.join(builder.sourcePath, 'extensions', 'curl', 'curl-src', 'lib'),
os.path.join(builder.sourcePath, 'extensions', 'curl', 'curl-src', 'include')
]
if builder.target_platform is 'mac':
mac_version, ignore, ignore = platform.mac_ver()
mac_tuple = mac_version.split('.')
if int(mac_tuple[0]) >= 10 and int(mac_tuple[1]) >= 9:
binary.compiler.defines += ['BUILTIN_STRLCAT']
elif builder.target_platform is 'windows':
binary.compiler.defines += [
'BUILDING_LIBCURL',
'CURL_STATICLIB',
'CURL_DISABLE_LDAP',
]
binary.sources += [
'base64.c',
'connect.c',
'content_encoding.c',
'cookie.c',
'curl_addrinfo.c',
'dict.c',
'easy.c',
'escape.c',
'file.c',
'formdata.c',
'ftp.c',
'getenv.c',
'getinfo.c',
'gtls.c',
'hash.c',
'hostares.c',
'hostasyn.c',
'hostip.c',
'hostip4.c',
'hostip6.c',
'hostsyn.c',
'hostthre.c',
'http.c',
'http_chunks.c',
'http_digest.c',
'http_negotiate.c',
'http_ntlm.c',
'if2ip.c',
'inet_ntop.c',
'inet_pton.c',
'krb4.c',
'krb5.c',
'ldap.c',
'llist.c',
'md5.c',
'memdebug.c',
'mprintf.c',
'multi.c',
'netrc.c',
'nss.c',
'parsedate.c',
'progress.c',
'qssl.c',
'rawstr.c',
'security.c',
'select.c',
'sendf.c',
'share.c',
'socks.c',
'speedcheck.c',
'splay.c',
'ssh.c',
'sslgen.c',
'ssluse.c',
'strdup.c',
'strequal.c',
'strerror.c',
'strtok.c',
'strtoofft.c',
'telnet.c',
'tftp.c',
'timeval.c',
'transfer.c',
'url.c',
'version.c'
]
rvalue = builder.Add(binary)

View File

@ -0,0 +1,918 @@
/* lib/config.h. Generated from config.h.in by configure. */
/* lib/config.h.in. Generated from configure.ac by autoheader. */
/* Define to 1 if you have the $func function. */
/* #undef AS_TR_CPP */
/* when building libcurl itself */
/* #undef BUILDING_LIBCURL */
/* Location of default ca bundle */
#define CURL_CA_BUNDLE "/etc/ssl/certs/ca-certificates.crt"
/* Location of default ca path */
/* #undef CURL_CA_PATH */
/* to disable cookies support */
/* #undef CURL_DISABLE_COOKIES */
/* to disable cryptographic authentication */
/* #undef CURL_DISABLE_CRYPTO_AUTH */
/* to disable DICT */
/* #undef CURL_DISABLE_DICT */
/* to disable FILE */
/* #undef CURL_DISABLE_FILE */
/* to disable FTP */
/* #undef CURL_DISABLE_FTP */
/* to disable HTTP */
/* #undef CURL_DISABLE_HTTP */
/* to disable LDAP */
#define CURL_DISABLE_LDAP 1
/* to disable LDAPS */
#define CURL_DISABLE_LDAPS 1
/* to disable proxies */
/* #undef CURL_DISABLE_PROXY */
/* to disable TELNET */
/* #undef CURL_DISABLE_TELNET */
/* to disable TFTP */
/* #undef CURL_DISABLE_TFTP */
/* to disable verbose strings */
/* #undef CURL_DISABLE_VERBOSE_STRINGS */
/* to make a symbol visible */
/* #undef CURL_EXTERN_SYMBOL */
/* to enable hidden symbols */
/* #undef CURL_HIDDEN_SYMBOLS */
/* W$ LDAP with non-W$ compiler */
/* #undef CURL_LDAP_HYBRID */
/* Use W$ LDAP implementation */
/* #undef CURL_LDAP_WIN */
/* when not building a shared library */
/* #undef CURL_STATICLIB */
/* Set to explicitly specify we don't want to use thread-safe functions */
/* #undef DISABLED_THREADSAFE */
/* your Entropy Gathering Daemon socket pathname */
/* #undef EGD_SOCKET */
/* Define if you want to enable IPv6 support */
#define ENABLE_IPV6 1
/* Define to the type qualifier of arg 1 for getnameinfo. */
#define GETNAMEINFO_QUAL_ARG1 const
/* Define to the type of arg 1 for getnameinfo. */
#define GETNAMEINFO_TYPE_ARG1 struct sockaddr *
/* Define to the type of arg 2 for getnameinfo. */
#define GETNAMEINFO_TYPE_ARG2 socklen_t
/* Define to the type of args 4 and 6 for getnameinfo. */
#define GETNAMEINFO_TYPE_ARG46 size_t
/* Define to the type of arg 7 for getnameinfo. */
#define GETNAMEINFO_TYPE_ARG7 unsigned int
/* Specifies the number of arguments to getservbyport_r */
#define GETSERVBYPORT_R_ARGS 6
/* Specifies the size of the buffer to pass to getservbyport_r */
#define GETSERVBYPORT_R_BUFSIZE 4096
/* Define to 1 if you have the alarm function. */
#define HAVE_ALARM 1
/* Define to 1 if you have the <alloca.h> header file. */
#define HAVE_ALLOCA_H 1
/* Define to 1 if you have the <arpa/inet.h> header file. */
#define HAVE_ARPA_INET_H 1
/* Define to 1 if you have the <arpa/tftp.h> header file. */
#define HAVE_ARPA_TFTP_H 1
/* Define to 1 if you have the <assert.h> header file. */
#define HAVE_ASSERT_H 1
/* Define to 1 if you have the `basename' function. */
#define HAVE_BASENAME 1
/* Define to 1 if bool is an available type. */
#define HAVE_BOOL_T 1
/* Define to 1 if you have the clock_gettime function and monotonic timer. */
#define HAVE_CLOCK_GETTIME_MONOTONIC 1
/* Define to 1 if you have the `closesocket' function. */
/* #undef HAVE_CLOSESOCKET */
/* Define to 1 if you have the `CRYPTO_cleanup_all_ex_data' function. */
/* #undef HAVE_CRYPTO_CLEANUP_ALL_EX_DATA */
/* Define to 1 if you have the <crypto.h> header file. */
/* #undef HAVE_CRYPTO_H */
/* Define to 1 if you have the <des.h> header file. */
/* #undef HAVE_DES_H */
/* disabled non-blocking sockets */
/* #undef HAVE_DISABLED_NONBLOCKING */
/* Define to 1 if you have the <dlfcn.h> header file. */
#define HAVE_DLFCN_H 1
/* Define to 1 if you have the `ENGINE_load_builtin_engines' function. */
/* #undef HAVE_ENGINE_LOAD_BUILTIN_ENGINES */
/* Define to 1 if you have the <errno.h> header file. */
#define HAVE_ERRNO_H 1
/* Define to 1 if you have the <err.h> header file. */
/* #undef HAVE_ERR_H */
/* Define to 1 if you have the <fcntl.h> header file. */
#define HAVE_FCNTL_H 1
/* Define to 1 if you have the fdopen function. */
#define HAVE_FDOPEN 1
/* use FIONBIO for non-blocking sockets */
/* #undef HAVE_FIONBIO */
/* Define to 1 if you have the `fork' function. */
#define HAVE_FORK 1
/* Define to 1 if you have the freeaddrinfo function. */
#define HAVE_FREEADDRINFO 1
/* Define to 1 if you have the freeifaddrs function. */
#define HAVE_FREEIFADDRS 1
/* Define to 1 if you have the ftruncate function. */
#define HAVE_FTRUNCATE 1
/* Define to 1 if you have a working getaddrinfo function. */
#define HAVE_GETADDRINFO 1
/* Define to 1 if you have the `geteuid' function. */
#define HAVE_GETEUID 1
/* Define to 1 if you have the `gethostbyaddr' function. */
#define HAVE_GETHOSTBYADDR 1
/* Define to 1 if you have the gethostbyaddr_r function. */
#define HAVE_GETHOSTBYADDR_R 1
/* gethostbyaddr_r() takes 5 args */
/* #undef HAVE_GETHOSTBYADDR_R_5 */
/* gethostbyaddr_r() takes 7 args */
/* #undef HAVE_GETHOSTBYADDR_R_7 */
/* gethostbyaddr_r() takes 8 args */
#define HAVE_GETHOSTBYADDR_R_8 1
/* If you have gethostbyname */
#define HAVE_GETHOSTBYNAME 1
/* Define to 1 if you have the gethostbyname_r function. */
#define HAVE_GETHOSTBYNAME_R 1
/* gethostbyname_r() takes 3 args */
/* #undef HAVE_GETHOSTBYNAME_R_3 */
/* gethostbyname_r() takes 5 args */
/* #undef HAVE_GETHOSTBYNAME_R_5 */
/* gethostbyname_r() takes 6 args */
#define HAVE_GETHOSTBYNAME_R_6 1
/* Define to 1 if you have the gethostname function. */
#define HAVE_GETHOSTNAME 1
/* Define to 1 if you have a working getifaddrs function. */
#define HAVE_GETIFADDRS 1
/* Define to 1 if you have the getnameinfo function. */
#define HAVE_GETNAMEINFO 1
/* Define to 1 if you have the `getpass_r' function. */
/* #undef HAVE_GETPASS_R */
/* Define to 1 if you have the `getppid' function. */
#define HAVE_GETPPID 1
/* Define to 1 if you have the `getprotobyname' function. */
#define HAVE_GETPROTOBYNAME 1
/* Define to 1 if you have the `getpwuid' function. */
#define HAVE_GETPWUID 1
/* Define to 1 if you have the `getrlimit' function. */
#define HAVE_GETRLIMIT 1
/* Define to 1 if you have the getservbyport_r function. */
#define HAVE_GETSERVBYPORT_R 1
/* Define to 1 if you have the `gettimeofday' function. */
#define HAVE_GETTIMEOFDAY 1
/* Define to 1 if you have a working glibc-style strerror_r function. */
/* #undef HAVE_GLIBC_STRERROR_R */
/* Define to 1 if you have a working gmtime_r function. */
#define HAVE_GMTIME_R 1
/* if you have the gssapi libraries */
/* #undef HAVE_GSSAPI */
/* Define to 1 if you have the <gssapi/gssapi_generic.h> header file. */
/* #undef HAVE_GSSAPI_GSSAPI_GENERIC_H */
/* Define to 1 if you have the <gssapi/gssapi.h> header file. */
/* #undef HAVE_GSSAPI_GSSAPI_H */
/* Define to 1 if you have the <gssapi/gssapi_krb5.h> header file. */
/* #undef HAVE_GSSAPI_GSSAPI_KRB5_H */
/* if you have the GNU gssapi libraries */
/* #undef HAVE_GSSGNU */
/* if you have the Heimdal gssapi libraries */
/* #undef HAVE_GSSHEIMDAL */
/* if you have the MIT gssapi libraries */
/* #undef HAVE_GSSMIT */
/* Define to 1 if you have the `idna_strerror' function. */
/* #undef HAVE_IDNA_STRERROR */
/* Define to 1 if you have the `idn_free' function. */
/* #undef HAVE_IDN_FREE */
/* Define to 1 if you have the <idn-free.h> header file. */
/* #undef HAVE_IDN_FREE_H */
/* Define to 1 if you have the <ifaddrs.h> header file. */
#define HAVE_IFADDRS_H 1
/* Define to 1 if you have the `inet_addr' function. */
#define HAVE_INET_ADDR 1
/* Define to 1 if you have the inet_ntoa_r function. */
/* #undef HAVE_INET_NTOA_R */
/* inet_ntoa_r() takes 2 args */
/* #undef HAVE_INET_NTOA_R_2 */
/* inet_ntoa_r() takes 3 args */
/* #undef HAVE_INET_NTOA_R_3 */
/* Define to 1 if you have a IPv6 capable working inet_ntop function. */
/* #undef HAVE_INET_NTOP */
/* Define to 1 if you have a IPv6 capable working inet_pton function. */
/* #undef HAVE_INET_PTON */
/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1
/* use ioctlsocket() for non-blocking sockets */
/* #undef HAVE_IOCTLSOCKET */
/* use Ioctlsocket() for non-blocking sockets */
/* #undef HAVE_IOCTLSOCKET_CASE */
/* Define to 1 if you have the <io.h> header file. */
/* #undef HAVE_IO_H */
/* if you have the Kerberos4 libraries (including -ldes) */
/* #undef HAVE_KRB4 */
/* Define to 1 if you have the `krb_get_our_ip_for_realm' function. */
/* #undef HAVE_KRB_GET_OUR_IP_FOR_REALM */
/* Define to 1 if you have the <krb.h> header file. */
/* #undef HAVE_KRB_H */
/* Define to 1 if you have the lber.h header file. */
/* #undef HAVE_LBER_H */
/* Define to 1 if you have the ldapssl.h header file. */
/* #undef HAVE_LDAPSSL_H */
/* Define to 1 if you have the ldap.h header file. */
/* #undef HAVE_LDAP_H */
/* Use LDAPS implementation */
/* #undef HAVE_LDAP_SSL */
/* Define to 1 if you have the ldap_ssl.h header file. */
/* #undef HAVE_LDAP_SSL_H */
/* Define to 1 if you have the `ldap_url_parse' function. */
/* #undef HAVE_LDAP_URL_PARSE */
/* Define to 1 if you have the <libgen.h> header file. */
#define HAVE_LIBGEN_H 1
/* Define to 1 if you have the `idn' library (-lidn). */
/* #undef HAVE_LIBIDN */
/* Define to 1 if you have the `resolv' library (-lresolv). */
/* #undef HAVE_LIBRESOLV */
/* Define to 1 if you have the `resolve' library (-lresolve). */
/* #undef HAVE_LIBRESOLVE */
/* Define to 1 if you have the `socket' library (-lsocket). */
/* #undef HAVE_LIBSOCKET */
/* Define to 1 if you have the `ssh2' library (-lssh2). */
/* #undef HAVE_LIBSSH2 */
/* Define to 1 if you have the <libssh2.h> header file. */
/* #undef HAVE_LIBSSH2_H */
/* Define to 1 if you have the `ssl' library (-lssl). */
/* #undef HAVE_LIBSSL */
/* if zlib is available */
/* #undef HAVE_LIBZ */
/* Define to 1 if you have the <limits.h> header file. */
#define HAVE_LIMITS_H 1
/* if your compiler supports LL */
#define HAVE_LL 1
/* Define to 1 if you have the <locale.h> header file. */
#define HAVE_LOCALE_H 1
/* Define to 1 if you have a working localtime_r function. */
#define HAVE_LOCALTIME_R 1
/* Define to 1 if the compiler supports the 'long long' data type. */
#define HAVE_LONGLONG 1
/* Define to 1 if you have the malloc.h header file. */
#define HAVE_MALLOC_H 1
/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1
/* Define to 1 if you have the MSG_NOSIGNAL flag. */
#define HAVE_MSG_NOSIGNAL 1
/* Define to 1 if you have the <netdb.h> header file. */
#define HAVE_NETDB_H 1
/* Define to 1 if you have the <netinet/in.h> header file. */
#define HAVE_NETINET_IN_H 1
/* Define to 1 if you have the <netinet/tcp.h> header file. */
#define HAVE_NETINET_TCP_H 1
/* Define to 1 if you have the <net/if.h> header file. */
#define HAVE_NET_IF_H 1
/* Define to 1 if NI_WITHSCOPEID exists and works. */
/* #undef HAVE_NI_WITHSCOPEID */
/* if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE
*/
/* #undef HAVE_OLD_GSSMIT */
/* Define to 1 if you have the <openssl/crypto.h> header file. */
/* #undef HAVE_OPENSSL_CRYPTO_H */
/* Define to 1 if you have the <openssl/engine.h> header file. */
/* #undef HAVE_OPENSSL_ENGINE_H */
/* Define to 1 if you have the <openssl/err.h> header file. */
/* #undef HAVE_OPENSSL_ERR_H */
/* Define to 1 if you have the <openssl/pem.h> header file. */
/* #undef HAVE_OPENSSL_PEM_H */
/* Define to 1 if you have the <openssl/pkcs12.h> header file. */
/* #undef HAVE_OPENSSL_PKCS12_H */
/* Define to 1 if you have the <openssl/rsa.h> header file. */
/* #undef HAVE_OPENSSL_RSA_H */
/* Define to 1 if you have the <openssl/ssl.h> header file. */
/* #undef HAVE_OPENSSL_SSL_H */
/* Define to 1 if you have the <openssl/x509.h> header file. */
/* #undef HAVE_OPENSSL_X509_H */
/* use O_NONBLOCK for non-blocking sockets */
#define HAVE_O_NONBLOCK 1
/* Define to 1 if you have the <pem.h> header file. */
/* #undef HAVE_PEM_H */
/* Define to 1 if you have the `perror' function. */
#define HAVE_PERROR 1
/* Define to 1 if you have the `pipe' function. */
#define HAVE_PIPE 1
/* if you have the function PK11_CreateGenericObject */
/* #undef HAVE_PK11_CREATEGENERICOBJECT */
/* Define to 1 if you have the `poll' function. */
#define HAVE_POLL 1
/* If you have a fine poll */
#define HAVE_POLL_FINE 1
/* Define to 1 if you have the <poll.h> header file. */
#define HAVE_POLL_H 1
/* Define to 1 if you have a working POSIX-style strerror_r function. */
#define HAVE_POSIX_STRERROR_R 1
/* Define to 1 if you have the <pwd.h> header file. */
#define HAVE_PWD_H 1
/* Define to 1 if you have the `RAND_egd' function. */
/* #undef HAVE_RAND_EGD */
/* Define to 1 if you have the `RAND_screen' function. */
/* #undef HAVE_RAND_SCREEN */
/* Define to 1 if you have the `RAND_status' function. */
/* #undef HAVE_RAND_STATUS */
/* Define to 1 if you have the recv function. */
#define HAVE_RECV 1
/* Define to 1 if you have the recvfrom function. */
#define HAVE_RECVFROM 1
/* Define to 1 if you have the <rsa.h> header file. */
/* #undef HAVE_RSA_H */
/* Define to 1 if you have the select function. */
#define HAVE_SELECT 1
/* Define to 1 if you have the send function. */
#define HAVE_SEND 1
/* Define to 1 if you have the <setjmp.h> header file. */
#define HAVE_SETJMP_H 1
/* Define to 1 if you have the `setlocale' function. */
#define HAVE_SETLOCALE 1
/* Define to 1 if you have the `setmode' function. */
/* #undef HAVE_SETMODE */
/* Define to 1 if you have the `setrlimit' function. */
#define HAVE_SETRLIMIT 1
/* Define to 1 if you have the <sgtty.h> header file. */
#define HAVE_SGTTY_H 1
/* Define to 1 if you have the sigaction function. */
#define HAVE_SIGACTION 1
/* Define to 1 if you have the siginterrupt function. */
#define HAVE_SIGINTERRUPT 1
/* Define to 1 if you have the signal function. */
#define HAVE_SIGNAL 1
/* Define to 1 if you have the <signal.h> header file. */
#define HAVE_SIGNAL_H 1
/* Define to 1 if you have the sigsetjmp function or macro. */
#define HAVE_SIGSETJMP 1
/* Define to 1 if sig_atomic_t is an available typedef. */
#define HAVE_SIG_ATOMIC_T 1
/* Define to 1 if sig_atomic_t is already defined as volatile. */
/* #undef HAVE_SIG_ATOMIC_T_VOLATILE */
/* Define to 1 if you have the `socket' function. */
#define HAVE_SOCKET 1
/* use SO_NONBLOCK for non-blocking sockets */
/* #undef HAVE_SO_NONBLOCK */
/* Define this if you have the SPNEGO library fbopenssl */
/* #undef HAVE_SPNEGO */
/* Define to 1 if you have the `SSL_get_shutdown' function. */
/* #undef HAVE_SSL_GET_SHUTDOWN */
/* Define to 1 if you have the <ssl.h> header file. */
/* #undef HAVE_SSL_H */
/* Define to 1 if you have the <stdbool.h> header file. */
#define HAVE_STDBOOL_H 1
/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1
/* Define to 1 if you have the <stdio.h> header file. */
#define HAVE_STDIO_H 1
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
/* Define to 1 if you have the strcasecmp function. */
#define HAVE_STRCASECMP 1
/* Define to 1 if you have the strcasestr function. */
/* #undef HAVE_STRCASESTR */
/* Define to 1 if you have the strcmpi function. */
/* #undef HAVE_STRCMPI */
/* Define to 1 if you have the strdup function. */
#define HAVE_STRDUP 1
/* Define to 1 if you have the strerror_r function. */
#define HAVE_STRERROR_R 1
/* Define to 1 if you have the stricmp function. */
/* #undef HAVE_STRICMP */
/* Define to 1 if you have the <strings.h> header file. */
#define HAVE_STRINGS_H 1
/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1
/* Define to 1 if you have the strlcat function. */
/* #undef HAVE_STRLCAT */
/* Define to 1 if you have the `strlcpy' function. */
/* #undef HAVE_STRLCPY */
/* Define to 1 if you have the strncasecmp function. */
#define HAVE_STRNCASECMP 1
/* Define to 1 if you have the strncmpi function. */
/* #undef HAVE_STRNCMPI */
/* Define to 1 if you have the strnicmp function. */
/* #undef HAVE_STRNICMP */
/* Define to 1 if you have the strstr function. */
#define HAVE_STRSTR 1
/* Define to 1 if you have the strtok_r function. */
#define HAVE_STRTOK_R 1
/* Define to 1 if you have the strtoll function. */
#define HAVE_STRTOLL 1
/* if struct sockaddr_storage is defined */
#define HAVE_STRUCT_SOCKADDR_STORAGE 1
/* Define to 1 if you have the timeval struct. */
#define HAVE_STRUCT_TIMEVAL 1
/* Define to 1 if you have the <sys/filio.h> header file. */
/* #undef HAVE_SYS_FILIO_H */
/* Define to 1 if you have the <sys/ioctl.h> header file. */
#define HAVE_SYS_IOCTL_H 1
/* Define to 1 if you have the <sys/param.h> header file. */
#define HAVE_SYS_PARAM_H 1
/* Define to 1 if you have the <sys/poll.h> header file. */
#define HAVE_SYS_POLL_H 1
/* Define to 1 if you have the <sys/resource.h> header file. */
#define HAVE_SYS_RESOURCE_H 1
/* Define to 1 if you have the <sys/select.h> header file. */
#define HAVE_SYS_SELECT_H 1
/* Define to 1 if you have the <sys/socket.h> header file. */
#define HAVE_SYS_SOCKET_H 1
/* Define to 1 if you have the <sys/sockio.h> header file. */
/* #undef HAVE_SYS_SOCKIO_H */
/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1
/* Define to 1 if you have the <sys/time.h> header file. */
#define HAVE_SYS_TIME_H 1
/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1
/* Define to 1 if you have the <sys/uio.h> header file. */
#define HAVE_SYS_UIO_H 1
/* Define to 1 if you have the <sys/un.h> header file. */
#define HAVE_SYS_UN_H 1
/* Define to 1 if you have the <sys/utime.h> header file. */
/* #undef HAVE_SYS_UTIME_H */
/* Define to 1 if you have the <termios.h> header file. */
#define HAVE_TERMIOS_H 1
/* Define to 1 if you have the <termio.h> header file. */
#define HAVE_TERMIO_H 1
/* Define to 1 if you have the <time.h> header file. */
#define HAVE_TIME_H 1
/* Define to 1 if you have the <tld.h> header file. */
/* #undef HAVE_TLD_H */
/* Define to 1 if you have the `tld_strerror' function. */
/* #undef HAVE_TLD_STRERROR */
/* Define to 1 if you have the `uname' function. */
#define HAVE_UNAME 1
/* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1
/* Define to 1 if you have the `utime' function. */
#define HAVE_UTIME 1
/* Define to 1 if you have the <utime.h> header file. */
#define HAVE_UTIME_H 1
/* Define to 1 if compiler supports C99 variadic macro style. */
#define HAVE_VARIADIC_MACROS_C99 1
/* Define to 1 if compiler supports old gcc variadic macro style. */
#define HAVE_VARIADIC_MACROS_GCC 1
/* Define to 1 if you have the winber.h header file. */
/* #undef HAVE_WINBER_H */
/* Define to 1 if you have the windows.h header file. */
/* #undef HAVE_WINDOWS_H */
/* Define to 1 if you have the winldap.h header file. */
/* #undef HAVE_WINLDAP_H */
/* Define to 1 if you have the winsock2.h header file. */
/* #undef HAVE_WINSOCK2_H */
/* Define to 1 if you have the winsock.h header file. */
/* #undef HAVE_WINSOCK_H */
/* Define this symbol if your OS supports changing the contents of argv */
#define HAVE_WRITABLE_ARGV 1
/* Define to 1 if you have the writev function. */
#define HAVE_WRITEV 1
/* Define to 1 if you have the ws2tcpip.h header file. */
/* #undef HAVE_WS2TCPIP_H */
/* Define to 1 if you have the <x509.h> header file. */
/* #undef HAVE_X509_H */
/* if you have the zlib.h header file */
/* #undef HAVE_ZLIB_H */
/* Define to 1 if you are building a native Windows target. */
/* #undef NATIVE_WINDOWS */
/* If you lack a fine basename() prototype */
/* #undef NEED_BASENAME_PROTO */
/* Define to 1 if you need the lber.h header file even with ldap.h */
/* #undef NEED_LBER_H */
/* Define to 1 if you need the malloc.h header file even with stdlib.h */
/* #undef NEED_MALLOC_H */
/* Define to 1 if _REENTRANT preprocessor symbol must be defined. */
/* #undef NEED_REENTRANT */
/* cpu-machine-OS */
#define OS "x86_64-unknown-linux-gnu"
/* Name of package */
#define PACKAGE "curl"
/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT "a suitable curl mailing list => http://curl.haxx.se/mail/"
/* Define to the full name of this package. */
#define PACKAGE_NAME "curl"
/* Define to the full name and version of this package. */
#define PACKAGE_STRING "curl -"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "curl"
/* Define to the version of this package. */
#define PACKAGE_VERSION "-"
/* a suitable file to read random data from */
/* #undef RANDOM_FILE */
/* Define to the type of arg 1 for recvfrom. */
#define RECVFROM_TYPE_ARG1 int
/* Define to the type pointed by arg 2 for recvfrom. */
#define RECVFROM_TYPE_ARG2 void
/* Define to 1 if the type pointed by arg 2 for recvfrom is void. */
#define RECVFROM_TYPE_ARG2_IS_VOID 1
/* Define to the type of arg 3 for recvfrom. */
#define RECVFROM_TYPE_ARG3 size_t
/* Define to the type of arg 4 for recvfrom. */
#define RECVFROM_TYPE_ARG4 int
/* Define to the type pointed by arg 5 for recvfrom. */
#define RECVFROM_TYPE_ARG5 struct sockaddr
/* Define to 1 if the type pointed by arg 5 for recvfrom is void. */
/* #undef RECVFROM_TYPE_ARG5_IS_VOID */
/* Define to the type pointed by arg 6 for recvfrom. */
#define RECVFROM_TYPE_ARG6 socklen_t
/* Define to 1 if the type pointed by arg 6 for recvfrom is void. */
/* #undef RECVFROM_TYPE_ARG6_IS_VOID */
/* Define to the function return type for recvfrom. */
#define RECVFROM_TYPE_RETV int
/* Define to the type of arg 1 for recv. */
#define RECV_TYPE_ARG1 int
/* Define to the type of arg 2 for recv. */
#define RECV_TYPE_ARG2 void *
/* Define to the type of arg 3 for recv. */
#define RECV_TYPE_ARG3 size_t
/* Define to the type of arg 4 for recv. */
#define RECV_TYPE_ARG4 int
/* Define to the function return type for recv. */
#define RECV_TYPE_RETV int
/* Define as the return type of signal handlers (`int' or `void'). */
#define RETSIGTYPE void
/* Define to the type qualifier of arg 5 for select. */
#define SELECT_QUAL_ARG5
/* Define to the type of arg 1 for select. */
#define SELECT_TYPE_ARG1 int
/* Define to the type of args 2, 3 and 4 for select. */
#define SELECT_TYPE_ARG234 fd_set *
/* Define to the type of arg 5 for select. */
#define SELECT_TYPE_ARG5 struct timeval *
/* Define to the function return type for select. */
#define SELECT_TYPE_RETV int
/* Define to the type qualifier of arg 2 for send. */
#define SEND_QUAL_ARG2 const
/* Define to the type of arg 1 for send. */
#define SEND_TYPE_ARG1 int
/* Define to the type of arg 2 for send. */
#define SEND_TYPE_ARG2 void *
/* Define to the type of arg 3 for send. */
#define SEND_TYPE_ARG3 size_t
/* Define to the type of arg 4 for send. */
#define SEND_TYPE_ARG4 int
/* Define to the function return type for send. */
#define SEND_TYPE_RETV int
/* The size of `int', as computed by sizeof. */
#define SIZEOF_INT 4
/* The size of `long', as computed by sizeof. */
#define SIZEOF_LONG 4
/* The size of `off_t', as computed by sizeof. */
#define SIZEOF_OFF_T 8
/* The size of `size_t', as computed by sizeof. */
#define SIZEOF_SIZE_T 4
/* The size of `time_t', as computed by sizeof. */
#define SIZEOF_TIME_T 4
/* The size of `void*', as computed by sizeof. */
#define SIZEOF_VOIDP 4
/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1
/* Define to the type of arg 3 for strerror_r. */
#define STRERROR_R_TYPE_ARG3 size_t
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
#define TIME_WITH_SYS_TIME 1
/* Define if you want to enable c-ares support */
/* #undef USE_ARES */
/* if GnuTLS is enabled */
/* #undef USE_GNUTLS */
/* if libSSH2 is in use */
/* #undef USE_LIBSSH2 */
/* If you want to build curl with the built-in manual */
#define USE_MANUAL 1
/* if NSS is enabled */
/* #undef USE_NSS */
/* if OpenSSL is in use */
/* #undef USE_OPENSSL */
/* if SSL is enabled */
/* #undef USE_SSLEAY */
/* Define to 1 if you are building a Windows target without large file
support. */
/* #undef USE_WIN32_LARGE_FILES */
/* to enable SSPI support */
/* #undef USE_WINDOWS_SSPI */
/* Define to 1 if using yaSSL in OpenSSL compatibility mode. */
/* #undef USE_YASSLEMUL */
/* Version number of package */
#define VERSION "7.19.2"
/* Define to avoid automatic inclusion of winsock.h */
/* #undef WIN32_LEAN_AND_MEAN */
/* Define to 1 if OS is AIX. */
#ifndef _ALL_SOURCE
/* # undef _ALL_SOURCE */
#endif
/* Number of bits in a file offset, on hosts where this is settable. */
#define _FILE_OFFSET_BITS 64
/* Define for large files, on AIX-style hosts. */
/* #undef _LARGE_FILES */
/* define this if you need it to compile thread-safe code */
/* #undef _THREAD_SAFE */
/* Define to empty if `const' does not conform to ANSI C. */
/* #undef const */
/* Type to use in place of in_addr_t when system does not provide it. */
/* #undef in_addr_t */
/* 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. */
#ifndef __cplusplus
/* #undef inline */
#endif
/* Define to `unsigned int' if <sys/types.h> does not define. */
/* #undef size_t */
/* Type to use in place of socklen_t when system does not provide it. */
/* #undef socklen_t */
/* the signed version of size_t */
/* #undef ssize_t */

View File

@ -0,0 +1,918 @@
/* lib/config.h. Generated from config.h.in by configure. */
/* lib/config.h.in. Generated from configure.ac by autoheader. */
/* Define to 1 if you have the $func function. */
/* #undef AS_TR_CPP */
/* when building libcurl itself */
/* #undef BUILDING_LIBCURL */
/* Location of default ca bundle */
/* #undef CURL_CA_BUNDLE */
/* Location of default ca path */
/* #undef CURL_CA_PATH */
/* to disable cookies support */
/* #undef CURL_DISABLE_COOKIES */
/* to disable cryptographic authentication */
/* #undef CURL_DISABLE_CRYPTO_AUTH */
/* to disable DICT */
/* #undef CURL_DISABLE_DICT */
/* to disable FILE */
/* #undef CURL_DISABLE_FILE */
/* to disable FTP */
/* #undef CURL_DISABLE_FTP */
/* to disable HTTP */
/* #undef CURL_DISABLE_HTTP */
/* to disable LDAP */
#define CURL_DISABLE_LDAP 1
/* to disable LDAPS */
#define CURL_DISABLE_LDAPS 1
/* to disable proxies */
/* #undef CURL_DISABLE_PROXY */
/* to disable TELNET */
/* #undef CURL_DISABLE_TELNET */
/* to disable TFTP */
/* #undef CURL_DISABLE_TFTP */
/* to disable verbose strings */
/* #undef CURL_DISABLE_VERBOSE_STRINGS */
/* to make a symbol visible */
/* #undef CURL_EXTERN_SYMBOL */
/* to enable hidden symbols */
/* #undef CURL_HIDDEN_SYMBOLS */
/* W$ LDAP with non-W$ compiler */
/* #undef CURL_LDAP_HYBRID */
/* Use W$ LDAP implementation */
/* #undef CURL_LDAP_WIN */
/* when not building a shared library */
/* #undef CURL_STATICLIB */
/* Set to explicitly specify we don't want to use thread-safe functions */
/* #undef DISABLED_THREADSAFE */
/* your Entropy Gathering Daemon socket pathname */
/* #undef EGD_SOCKET */
/* Define if you want to enable IPv6 support */
#define ENABLE_IPV6 1
/* Define to the type qualifier of arg 1 for getnameinfo. */
#define GETNAMEINFO_QUAL_ARG1 const
/* Define to the type of arg 1 for getnameinfo. */
#define GETNAMEINFO_TYPE_ARG1 struct sockaddr *
/* Define to the type of arg 2 for getnameinfo. */
#define GETNAMEINFO_TYPE_ARG2 socklen_t
/* Define to the type of args 4 and 6 for getnameinfo. */
#define GETNAMEINFO_TYPE_ARG46 socklen_t
/* Define to the type of arg 7 for getnameinfo. */
#define GETNAMEINFO_TYPE_ARG7 int
/* Specifies the number of arguments to getservbyport_r */
/* #undef GETSERVBYPORT_R_ARGS */
/* Specifies the size of the buffer to pass to getservbyport_r */
/* #undef GETSERVBYPORT_R_BUFSIZE */
/* Define to 1 if you have the alarm function. */
#define HAVE_ALARM 1
/* Define to 1 if you have the <alloca.h> header file. */
#define HAVE_ALLOCA_H 1
/* Define to 1 if you have the <arpa/inet.h> header file. */
#define HAVE_ARPA_INET_H 1
/* Define to 1 if you have the <arpa/tftp.h> header file. */
#define HAVE_ARPA_TFTP_H 1
/* Define to 1 if you have the <assert.h> header file. */
#define HAVE_ASSERT_H 1
/* Define to 1 if you have the `basename' function. */
#define HAVE_BASENAME 1
/* Define to 1 if bool is an available type. */
#define HAVE_BOOL_T 1
/* Define to 1 if you have the clock_gettime function and monotonic timer. */
/* #undef HAVE_CLOCK_GETTIME_MONOTONIC */
/* Define to 1 if you have the `closesocket' function. */
/* #undef HAVE_CLOSESOCKET */
/* Define to 1 if you have the `CRYPTO_cleanup_all_ex_data' function. */
/* #undef HAVE_CRYPTO_CLEANUP_ALL_EX_DATA */
/* Define to 1 if you have the <crypto.h> header file. */
/* #undef HAVE_CRYPTO_H */
/* Define to 1 if you have the <des.h> header file. */
/* #undef HAVE_DES_H */
/* disabled non-blocking sockets */
/* #undef HAVE_DISABLED_NONBLOCKING */
/* Define to 1 if you have the <dlfcn.h> header file. */
#define HAVE_DLFCN_H 1
/* Define to 1 if you have the `ENGINE_load_builtin_engines' function. */
/* #undef HAVE_ENGINE_LOAD_BUILTIN_ENGINES */
/* Define to 1 if you have the <errno.h> header file. */
#define HAVE_ERRNO_H 1
/* Define to 1 if you have the <err.h> header file. */
/* #undef HAVE_ERR_H */
/* Define to 1 if you have the <fcntl.h> header file. */
#define HAVE_FCNTL_H 1
/* Define to 1 if you have the fdopen function. */
#define HAVE_FDOPEN 1
/* use FIONBIO for non-blocking sockets */
/* #undef HAVE_FIONBIO */
/* Define to 1 if you have the `fork' function. */
#define HAVE_FORK 1
/* Define to 1 if you have the freeaddrinfo function. */
#define HAVE_FREEADDRINFO 1
/* Define to 1 if you have the freeifaddrs function. */
#define HAVE_FREEIFADDRS 1
/* Define to 1 if you have the ftruncate function. */
#define HAVE_FTRUNCATE 1
/* Define to 1 if you have a working getaddrinfo function. */
#define HAVE_GETADDRINFO 1
/* Define to 1 if you have the `geteuid' function. */
#define HAVE_GETEUID 1
/* Define to 1 if you have the `gethostbyaddr' function. */
#define HAVE_GETHOSTBYADDR 1
/* Define to 1 if you have the gethostbyaddr_r function. */
/* #undef HAVE_GETHOSTBYADDR_R */
/* gethostbyaddr_r() takes 5 args */
/* #undef HAVE_GETHOSTBYADDR_R_5 */
/* gethostbyaddr_r() takes 7 args */
/* #undef HAVE_GETHOSTBYADDR_R_7 */
/* gethostbyaddr_r() takes 8 args */
/* #undef HAVE_GETHOSTBYADDR_R_8 */
/* If you have gethostbyname */
#define HAVE_GETHOSTBYNAME 1
/* Define to 1 if you have the gethostbyname_r function. */
/* #undef HAVE_GETHOSTBYNAME_R */
/* gethostbyname_r() takes 3 args */
/* #undef HAVE_GETHOSTBYNAME_R_3 */
/* gethostbyname_r() takes 5 args */
/* #undef HAVE_GETHOSTBYNAME_R_5 */
/* gethostbyname_r() takes 6 args */
/* #undef HAVE_GETHOSTBYNAME_R_6 */
/* Define to 1 if you have the gethostname function. */
#define HAVE_GETHOSTNAME 1
/* Define to 1 if you have a working getifaddrs function. */
#define HAVE_GETIFADDRS 1
/* Define to 1 if you have the getnameinfo function. */
#define HAVE_GETNAMEINFO 1
/* Define to 1 if you have the `getpass_r' function. */
/* #undef HAVE_GETPASS_R */
/* Define to 1 if you have the `getppid' function. */
#define HAVE_GETPPID 1
/* Define to 1 if you have the `getprotobyname' function. */
#define HAVE_GETPROTOBYNAME 1
/* Define to 1 if you have the `getpwuid' function. */
#define HAVE_GETPWUID 1
/* Define to 1 if you have the `getrlimit' function. */
#define HAVE_GETRLIMIT 1
/* Define to 1 if you have the getservbyport_r function. */
/* #undef HAVE_GETSERVBYPORT_R */
/* Define to 1 if you have the `gettimeofday' function. */
#define HAVE_GETTIMEOFDAY 1
/* Define to 1 if you have a working glibc-style strerror_r function. */
/* #undef HAVE_GLIBC_STRERROR_R */
/* Define to 1 if you have a working gmtime_r function. */
#define HAVE_GMTIME_R 1
/* if you have the gssapi libraries */
/* #undef HAVE_GSSAPI */
/* Define to 1 if you have the <gssapi/gssapi_generic.h> header file. */
/* #undef HAVE_GSSAPI_GSSAPI_GENERIC_H */
/* Define to 1 if you have the <gssapi/gssapi.h> header file. */
/* #undef HAVE_GSSAPI_GSSAPI_H */
/* Define to 1 if you have the <gssapi/gssapi_krb5.h> header file. */
/* #undef HAVE_GSSAPI_GSSAPI_KRB5_H */
/* if you have the GNU gssapi libraries */
/* #undef HAVE_GSSGNU */
/* if you have the Heimdal gssapi libraries */
/* #undef HAVE_GSSHEIMDAL */
/* if you have the MIT gssapi libraries */
/* #undef HAVE_GSSMIT */
/* Define to 1 if you have the `idna_strerror' function. */
/* #undef HAVE_IDNA_STRERROR */
/* Define to 1 if you have the `idn_free' function. */
/* #undef HAVE_IDN_FREE */
/* Define to 1 if you have the <idn-free.h> header file. */
/* #undef HAVE_IDN_FREE_H */
/* Define to 1 if you have the <ifaddrs.h> header file. */
#define HAVE_IFADDRS_H 1
/* Define to 1 if you have the `inet_addr' function. */
#define HAVE_INET_ADDR 1
/* Define to 1 if you have the inet_ntoa_r function. */
/* #undef HAVE_INET_NTOA_R */
/* inet_ntoa_r() takes 2 args */
/* #undef HAVE_INET_NTOA_R_2 */
/* inet_ntoa_r() takes 3 args */
/* #undef HAVE_INET_NTOA_R_3 */
/* Define to 1 if you have a IPv6 capable working inet_ntop function. */
/* #undef HAVE_INET_NTOP */
/* Define to 1 if you have a IPv6 capable working inet_pton function. */
/* #undef HAVE_INET_PTON */
/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1
/* use ioctlsocket() for non-blocking sockets */
/* #undef HAVE_IOCTLSOCKET */
/* use Ioctlsocket() for non-blocking sockets */
/* #undef HAVE_IOCTLSOCKET_CASE */
/* Define to 1 if you have the <io.h> header file. */
/* #undef HAVE_IO_H */
/* if you have the Kerberos4 libraries (including -ldes) */
/* #undef HAVE_KRB4 */
/* Define to 1 if you have the `krb_get_our_ip_for_realm' function. */
/* #undef HAVE_KRB_GET_OUR_IP_FOR_REALM */
/* Define to 1 if you have the <krb.h> header file. */
/* #undef HAVE_KRB_H */
/* Define to 1 if you have the lber.h header file. */
/* #undef HAVE_LBER_H */
/* Define to 1 if you have the ldapssl.h header file. */
/* #undef HAVE_LDAPSSL_H */
/* Define to 1 if you have the ldap.h header file. */
/* #undef HAVE_LDAP_H */
/* Use LDAPS implementation */
/* #undef HAVE_LDAP_SSL */
/* Define to 1 if you have the ldap_ssl.h header file. */
/* #undef HAVE_LDAP_SSL_H */
/* Define to 1 if you have the `ldap_url_parse' function. */
/* #undef HAVE_LDAP_URL_PARSE */
/* Define to 1 if you have the <libgen.h> header file. */
#define HAVE_LIBGEN_H 1
/* Define to 1 if you have the `idn' library (-lidn). */
/* #undef HAVE_LIBIDN */
/* Define to 1 if you have the `resolv' library (-lresolv). */
/* #undef HAVE_LIBRESOLV */
/* Define to 1 if you have the `resolve' library (-lresolve). */
/* #undef HAVE_LIBRESOLVE */
/* Define to 1 if you have the `socket' library (-lsocket). */
/* #undef HAVE_LIBSOCKET */
/* Define to 1 if you have the `ssh2' library (-lssh2). */
/* #undef HAVE_LIBSSH2 */
/* Define to 1 if you have the <libssh2.h> header file. */
/* #undef HAVE_LIBSSH2_H */
/* Define to 1 if you have the `ssl' library (-lssl). */
/* #undef HAVE_LIBSSL */
/* if zlib is available */
/* #undef HAVE_LIBZ */
/* Define to 1 if you have the <limits.h> header file. */
#define HAVE_LIMITS_H 1
/* if your compiler supports LL */
#define HAVE_LL 1
/* Define to 1 if you have the <locale.h> header file. */
#define HAVE_LOCALE_H 1
/* Define to 1 if you have a working localtime_r function. */
#define HAVE_LOCALTIME_R 1
/* Define to 1 if the compiler supports the 'long long' data type. */
#define HAVE_LONGLONG 1
/* Define to 1 if you have the malloc.h header file. */
/* #undef HAVE_MALLOC_H */
/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1
/* Define to 1 if you have the MSG_NOSIGNAL flag. */
/* #undef HAVE_MSG_NOSIGNAL */
/* Define to 1 if you have the <netdb.h> header file. */
#define HAVE_NETDB_H 1
/* Define to 1 if you have the <netinet/in.h> header file. */
#define HAVE_NETINET_IN_H 1
/* Define to 1 if you have the <netinet/tcp.h> header file. */
#define HAVE_NETINET_TCP_H 1
/* Define to 1 if you have the <net/if.h> header file. */
#define HAVE_NET_IF_H 1
/* Define to 1 if NI_WITHSCOPEID exists and works. */
/* #undef HAVE_NI_WITHSCOPEID */
/* if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE
*/
/* #undef HAVE_OLD_GSSMIT */
/* Define to 1 if you have the <openssl/crypto.h> header file. */
/* #undef HAVE_OPENSSL_CRYPTO_H */
/* Define to 1 if you have the <openssl/engine.h> header file. */
/* #undef HAVE_OPENSSL_ENGINE_H */
/* Define to 1 if you have the <openssl/err.h> header file. */
/* #undef HAVE_OPENSSL_ERR_H */
/* Define to 1 if you have the <openssl/pem.h> header file. */
/* #undef HAVE_OPENSSL_PEM_H */
/* Define to 1 if you have the <openssl/pkcs12.h> header file. */
/* #undef HAVE_OPENSSL_PKCS12_H */
/* Define to 1 if you have the <openssl/rsa.h> header file. */
/* #undef HAVE_OPENSSL_RSA_H */
/* Define to 1 if you have the <openssl/ssl.h> header file. */
/* #undef HAVE_OPENSSL_SSL_H */
/* Define to 1 if you have the <openssl/x509.h> header file. */
/* #undef HAVE_OPENSSL_X509_H */
/* use O_NONBLOCK for non-blocking sockets */
#define HAVE_O_NONBLOCK 1
/* Define to 1 if you have the <pem.h> header file. */
/* #undef HAVE_PEM_H */
/* Define to 1 if you have the `perror' function. */
#define HAVE_PERROR 1
/* Define to 1 if you have the `pipe' function. */
#define HAVE_PIPE 1
/* if you have the function PK11_CreateGenericObject */
/* #undef HAVE_PK11_CREATEGENERICOBJECT */
/* Define to 1 if you have the `poll' function. */
#define HAVE_POLL 1
/* If you have a fine poll */
/* #undef HAVE_POLL_FINE */
/* Define to 1 if you have the <poll.h> header file. */
#define HAVE_POLL_H 1
/* Define to 1 if you have a working POSIX-style strerror_r function. */
#define HAVE_POSIX_STRERROR_R 1
/* Define to 1 if you have the <pwd.h> header file. */
#define HAVE_PWD_H 1
/* Define to 1 if you have the `RAND_egd' function. */
/* #undef HAVE_RAND_EGD */
/* Define to 1 if you have the `RAND_screen' function. */
/* #undef HAVE_RAND_SCREEN */
/* Define to 1 if you have the `RAND_status' function. */
/* #undef HAVE_RAND_STATUS */
/* Define to 1 if you have the recv function. */
#define HAVE_RECV 1
/* Define to 1 if you have the recvfrom function. */
#define HAVE_RECVFROM 1
/* Define to 1 if you have the <rsa.h> header file. */
/* #undef HAVE_RSA_H */
/* Define to 1 if you have the select function. */
#define HAVE_SELECT 1
/* Define to 1 if you have the send function. */
#define HAVE_SEND 1
/* Define to 1 if you have the <setjmp.h> header file. */
#define HAVE_SETJMP_H 1
/* Define to 1 if you have the `setlocale' function. */
#define HAVE_SETLOCALE 1
/* Define to 1 if you have the `setmode' function. */
#define HAVE_SETMODE 1
/* Define to 1 if you have the `setrlimit' function. */
#define HAVE_SETRLIMIT 1
/* Define to 1 if you have the <sgtty.h> header file. */
#define HAVE_SGTTY_H 1
/* Define to 1 if you have the sigaction function. */
#define HAVE_SIGACTION 1
/* Define to 1 if you have the siginterrupt function. */
#define HAVE_SIGINTERRUPT 1
/* Define to 1 if you have the signal function. */
#define HAVE_SIGNAL 1
/* Define to 1 if you have the <signal.h> header file. */
#define HAVE_SIGNAL_H 1
/* Define to 1 if you have the sigsetjmp function or macro. */
#define HAVE_SIGSETJMP 1
/* Define to 1 if sig_atomic_t is an available typedef. */
#define HAVE_SIG_ATOMIC_T 1
/* Define to 1 if sig_atomic_t is already defined as volatile. */
/* #undef HAVE_SIG_ATOMIC_T_VOLATILE */
/* Define to 1 if you have the `socket' function. */
#define HAVE_SOCKET 1
/* use SO_NONBLOCK for non-blocking sockets */
/* #undef HAVE_SO_NONBLOCK */
/* Define this if you have the SPNEGO library fbopenssl */
/* #undef HAVE_SPNEGO */
/* Define to 1 if you have the `SSL_get_shutdown' function. */
/* #undef HAVE_SSL_GET_SHUTDOWN */
/* Define to 1 if you have the <ssl.h> header file. */
/* #undef HAVE_SSL_H */
/* Define to 1 if you have the <stdbool.h> header file. */
#define HAVE_STDBOOL_H 1
/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1
/* Define to 1 if you have the <stdio.h> header file. */
#define HAVE_STDIO_H 1
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
/* Define to 1 if you have the strcasecmp function. */
#define HAVE_STRCASECMP 1
/* Define to 1 if you have the strcasestr function. */
#define HAVE_STRCASESTR 1
/* Define to 1 if you have the strcmpi function. */
/* #undef HAVE_STRCMPI */
/* Define to 1 if you have the strdup function. */
#define HAVE_STRDUP 1
/* Define to 1 if you have the strerror_r function. */
#define HAVE_STRERROR_R 1
/* Define to 1 if you have the stricmp function. */
/* #undef HAVE_STRICMP */
/* Define to 1 if you have the <strings.h> header file. */
#define HAVE_STRINGS_H 1
/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1
/* Define to 1 if you have the strlcat function. */
#define HAVE_STRLCAT 1
/* Define to 1 if you have the `strlcpy' function. */
/* #undef HAVE_STRLCPY */
/* Define to 1 if you have the strncasecmp function. */
#define HAVE_STRNCASECMP 1
/* Define to 1 if you have the strncmpi function. */
/* #undef HAVE_STRNCMPI */
/* Define to 1 if you have the strnicmp function. */
/* #undef HAVE_STRNICMP */
/* Define to 1 if you have the strstr function. */
#define HAVE_STRSTR 1
/* Define to 1 if you have the strtok_r function. */
#define HAVE_STRTOK_R 1
/* Define to 1 if you have the strtoll function. */
#define HAVE_STRTOLL 1
/* if struct sockaddr_storage is defined */
#define HAVE_STRUCT_SOCKADDR_STORAGE 1
/* Define to 1 if you have the timeval struct. */
#define HAVE_STRUCT_TIMEVAL 1
/* Define to 1 if you have the <sys/filio.h> header file. */
#define HAVE_SYS_FILIO_H 1
/* Define to 1 if you have the <sys/ioctl.h> header file. */
#define HAVE_SYS_IOCTL_H 1
/* Define to 1 if you have the <sys/param.h> header file. */
#define HAVE_SYS_PARAM_H 1
/* Define to 1 if you have the <sys/poll.h> header file. */
#define HAVE_SYS_POLL_H 1
/* Define to 1 if you have the <sys/resource.h> header file. */
#define HAVE_SYS_RESOURCE_H 1
/* Define to 1 if you have the <sys/select.h> header file. */
#define HAVE_SYS_SELECT_H 1
/* Define to 1 if you have the <sys/socket.h> header file. */
#define HAVE_SYS_SOCKET_H 1
/* Define to 1 if you have the <sys/sockio.h> header file. */
#define HAVE_SYS_SOCKIO_H 1
/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1
/* Define to 1 if you have the <sys/time.h> header file. */
#define HAVE_SYS_TIME_H 1
/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1
/* Define to 1 if you have the <sys/uio.h> header file. */
#define HAVE_SYS_UIO_H 1
/* Define to 1 if you have the <sys/un.h> header file. */
#define HAVE_SYS_UN_H 1
/* Define to 1 if you have the <sys/utime.h> header file. */
/* #undef HAVE_SYS_UTIME_H */
/* Define to 1 if you have the <termios.h> header file. */
#define HAVE_TERMIOS_H 1
/* Define to 1 if you have the <termio.h> header file. */
/* #undef HAVE_TERMIO_H */
/* Define to 1 if you have the <time.h> header file. */
#define HAVE_TIME_H 1
/* Define to 1 if you have the <tld.h> header file. */
/* #undef HAVE_TLD_H */
/* Define to 1 if you have the `tld_strerror' function. */
/* #undef HAVE_TLD_STRERROR */
/* Define to 1 if you have the `uname' function. */
#define HAVE_UNAME 1
/* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1
/* Define to 1 if you have the `utime' function. */
#define HAVE_UTIME 1
/* Define to 1 if you have the <utime.h> header file. */
#define HAVE_UTIME_H 1
/* Define to 1 if compiler supports C99 variadic macro style. */
#define HAVE_VARIADIC_MACROS_C99 1
/* Define to 1 if compiler supports old gcc variadic macro style. */
#define HAVE_VARIADIC_MACROS_GCC 1
/* Define to 1 if you have the winber.h header file. */
/* #undef HAVE_WINBER_H */
/* Define to 1 if you have the windows.h header file. */
/* #undef HAVE_WINDOWS_H */
/* Define to 1 if you have the winldap.h header file. */
/* #undef HAVE_WINLDAP_H */
/* Define to 1 if you have the winsock2.h header file. */
/* #undef HAVE_WINSOCK2_H */
/* Define to 1 if you have the winsock.h header file. */
/* #undef HAVE_WINSOCK_H */
/* Define this symbol if your OS supports changing the contents of argv */
#define HAVE_WRITABLE_ARGV 1
/* Define to 1 if you have the writev function. */
#define HAVE_WRITEV 1
/* Define to 1 if you have the ws2tcpip.h header file. */
/* #undef HAVE_WS2TCPIP_H */
/* Define to 1 if you have the <x509.h> header file. */
/* #undef HAVE_X509_H */
/* if you have the zlib.h header file */
/* #undef HAVE_ZLIB_H */
/* Define to 1 if you are building a native Windows target. */
/* #undef NATIVE_WINDOWS */
/* If you lack a fine basename() prototype */
/* #undef NEED_BASENAME_PROTO */
/* Define to 1 if you need the lber.h header file even with ldap.h */
/* #undef NEED_LBER_H */
/* Define to 1 if you need the malloc.h header file even with stdlib.h */
/* #undef NEED_MALLOC_H */
/* Define to 1 if _REENTRANT preprocessor symbol must be defined. */
/* #undef NEED_REENTRANT */
/* cpu-machine-OS */
#define OS "i386-apple-darwin13.0.0"
/* Name of package */
#define PACKAGE "curl"
/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT "a suitable curl mailing list => http://curl.haxx.se/mail/"
/* Define to the full name of this package. */
#define PACKAGE_NAME "curl"
/* Define to the full name and version of this package. */
#define PACKAGE_STRING "curl -"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "curl"
/* Define to the version of this package. */
#define PACKAGE_VERSION "-"
/* a suitable file to read random data from */
/* #undef RANDOM_FILE */
/* Define to the type of arg 1 for recvfrom. */
#define RECVFROM_TYPE_ARG1 int
/* Define to the type pointed by arg 2 for recvfrom. */
#define RECVFROM_TYPE_ARG2 void
/* Define to 1 if the type pointed by arg 2 for recvfrom is void. */
#define RECVFROM_TYPE_ARG2_IS_VOID 1
/* Define to the type of arg 3 for recvfrom. */
#define RECVFROM_TYPE_ARG3 size_t
/* Define to the type of arg 4 for recvfrom. */
#define RECVFROM_TYPE_ARG4 int
/* Define to the type pointed by arg 5 for recvfrom. */
#define RECVFROM_TYPE_ARG5 struct sockaddr
/* Define to 1 if the type pointed by arg 5 for recvfrom is void. */
/* #undef RECVFROM_TYPE_ARG5_IS_VOID */
/* Define to the type pointed by arg 6 for recvfrom. */
#define RECVFROM_TYPE_ARG6 socklen_t
/* Define to 1 if the type pointed by arg 6 for recvfrom is void. */
/* #undef RECVFROM_TYPE_ARG6_IS_VOID */
/* Define to the function return type for recvfrom. */
#define RECVFROM_TYPE_RETV ssize_t
/* Define to the type of arg 1 for recv. */
#define RECV_TYPE_ARG1 int
/* Define to the type of arg 2 for recv. */
#define RECV_TYPE_ARG2 void *
/* Define to the type of arg 3 for recv. */
#define RECV_TYPE_ARG3 size_t
/* Define to the type of arg 4 for recv. */
#define RECV_TYPE_ARG4 int
/* Define to the function return type for recv. */
#define RECV_TYPE_RETV ssize_t
/* Define as the return type of signal handlers (`int' or `void'). */
#define RETSIGTYPE void
/* Define to the type qualifier of arg 5 for select. */
#define SELECT_QUAL_ARG5
/* Define to the type of arg 1 for select. */
#define SELECT_TYPE_ARG1 int
/* Define to the type of args 2, 3 and 4 for select. */
#define SELECT_TYPE_ARG234 fd_set *
/* Define to the type of arg 5 for select. */
#define SELECT_TYPE_ARG5 struct timeval *
/* Define to the function return type for select. */
#define SELECT_TYPE_RETV int
/* Define to the type qualifier of arg 2 for send. */
#define SEND_QUAL_ARG2 const
/* Define to the type of arg 1 for send. */
#define SEND_TYPE_ARG1 int
/* Define to the type of arg 2 for send. */
#define SEND_TYPE_ARG2 void *
/* Define to the type of arg 3 for send. */
#define SEND_TYPE_ARG3 size_t
/* Define to the type of arg 4 for send. */
#define SEND_TYPE_ARG4 int
/* Define to the function return type for send. */
#define SEND_TYPE_RETV ssize_t
/* The size of `int', as computed by sizeof. */
#define SIZEOF_INT 4
/* The size of `long', as computed by sizeof. */
#define SIZEOF_LONG 4
/* The size of `off_t', as computed by sizeof. */
#define SIZEOF_OFF_T 8
/* The size of `size_t', as computed by sizeof. */
#define SIZEOF_SIZE_T 4
/* The size of `time_t', as computed by sizeof. */
#define SIZEOF_TIME_T 4
/* The size of `void*', as computed by sizeof. */
#define SIZEOF_VOIDP 4
/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1
/* Define to the type of arg 3 for strerror_r. */
#define STRERROR_R_TYPE_ARG3 size_t
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
#define TIME_WITH_SYS_TIME 1
/* Define if you want to enable c-ares support */
/* #undef USE_ARES */
/* if GnuTLS is enabled */
/* #undef USE_GNUTLS */
/* if libSSH2 is in use */
/* #undef USE_LIBSSH2 */
/* If you want to build curl with the built-in manual */
#define USE_MANUAL 1
/* if NSS is enabled */
/* #undef USE_NSS */
/* if OpenSSL is in use */
/* #undef USE_OPENSSL */
/* if SSL is enabled */
/* #undef USE_SSLEAY */
/* Define to 1 if you are building a Windows target without large file
support. */
/* #undef USE_WIN32_LARGE_FILES */
/* to enable SSPI support */
/* #undef USE_WINDOWS_SSPI */
/* Define to 1 if using yaSSL in OpenSSL compatibility mode. */
/* #undef USE_YASSLEMUL */
/* Version number of package */
#define VERSION "7.19.2"
/* Define to avoid automatic inclusion of winsock.h */
/* #undef WIN32_LEAN_AND_MEAN */
/* Define to 1 if OS is AIX. */
#ifndef _ALL_SOURCE
/* # undef _ALL_SOURCE */
#endif
/* Number of bits in a file offset, on hosts where this is settable. */
/* #undef _FILE_OFFSET_BITS */
/* Define for large files, on AIX-style hosts. */
/* #undef _LARGE_FILES */
/* define this if you need it to compile thread-safe code */
/* #undef _THREAD_SAFE */
/* Define to empty if `const' does not conform to ANSI C. */
/* #undef const */
/* Type to use in place of in_addr_t when system does not provide it. */
/* #undef in_addr_t */
/* 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. */
#ifndef __cplusplus
/* #undef inline */
#endif
/* Define to `unsigned int' if <sys/types.h> does not define. */
/* #undef size_t */
/* Type to use in place of socklen_t when system does not provide it. */
/* #undef socklen_t */
/* the signed version of size_t */
/* #undef ssize_t */

View File

@ -48,6 +48,12 @@
#endif
#endif
#ifdef __linux__
# include "config-sm-linux.h"
#elif defined(__APPLE__)
# include "config-sm-mac.h"
#endif
#if defined(macintosh) && defined(__MRC__)
# include "config-mac.h"
#endif

View File

@ -31,6 +31,8 @@
#ifndef HAVE_STRLCAT
#define strlcat(x,y,z) Curl_strlcat(x,y,z)
#endif
#if !defined(BUILTIN_STRLCAT)
size_t strlcat(char *dst, const char *src, size_t siz);
#endif
#endif

View File

@ -78,11 +78,11 @@ void CurlExt::SDK_OnUnload()
const char *CurlExt::GetExtensionVerString()
{
return SM_VERSION_STRING;
return SOURCEMOD_VERSION;
}
const char *CurlExt::GetExtensionDateString()
{
return SM_BUILD_TIMESTAMP;
return SOURCEMOD_BUILD_TIME;
}

View File

@ -1,16 +1,15 @@
# vim: set ts=2 sw=2 tw=99 noet ft=python:
compiler = SM.DefaultExtCompiler('extensions/geoip')
# vim: set sts=2 ts=8 sw=2 tw=99 et ft=python:
import os
extension = AMBuild.AddJob('geoip.ext')
binary = Cpp.LibraryBuilder('geoip.ext', AMBuild, extension, compiler)
binary.AddSourceFiles('extensions/geoip', [
'extension.cpp',
'GeoIP.c',
'sdk/smsdk_ext.cpp'
])
if AMBuild.target['platform'] == 'windows':
binary['POSTLINKFLAGS'].append('wsock32.lib')
SM.AutoVersion('extensions/geoip', binary)
SM.ExtractDebugInfo(extension, binary)
binary.SendToJob()
binary = SM.ExtLibrary(builder, 'geoip.ext')
if builder.target_platform is 'windows':
binary.compiler.postlink += ['wsock32.lib']
binary.sources += [
'extension.cpp',
'GeoIP.c',
'sdk/smsdk_ext.cpp'
]
SM.extensions += [builder.Add(binary)]

View File

@ -70,12 +70,12 @@ void GeoIP_Extension::SDK_OnUnload()
const char *GeoIP_Extension::GetExtensionVerString()
{
return SM_VERSION_STRING;
return SOURCEMOD_VERSION;
}
const char *GeoIP_Extension::GetExtensionDateString()
{
return SM_BUILD_TIMESTAMP;
return SOURCEMOD_BUILD_TIME;
}
/*******************************

View File

@ -1,39 +1,35 @@
# vim: set ts=2 sw=2 tw=99 noet ft=python:
# vim: set sts=2 ts=8 sw=2 tw=99 et ft=python:
import os
compiler = SM.DefaultExtCompiler('extensions/mysql')
compiler['CXXINCLUDES'].append(os.path.join(AMBuild.cache['MYSQL5'], 'include'))
compiler['CXXINCLUDES'].append(os.path.join(SM.mmsPath, 'core', 'sourcehook'))
if SM.mysql_root:
binary = SM.ExtLibrary(builder, 'dbi.mysql.ext')
binary.compiler.cxxincludes += [
os.path.join(SM.mysql_root, 'include'),
os.path.join(SM.mms_root, 'core', 'sourcehook')
]
extension = AMBuild.AddJob('dbi.mysql.ext')
binary = Cpp.LibraryBuilder('dbi.mysql.ext', AMBuild, extension, compiler)
if builder.target_platform is 'linux' or builder.target_platform is 'mac':
binary.compiler.postlink += [
os.path.join(SM.mysql_root, 'lib', 'libmysqlclient_r.a'),
'-lz',
'-lpthread',
'-lm'
]
elif builder.target_platform is 'windows':
binary.compiler.postlink += [
os.path.join(SM.mysql_root, 'lib', 'opt', 'mysqlclient.lib'),
os.path.join(SM.mysql_root, 'lib', 'opt', 'zlib.lib'),
'wsock32.lib'
]
if AMBuild.target['platform'] == 'linux' or AMBuild.target['platform'] == 'darwin':
lib = os.path.join(AMBuild.cache['MYSQL5'], 'lib', 'libmysqlclient_r.a')
link = [lib,
'-lz',
'-lpthread',
'-lm']
binary.RelinkIfNewer(lib)
binary['POSTLINKFLAGS'].extend(link)
elif AMBuild.target['platform'] == 'windows':
mylib = os.path.join(AMBuild.cache['MYSQL5'], 'lib', 'opt', 'mysqlclient.lib')
zlib = os.path.join(AMBuild.cache['MYSQL5'], 'lib', 'opt', 'zlib.lib')
binary.RelinkIfNewer(mylib)
binary.RelinkIfNewer(zlib)
binary['POSTLINKFLAGS'].extend([mylib, zlib, 'wsock32.lib'])
binary.AddSourceFiles('extensions/mysql', [
'sdk/smsdk_ext.cpp',
'mysql/MyBasicResults.cpp',
'mysql/MyBoundResults.cpp',
'mysql/MyDatabase.cpp',
'mysql/MyDriver.cpp',
'mysql/MyStatement.cpp',
'extension.cpp'
])
SM.AutoVersion('extensions/mysql', binary)
SM.ExtractDebugInfo(extension, binary)
binary.SendToJob()
binary.sources += [
'sdk/smsdk_ext.cpp',
'mysql/MyBasicResults.cpp',
'mysql/MyBoundResults.cpp',
'mysql/MyDatabase.cpp',
'mysql/MyDriver.cpp',
'mysql/MyStatement.cpp',
'extension.cpp'
]
SM.extensions += [builder.Add(binary)]

View File

@ -62,11 +62,11 @@ void DBI_MySQL::SDK_OnUnload()
const char *DBI_MySQL::GetExtensionVerString()
{
return SM_VERSION_STRING;
return SOURCEMOD_VERSION;
}
const char *DBI_MySQL::GetExtensionDateString()
{
return SM_BUILD_TIMESTAMP;
return SOURCEMOD_BUILD_TIME;
}

View File

@ -1,28 +1,24 @@
# vim: set ts=2 sw=2 tw=99 noet ft=python:
# vim: set sts=2 ts=8 sw=2 tw=99 et ft=python:
import os
compiler = SM.DefaultExtCompiler('extensions/regex')
compiler['CXXINCLUDES'].append(os.path.join(SM.mmsPath, 'core', 'sourcehook'))
binary = SM.ExtLibrary(builder, 'regex.ext')
binary.compiler.cxxincludes += [
os.path.join(SM.mms_root, 'core', 'sourcehook'),
]
extension = AMBuild.AddJob('regex.ext')
binary = Cpp.LibraryBuilder('regex.ext', AMBuild, extension, compiler)
if builder.target_platform is 'linux':
path = os.path.join(builder.sourcePath, 'extensions', 'regex', 'lib_linux', 'libpcre.a')
elif builder.target_platform is 'windows':
path = os.path.join(builder.sourcePath, 'extensions', 'regex', 'lib_win', 'pcre.lib')
elif builder.target_platform is 'mac':
path = os.path.join(builder.sourcePath, 'extensions', 'regex', 'lib_darwin', 'libpcre.a')
binary.compiler.postlink += [binary.Dep(path)]
if AMBuild.target['platform'] == 'linux':
path = os.path.join(AMBuild.sourceFolder, 'extensions', 'regex', 'lib_linux', 'libpcre.a')
elif AMBuild.target['platform'] == 'windows':
path = os.path.join(AMBuild.sourceFolder, 'extensions', 'regex', 'lib_win', 'pcre.lib')
elif AMBuild.target['platform'] == 'darwin':
path = os.path.join(AMBuild.sourceFolder, 'extensions', 'regex', 'lib_darwin', 'libpcre.a')
binary.sources += [
'extension.cpp',
'CRegEx.cpp',
'sdk/smsdk_ext.cpp',
]
binary.RelinkIfNewer(path)
binary['POSTLINKFLAGS'].append(path)
binary.AddSourceFiles('extensions/regex', [
'extension.cpp',
'CRegEx.cpp',
'sdk/smsdk_ext.cpp',
])
SM.AutoVersion('extensions/regex', binary)
SM.ExtractDebugInfo(extension, binary)
binary.SendToJob()
SM.extensions += [builder.Add(binary)]

View File

@ -65,12 +65,12 @@ void RegexExtension::SDK_OnUnload()
const char *RegexExtension::GetExtensionVerString()
{
return SM_VERSION_STRING;
return SOURCEMOD_VERSION;
}
const char *RegexExtension::GetExtensionDateString()
{
return SM_BUILD_TIMESTAMP;
return SOURCEMOD_BUILD_TIME;
}
static cell_t CompileRegex(IPluginContext *pCtx, const cell_t *params)

View File

@ -1,31 +1,21 @@
# vim: set ts=2 sw=2 tw=99 noet ft=python:
# vim: set sts=2 ts=8 sw=2 tw=99 et ft=python:
import os
for i in SM.sdkInfo:
sdk = SM.sdkInfo[i]
if AMBuild.target['platform'] not in sdk['platform']:
continue
compiler = SM.DefaultHL2Compiler('extensions/sdkhooks', i)
compiler['CXXINCLUDES'].append(os.path.join(AMBuild.cache[sdk['sdk']], 'game', 'shared'))
if compiler.cc.name == 'gcc' or compiler.cc.name == 'clang':
compiler['CFLAGS'].append('-Wno-parentheses')
compiler['CXXFLAGS'].append('-Wno-invalid-offsetof')
name = 'sdkhooks.ext.' + sdk['ext']
extension = AMBuild.AddJob(name)
binary = Cpp.LibraryBuilder(name, AMBuild, extension, compiler)
SM.PreSetupHL2Job(extension, binary, i)
binary.AddSourceFiles('extensions/sdkhooks', [
'extension.cpp',
'natives.cpp',
'takedamageinfohack.cpp',
'util.cpp',
'sdk/smsdk_ext.cpp',
])
SM.PostSetupHL2Job(extension, binary, i)
SM.AutoVersion('extensions/sdkhooks', binary)
SM.ExtractDebugInfo(extension, binary)
binary.SendToJob()
for sdk_name in SM.sdks:
sdk = SM.sdks[sdk_name]
binary = SM.HL2Library(builder, 'sdkhooks.ext.' + sdk.ext, sdk)
binary.compiler.cxxincludes += [
os.path.join(sdk.path, 'game', 'shared')
]
if binary.compiler.cxx.behavior is 'gcc':
binary.compiler.cxxflags += ['-Wno-invalid-offsetof']
binary.sources += [
'extension.cpp',
'natives.cpp',
'takedamageinfohack.cpp',
'util.cpp',
'sdk/smsdk_ext.cpp',
]
SM.extensions += [builder.Add(binary)]

View File

@ -350,12 +350,12 @@ bool SDKHooks::SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlen, bool
const char *SDKHooks::GetExtensionVerString()
{
return SM_VERSION_STRING;
return SOURCEMOD_VERSION;
}
const char *SDKHooks::GetExtensionDateString()
{
return SM_BUILD_TIMESTAMP;
return SOURCEMOD_BUILD_TIME;
}
void SDKHooks::OnPluginLoaded(IPlugin *plugin)

View File

@ -1,53 +1,45 @@
# vim: set ts=2 sw=2 tw=99 noet ft=python:
# vim: set sts=2 ts=8 sw=2 tw=99 et ft=python:
import os
for i in SM.sdkInfo:
sdk = SM.sdkInfo[i]
if AMBuild.target['platform'] not in sdk['platform']:
continue
for sdk_name in SM.sdks:
sdk = SM.sdks[sdk_name]
compiler = SM.DefaultHL2Compiler('extensions/sdktools', i)
compiler['CXXINCLUDES'].append(os.path.join(AMBuild.sourceFolder, 'public', 'jit'))
compiler['CXXINCLUDES'].append(os.path.join(AMBuild.sourceFolder, 'public', 'jit', 'x86'))
binary = SM.HL2Library(builder, 'sdktools.ext.' + sdk.ext, sdk)
binary.compiler.cxxincludes += [
os.path.join(sdk.path, 'game', 'shared'),
os.path.join(builder.sourcePath, 'public', 'jit'),
os.path.join(builder.sourcePath, 'public', 'jit', 'x86'),
]
if compiler.cc.name == 'gcc' or compiler.cc.name == 'clang':
compiler['CFLAGS'].append('-Wno-parentheses')
compiler['CXXFLAGS'].append('-Wno-invalid-offsetof')
if sdk.name != 'ep1':
binary.compiler.defines += ['HOOKING_ENABLED']
if i != 'ep1':
compiler['CDEFINES'].append('HOOKING_ENABLED')
name = 'sdktools.ext.' + sdk['ext']
extension = AMBuild.AddJob(name)
binary = Cpp.LibraryBuilder(name, AMBuild, extension, compiler)
SM.PreSetupHL2Job(extension, binary, i)
binary.AddSourceFiles('extensions/sdktools', [
'extension.cpp',
'inputnatives.cpp',
'output.cpp',
'outputnatives.cpp',
'tempents.cpp',
'tenatives.cpp',
'teamnatives.cpp',
'trnatives.cpp',
'vcaller.cpp',
'vcallbuilder.cpp',
'vdecoder.cpp',
'vglobals.cpp',
'vhelpers.cpp',
'vnatives.cpp',
'voice.cpp',
'vsound.cpp',
'clientnatives.cpp',
'hooks.cpp',
'gamerulesnatives.cpp',
'vstringtable.cpp',
'CDetour/detours.cpp',
'sdk/smsdk_ext.cpp',
'asm/asm.c'
])
SM.PostSetupHL2Job(extension, binary, i)
SM.AutoVersion('extensions/sdktools', binary)
SM.ExtractDebugInfo(extension, binary)
binary.SendToJob()
if binary.compiler.cxx.behavior is 'gcc':
binary.compiler.cxxflags += ['-Wno-invalid-offsetof']
binary.sources += [
'extension.cpp',
'inputnatives.cpp',
'output.cpp',
'outputnatives.cpp',
'tempents.cpp',
'tenatives.cpp',
'teamnatives.cpp',
'trnatives.cpp',
'vcaller.cpp',
'vcallbuilder.cpp',
'vdecoder.cpp',
'vglobals.cpp',
'vhelpers.cpp',
'vnatives.cpp',
'voice.cpp',
'vsound.cpp',
'clientnatives.cpp',
'hooks.cpp',
'gamerulesnatives.cpp',
'vstringtable.cpp',
'CDetour/detours.cpp',
'sdk/smsdk_ext.cpp',
'asm/asm.c'
]
SM.extensions += [builder.Add(binary)]

View File

@ -435,12 +435,12 @@ bool SDKTools::ProcessCommandTarget(cmd_target_info_t *info)
const char *SDKTools::GetExtensionVerString()
{
return SM_VERSION_STRING;
return SOURCEMOD_VERSION;
}
const char *SDKTools::GetExtensionDateString()
{
return SM_BUILD_TIMESTAMP;
return SOURCEMOD_BUILD_TIME;
}
void SDKTools::OnClientPutInServer(int client)

View File

@ -1,22 +1,28 @@
# vim: set ts=2 sw=2 tw=99 noet ft=python:
# vim: set sts=2 ts=8 sw=2 tw=99 et ft=python:
import os
compiler = SM.DefaultExtCompiler('extensions/sqlite')
compiler['CXXINCLUDES'].append(os.path.join(SM.mmsPath, 'core', 'sourcehook'))
binary = SM.ExtLibrary(builder, 'dbi.sqlite.ext')
binary.compiler.cxxincludes += [
os.path.join(SM.mms_root, 'core', 'sourcehook'),
]
compiler['CDEFINES'].extend(['SQLITE_OMIT_LOAD_EXTENSION', 'SQLITE_THREADSAFE'])
if AMBuild.target['platform'] == 'linux':
compiler['POSTLINKFLAGS'].extend(['-ldl', '-lpthread'])
binary.compiler.defines += [
'SQLITE_OMIT_LOAD_EXTENSION',
'SQLITE_THREADSAFE'
]
if builder.target_platform is 'linux':
binary.compiler.postlink += ['-ldl', '-lpthread']
extension = AMBuild.AddJob('dbi.sqlite.ext')
binary = Cpp.LibraryBuilder('dbi.sqlite.ext', AMBuild, extension, compiler)
files = [
'sdk/smsdk_ext.cpp', 'sdk/sm_memtable.cpp', 'extension.cpp',
'driver/SqDatabase.cpp', 'driver/SqDriver.cpp', 'driver/SqQuery.cpp',
'driver/SqResults.cpp', 'sqlite-source/sqlite3.c'
]
binary.AddSourceFiles('extensions/sqlite', files)
SM.AutoVersion('extensions/sqlite', binary)
SM.ExtractDebugInfo(extension, binary)
binary.SendToJob()
binary.sources += [
'sdk/smsdk_ext.cpp',
'sdk/sm_memtable.cpp',
'extension.cpp',
'driver/SqDatabase.cpp',
'driver/SqDriver.cpp',
'driver/SqQuery.cpp',
'driver/SqResults.cpp',
'sqlite-source/sqlite3.c'
]
SM.extensions += [builder.Add(binary)]

View File

@ -74,11 +74,11 @@ size_t UTIL_Format(char *buffer, size_t maxlength, const char *fmt, ...)
const char *SqliteExt::GetExtensionVerString()
{
return SM_VERSION_STRING;
return SOURCEMOD_VERSION;
}
const char *SqliteExt::GetExtensionDateString()
{
return SM_BUILD_TIMESTAMP;
return SOURCEMOD_BUILD_TIME;
}

View File

@ -1,31 +1,22 @@
# vim: set ts=2 sw=2 tw=99 noet ft=python:
# vim: set sts=2 ts=8 sw=2 tw=99 et ft=python:
import os
sdk = SM.sdkInfo['tf2']
compiler = SM.DefaultHL2Compiler('extensions/tf2', 'tf2')
if compiler.cc.name == 'gcc' or compiler.cc.name == 'clang':
compiler['CFLAGS'].append('-Wno-parentheses')
name = 'game.tf2.ext.' + sdk['ext']
extension = AMBuild.AddJob(name)
binary = Cpp.LibraryBuilder(name, AMBuild, extension, compiler)
SM.PreSetupHL2Job(extension, binary, 'tf2')
binary.AddSourceFiles('extensions/tf2', [
'extension.cpp',
'natives.cpp',
'RegNatives.cpp',
'util.cpp',
'criticals.cpp',
'holiday.cpp',
'teleporter.cpp',
'gameplayrules.cpp',
'conditions.cpp',
'CDetour/detours.cpp',
'sdk/smsdk_ext.cpp',
'asm/asm.c'
])
SM.PostSetupHL2Job(extension, binary, 'tf2')
SM.AutoVersion('extensions/tf2', binary)
SM.ExtractDebugInfo(extension, binary)
binary.SendToJob()
if 'tf2' in SM.sdks:
sdk = SM.sdks['tf2']
binary = SM.HL2Library(builder, 'game.tf2.ext.' + sdk.ext, sdk)
binary.sources += [
'extension.cpp',
'natives.cpp',
'RegNatives.cpp',
'util.cpp',
'criticals.cpp',
'holiday.cpp',
'teleporter.cpp',
'gameplayrules.cpp',
'conditions.cpp',
'CDetour/detours.cpp',
'sdk/smsdk_ext.cpp',
'asm/asm.c'
]
SM.extensions += [builder.Add(binary)]

View File

@ -136,12 +136,12 @@ bool TF2Tools::SDK_OnLoad(char *error, size_t maxlength, bool late)
const char *TF2Tools::GetExtensionVerString()
{
return SM_VERSION_STRING;
return SOURCEMOD_VERSION;
}
const char *TF2Tools::GetExtensionDateString()
{
return SM_BUILD_TIMESTAMP;
return SOURCEMOD_BUILD_TIME;
}
bool TF2Tools::SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlen, bool late)

View File

@ -1,20 +1,18 @@
# vim: set ts=2 sw=2 tw=99 noet ft=python:
# vim: set sts=2 ts=8 sw=2 tw=99 et ft=python:
import os
compiler = SM.DefaultExtCompiler('extensions/topmenus')
compiler['CXXINCLUDES'].append(os.path.join(SM.mmsPath, 'core', 'sourcehook'))
binary = SM.ExtLibrary(builder, 'topmenus.ext')
binary.compiler.cxxincludes += [
os.path.join(SM.mms_root, 'core', 'sourcehook'),
]
extension = AMBuild.AddJob('topmenus.ext')
binary = Cpp.LibraryBuilder('topmenus.ext', AMBuild, extension, compiler)
binary.AddSourceFiles('extensions/topmenus', [
'extension.cpp',
'smn_topmenus.cpp',
'TopMenu.cpp',
'TopMenuManager.cpp',
'sdk/smsdk_ext.cpp',
'sdk/sm_memtable.cpp'
])
SM.AutoVersion('extensions/topmenus', binary)
SM.ExtractDebugInfo(extension, binary)
binary.SendToJob()
binary.sources += [
'extension.cpp',
'smn_topmenus.cpp',
'TopMenu.cpp',
'TopMenuManager.cpp',
'sdk/smsdk_ext.cpp',
'sdk/sm_memtable.cpp'
]
SM.extensions += [builder.Add(binary)]

View File

@ -67,11 +67,11 @@ void TopMenuExtension::SDK_OnUnload()
const char *TopMenuExtension::GetExtensionVerString()
{
return SM_VERSION_STRING;
return SOURCEMOD_VERSION;
}
const char *TopMenuExtension::GetExtensionDateString()
{
return SM_BUILD_TIMESTAMP;
return SOURCEMOD_BUILD_TIME;
}

View File

@ -1,19 +1,18 @@
# vim: set ts=2 sw=2 tw=99 noet ft=python:
# vim: set sts=2 ts=8 sw=2 tw=99 et ft=python:
import os
compiler = SM.DefaultExtCompiler('extensions/updater')
compiler['CXXINCLUDES'].append(os.path.join(SM.mmsPath, 'core', 'sourcehook'))
binary = SM.ExtLibrary(builder, 'updater.ext')
binary.compiler.cxxincludes += [
os.path.join(SM.mms_root, 'core', 'sourcehook'),
]
extension = AMBuild.AddJob('updater.ext')
binary = Cpp.LibraryBuilder('updater.ext', AMBuild, extension, compiler)
binary.AddSourceFiles('extensions/updater', [
'extension.cpp',
'MemoryDownloader.cpp',
'Updater.cpp',
'md5.cpp',
'sdk/smsdk_ext.cpp'
])
SM.AutoVersion('extensions/updater', binary)
SM.ExtractDebugInfo(extension, binary)
binary.SendToJob()
binary.sources += [
'extension.cpp',
'MemoryDownloader.cpp',
'Updater.cpp',
'md5.cpp',
'sdk/smsdk_ext.cpp'
]
SM.extensions += [builder.Add(binary)]

View File

@ -356,7 +356,7 @@ void UpdateReader::PerformUpdate(const char *url)
xfer = webternet->CreateSession();
xfer->SetFailOnHTTPError(true);
form->AddString("version", SM_VERSION_STRING);
form->AddString("version", SOURCEMOD_VERSION);
unsigned int num_files = 0;
add_folders(form, "gamedata", num_files);

View File

@ -249,11 +249,11 @@ void AddUpdateError(const char *fmt, ...)
const char *SmUpdater::GetExtensionVerString()
{
return SM_VERSION_STRING;
return SOURCEMOD_VERSION;
}
const char *SmUpdater::GetExtensionDateString()
{
return SM_BUILD_TIMESTAMP;
return SOURCEMOD_BUILD_TIME;
}

View File

@ -1,22 +1,22 @@
# vim: set ts=2 sw=2 tw=99 noet ft=python:
# vim: set sts=2 ts=8 sw=2 tw=99 et ft=python:
import os.path
compiler = SM.DefaultCompiler()
compiler['CXXINCLUDES'].append(os.path.join(SM.mmsPath, 'core'))
compiler['CXXINCLUDES'].append(os.path.join(SM.mmsPath, 'core', 'sourcehook'))
if builder.target_platform in ['windows', 'mac']:
name = 'sourcemod_mm'
extra_ldflags = []
elif builder.target_platform is 'linux':
name = 'sourcemod_mm_i486'
extra_ldflags = ['-ldl']
if AMBuild.target['platform'] == 'windows' or AMBuild.target['platform'] == 'darwin':
name = 'sourcemod_mm'
elif AMBuild.target['platform'] == 'linux':
name = 'sourcemod_mm_i486'
compiler['POSTLINKFLAGS'].extend(['-ldl'])
loader = AMBuild.AddJob('loader')
binary = Cpp.LibraryBuilder(name, AMBuild, loader, compiler)
binary.AddSourceFiles('loader', [
'loader.cpp'
])
SM.AutoVersion('loader', binary)
SM.ExtractDebugInfo(loader, binary)
binary.SendToJob()
binary = SM.Library(builder, name)
binary.compiler.cxxincludes += [
os.path.join(SM.mms_root, 'core'),
os.path.join(SM.mms_root, 'sourcehook')
]
binary.compiler.linkflags += extra_ldflags
binary.sources = [
'loader.cpp'
]
nodes = builder.Add(binary)
SM.binaries += [nodes]

View File

@ -1,53 +1,65 @@
# vim: set ts=2 sw=2 tw=99 noet ft=python:
# vim: set ts=8 sts=2 sw=2 tw=99 et ft=python:
import os
import os.path
import ambuild.osutil as osutil
import ambuild.command as command
files = [
'adminhelp.sp',
'antiflood.sp',
'basecomm.sp',
'clientprefs.sp',
'nextmap.sp',
'reservedslots.sp',
'adminmenu.sp',
'basebans.sp',
'basetriggers.sp',
'funcommands.sp',
'nominations.sp',
'rockthevote.sp',
'admin-sql-prefetch.sp',
'basechat.sp',
'basevotes.sp',
'funvotes.sp',
'playercommands.sp',
'sounds.sp',
'admin-sql-threaded.sp',
'basecommands.sp',
'mapchooser.sp',
'randomcycle.sp',
'sql-admin-manager.sp'
]
'adminhelp.sp',
'antiflood.sp',
'basecomm.sp',
'clientprefs.sp',
'nextmap.sp',
'reservedslots.sp',
'adminmenu.sp',
'basebans.sp',
'basetriggers.sp',
'funcommands.sp',
'nominations.sp',
'rockthevote.sp',
'admin-sql-prefetch.sp',
'basechat.sp',
'basevotes.sp',
'funvotes.sp',
'playercommands.sp',
'sounds.sp',
'admin-sql-threaded.sp',
'basecommands.sp',
'mapchooser.sp',
'randomcycle.sp',
'sql-admin-manager.sp'
]
plugins = AMBuild.AddJob('plugins')
spcomp_argv = [
os.path.join(builder.buildPath, SM.spcomp.binary.path),
'SM_GENERATED_BUILD=',
'-i' + os.path.relpath(os.path.join(builder.buildPath, 'includes'),
os.path.join(builder.buildPath, builder.buildFolder)),
'-i' + os.path.relpath(os.path.join(builder.sourcePath, 'plugins', 'include'),
os.path.join(builder.buildPath, builder.buildFolder)),
'-h',
]
spcomp = os.path.join(AMBuild.outputFolder, 'spcomp', 'spcomp')
includes = os.path.relpath(os.path.join(AMBuild.sourceFolder, 'plugins', 'include'),
os.path.join(AMBuild.outputFolder, 'plugins'))
versioninc = os.path.relpath(os.path.join(AMBuild.outputFolder, 'includes'),
os.path.join(AMBuild.outputFolder, 'plugins'))
#This one has to be special
sp = os.path.join(AMBuild.sourceFolder, 'plugins', 'admin-flatfile', 'admin-flatfile.sp')
args = [spcomp, 'SM_GENERATED_BUILD=', '-i' + versioninc, '-i' + includes, sp]
plugins.AddCommand(command.DirectCommand(args))
#Do the normal ones
for file in files:
sp = os.path.join(AMBuild.sourceFolder, 'plugins', file)
args = [spcomp, 'SM_GENERATED_BUILD=', '-i' + versioninc, '-i' + includes, sp]
plugins.AddCommand(command.DirectCommand(args))
def build_plugin(script_path, smx_file):
inputs = [
SM.spcomp.binary,
script_path,
]
outputs = [
smx_file
]
argv = spcomp_argv + [script_path]
cmd_entry, (smx_entry,) = builder.AddCommand(
inputs = inputs,
argv = argv,
outputs = outputs,
dep_type = 'msvc',
weak_inputs = SM.generated_headers
)
SM.smx_files[smx_file] = smx_entry
for script_file in files:
script_path = os.path.join(builder.currentSourcePath, script_file)
smx_file = os.path.splitext(script_file)[0] + '.smx'
build_plugin(script_path, smx_file)
# This one has to be special.
build_plugin(os.path.join(builder.currentSourcePath, 'admin-flatfile', 'admin-flatfile.sp'),
'admin-flatfile.smx')

View File

@ -39,21 +39,34 @@
*/
#if defined SM_GENERATED_BUILD
#include <sourcemod_version_auto.h>
# if defined RC_COMPILE
# undef SM_USE_VERSIONLIB
# endif
# if defined SM_USE_VERSIONLIB
# include <versionlib.h>
# else
# include <sourcemod_version_auto.h>
# endif
#else
#define SM_BUILD_TAG "manual"
#define SM_BUILD_REV "0"
#define SM_BUILD_CSET "0"
#define SM_BUILD_MAJOR "1"
#define SM_BUILD_MINOR "5"
#define SM_BUILD_MINOR "6"
#define SM_BUILD_RELEASE "0"
#define SM_BUILD_UNIQUEID SM_BUILD_REV ":" SM_BUILD_CSET
#define SM_VERSION_STRING SM_BUILD_MAJOR "." SM_BUILD_MINOR "." SM_BUILD_RELEASE "-" SM_BUILD_TAG
#define SM_VERSION_FILE 1,5,0,0
#define SM_VERSION_FILE 1,6,0,0
#endif
#define SM_BUILD_TIMESTAMP __DATE__ " " __TIME__
#if !defined(SM_GENERATED_BUILD) || !defined(SM_USE_VERSIONLIB)
# define SOURCEMOD_VERSION SM_VERSION_STRING
# define SOURCEMOD_BUILD_ID SM_BUILD_UNIQUEID
# define SOURCEMOD_BUILD_TIME SM_BUILD_TIMESTAMP
#endif
#endif /* _INCLUDE_SOURCEMOD_VERSION_INFORMATION_H_ */

View File

@ -1,72 +1,75 @@
# vim: set ts=2 sw=2 tw=99 noet ft=python:
import os
compiler = SM.DefaultCompiler()
compiler['CINCLUDES'].append(os.path.join(AMBuild.sourceFolder, 'public'))
compiler['CINCLUDES'].append(os.path.join(AMBuild.sourceFolder, 'public', 'sourcepawn'))
compiler['CINCLUDES'].append(os.path.join(AMBuild.sourceFolder, 'sourcepawn', 'compiler'))
compiler['CINCLUDES'].append(os.path.join(AMBuild.outputFolder, 'includes'))
if compiler.cc.name == 'gcc' or compiler.cc.name == 'clang':
compiler['CFLAGS'].extend(['-Wno-parentheses', '-Wno-format'])
if AMBuild.target['platform'] == 'linux':
compiler['POSTLINKFLAGS'].extend(['-lgcc', '-lm'])
elif compiler.cc.name == 'msvc':
compiler['POSTLINKFLAGS'].remove('/SUBSYSTEM:WINDOWS')
compiler['POSTLINKFLAGS'].append('/SUBSYSTEM:CONSOLE')
if AMBuild.target['platform'] == 'linux':
compiler['CDEFINES'].extend(['LINUX', 'HAVE_STDINT_H', 'AMX_ANSIONLY', 'ENABLE_BINRELOC', '_GNU_SOURCE'])
elif AMBuild.target['platform'] == 'darwin':
compiler['CDEFINES'].extend(['DARWIN', 'HAVE_STDINT_H', 'AMX_ANSIONLY', 'ENABLE_BINRELOC'])
extension = AMBuild.AddJob('spcomp')
binary = Cpp.ExecutableBuilder('spcomp', AMBuild, extension, compiler)
files = [
'libpawnc.c',
'lstring.c',
'memfile.c',
'pawncc.c',
'sc1.c',
'sc2.c',
'sc3.c',
'sc4.c',
'sc5.c',
'sc6.c',
'sc7.c',
'scexpand.c',
'sci18n.c',
'sclist.c',
'scmemfil.c',
'scstate.c',
'sctracker.c',
'scvars.c',
'sp_file.c',
'zlib/adler32.c',
'zlib/compress.c',
'zlib/crc32.c',
'zlib/deflate.c',
'zlib/gzio.c',
'zlib/infback.c',
'zlib/inffast.c',
'zlib/inflate.c',
'zlib/inftrees.c',
'zlib/trees.c',
'zlib/uncompr.c',
'zlib/zutil.c',
'sp_symhash.c'
]
if AMBuild.target['platform'] == 'linux':
files.append('binreloc.c')
binary.AddSourceFiles('sourcepawn/compiler', files)
if AMBuild.target['platform'] == 'windows':
env = {'RCDEFINES': ['BINARY_NAME="' + binary.binaryFile + '"', 'SM_GENERATED_BUILD']}
binary.AddResourceFile('sourcepawn/compiler/libpawnc.rc', env)
elif AMBuild.target['platform'] == 'darwin' and isinstance(binary, Cpp.LibraryBuilder):
binary.compiler['POSTLINKFLAGS'].extend(['-compatibility_version', '1.0.0'])
binary.compiler['POSTLINKFLAGS'].extend(['-current_version', AMBuild.cache['version']])
SM.ExtractDebugInfo(extension, binary)
binary.SendToJob()
binary = SM.Program(builder, 'spcomp')
compiler = binary.compiler
compiler.includes += [
os.path.join(builder.sourcePath, 'public'),
os.path.join(builder.sourcePath, 'public', 'sourcepawn'),
os.path.join(builder.sourcePath, 'sourcepawn', 'compiler'),
os.path.join(builder.buildPath, 'includes'),
]
if compiler.cc.behavior is 'gcc':
compiler.cflags += ['-Wno-format']
if builder.target_platform is 'linux':
compiler.postlink += ['-lgcc', '-lm']
elif compiler.cc.behavior is 'msvc':
compiler.linkflags.remove('/SUBSYSTEM:WINDOWS')
compiler.linkflags.append('/SUBSYSTEM:CONSOLE')
if builder.target_platform is 'linux':
compiler.defines += [
'LINUX',
'HAVE_STDINT_H',
'AMX_ANSIONLY',
'ENABLE_BINRELOC',
'_GNU_SOURCE'
]
elif builder.target_platform is 'mac':
compiler.defines += [
'DARWIN',
'HAVE_STDINT_H',
'AMX_ANSIONLY',
'ENABLE_BINRELOC',
'HAVE_SAFESTR'
]
binary.sources += [
'libpawnc.c',
'lstring.c',
'memfile.c',
'pawncc.c',
'sc1.c',
'sc2.c',
'sc3.c',
'sc4.c',
'sc5.c',
'sc6.c',
'sc7.c',
'scexpand.c',
'sci18n.c',
'sclist.c',
'scmemfil.c',
'scstate.c',
'sctracker.c',
'scvars.c',
'sp_file.c',
'zlib/adler32.c',
'zlib/compress.c',
'zlib/crc32.c',
'zlib/deflate.c',
'zlib/gzio.c',
'zlib/infback.c',
'zlib/inffast.c',
'zlib/inflate.c',
'zlib/inftrees.c',
'zlib/trees.c',
'zlib/uncompr.c',
'zlib/zutil.c',
'sp_symhash.c'
]
if builder.target_platform is 'linux':
binary.sources.append('binreloc.c')
SM.spcomp = builder.Add(binary)

View File

@ -809,6 +809,7 @@ SC_VDECL int sc_needsemicolon;/* semicolon required to terminate expressions? */
SC_VDECL int sc_dataalign; /* data alignment value */
SC_VDECL int sc_alignnext; /* must frame of the next function be aligned? */
SC_VDECL int pc_docexpr; /* must expression be attached to documentation comment? */
SC_VDECL int sc_showincludes; /* show include files? */
SC_VDECL int curseg; /* 1 if currently parsing CODE, 2 if parsing DATA */
SC_VDECL cell pc_stksize; /* stack size */
SC_VDECL cell pc_amxlimit; /* abstract machine size limit (code + data, or only code) */

View File

@ -267,7 +267,9 @@ int pc_compile(int argc, char *argv[])
tname=NULL;
sname=NULL;
#else
tname=tempnam(NULL,"pawn");
char buffer[] = P_tmpdir "/pawn.XXXXXX";
close(mkstemp(buffer));
tname=buffer;
#endif
ftmp=(FILE*)pc_createsrc(tname);
for (fidx=0; (sname=get_sourcefile(fidx))!=NULL; fidx++) {
@ -851,11 +853,11 @@ static void parseoptions(int argc,char **argv,char *oname,char *ename,char *pnam
int arg,i,isoption;
for (arg=1; arg<argc; arg++) {
#if DIRSEP_CHAR=='/'
isoption= argv[arg][0]=='-';
#else
isoption= argv[arg][0]=='/' || argv[arg][0]=='-';
#endif
#if DIRSEP_CHAR=='/'
isoption= argv[arg][0]=='-';
#else
isoption= argv[arg][0]=='/' || argv[arg][0]=='-';
#endif
if (isoption) {
ptr=&argv[arg][1];
switch (*ptr) {
@ -925,6 +927,9 @@ static void parseoptions(int argc,char **argv,char *oname,char *ename,char *pnam
hwndFinish=(HWND)0;
break;
#endif
case 'h':
sc_showincludes = 1;
break;
case 'i':
strlcpy(str,option_value(ptr),sizeof str); /* set name of include directory */
i=strlen(str);
@ -1233,7 +1238,7 @@ static void setconfig(char *root)
static void setcaption(void)
{
pc_printf("SourcePawn Compiler " SM_VERSION_STRING "\n");
pc_printf("SourcePawn Compiler %s\n", SOURCEMOD_VERSION);
pc_printf("Copyright (c) 1997-2006, ITB CompuPhase, (C)2004-2008 AlliedModders, LLC\n\n");
}
@ -1263,6 +1268,7 @@ static void about(void)
#if defined __WIN32__ || defined _WIN32 || defined _Windows
pc_printf(" -H<hwnd> window handle to send a notification message on finish\n");
#endif
pc_printf(" -h show included file paths\n");
pc_printf(" -i<name> path for include files\n");
pc_printf(" -l create list file (preprocess only)\n");
pc_printf(" -o<name> set base name of (P-code) output file\n");

View File

@ -153,6 +153,9 @@ static char *extensions[] = { ".inc", ".p", ".pawn" };
*ext='\0'; /* restore filename */
return FALSE;
} /* if */
if (sc_showincludes && sc_status==statFIRST) {
fprintf(stdout, "Note: including file: %s\n", name);
}
PUSHSTK_P(inpf);
PUSHSTK_P(inpfname); /* pointer to current file name */
PUSHSTK_P(curlibrary);

View File

@ -91,6 +91,7 @@ SC_VDEFINE char *pc_deprecate=NULL;/* if non-null, mark next declaration as depr
SC_VDEFINE int sc_curstates=0; /* ID of the current state list */
SC_VDEFINE int pc_optimize=sOPTIMIZE_NOMACRO; /* (peephole) optimization level */
SC_VDEFINE int pc_memflags=0; /* special flags for the stack/heap usage */
SC_VDEFINE int sc_showincludes=0; /* show include files */
SC_VDEFINE constvalue sc_automaton_tab = { NULL, "", 0, 0}; /* automaton table */
SC_VDEFINE constvalue sc_state_tab = { NULL, "", 0, 0}; /* state table */

View File

@ -1,45 +1,47 @@
# vim: set ts=2 sw=2 tw=99 noet ft=python:
# vim: set sts=2 ts=8 sw=2 tw=99 et ft=python:
import os
compiler = SM.DefaultCompiler()
base = AMBuild.sourceFolder
compiler['CXXINCLUDES'].append(os.path.join(SM.mmsPath, 'core', 'sourcehook'))
compiler['CXXINCLUDES'].append(os.path.join(base, 'sourcepawn', 'jit'))
compiler['CXXINCLUDES'].append(os.path.join(base, 'sourcepawn', 'jit', 'x86'))
compiler['CXXINCLUDES'].append(os.path.join(base, 'public'))
compiler['CXXINCLUDES'].append(os.path.join(base, 'public', 'sourcepawn'))
compiler['CXXINCLUDES'].append(os.path.join(base, 'public', 'jit'))
compiler['CXXINCLUDES'].append(os.path.join(base, 'public', 'jit', 'x86'))
compiler['CXXINCLUDES'].append(os.path.join(base, 'knight', 'shared'))
binary = SM.Library(builder, 'sourcepawn.jit.x86')
binary.compiler.includes += [
os.path.join(SM.mms_root, 'core', 'sourcehook'),
os.path.join(builder.sourcePath, 'sourcepawn', 'jit'),
os.path.join(builder.sourcePath, 'sourcepawn', 'jit', 'x86'),
os.path.join(builder.sourcePath, 'public'),
os.path.join(builder.sourcePath, 'public', 'sourcepawn'),
os.path.join(builder.sourcePath, 'public', 'amtl'),
os.path.join(builder.sourcePath, 'public', 'jit'),
os.path.join(builder.sourcePath, 'public', 'jit', 'x86'),
os.path.join(builder.sourcePath, 'knight', 'shared'),
]
extension = AMBuild.AddJob('sourcepawn.jit.x86')
binary = Cpp.LibraryBuilder('sourcepawn.jit.x86', AMBuild, extension, compiler)
binary.AddSourceFiles('sourcepawn/jit', [
'BaseRuntime.cpp',
'engine2.cpp',
'dll_exports.cpp',
'jit_function.cpp',
'sp_vm_basecontext.cpp',
'sp_vm_engine.cpp',
'sp_vm_function.cpp',
'x86/jit_x86.cpp',
'x86/opcode_helpers.cpp',
'zlib/adler32.c',
'zlib/compress.c',
'zlib/crc32.c',
'zlib/deflate.c',
'zlib/gzio.c',
'zlib/infback.c',
'zlib/inffast.c',
'zlib/inflate.c',
'zlib/inftrees.c',
'zlib/trees.c',
'zlib/uncompr.c',
'zlib/zutil.c',
'md5/md5.cpp',
'../../knight/shared/KeCodeAllocator.cpp'
])
SM.AutoVersion('sourcepawn/jit', binary)
SM.ExtractDebugInfo(extension, binary)
binary.SendToJob()
if builder.target_platform is 'linux':
binary.compiler.postlink += ['-lpthread', '-lrt']
elif builder.target_platform is 'darwin':
binary.compiler.postlink += ['-lpthread', '-ldl']
binary.sources += [
'BaseRuntime.cpp',
'engine2.cpp',
'dll_exports.cpp',
'jit_function.cpp',
'sp_vm_basecontext.cpp',
'sp_vm_engine.cpp',
'sp_vm_function.cpp',
'x86/jit_x86.cpp',
'x86/opcode_helpers.cpp',
'zlib/adler32.c',
'zlib/compress.c',
'zlib/crc32.c',
'zlib/deflate.c',
'zlib/gzio.c',
'zlib/infback.c',
'zlib/inffast.c',
'zlib/inflate.c',
'zlib/inftrees.c',
'zlib/trees.c',
'zlib/uncompr.c',
'zlib/zutil.c',
'md5/md5.cpp',
'../../knight/shared/KeCodeAllocator.cpp',
]
SM.binaries += [builder.Add(binary)]

View File

@ -1,31 +1,35 @@
# vim: set ts=2 sw=2 tw=99 noet ft=python:
import os
try:
import urllib.request as urllib
except ImportError:
import urllib2 as urllib
from ambuild.command import Command
from ambuild.command import ShellCommand
import os, sys
class IterateDebugInfoCommand(Command):
def run(self, master, job):
pdblog = open(os.path.join(AMBuild.outputFolder, 'pdblog.txt'), 'rt')
for debug_info in pdblog:
debug_info = os.path.join(AMBuild.outputFolder, debug_info.strip())
job.AddCommand(SymbolCommand(debug_info, symbolServer))
pdblog.close()
builder.SetBuildFolder('symbols')
UPLOAD_SCRIPT = os.path.join(builder.sourcePath, 'tools', 'buildbot', 'upload_symbols.py')
cxx_tasks = SM.binaries + SM.extensions + [SM.spcomp]
for cxx_task in cxx_tasks:
if builder.target_platform in ['windows']:
debug_entry = cxx_task.debug
else:
debug_entry = cxx_task.binary
debug_file = os.path.join(builder.buildPath, debug_entry.path)
if builder.target_platform is 'linux':
argv = ['dump_syms', debug_file, os.path.dirname(debug_file)]
elif builder.target_platform is 'mac':
argv = ['dump_syms', debug_file]
elif builder.target_platform is 'windows':
argv = ['dump_syms.exe', debug_file]
base_file = os.path.splitext(os.path.basename(debug_file))[0]
symbol_file = base_file + '.breakpad'
argv = [sys.executable, UPLOAD_SCRIPT, symbol_file] + argv
builder.AddCommand(
inputs = [UPLOAD_SCRIPT, debug_entry],
argv = argv,
outputs = [symbol_file]
)
class SymbolCommand(ShellCommand):
def __init__(self, debugFile, symbolServer):
self.serverResponse = None
self.symbolServer = symbolServer
if AMBuild.target['platform'] == 'linux':
cmdstring = "dump_syms {0} {1}".format(debugFile, os.path.dirname(debugFile))
elif AMBuild.target['platform'] == 'darwin':
cmdstring = "dump_syms {0}".format(debugFile)
elif AMBuild.target['platform'] == 'windows':
cmdstring = "dump_syms.exe {0}".format(debugFile)
ShellCommand.__init__(self, cmdstring)
def run(self, master, job):
ShellCommand.run(self, master, job)
if self.stdout != None and len(self.stdout) > 0:
@ -37,8 +41,3 @@ class SymbolCommand(ShellCommand):
runner.PrintOut(self.stderr)
if self.serverResponse != None and len(self.serverResponse) > 0:
runner.PrintOut(self.serverResponse)
if 'BREAKPAD_SYMBOL_SERVER' in os.environ:
symbolServer = os.environ['BREAKPAD_SYMBOL_SERVER']
job = AMBuild.AddJob('breakpad-symbols')
job.AddCommand(IterateDebugInfoCommand())

View File

@ -1,277 +1,442 @@
# vim: set ts=2 sw=2 tw=99 noet ft=python:
# vim: set ts=8 sts=2 sw=2 tw=99 et ft=python:
import os
import shutil
import ambuild.osutil as osutil
from ambuild.command import Command
job = AMBuild.AddJob('package')
builder.SetBuildFolder('package')
class DestroyPath(Command):
def __init__(self, folder):
Command.__init__(self)
self.folder = folder
def destroy(self, path):
entries = os.listdir(path)
for entry in entries:
newpath = os.path.join(path, entry)
if os.path.isdir(newpath):
self.destroy(newpath)
os.rmdir(newpath)
elif os.path.isfile(newpath):
os.remove(newpath)
def run(self, runner, job):
runner.PrintOut('rm -rf {0}/*'.format(self.folder))
self.destroy(self.folder)
class CreateFolders(Command):
def __init__(self, folders):
Command.__init__(self)
self.folders = folders
def run(self, runner, job):
for folder in self.folders:
path = os.path.join(*folder)
runner.PrintOut('mkdir {0}'.format(path))
os.makedirs(path)
#Shallow folder copy
class CopyFolder(Command):
def __init__(self, fromList, toList, excludes = []):
Command.__init__(self)
self.fromPath = os.path.join(AMBuild.sourceFolder, *fromList)
self.toPath = os.path.join(*toList)
self.excludes = excludes
def run(self, runner, job):
entries = os.listdir(self.fromPath)
for entry in entries:
if entry in self.excludes:
continue
path = os.path.join(self.fromPath, entry)
if not os.path.isfile(path):
continue
runner.PrintOut('copy {0} to {1}'.format(path, self.toPath))
shutil.copy(path, self.toPath)
#Single file copy
class CopyFile(Command):
def __init__(self, fromFile, toPath):
Command.__init__(self)
self.fromFile = fromFile
self.toPath = toPath
def run(self, runner, job):
runner.PrintOut('copy {0} to {1}'.format(self.fromFile, self.toPath))
shutil.copy(self.fromFile, self.toPath)
folders = [['addons', 'sourcemod', 'bin'],
['addons', 'sourcemod', 'plugins', 'disabled'],
['addons', 'sourcemod', 'gamedata'],
['addons', 'sourcemod', 'gamedata', 'core.games'],
['addons', 'sourcemod', 'gamedata', 'sdkhooks.games'],
['addons', 'sourcemod', 'gamedata', 'sdktools.games'],
['addons', 'sourcemod', 'gamedata', 'sm-cstrike.games'],
['addons', 'sourcemod', 'configs', 'geoip'],
['addons', 'sourcemod', 'translations'],
['addons', 'sourcemod', 'logs'],
['addons', 'sourcemod', 'extensions'],
['addons', 'sourcemod', 'data'],
['addons', 'sourcemod', 'scripting', 'include'],
['addons', 'sourcemod', 'scripting', 'admin-flatfile'],
['addons', 'sourcemod', 'scripting', 'adminmenu'],
['addons', 'sourcemod', 'scripting', 'testsuite'],
['cfg', 'sourcemod'],
['addons', 'sourcemod', 'configs', 'sql-init-scripts'],
['addons', 'sourcemod', 'configs', 'sql-init-scripts', 'mysql'],
['addons', 'sourcemod', 'configs', 'sql-init-scripts', 'sqlite'],
['addons', 'sourcemod', 'scripting', 'basecommands'],
['addons', 'sourcemod', 'scripting', 'basecomm'],
['addons', 'sourcemod', 'scripting', 'funvotes'],
['addons', 'sourcemod', 'scripting', 'basevotes'],
['addons', 'sourcemod', 'scripting', 'basebans'],
['addons', 'sourcemod', 'scripting', 'funcommands'],
['addons', 'sourcemod', 'scripting', 'playercommands'],
['addons', 'metamod'],
]
#Setup
job.AddCommand(DestroyPath(os.path.join(AMBuild.outputFolder, 'package')))
job.AddCommand(CreateFolders(folders))
#Copy Folders
job.AddCommand(CopyFolder(['configs'], ['addons', 'sourcemod', 'configs']))
job.AddCommand(CopyFolder(['configs', 'geoip'], ['addons', 'sourcemod', 'configs', 'geoip']))
job.AddCommand(CopyFolder(['configs', 'cfg'], ['cfg', 'sourcemod']))
job.AddCommand(CopyFolder(['configs', 'metamod'], ['addons', 'metamod']))
job.AddCommand(CopyFolder(['configs', 'sql-init-scripts'],
['addons', 'sourcemod', 'configs', 'sql-init-scripts']))
job.AddCommand(CopyFolder(['configs', 'sql-init-scripts', 'mysql'],
['addons', 'sourcemod', 'configs', 'sql-init-scripts', 'mysql']))
job.AddCommand(CopyFolder(['configs', 'sql-init-scripts', 'sqlite'],
['addons', 'sourcemod', 'configs', 'sql-init-scripts', 'sqlite']))
job.AddCommand(CopyFolder(['gamedata'], ['addons', 'sourcemod', 'gamedata']))
job.AddCommand(CopyFolder(['gamedata', 'sdkhooks.games'],
['addons', 'sourcemod', 'gamedata', 'sdkhooks.games']))
job.AddCommand(CopyFolder(['gamedata', 'sdktools.games'],
['addons', 'sourcemod', 'gamedata', 'sdktools.games']))
job.AddCommand(CopyFolder(['gamedata', 'core.games'],
['addons', 'sourcemod', 'gamedata', 'core.games']))
job.AddCommand(CopyFolder(['gamedata', 'sm-cstrike.games'],
['addons', 'sourcemod', 'gamedata', 'sm-cstrike.games']))
job.AddCommand(CopyFolder(['plugins'], ['addons', 'sourcemod', 'scripting'], ['AMBuilder']))
job.AddCommand(CopyFolder(['plugins', 'include'],
['addons', 'sourcemod', 'scripting', 'include']))
job.AddCommand(CopyFolder(['translations'], ['addons', 'sourcemod', 'translations']))
job.AddCommand(CopyFolder(['public', 'licenses'], ['addons', 'sourcemod']))
job.AddCommand(CopyFolder(['plugins', 'admin-flatfile'],
['addons', 'sourcemod', 'scripting', 'admin-flatfile']))
job.AddCommand(CopyFolder(['plugins', 'adminmenu'],
['addons', 'sourcemod', 'scripting', 'adminmenu']))
job.AddCommand(CopyFolder(['plugins', 'testsuite'],
['addons', 'sourcemod', 'scripting', 'testsuite']))
job.AddCommand(CopyFolder(['plugins', 'basecommands'],
['addons', 'sourcemod', 'scripting', 'basecommands']))
job.AddCommand(CopyFolder(['plugins', 'basecomm'],
['addons', 'sourcemod', 'scripting', 'basecomm']))
job.AddCommand(CopyFolder(['plugins', 'funvotes'],
['addons', 'sourcemod', 'scripting', 'funvotes']))
job.AddCommand(CopyFolder(['plugins', 'basevotes'],
['addons', 'sourcemod', 'scripting', 'basevotes']))
job.AddCommand(CopyFolder(['plugins', 'basebans'],
['addons', 'sourcemod', 'scripting', 'basebans']))
job.AddCommand(CopyFolder(['plugins', 'funcommands'],
['addons', 'sourcemod', 'scripting', 'funcommands']))
job.AddCommand(CopyFolder(['plugins', 'playercommands'],
['addons', 'sourcemod', 'scripting', 'playercommands']))
defPlugins = [
'admin-flatfile',
'adminhelp',
'antiflood',
'basecommands',
'reservedslots',
'basetriggers',
'nextmap',
'basechat',
'funcommands',
'basevotes',
'funvotes',
'basebans',
'basecomm',
'adminmenu',
'playercommands',
'clientprefs',
'sounds'
folder_list = [
'addons/sourcemod',
'addons/sourcemod/bin',
'addons/sourcemod/plugins',
'addons/sourcemod/plugins/disabled',
'addons/sourcemod/gamedata',
'addons/sourcemod/gamedata/core.games',
'addons/sourcemod/gamedata/sdkhooks.games',
'addons/sourcemod/gamedata/sdktools.games',
'addons/sourcemod/gamedata/sm-cstrike.games',
'addons/sourcemod/configs',
'addons/sourcemod/configs/geoip',
'addons/sourcemod/translations',
'addons/sourcemod/logs',
'addons/sourcemod/extensions',
'addons/sourcemod/data',
'addons/sourcemod/configs/sql-init-scripts',
'addons/sourcemod/configs/sql-init-scripts/mysql',
'addons/sourcemod/configs/sql-init-scripts/sqlite',
'addons/sourcemod/scripting',
'addons/sourcemod/scripting/include',
'addons/sourcemod/scripting/admin-flatfile',
'addons/sourcemod/scripting/adminmenu',
'addons/sourcemod/scripting/testsuite',
'addons/sourcemod/scripting/basecommands',
'addons/sourcemod/scripting/basecomm',
'addons/sourcemod/scripting/funvotes',
'addons/sourcemod/scripting/basevotes',
'addons/sourcemod/scripting/basebans',
'addons/sourcemod/scripting/funcommands',
'addons/sourcemod/scripting/playercommands',
'addons/metamod',
'cfg/sourcemod',
]
disPlugins = [
'admin-sql-prefetch',
'admin-sql-threaded',
'sql-admin-manager',
'mapchooser',
'randomcycle',
'rockthevote',
'nominations'
]
# Create the distribution folder hierarchy.
folder_map = {}
for folder in folder_list:
norm_folder = os.path.normpath(folder)
folder_map[folder] = builder.AddFolder(norm_folder)
commands = []
for plugin in defPlugins:
commands.append(CopyFile(os.path.join('..', 'plugins', plugin + '.smx'),
os.path.join('addons', 'sourcemod', 'plugins')))
# Copy binaries.
for cxx_task in SM.binaries:
builder.AddCopy(cxx_task.binary, folder_map['addons/sourcemod/bin'])
for cxx_task in SM.extensions:
builder.AddCopy(cxx_task.binary, folder_map['addons/sourcemod/extensions'])
builder.AddCopy(SM.spcomp.binary, folder_map['addons/sourcemod/scripting'])
for plugin in disPlugins:
commands.append(CopyFile(os.path.join('..', 'plugins', plugin + '.smx'),
os.path.join('addons', 'sourcemod', 'plugins', 'disabled')))
job.AddCommandGroup(commands)
# Copy version_auto.inc.
for header in SM.generated_headers:
if 'version_auto.inc' in header.path:
builder.AddCopy(header, folder_map['addons/sourcemod/scripting/include'])
job.AddCommand(CopyFile(os.path.join('..', 'includes', 'version_auto.inc'),
os.path.join('addons', 'sourcemod', 'scripting', 'include')))
# Export PDB files. We write to a file in the build folder which is pretty
# verboten, but it's okay if it's in the root since AMBuild will never try
# to rmdir the root.
full_binary_list = SM.binaries + SM.extensions + [SM.spcomp]
with open(os.path.join(builder.buildPath, 'pdblog.txt'), 'w') as fp:
for task in full_binary_list:
fp.write(task.debug.path + '\n')
bincopies = []
# Copy plugins.
disabled_plugins = set([
'admin-sql-prefetch.smx',
'admin-sql-threaded.smx',
'sql-admin-manager.smx',
'mapchooser.smx',
'randomcycle.smx',
'rockthevote.smx',
'nominations.smx',
])
def AddNormalLibrary(name, dest):
dest = os.path.join('addons', 'sourcemod', dest)
bincopies.append(CopyFile(os.path.join('..', name, name + osutil.SharedLibSuffix()), dest))
# Each platform's version of dump_syms needs the path in a different format.
if AMBuild.target['platform'] == 'linux':
debug_info.append(name + '/' + name + '.so')
elif AMBuild.target['platform'] == 'darwin':
debug_info.append(name + '/' + name + '.dylib.dSYM')
elif AMBuild.target['platform'] == 'windows':
debug_info.append(name + '\\' + name + '.pdb')
for smx_file in SM.smx_files:
smx_entry = SM.smx_files[smx_file]
if smx_file in disabled_plugins:
builder.AddCopy(smx_entry, folder_map['addons/sourcemod/plugins/disabled'])
else:
builder.AddCopy(smx_entry, folder_map['addons/sourcemod/plugins'])
def AddHL2Library(name, dest):
for i in SM.sdkInfo:
sdk = SM.sdkInfo[i]
if AMBuild.target['platform'] not in sdk['platform']:
continue
AddNormalLibrary(name + '.' + sdk['ext'], dest)
debug_info = []
if AMBuild.target['platform'] == 'linux':
bincopies.append(CopyFile(os.path.join('..', 'loader', 'sourcemod_mm_i486.so'),
os.path.join('addons', 'sourcemod', 'bin')))
debug_info.append('loader/sourcemod_mm_i486.so')
elif AMBuild.target['platform'] == 'darwin':
bincopies.append(CopyFile(os.path.join('..', 'loader', 'sourcemod_mm.dylib'),
os.path.join('addons', 'sourcemod', 'bin')))
debug_info.append('loader/sourcemod_mm.dylib.dSYM')
elif AMBuild.target['platform'] == 'windows':
bincopies.append(CopyFile(os.path.join('..', 'loader', 'sourcemod_mm.dll'),
os.path.join('addons', 'sourcemod', 'bin')))
debug_info.append('loader\\sourcemod_mm.pdb')
AddHL2Library('sourcemod', 'bin')
AddNormalLibrary('sourcemod.logic', 'bin')
AddNormalLibrary('sourcepawn.jit.x86', 'bin')
AddNormalLibrary('geoip.ext', 'extensions')
if SM.hasMySql:
AddNormalLibrary('dbi.mysql.ext', 'extensions')
AddNormalLibrary('dbi.sqlite.ext', 'extensions')
if 'css' in SM.sdkInfo:
AddNormalLibrary('game.cstrike.ext.2.css', 'extensions')
if 'csgo' in SM.sdkInfo:
AddNormalLibrary('game.cstrike.ext.2.csgo', 'extensions')
if 'tf2' in SM.sdkInfo:
AddNormalLibrary('game.tf2.ext.2.tf2', 'extensions')
AddNormalLibrary('topmenus.ext', 'extensions')
AddNormalLibrary('regex.ext', 'extensions')
AddNormalLibrary('webternet.ext', 'extensions')
AddNormalLibrary('clientprefs.ext', 'extensions')
AddNormalLibrary('updater.ext', 'extensions')
AddNormalLibrary('bintools.ext', 'extensions')
AddHL2Library('sdkhooks.ext', 'extensions')
AddHL2Library('sdktools.ext', 'extensions')
bincopies.append(CopyFile(os.path.join('..', 'spcomp', 'spcomp' + osutil.ExecutableSuffix()),
os.path.join('addons', 'sourcemod', 'scripting')))
# Each platform's version of dump_syms needs the path in a different format.
if AMBuild.target['platform'] == 'linux':
debug_info.append('spcomp' + '/' + 'spcomp')
elif AMBuild.target['platform'] == 'darwin':
debug_info.append('spcomp' + '/' + 'spcomp' + '.dSYM')
elif AMBuild.target['platform'] == 'windows':
debug_info.append('spcomp' + '\\' + 'spcomp' + '.pdb')
job.AddCommandGroup(bincopies)
if AMBuild.target['platform'] == 'windows':
job.AddCommand(CopyFile(
os.path.join(AMBuild.sourceFolder, 'sourcepawn', 'batchtool', 'compile.exe'),
os.path.join('addons', 'sourcemod', 'scripting')))
pdblog = open(os.path.join(AMBuild.outputFolder, 'pdblog.txt'), 'wt')
for pdb in debug_info:
pdblog.write(pdb + '\n')
pdblog.close()
# Do all straight-up file copies from the source tree.
def CopyFiles(src, dest, files):
if not dest:
dest = src
dest_entry = folder_map[dest]
for source_file in files:
source_path = os.path.join(builder.sourcePath, src, source_file)
builder.AddCopy(source_path, dest_entry)
CopyFiles('configs', 'addons/sourcemod/configs',
[ 'admin_groups.cfg',
'admin_levels.cfg',
'admin_overrides.cfg',
'adminmenu_cfgs.txt',
'adminmenu_custom.txt',
'adminmenu_grouping.txt',
'adminmenu_sorting.txt',
'admins.cfg',
'admins_simple.ini',
'core.cfg',
'databases.cfg',
'languages.cfg',
'maplists.cfg',
]
)
CopyFiles('configs/geoip', 'addons/sourcemod/configs/geoip', ['GeoIP.dat'])
CopyFiles('configs/cfg', 'cfg/sourcemod',
[ 'sm_warmode_off.cfg',
'sm_warmode_on.cfg',
'sourcemod.cfg',
]
)
CopyFiles('configs/metamod', 'addons/metamod', ['sourcemod.vdf'])
CopyFiles('configs/sql-init-scripts/mysql', 'addons/sourcemod/configs/sql-init-scripts/mysql',
[ 'clientprefs-mysql.sql',
'create_admins.sql',
'update_admins_r1409.sql',
]
)
CopyFiles('configs/sql-init-scripts/sqlite', 'addons/sourcemod/configs/sql-init-scripts/sqlite',
[ 'admins-sqlite.sq3',
'clientprefs-sqlite.sq3',
'clientprefs-sqlite.sql',
'create_admins.sql',
'update_admins-r1409.sql',
]
)
CopyFiles('gamedata', 'addons/sourcemod/gamedata', ['sm-tf2.games.txt'])
CopyFiles('gamedata/sdkhooks.games', 'addons/sourcemod/gamedata/sdkhooks.games',
[ 'common.games.txt',
'engine.csgo.txt',
'engine.darkm.txt',
'engine.ep2v.txt',
'engine.l4d.txt',
'game.ag2.txt',
'game.alienswarm.txt',
'game.aoc.txt',
'game.cspromod.txt',
'game.cstrike.txt',
'game.dinodday.txt',
'game.empires.txt',
'game.ff.txt',
'game.fof.txt',
'game.garrysmod.txt',
'game.gesource.txt',
'game.hidden.txt',
'game.hl2ctf.txt',
'game.insurgency.txt',
'game.l4d2.txt',
'game.neotokyo.txt',
'game.nmrih.txt',
'game.nucleardawn.txt',
'game.pvkii.txt',
'game.sgtls.txt',
'game.sourceforts.txt',
'game.synergy.txt',
'game.zm.txt',
'game.zpanic.txt',
'master.games.txt',
]
)
CopyFiles('gamedata/sdktools.games', 'addons/sourcemod/gamedata/sdktools.games',
[ 'common.games.txt',
'engine.bgt.txt',
'engine.csgo.txt',
'engine.css.txt',
'engine.darkm.txt',
'engine.ep1.txt',
'engine.ep2.txt',
'engine.ep2valve.txt',
'engine.eye.txt',
'engine.l4d.txt',
'engine.l4d2.txt',
'engine.swarm.txt',
'game.ag2.txt',
'game.alienswarm.txt',
'game.aoc.txt',
'game.bg2.txt',
'game.cspromod.txt',
'game.cstrike.txt',
'game.dinodday.txt',
'game.dod.txt',
'game.dystopia.txt',
'game.empires.txt',
'game.esmod.txt',
'game.fas.txt',
'game.ff.txt',
'game.fof.txt',
'game.garrysmod.txt',
'game.gesource.txt',
'game.hidden.txt',
'game.hl2ctf.txt',
'game.hl2mp.txt',
'game.insurgency.txt',
'game.ios.txt',
'game.left4dead2.txt',
'game.neotokyo.txt',
'game.nmrih.txt',
'game.nucleardawn.txt',
'game.obsidian.txt',
'game.pvkii.txt',
'game.rnlbeta.txt',
'game.ship.txt',
'game.sourceforts.txt',
'game.synergy.txt',
'game.tf.txt',
'game.zm.txt',
'game.zpanic.txt',
'master.games.txt',
]
)
CopyFiles('gamedata/core.games', 'addons/sourcemod/gamedata/core.games',
[ 'blacklist.plugins.txt',
'common.games.txt',
'engine.bgt.txt',
'engine.csgo.txt',
'engine.css.txt',
'engine.darkm.txt',
'engine.ep1.txt',
'engine.ep2.txt',
'engine.ep2valve.txt',
'engine.eye.txt',
'engine.l4d.txt',
'engine.l4d2.txt',
'engine.swarm.txt',
'master.games.txt',
]
)
CopyFiles('gamedata/sm-cstrike.games', 'addons/sourcemod/gamedata/sm-cstrike.games',
[ 'game.csgo.txt',
'game.css.txt',
'master.games.txt',
]
)
CopyFiles('plugins', 'addons/sourcemod/scripting',
[ 'admin-sql-prefetch.sp',
'admin-sql-threaded.sp',
'adminhelp.sp',
'adminmenu.sp',
'antiflood.sp',
'basebans.sp',
'basechat.sp',
'basecomm.sp',
'basecommands.sp',
'basetriggers.sp',
'basevotes.sp',
'clientprefs.sp',
'compile.sh',
'funcommands.sp',
'funvotes.sp',
'mapchooser.sp',
'nextmap.sp',
'nominations.sp',
'playercommands.sp',
'randomcycle.sp',
'reservedslots.sp',
'rockthevote.sp',
'sounds.sp',
'sql-admin-manager.sp',
]
)
CopyFiles('plugins/include', 'addons/sourcemod/scripting/include',
[ 'admin.inc',
'adminmenu.inc',
'adt.inc',
'adt_array.inc',
'adt_stack.inc',
'adt_trie.inc',
'banning.inc',
'basecomm.inc',
'bitbuffer.inc',
'clientprefs.inc',
'clients.inc',
'commandfilters.inc',
'console.inc',
'core.inc',
'cstrike.inc',
'datapack.inc',
'dbi.inc',
'entity.inc',
'entity_prop_stocks.inc',
'events.inc',
'files.inc',
'float.inc',
'functions.inc',
'geoip.inc',
'halflife.inc',
'handles.inc',
'helpers.inc',
'keyvalues.inc',
'lang.inc',
'logging.inc',
'mapchooser.inc',
'menus.inc',
'nextmap.inc',
'profiler.inc',
'protobuf.inc',
'regex.inc',
'sdkhooks.inc',
'sdktools.inc',
'sdktools_client.inc',
'sdktools_engine.inc',
'sdktools_entinput.inc',
'sdktools_entoutput.inc',
'sdktools_functions.inc',
'sdktools_gamerules.inc',
'sdktools_hooks.inc',
'sdktools_sound.inc',
'sdktools_stocks.inc',
'sdktools_stringtables.inc',
'sdktools_tempents.inc',
'sdktools_tempents_stocks.inc',
'sdktools_trace.inc',
'sdktools_voice.inc',
'sorting.inc',
'sourcemod.inc',
'string.inc',
'textparse.inc',
'tf2.inc',
'tf2_stocks.inc',
'timers.inc',
'topmenus.inc',
'usermessages.inc',
'vector.inc',
'version.inc',
]
)
CopyFiles('translations', 'addons/sourcemod/translations',
[ 'adminhelp.phrases.txt',
'adminmenu.phrases.txt',
'antiflood.phrases.txt',
'basebans.phrases.txt',
'basecomm.phrases.txt',
'basetriggers.phrases.txt',
'basevotes.phrases.txt',
'clientprefs.phrases.txt',
'common.phrases.txt',
'core.phrases.txt',
'funcommands.phrases.txt',
'funvotes.phrases.txt',
'mapchooser.phrases.txt',
'nextmap.phrases.txt',
'nominations.phrases.txt',
'playercommands.phrases.txt',
'plugin.basecommands.txt',
'reservedslots.phrases.txt',
'rockthevote.phrases.txt',
'sounds.phrases.txt',
'sqladmins.phrases.txt',
]
)
CopyFiles('public/licenses', 'addons/sourcemod',
[ 'GPLv2.txt',
'GPLv3.txt',
'LICENSE.txt'
]
)
CopyFiles('plugins/admin-flatfile', 'addons/sourcemod/scripting/admin-flatfile',
[ 'admin-flatfile.sp',
'admin-groups.sp',
'admin-overrides.sp',
'admin-simple.sp',
'admin-users.sp',
]
)
CopyFiles('plugins/adminmenu', 'addons/sourcemod/scripting/adminmenu', ['dynamicmenu.sp'])
CopyFiles('plugins/testsuite', 'addons/sourcemod/scripting/testsuite',
[ 'benchmark.sp',
'bug4059.sp',
'callfunctest.sp',
'capstest.sp',
'clientprefstest.sp',
'cstrike-test.sp',
'entpropelements.sp',
'fakenative1.sp',
'fakenative2.sp',
'filetest.sp',
'fwdtest1.sp',
'fwdtest2.sp',
'gamerules-props.sp',
'goto_test.sp',
'outputtest.sp',
'ptstest.sp',
'sorttest.sp',
'sqltest.sp',
'sqltest.sql',
'stacktest.sp',
'structtest.sp',
'tf2-test.sp',
]
)
CopyFiles('plugins/basecommands', 'addons/sourcemod/scripting/basecommands',
[ 'cancelvote.sp',
'execcfg.sp',
'kick.sp',
'map.sp',
'reloadadmins.sp',
'who.sp',
]
)
CopyFiles('plugins/basecomm', 'addons/sourcemod/scripting/basecomm',
[ 'forwards.sp',
'gag.sp',
'natives.sp',
]
)
CopyFiles('plugins/funvotes', 'addons/sourcemod/scripting/funvotes',
[ 'votealltalk.sp',
'voteburn.sp',
'voteff.sp',
'votegravity.sp',
'voteslay.sp',
]
)
CopyFiles('plugins/basevotes', 'addons/sourcemod/scripting/basevotes',
[ 'voteban.sp',
'votekick.sp',
'votemap.sp',
]
)
CopyFiles('plugins/basebans', 'addons/sourcemod/scripting/basebans', ['ban.sp'])
CopyFiles('plugins/funcommands', 'addons/sourcemod/scripting/funcommands',
[ 'beacon.sp',
'blind.sp',
'drug.sp',
'fire.sp',
'gravity.sp',
'ice.sp',
'noclip.sp',
'timebomb.sp',
]
)
CopyFiles('plugins/playercommands', 'addons/sourcemod/scripting/playercommands',
[ 'rename.sp',
'slap.sp',
'slay.sp',
]
)

View File

@ -1,89 +1,34 @@
# vim: set ts=2 sw=2 tw=99 noet ft=python:
import os
import re
import subprocess
from ambuild.cache import Cache
import ambuild.command as command
# vim: set ts=8 sts=2 sw=2 tw=99 et ft=python:
import os, sys
#Quickly try to ascertain the current repository revision
def GetVersion():
args = ['hg', 'parent', '-R', AMBuild.sourceFolder]
p = command.RunDirectCommand(AMBuild, args)
m = re.match('changeset:\s+(\d+):(.+)', p.stdoutText)
if m == None:
raise Exception('Could not determine repository version')
return m.groups()
builder.SetBuildFolder('/')
def PerformReversioning():
rev, cset = GetVersion()
cacheFile = os.path.join(AMBuild.outputFolder, '.ambuild', 'hgcache')
cache = Cache(cacheFile)
if os.path.isfile(cacheFile):
cache.LoadCache()
if cache.HasVariable('cset') and cache['cset'] == cset:
return False
cache.CacheVariable('cset', cset)
includes = builder.AddFolder('includes')
productFile = open(os.path.join(AMBuild.sourceFolder, 'product.version'), 'r')
productContents = productFile.read()
productFile.close()
m = re.match('(\d+)\.(\d+)\.(\d+)-?(.*)', productContents)
if m == None:
raise Exception('Could not detremine product version')
major, minor, release, tag = m.groups()
fullstring = "{0}.{1}.{2}".format(major, minor, release)
if tag != "":
fullstring += "-{0}".format(tag)
if tag == "dev":
fullstring += "+{0}".format(rev)
incFolder = os.path.join(AMBuild.outputFolder, 'includes')
if not os.path.isdir(incFolder):
os.makedirs(incFolder)
incFile = open(os.path.join(incFolder, 'sourcemod_version_auto.h'), 'w')
incFile.write("""
#ifndef _SOURCEMOD_AUTO_VERSION_INFORMATION_H_
#define _SOURCEMOD_AUTO_VERSION_INFORMATION_H_
argv = [
sys.executable,
os.path.join(builder.sourcePath, 'tools', 'buildbot', 'generate_headers.py'),
os.path.join(builder.sourcePath),
os.path.join(builder.buildPath, 'includes'),
]
outputs = [
os.path.join(builder.buildFolder, 'includes', 'sourcemod_version_auto.h'),
os.path.join(builder.buildFolder, 'includes', 'version_auto.inc'),
]
#define SM_BUILD_TAG \"{0}\"
#define SM_BUILD_REV \"{1}\"
#define SM_BUILD_CSET \"{2}\"
#define SM_BUILD_MAJOR \"{3}\"
#define SM_BUILD_MINOR \"{4}\"
#define SM_BUILD_RELEASE \"{5}\"
sources = [
os.path.join(builder.sourcePath, 'product.version'),
#define SM_BUILD_UNIQUEID SM_BUILD_REV \":\" SM_BUILD_CSET
#define SM_VERSION_STRING \"{6}\"
#define SM_VERSION_FILE {7},{8},{9},0
#endif /* _SOURCEMOD_AUTO_VERSION_INFORMATION_H_ */
""".format(tag, rev, cset, major, minor, release, fullstring, major, minor, release))
incFile.close()
incFile = open(os.path.join(incFolder, 'version_auto.inc'), 'w')
incFile.write("""
#if defined _auto_version_included
#endinput
#endif
#define _auto_version_included
#define SOURCEMOD_V_TAG \"{0}\"
#define SOURCEMOD_V_REV {1}
#define SOURCEMOD_V_CSET \"{2}\"
#define SOURCEMOD_V_MAJOR {3}
#define SOURCEMOD_V_MINOR {4}
#define SOURCEMOD_V_RELEASE {5}
#define SOURCEMOD_VERSION \"{6}\"
""".format(tag, rev, cset, major, minor, release, fullstring))
incFile.close()
cache.WriteCache()
PerformReversioning()
# This is a hack, but we need some way to only run this script when HG changes.
os.path.join(builder.sourcePath, '.hg', 'dirstate'),
# The script source is a dependency, of course...
argv[1]
]
cmd_node, output_nodes = builder.AddCommand(
inputs=sources,
argv=argv,
outputs=outputs
)
rvalue = output_nodes

View File

@ -19,51 +19,27 @@ our ($root) = getcwd();
my $reconf = 0;
#Create output folder if it doesn't exist.
if (!(-d 'OUTPUT')) {
$reconf = 1;
} else {
if (-f 'OUTPUT/sentinel') {
my @s = stat('OUTPUT/sentinel');
my $mtime = $s[9];
my @files = ('build/pushbuild.txt', 'build/AMBuildScript', 'build/product.version');
my ($i);
for ($i = 0; $i <= $#files; $i++) {
if (IsNewer($files[$i], $mtime)) {
$reconf = 1;
last;
}
}
} else {
$reconf = 1;
}
}
if ($reconf) {
if (!(-f 'OUTPUT/.ambuild2/graph') || !(-f 'OUTPUT/.ambuild2/vars')) {
rmtree('OUTPUT');
mkdir('OUTPUT') or die("Failed to create output folder: $!\n");
chdir('OUTPUT');
my ($result, $argn);
$argn = $#ARGV + 1;
print "Attempting to reconfigure...\n";
my $conf_args = '--enable-optimize --breakpad-dump';
if ($argn > 0 && $^O !~ /MSWin/) {
$result = `CC=$ARGV[0] CXX=$ARGV[0] python3 ../build/configure.py --enable-optimize`;
$result = `CC=$ARGV[0] CXX=$ARGV[0] python ../build/configure.py $conf_args`;
} else {
if ($^O eq "linux") {
$result = `CC=gcc-4.4 CXX=gcc-4.4 python3 ../build/configure.py --enable-optimize`;
} elsif ($^O eq "darwin") {
$result = `CC=clang CXX=clang python3 ../build/configure.py --enable-optimize`;
if ($^O =~ /MSWin/) {
$result = `C:\\Python27\\Python.exe ..\\build\\configure.py $conf_args`;
} else {
$result = `C:\\Python32\\Python.exe ..\\build\\configure.py --enable-optimize`;
$result = `CC=clang CXX=clang python ../build/configure.py $conf_args`;
}
}
print "$result\n";
if ($? != 0) {
die("Could not configure: $!\n");
}
open(FILE, '>sentinel');
print FILE "this is nothing.\n";
close(FILE);
}
sub IsNewer

View File

@ -0,0 +1,87 @@
# vim: set ts=8 sts=2 sw=2 tw=99 et:
import re
import os, sys
import subprocess
argv = sys.argv[1:]
if len(argv) < 2:
sys.stderr.write('Usage: generate_headers.py <source_path> <output_folder>\n')
sys.exit(1)
SourceFolder = os.path.abspath(os.path.normpath(argv[0]))
OutputFolder = os.path.normpath(argv[1])
def get_hg_version():
argv = ['hg', 'parent', '-R', SourceFolder]
# Python 2.6 doesn't have check_output.
if hasattr(subprocess, 'check_output'):
text = subprocess.check_output(argv)
if str != bytes:
text = str(text, 'utf-8')
else:
p = subprocess.Popen(argv, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, ignored = p.communicate()
rval = p.poll()
if rval:
raise subprocess.CalledProcessError(rval, argv)
text = output.decode('utf8')
m = re.match('changeset:\s+(\d+):(.+)', text)
if m == None:
raise Exception('Could not determine repository version')
return m.groups()
def output_version_headers():
rev, cset = get_hg_version()
with open(os.path.join(SourceFolder, 'product.version')) as fp:
contents = fp.read()
m = re.match('(\d+)\.(\d+)\.(\d+)-?(.*)', contents)
if m == None:
raise Exception('Could not detremine product version')
major, minor, release, tag = m.groups()
fullstring = "{0}.{1}.{2}".format(major, minor, release)
if tag != "":
fullstring += "-{0}".format(tag)
if tag == "dev":
fullstring += "+{0}".format(rev)
with open(os.path.join(OutputFolder, 'sourcemod_version_auto.h'), 'w') as fp:
fp.write("""
#ifndef _SOURCEMOD_AUTO_VERSION_INFORMATION_H_
#define _SOURCEMOD_AUTO_VERSION_INFORMATION_H_
#define SM_BUILD_TAG \"{0}\"
#define SM_BUILD_REV \"{1}\"
#define SM_BUILD_CSET \"{2}\"
#define SM_BUILD_MAJOR \"{3}\"
#define SM_BUILD_MINOR \"{4}\"
#define SM_BUILD_RELEASE \"{5}\"
#define SM_BUILD_UNIQUEID SM_BUILD_REV \":\" SM_BUILD_CSET
#define SM_VERSION_STRING \"{6}\"
#define SM_VERSION_FILE {7},{8},{9},0
#endif /* _SOURCEMOD_AUTO_VERSION_INFORMATION_H_ */
""".format(tag, rev, cset, major, minor, release, fullstring, major, minor, release))
with open(os.path.join(OutputFolder, 'version_auto.inc'), 'w') as fp:
fp.write("""
#if defined _auto_version_included
#endinput
#endif
#define _auto_version_included
#define SOURCEMOD_V_TAG \"{0}\"
#define SOURCEMOD_V_REV {1}
#define SOURCEMOD_V_CSET \"{2}\"
#define SOURCEMOD_V_MAJOR {3}
#define SOURCEMOD_V_MINOR {4}
#define SOURCEMOD_V_RELEASE {5}
#define SOURCEMOD_VERSION \"{6}\"
""".format(tag, rev, cset, major, minor, release, fullstring))
output_version_headers()

View File

@ -10,12 +10,14 @@ require 'helpers.pm';
chdir('../../../OUTPUT');
if ($^O eq "linux" || $^O eq "darwin") {
system("python3 build.py 2>&1");
} else {
system("C:\\Python31\\python.exe build.py 2>&1");
my $argn = $#ARGV + 1;
if ($argn > 0) {
$ENV{CC} = $ARGV[0];
$ENV{CXX} = $ARGV[0];
}
system("ambuild --no-color 2>&1");
if ($? != 0)
{
die "Build failed: $!\n";

View File

@ -0,0 +1,38 @@
# vim: ts=8 sts=2 sw=2 tw=99 et ft=python:
import sys
import subprocess
import os
try:
import urllib.request as urllib
except ImportError:
import urllib2 as urllib
if len(sys.argv) < 3:
sys.stderr.write('Usage: <symbol-file> <dump-syms-cmd> <args...>\n')
sys.exit(1)
SYMBOL_SERVER = os.environ['BREAKPAD_SYMBOL_SERVER']
symbol_file = sys.argv[1]
cmd_argv = sys.argv[2:]
sys.stdout.write(' '.join(cmd_argv))
sys.stdout.write('\n')
p = subprocess.Popen(
args = cmd_argv,
stdout = subprocess.PIPE,
stderr = subprocess.PIPE,
shell = False
)
stdout, stderr = p.communicate()
out = stdout.decode('utf8')
err = stdout.decode('utf8')
with open(symbol_file, 'w') as fp:
fp.write(stdout)
fp.write(stderr)
request = urllib.Request(SYMBOL_SERVER, out)
request.add_header('Content-Type', 'text/plain')
server_response = urllib.urlopen(request).read().decode('utf8')
print(server_response)

15
versionlib/AMBuilder Normal file
View File

@ -0,0 +1,15 @@
# vim: sts=2 ts=8 sw=2 tw=99 et ft=python:
import os
lib = builder.compiler.StaticLibrary('version')
lib.compiler.includes += [
os.path.join(builder.sourcePath, 'public')
]
lib.compiler.defines.remove('SM_USE_VERSIONLIB')
lib.compiler.sourcedeps += SM.generated_headers
lib.sources += [
'versionlib.cpp'
]
task = builder.Add(lib)
rvalue = task.binary

34
versionlib/versionlib.cpp Normal file
View File

@ -0,0 +1,34 @@
/**
* vim: set ts=4 sw=4 tw=99 noet :
* =============================================================================
* SourceMod
* Copyright (C) 2004-2013 AlliedModders LLC. All rights reserved.
* =============================================================================
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, version 3.0, as published by the
* Free Software Foundation.
*
* 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, see <http://www.gnu.org/licenses/>.
*
* As a special exception, AlliedModders LLC gives you permission to link the
* code of this program (as well as its derivative works) to "Half-Life 2," the
* "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
* by the Valve Corporation. You must obey the GNU General Public License in
* all respects for all other code used. Additionally, AlliedModders LLC grants
* this exception to all derivative works. AlliedModders LLC defines further
* exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
* or <http://www.sourcemod.net/license.php>.
*/
#include <sourcemod_version.h>
#include <versionlib.h>
const char *SOURCEMOD_BUILD_ID = SM_BUILD_UNIQUEID;
const char *SOURCEMOD_VERSION = SM_VERSION_STRING;
const char *SOURCEMOD_BUILD_TIME = __DATE__ " " __TIME__;

49
versionlib/versionlib.h Normal file
View File

@ -0,0 +1,49 @@
/**
* vim: set ts=4 sw=4 tw=99 noet :
* =============================================================================
* SourceMod
* Copyright (C) 2004-2013 AlliedModders LLC. All rights reserved.
* =============================================================================
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, version 3.0, as published by the
* Free Software Foundation.
*
* 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, see <http://www.gnu.org/licenses/>.
*
* As a special exception, AlliedModders LLC gives you permission to link the
* code of this program (as well as its derivative works) to "Half-Life 2," the
* "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
* by the Valve Corporation. You must obey the GNU General Public License in
* all respects for all other code used. Additionally, AlliedModders LLC grants
* this exception to all derivative works. AlliedModders LLC defines further
* exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
* or <http://www.sourcemod.net/license.php>.
*/
#ifndef _INCLUDE_SOURCEMOD_VERSIONLIB_H_
#define _INCLUDE_SOURCEMOD_VERSIONLIB_H_
#if !defined(SM_USE_VERSIONLIB)
// These get defined in sourcemod_version.h since
// versionlib does not use versionlib.
# undef SOURCEMOD_BUILD_ID
# undef SOURCEMOD_VERSION
# undef SOURCEMOD_BUILD_TIME
#endif
#ifdef __cplusplus
# define EXTERN_C extern "C"
#else
# define EXTERN_C extern
#endif
EXTERN_C const char *SOURCEMOD_BUILD_ID;
EXTERN_C const char *SOURCEMOD_VERSION;
EXTERN_C const char *SOURCEMOD_BUILD_TIME;
#endif // _INCLUDE_SOURCEMOD_VERSIONLIB_H_