build: AMBuild 2.2 uplift (#32)
This commit is contained in:
+20
-12
@@ -50,6 +50,12 @@ class SteamWorksConfig(object):
|
|||||||
self.steamworks_root = None
|
self.steamworks_root = None
|
||||||
self.extensions = []
|
self.extensions = []
|
||||||
|
|
||||||
|
# Note: only one architecture supported per build right now.
|
||||||
|
if builder.options.target:
|
||||||
|
builder.cxx = builder.DetectCxx(target_arch = builder.options.target)
|
||||||
|
else:
|
||||||
|
builder.cxx = builder.DetectCxx()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def tag(self):
|
def tag(self):
|
||||||
if builder.options.debug == '1':
|
if builder.options.debug == '1':
|
||||||
@@ -63,7 +69,7 @@ class SteamWorksConfig(object):
|
|||||||
|
|
||||||
for sdk_name in PossibleSDKs:
|
for sdk_name in PossibleSDKs:
|
||||||
sdk = PossibleSDKs[sdk_name]
|
sdk = PossibleSDKs[sdk_name]
|
||||||
if builder.target_platform in sdk.platform:
|
if builder.cxx.target.platform in sdk.platform:
|
||||||
if builder.options.hl2sdk_root:
|
if builder.options.hl2sdk_root:
|
||||||
sdk_path = os.path.join(builder.options.hl2sdk_root, sdk.folder)
|
sdk_path = os.path.join(builder.options.hl2sdk_root, sdk.folder)
|
||||||
else:
|
else:
|
||||||
@@ -124,8 +130,10 @@ class SteamWorksConfig(object):
|
|||||||
def configure(self):
|
def configure(self):
|
||||||
builder.AddConfigureFile('pushbuild.txt')
|
builder.AddConfigureFile('pushbuild.txt')
|
||||||
|
|
||||||
cxx = builder.DetectCompilers()
|
# Only one compiler to configure.
|
||||||
|
self.configure_cxx(builder.cxx)
|
||||||
|
|
||||||
|
def configure_cxx(self, cxx):
|
||||||
if cxx.like('gcc'):
|
if cxx.like('gcc'):
|
||||||
cxx.defines += [
|
cxx.defines += [
|
||||||
'stricmp=strcasecmp',
|
'stricmp=strcasecmp',
|
||||||
@@ -165,7 +173,7 @@ class SteamWorksConfig(object):
|
|||||||
cxx.cflags += ['-Wno-unused-result']
|
cxx.cflags += ['-Wno-unused-result']
|
||||||
if have_clang:
|
if have_clang:
|
||||||
cxx.cxxflags += ['-Wno-implicit-exception-spec-mismatch']
|
cxx.cxxflags += ['-Wno-implicit-exception-spec-mismatch']
|
||||||
if (builder.target_platform == 'mac' and cxx.version >= '5.1') or cxx.version >= '3.4':
|
if (cxx.target.platform == 'mac' and cxx.version >= '5.1') or cxx.version >= '3.4':
|
||||||
cxx.cxxflags += ['-Wno-deprecated-register']
|
cxx.cxxflags += ['-Wno-deprecated-register']
|
||||||
else:
|
else:
|
||||||
cxx.cxxflags += ['-Wno-deprecated']
|
cxx.cxxflags += ['-Wno-deprecated']
|
||||||
@@ -241,13 +249,13 @@ class SteamWorksConfig(object):
|
|||||||
cxx.cflags += ['/Oy-']
|
cxx.cflags += ['/Oy-']
|
||||||
|
|
||||||
# Platform-specifics
|
# Platform-specifics
|
||||||
if builder.target_platform == 'linux':
|
if cxx.target.platform == 'linux':
|
||||||
cxx.defines += ['_LINUX', 'POSIX']
|
cxx.defines += ['_LINUX', 'POSIX']
|
||||||
if cxx.vendor == 'gcc':
|
if cxx.vendor == 'gcc':
|
||||||
cxx.linkflags += ['-static-libgcc']
|
cxx.linkflags += ['-static-libgcc']
|
||||||
elif cxx.vendor == 'clang':
|
elif cxx.vendor == 'clang':
|
||||||
cxx.linkflags += ['-lgcc_eh']
|
cxx.linkflags += ['-lgcc_eh']
|
||||||
elif builder.target_platform == 'mac':
|
elif cxx.target.platform == 'mac':
|
||||||
cxx.defines += ['OSX', '_OSX', 'POSIX']
|
cxx.defines += ['OSX', '_OSX', 'POSIX']
|
||||||
cxx.cflags += ['-mmacosx-version-min=10.5']
|
cxx.cflags += ['-mmacosx-version-min=10.5']
|
||||||
cxx.linkflags += [
|
cxx.linkflags += [
|
||||||
@@ -257,7 +265,7 @@ class SteamWorksConfig(object):
|
|||||||
'-stdlib=libc++'
|
'-stdlib=libc++'
|
||||||
]
|
]
|
||||||
cxx.cxxflags += ['-stdlib=libstdc++']
|
cxx.cxxflags += ['-stdlib=libstdc++']
|
||||||
elif builder.target_platform == 'windows':
|
elif cxx.target.platform == 'windows':
|
||||||
cxx.defines += ['WIN32', '_WINDOWS']
|
cxx.defines += ['WIN32', '_WINDOWS']
|
||||||
|
|
||||||
def ConfigureForExtension(self, context, compiler):
|
def ConfigureForExtension(self, context, compiler):
|
||||||
@@ -299,12 +307,12 @@ class SteamWorksConfig(object):
|
|||||||
return self.ConfigureForHL2(binary, sdk)
|
return self.ConfigureForHL2(binary, sdk)
|
||||||
|
|
||||||
def HL2Project(self, context, name):
|
def HL2Project(self, context, name):
|
||||||
project = context.compiler.LibraryProject(name)
|
project = context.LibraryProject(name)
|
||||||
self.ConfigureForExtension(context, project.compiler)
|
self.ConfigureForExtension(context, context.cxx)
|
||||||
return project
|
return project
|
||||||
|
|
||||||
def HL2Config(self, project, name, sdk):
|
def HL2Config(self, project, cxx, name, sdk):
|
||||||
binary = project.Configure(name, '{0} - {1}'.format(self.tag, sdk.name))
|
binary = project.Configure(cxx, name, '{0} - {1}'.format(self.tag, sdk.name))
|
||||||
return self.ConfigureForHL2(binary, sdk)
|
return self.ConfigureForHL2(binary, sdk)
|
||||||
|
|
||||||
SteamWorks = SteamWorksConfig()
|
SteamWorks = SteamWorksConfig()
|
||||||
@@ -313,5 +321,5 @@ SteamWorks.configure()
|
|||||||
|
|
||||||
BuildScripts = ['Extension/AMBuilder']
|
BuildScripts = ['Extension/AMBuilder']
|
||||||
|
|
||||||
builder.RunBuildScripts(BuildScripts, { 'SteamWorks': SteamWorks })
|
builder.Build(BuildScripts, { 'SteamWorks': SteamWorks })
|
||||||
builder.RunScript('buildbot/PackageScript', { 'SteamWorks': SteamWorks })
|
builder.Build('buildbot/PackageScript', { 'SteamWorks': SteamWorks })
|
||||||
|
|||||||
+4
-4
@@ -23,18 +23,18 @@ project.sources += [
|
|||||||
for sdk_name in SteamWorks.sdks:
|
for sdk_name in SteamWorks.sdks:
|
||||||
sdk = SteamWorks.sdks[sdk_name]
|
sdk = SteamWorks.sdks[sdk_name]
|
||||||
|
|
||||||
binary = SteamWorks.HL2Config(project, 'SteamWorks.ext', sdk)
|
binary = SteamWorks.HL2Config(project, builder.cxx, 'SteamWorks.ext', sdk)
|
||||||
|
|
||||||
binary.compiler.defines += ['META_NO_HL2SDK', 'SOURCEMOD_BUILD', 'VERSION_SAFE_STEAM_API_INTERFACES']
|
binary.compiler.defines += ['META_NO_HL2SDK', 'SOURCEMOD_BUILD', 'VERSION_SAFE_STEAM_API_INTERFACES']
|
||||||
binary.compiler.cxxincludes += [os.path.join(SteamWorks.steamworks_root, 'public', 'steam'), os.path.join(sdk.path, 'public', 'steam')];
|
binary.compiler.cxxincludes += [os.path.join(SteamWorks.steamworks_root, 'public', 'steam'), os.path.join(sdk.path, 'public', 'steam')];
|
||||||
|
|
||||||
if builder.target_platform == 'linux':
|
if binary.compiler.target.platform == 'linux':
|
||||||
binary.compiler.postlink += os.path.join(SteamWorks.steamworks_root, 'redistributable_bin', 'linux32', 'libsteam_api.so'),;
|
binary.compiler.postlink += os.path.join(SteamWorks.steamworks_root, 'redistributable_bin', 'linux32', 'libsteam_api.so'),;
|
||||||
|
|
||||||
if builder.target_platform == 'windows':
|
if binary.compiler.target.platform == 'windows':
|
||||||
binary.compiler.postlink += os.path.join(SteamWorks.steamworks_root, 'redistributable_bin', 'steam_api.lib'),;
|
binary.compiler.postlink += os.path.join(SteamWorks.steamworks_root, 'redistributable_bin', 'steam_api.lib'),;
|
||||||
|
|
||||||
if builder.target_platform == 'mac':
|
if binary.compiler.target.platform == 'mac':
|
||||||
binary.compiler.postlink += os.path.join(SteamWorks.steamworks_root, 'redistributable_bin', 'osx', 'libsteam_api.dylib'),;
|
binary.compiler.postlink += os.path.join(SteamWorks.steamworks_root, 'redistributable_bin', 'osx', 'libsteam_api.dylib'),;
|
||||||
|
|
||||||
SteamWorks.extensions += builder.Add(project)
|
SteamWorks.extensions += builder.Add(project)
|
||||||
|
|||||||
+22
-17
@@ -12,22 +12,27 @@ except:
|
|||||||
sys.stderr.write('http://www.alliedmods.net/ambuild\n')
|
sys.stderr.write('http://www.alliedmods.net/ambuild\n')
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
run = run.PrepareBuild(sourcePath=sys.path[0])
|
# Hack to show a decent upgrade message, which wasn't done until 2.2.
|
||||||
run.default_build_folder = 'obj-' + run.target_platform
|
ambuild_version = getattr(run, 'CURRENT_API', '2.1')
|
||||||
run.options.add_option('--hl2sdk-root', type=str, dest='hl2sdk_root', default=None,
|
if ambuild_version.startswith('2.1'):
|
||||||
help='Root search folder for HL2SDKs')
|
sys.stderr.write("AMBuild 2.2 or higher is required; please update\n")
|
||||||
run.options.add_option('--mms-path', type=str, dest='mms_path', default=None,
|
sys.exit(1)
|
||||||
help='Path to Metamod:Source')
|
|
||||||
run.options.add_option('--sm-path', type=str, dest='sm_path', default=None,
|
|
||||||
help='Path to Sourcemod')
|
|
||||||
run.options.add_option('--steamworks-path', type=str, dest='steamworks_path', default=None,
|
|
||||||
help='Path to SteamWorks')
|
|
||||||
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',
|
|
||||||
help='Enable optimization')
|
|
||||||
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 = run.BuildParser(sourcePath=sys.path[0], api='2.2')
|
||||||
|
run.options.add_argument('--hl2sdk-root', type=str, dest='hl2sdk_root', default=None,
|
||||||
|
help='Root search folder for HL2SDKs')
|
||||||
|
run.options.add_argument('--mms-path', type=str, dest='mms_path', default=None,
|
||||||
|
help='Path to Metamod:Source')
|
||||||
|
run.options.add_argument('--sm-path', type=str, dest='sm_path', default=None,
|
||||||
|
help='Path to Sourcemod')
|
||||||
|
run.options.add_argument('--steamworks-path', type=str, dest='steamworks_path', default=None,
|
||||||
|
help='Path to SteamWorks')
|
||||||
|
run.options.add_argument('--enable-debug', action='store_const', const='1', dest='debug',
|
||||||
|
help='Enable debugging symbols')
|
||||||
|
run.options.add_argument('--enable-optimize', action='store_const', const='1', dest='opt',
|
||||||
|
help='Enable optimization')
|
||||||
|
run.options.add_argument('-s', '--sdks', default='all', dest='sdks',
|
||||||
|
help='Build against specified SDKs; valid args are "all", "present", or '
|
||||||
|
'comma-delimited list of engine names')
|
||||||
|
run.options.add_argument('--target', default=None, help='Override the default build target')
|
||||||
run.Configure()
|
run.Configure()
|
||||||
|
|||||||
Reference in New Issue
Block a user