From 3d337447b3e08e789dae827062504e434b69ad2a Mon Sep 17 00:00:00 2001 From: Scott Ehlert Date: Thu, 27 May 2010 19:10:12 -0500 Subject: [PATCH] Added version information to Mac OS X binaries (bug 4391, r=dvander). --- AMBuildScript | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/AMBuildScript b/AMBuildScript index 8252508..fbf61e2 100644 --- a/AMBuildScript +++ b/AMBuildScript @@ -146,6 +146,19 @@ class MMS: 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') @@ -183,10 +196,14 @@ class MMS: return False def AutoVersion(self, folder, binary): - if AMBuild.target['platform'] != 'windows': + if AMBuild.target['platform'] == 'windows': + env = {'RCDEFINES': ['BINARY_NAME="' + binary.binaryFile + '"', 'MMS_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 - env = {'RCDEFINES': ['BINARY_NAME="' + binary.binaryFile + '"', 'MMS_GENERATED_BUILD']} - binary.AddResourceFile(os.path.join(folder, 'version.rc' ), env) def PreSetupHL2Job(self, job, builder, sdk): info = self.sdkInfo[sdk]