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.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
@@ -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
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user