build: AMBuild 2.2 uplift (#32)

This commit is contained in:
David Anderson
2020-08-22 16:17:05 -07:00
committed by GitHub
parent 6b130d1a24
commit fd9a281f17
3 changed files with 46 additions and 33 deletions
+20 -12
View File
@@ -50,6 +50,12 @@ class SteamWorksConfig(object):
self.steamworks_root = None
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
def tag(self):
if builder.options.debug == '1':
@@ -63,7 +69,7 @@ class SteamWorksConfig(object):
for sdk_name in PossibleSDKs:
sdk = PossibleSDKs[sdk_name]
if builder.target_platform in sdk.platform:
if builder.cxx.target.platform in sdk.platform:
if builder.options.hl2sdk_root:
sdk_path = os.path.join(builder.options.hl2sdk_root, sdk.folder)
else:
@@ -124,8 +130,10 @@ class SteamWorksConfig(object):
def configure(self):
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'):
cxx.defines += [
'stricmp=strcasecmp',
@@ -165,7 +173,7 @@ class SteamWorksConfig(object):
cxx.cflags += ['-Wno-unused-result']
if have_clang:
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']
else:
cxx.cxxflags += ['-Wno-deprecated']
@@ -241,13 +249,13 @@ class SteamWorksConfig(object):
cxx.cflags += ['/Oy-']
# Platform-specifics
if builder.target_platform == 'linux':
if cxx.target.platform == 'linux':
cxx.defines += ['_LINUX', 'POSIX']
if cxx.vendor == 'gcc':
cxx.linkflags += ['-static-libgcc']
elif cxx.vendor == 'clang':
cxx.linkflags += ['-lgcc_eh']
elif builder.target_platform == 'mac':
elif cxx.target.platform == 'mac':
cxx.defines += ['OSX', '_OSX', 'POSIX']
cxx.cflags += ['-mmacosx-version-min=10.5']
cxx.linkflags += [
@@ -257,7 +265,7 @@ class SteamWorksConfig(object):
'-stdlib=libc++'
]
cxx.cxxflags += ['-stdlib=libstdc++']
elif builder.target_platform == 'windows':
elif cxx.target.platform == 'windows':
cxx.defines += ['WIN32', '_WINDOWS']
def ConfigureForExtension(self, context, compiler):
@@ -299,12 +307,12 @@ class SteamWorksConfig(object):
return self.ConfigureForHL2(binary, sdk)
def HL2Project(self, context, name):
project = context.compiler.LibraryProject(name)
self.ConfigureForExtension(context, project.compiler)
project = context.LibraryProject(name)
self.ConfigureForExtension(context, context.cxx)
return project
def HL2Config(self, project, name, sdk):
binary = project.Configure(name, '{0} - {1}'.format(self.tag, sdk.name))
def HL2Config(self, project, cxx, name, sdk):
binary = project.Configure(cxx, name, '{0} - {1}'.format(self.tag, sdk.name))
return self.ConfigureForHL2(binary, sdk)
SteamWorks = SteamWorksConfig()
@@ -313,5 +321,5 @@ SteamWorks.configure()
BuildScripts = ['Extension/AMBuilder']
builder.RunBuildScripts(BuildScripts, { 'SteamWorks': SteamWorks })
builder.RunScript('buildbot/PackageScript', { 'SteamWorks': SteamWorks })
builder.Build(BuildScripts, { 'SteamWorks': SteamWorks })
builder.Build('buildbot/PackageScript', { 'SteamWorks': SteamWorks })
+4 -4
View File
@@ -23,18 +23,18 @@ project.sources += [
for sdk_name in SteamWorks.sdks:
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.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'),;
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'),;
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'),;
SteamWorks.extensions += builder.Add(project)
+22 -17
View File
@@ -12,22 +12,27 @@ except:
sys.stderr.write('http://www.alliedmods.net/ambuild\n')
sys.exit(1)
run = run.PrepareBuild(sourcePath=sys.path[0])
run.default_build_folder = 'obj-' + run.target_platform
run.options.add_option('--hl2sdk-root', type=str, dest='hl2sdk_root', default=None,
help='Root search folder for HL2SDKs')
run.options.add_option('--mms-path', type=str, dest='mms_path', default=None,
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)')
# Hack to show a decent upgrade message, which wasn't done until 2.2.
ambuild_version = getattr(run, 'CURRENT_API', '2.1')
if ambuild_version.startswith('2.1'):
sys.stderr.write("AMBuild 2.2 or higher is required; please update\n")
sys.exit(1)
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()