diff -r c6a694ae8566 -r e70b65bc70b9 AMBuildScript --- a/AMBuildScript Mon Dec 30 17:50:59 2013 -0500 +++ b/AMBuildScript Mon Dec 30 17:50:59 2013 -0500 @@ -63,11 +63,26 @@ self.sdks = {} self.binaries = [] self.extensions = [] + self.generated_headers = None self.mms_root = None self.mysql_root = None self.spcomp = None self.smx_files = {} + def detectProductVersion(self): + builder.AddConfigureFile('product.version') + + # 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' @@ -229,15 +244,35 @@ # Finish up. cfg.defines += [ 'SOURCEMOD_BUILD', + 'SM_GENERATED_BUILD', ] cfg.includes += [os.path.join(builder.buildPath, 'includes')] 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' + ] + elif builder.target_platform == 'mac': + binary.compiler.postlink += [ + '-compatibility_version', '1.0.0', + '-current_version', self.productVersion + ] + 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' + ] + binary.compiler.sourcedeps += SM.generated_headers return binary def Library(self, context, name): @@ -389,9 +424,15 @@ return binary SM = SMConfig() +SM.detectProductVersion() SM.detectSDKs() SM.configure() +SM.generated_headers = builder.RunScript( + 'tools/buildbot/Versioning', + { 'SM': SM } +) + builder.RunBuildScripts( [ 'loader/AMBuilder',