AMBuildScript
changeset 4141 8ff66ae5ffcc
parent 4105 c523a3bcfa57
child 4142 0a4da1ca54c9
     1.1 --- a/AMBuildScript	Wed Oct 09 09:12:46 2013 -0400
     1.2 +++ b/AMBuildScript	Sun Oct 13 14:14:51 2013 -0400
     1.3 @@ -38,48 +38,51 @@
     1.4  		self.possibleSdks['ep2'] =   {'sdk': 'HL2SDKOB',        'ext': '2.ep2',   'def': '3',
     1.5  		                         'name': 'ORANGEBOX',      'platform': ['windows', 'linux'],
     1.6  		                         'dir': 'hl2sdk-ob'}
     1.7 -		self.possibleSdks['css'] =   {'sdk': 'HL2SDKCSS',       'ext': '2.css',   'def': '6',
     1.8 +		self.possibleSdks['css'] =   {'sdk': 'HL2SDKCSS',       'ext': '2.css',     'def': '6',
     1.9  		                         'name': 'CSS',            'platform': ['windows', 'linux', 'darwin'],
    1.10  		                         'dir': 'hl2sdk-css'}
    1.11 -		self.possibleSdks['hl2dm'] = {'sdk': 'HL2SDKHL2DM',     'ext': '2.hl2dm', 'def': '7',
    1.12 +		self.possibleSdks['hl2dm'] = {'sdk': 'HL2SDKHL2DM',     'ext': '2.hl2dm',   'def': '7',
    1.13  		                         'name': 'HL2DM',          'platform': ['windows', 'linux', 'darwin'],
    1.14  		                        'dir': 'hl2sdk-hl2dm'}
    1.15 -		self.possibleSdks['dods'] =  {'sdk': 'HL2SDKDODS',      'ext': '2.dods',  'def': '8',
    1.16 +		self.possibleSdks['dods'] =  {'sdk': 'HL2SDKDODS',      'ext': '2.dods',    'def': '8',
    1.17  		                         'name': 'DODS',           'platform': ['windows', 'linux', 'darwin'],
    1.18  		                        'dir': 'hl2sdk-dods'}
    1.19 -		self.possibleSdks['tf2'] =   {'sdk': 'HL2SDKTF2',       'ext': '2.tf2',   'def': '9',
    1.20 +		self.possibleSdks['sdk2013'] =   {'sdk': 'HL2SDK2013',  'ext': '2.sdk2013', 'def': '9',
    1.21 +		                         'name': 'SDK2013',        'platform': ['windows', 'linux', 'darwin'],
    1.22 +		                        'dir': 'hl2sdk-2013'}
    1.23 +		self.possibleSdks['tf2'] =   {'sdk': 'HL2SDKTF2',       'ext': '2.tf2',     'def': '10',
    1.24  		                         'name': 'TF2',            'platform': ['windows', 'linux', 'darwin'],
    1.25  		                        'dir': 'hl2sdk-tf2'}
    1.26 -		self.possibleSdks['l4d'] =   {'sdk': 'HL2SDKL4D',       'ext': '2.l4d',   'def': '10',
    1.27 +		self.possibleSdks['l4d'] =   {'sdk': 'HL2SDKL4D',       'ext': '2.l4d',     'def': '11',
    1.28  		                         'name': 'LEFT4DEAD',      'platform': ['windows', 'linux', 'darwin'],
    1.29  		                         'dir': 'hl2sdk-l4d'}
    1.30 -		self.possibleSdks['nd'] =    {'sdk': 'HL2SDKND',        'ext': '2.nd',    'def': '11',
    1.31 +		self.possibleSdks['nd'] =    {'sdk': 'HL2SDKND',        'ext': '2.nd',      'def': '12',
    1.32  		                         'name': 'NUCLEARDAWN',    'platform': ['windows', 'linux', 'darwin'],
    1.33  		                         'dir': 'hl2sdk-nd'}
    1.34 -		self.possibleSdks['l4d2'] =  {'sdk': 'HL2SDKL4D2',      'ext': '2.l4d2',  'def': '12',
    1.35 +		self.possibleSdks['l4d2'] =  {'sdk': 'HL2SDKL4D2',      'ext': '2.l4d2',    'def': '13',
    1.36  		                         'name': 'LEFT4DEAD2',     'platform': ['windows', 'linux', 'darwin'],
    1.37  		                         'dir': 'hl2sdk-l4d2'}
    1.38 -		self.possibleSdks['darkm'] = {'sdk': 'HL2SDK-DARKM',    'ext': '2.darkm', 'def': '2',
    1.39 +		self.possibleSdks['darkm'] = {'sdk': 'HL2SDK-DARKM',    'ext': '2.darkm',   'def': '2',
    1.40  		                         'name': 'DARKMESSIAH',    'platform': ['windows'],
    1.41  		                          'dir': 'hl2sdk-darkm'}
    1.42 -		self.possibleSdks['swarm'] = {'sdk': 'HL2SDK-SWARM',    'ext': '2.swarm', 'def': '13',
    1.43 +		self.possibleSdks['swarm'] = {'sdk': 'HL2SDK-SWARM',    'ext': '2.swarm',   'def': '14',
    1.44  		                         'name': 'ALIENSWARM',     'platform': ['windows'],
    1.45  		                         'dir': 'hl2sdk-swarm'}
    1.46 -		self.possibleSdks['bgt'] =   {'sdk': 'HL2SDK-BGT',      'ext': '2.bgt',   'def': '4',
    1.47 +		self.possibleSdks['bgt'] =   {'sdk': 'HL2SDK-BGT',      'ext': '2.bgt',     'def': '4',
    1.48  		                         'name': 'BLOODYGOODTIME', 'platform': ['windows'],
    1.49  		                         'dir': 'hl2sdk-bgt'}
    1.50 -		self.possibleSdks['eye'] =   {'sdk': 'HL2SDK-EYE',      'ext': '2.eye',   'def': '5',
    1.51 +		self.possibleSdks['eye'] =   {'sdk': 'HL2SDK-EYE',      'ext': '2.eye',     'def': '5',
    1.52  		                         'name': 'EYE',            'platform': ['windows'],
    1.53  		                         'dir': 'hl2sdk-eye'}
    1.54 -		self.possibleSdks['csgo'] =  {'sdk': 'HL2SDKCSGO',     'ext': '2.csgo',   'def': '15',
    1.55 +		self.possibleSdks['csgo'] =  {'sdk': 'HL2SDKCSGO',     'ext': '2.csgo',     'def': '16',
    1.56  		                         'name': 'CSGO',           'platform': ['windows', 'linux', 'darwin'],
    1.57  		                         'dir': 'hl2sdk-csgo'}
    1.58 -		self.possibleSdks['dota'] =  {'sdk': 'HL2SDKDOTA',     'ext': '2.dota',   'def': '16',
    1.59 +		self.possibleSdks['dota'] =  {'sdk': 'HL2SDKDOTA',     'ext': '2.dota',     'def': '17',
    1.60  		                         'name': 'DOTA',           'platform': ['windows'],
    1.61  		                         'dir': 'hl2sdk-dota'}
    1.62 -		# self.possibleSdks['portal2'] =  {'sdk': 'HL2SDK-PORTAL2',     'ext': '2.portal2',  'def': '14',
    1.63 -		#                        'name': 'PORTAL2',           'platform': ['windows'],
    1.64 -		#                        'dir': 'hl2sdk-portal2'}
    1.65 +		self.possibleSdks['portal2'] = {'sdk': 'HL2SDKPORTAL2','ext': '2.portal2',  'def': '15',
    1.66 +		                         'name': 'PORTAL2',           'platform': [],
    1.67 +		                         'dir': 'hl2sdk-portal2'}
    1.68  		
    1.69  		self.sdkInfo = { }
    1.70  
    1.71 @@ -322,42 +325,38 @@
    1.72  		if AMBuild.target['platform'] == 'linux':
    1.73  			if sdk == 'ep1':
    1.74  				staticLibs = os.path.join(sdkPath, 'linux_sdk')
    1.75 +			elif sdk == 'sdk2013':
    1.76 +				staticLibs = os.path.join(sdkPath, 'lib', 'public', 'linux32')
    1.77  			else:
    1.78  				staticLibs = os.path.join(sdkPath, 'lib', 'linux')
    1.79  			workFolder = os.path.join(AMBuild.outputFolder, job.workFolder)
    1.80 +			libs = []
    1.81  			if sdk in ['css', 'hl2dm', 'dods', 'tf2', 'l4d2']:
    1.82  				libs = ['tier1_i486.a', 'mathlib_i486.a', 'libvstdlib_srv.so', 'libtier0_srv.so']
    1.83 -				for lib in libs:
    1.84 -					link = os.path.join(workFolder, lib)
    1.85 -					target = os.path.join(staticLibs, lib)
    1.86 -					try:
    1.87 -						os.lstat(link)
    1.88 -					except:
    1.89 -						job.AddCommand(SymlinkCommand(link, target))
    1.90  			elif sdk in ['l4d', 'nd', 'csgo']:
    1.91  				libs = ['tier1_i486.a', 'mathlib_i486.a', 'libvstdlib.so', 'libtier0.so']
    1.92  				if sdk == 'csgo':
    1.93  					libs.append('interfaces_i486.a')
    1.94 -				for lib in libs:
    1.95 -					link = os.path.join(workFolder, lib)
    1.96 -					target = os.path.join(staticLibs, lib)
    1.97 -					try:
    1.98 -						os.lstat(link)
    1.99 -					except:
   1.100 -						job.AddCommand(SymlinkCommand(link, target))
   1.101 +			elif sdk == 'sdk2013':
   1.102 +				libs = ['tier1.a', 'mathlib.a', 'libvstdlib_srv.so', 'libtier0_srv.so']
   1.103  			else:
   1.104  				libs = ['tier1_i486.a', 'mathlib_i486.a', 'vstdlib_i486.so', 'tier0_i486.so']
   1.105 -				for lib in libs:
   1.106 -					link = os.path.join(workFolder, lib)
   1.107 -					target = os.path.join(staticLibs, lib)
   1.108 -					try:
   1.109 -						os.lstat(link)
   1.110 -					except:
   1.111 -						job.AddCommand(SymlinkCommand(link, target))
   1.112 +			
   1.113 +			for lib in libs:
   1.114 +				link = os.path.join(workFolder, lib)
   1.115 +				target = os.path.join(staticLibs, lib)
   1.116 +				try:
   1.117 +					os.lstat(link)
   1.118 +				except:
   1.119 +					job.AddCommand(SymlinkCommand(link, target))
   1.120  		elif AMBuild.target['platform'] == 'darwin':
   1.121 -			staticLibs = os.path.join(sdkPath, 'lib', 'mac')
   1.122 +			if sdk == 'sdk2013':
   1.123 +				staticLibs = os.path.join(sdkPath, 'lib', 'public', 'osx32')
   1.124 +				libs = ['tier1.a', 'mathlib.a', 'libvstdlib.dylib', 'libtier0.dylib']
   1.125 +			else:
   1.126 +				staticLibs = os.path.join(sdkPath, 'lib', 'mac')
   1.127 +				libs = ['tier1_i486.a', 'mathlib_i486.a', 'libvstdlib.dylib', 'libtier0.dylib']
   1.128  			workFolder = os.path.join(AMBuild.outputFolder, job.workFolder)
   1.129 -			libs = ['tier1_i486.a', 'mathlib_i486.a', 'libvstdlib.dylib', 'libtier0.dylib']
   1.130  			if sdk == 'csgo':
   1.131  				libs.append('interfaces_i486.a')
   1.132  			for lib in libs:
   1.133 @@ -378,7 +377,11 @@
   1.134  
   1.135  	def PostSetupHL2Job(self, job, builder, sdk):
   1.136  		if AMBuild.target['platform'] in ['linux', 'darwin']:
   1.137 -			builder.AddObjectFiles(['tier1_i486.a', 'mathlib_i486.a'])
   1.138 +			if sdk == 'sdk2013':
   1.139 +				builder.AddObjectFiles(['tier1.a', 'mathlib.a'])
   1.140 +			else:
   1.141 +				builder.AddObjectFiles(['tier1_i486.a', 'mathlib_i486.a'])
   1.142 +			
   1.143  			if sdk == 'csgo':
   1.144  				builder.AddObjectFiles(['interfaces_i486.a'])
   1.145  	
   1.146 @@ -394,10 +397,6 @@
   1.147  
   1.148  		info = self.possibleSdks
   1.149  		compiler['CDEFINES'].extend(['SE_' + info[i]['name'] + '=' + info[i]['def'] for i in info])
   1.150 -				
   1.151 -		# We don't build for Portal 2 (yet?, ever?), but using this define in code as 
   1.152 -		# it saves trouble if we ever need to
   1.153 -		compiler['CDEFINES'].append('SE_PORTAL2=14')
   1.154  
   1.155  		paths = [['public'], ['public', 'engine'], ['public', 'mathlib'], ['public', 'vstdlib'],
   1.156  						 ['public', 'tier0'], ['public', 'tier1']]
   1.157 @@ -414,6 +413,13 @@
   1.158  		sdkPath = AMBuild.cache[info['sdk']]
   1.159  
   1.160  		compiler['CDEFINES'].append('SOURCE_ENGINE=' + info['def'])
   1.161 +		
   1.162 +		if sdk == 'sdk2013' and isinstance(compiler.cxx, Cpp.CompatGCC):
   1.163 +			# The 2013 SDK already has these in public/tier0/basetypes.h
   1.164 +			compiler['CDEFINES'].remove('stricmp=strcasecmp')
   1.165 +			compiler['CDEFINES'].remove('_stricmp=strcasecmp')
   1.166 +			compiler['CDEFINES'].remove('_snprintf=snprintf')
   1.167 +			compiler['CDEFINES'].remove('_vsnprintf=vsnprintf')
   1.168  
   1.169  		if sdk in ['swarm','csgo','dota']:
   1.170  			if AMBuild.target['platform'] == 'windows':
   1.171 @@ -421,13 +427,24 @@
   1.172  			else:
   1.173  				compiler['CDEFINES'].extend(['COMPILER_GCC'])
   1.174  
   1.175 -		if sdk == 'ep1':
   1.176 -			if AMBuild.target['platform'] == 'linux':
   1.177 +		if sdk == 'sdk2013' and AMBuild.target['platform'] == 'darwin':
   1.178 +			compiler['POSTLINKFLAGS'].append('-liconv')
   1.179 +		
   1.180 +		if sdk in ['css','hl2dm','dods','sdk2013','tf2','l4d2']:
   1.181 +			if AMBuild.target['platform'] == 'linux' or AMBuild.target['platform'] == 'darwin':
   1.182 +				compiler['CDEFINES'].append('NO_MALLOC_OVERRIDE')
   1.183 +
   1.184 +		if AMBuild.target['platform'] == 'linux':
   1.185 +			if sdk == 'ep1':
   1.186  				staticLibs = os.path.join(sdkPath, 'linux_sdk')
   1.187 -		else:
   1.188 -			if AMBuild.target['platform'] == 'linux':
   1.189 +			elif sdk == 'sdk2013':
   1.190 +				staticLibs = os.path.join(sdkPath, 'lib', 'public', 'linux32')
   1.191 +			else:
   1.192  				staticLibs = os.path.join(sdkPath, 'lib', 'linux')
   1.193 -			elif AMBuild.target['platform'] == 'darwin':
   1.194 +		elif AMBuild.target['platform'] == 'darwin':
   1.195 +			if sdk == 'sdk2013':
   1.196 +				staticLibs = os.path.join(sdkPath, 'lib', 'public', 'osx32')
   1.197 +			else:
   1.198  				staticLibs = os.path.join(sdkPath, 'lib', 'mac')
   1.199  
   1.200  		for i in paths:
   1.201 @@ -436,7 +453,7 @@
   1.202  		if not noLink:
   1.203  			if AMBuild.target['platform'] == 'linux':
   1.204  				compiler['POSTLINKFLAGS'][0:0] = ['-lm']
   1.205 -				if sdk in ['css', 'hl2dm', 'dods', 'tf2', 'l4d2']:
   1.206 +				if sdk in ['css', 'hl2dm', 'dods', 'tf2', 'sdk2013', 'l4d2']:
   1.207  					compiler['POSTLINKFLAGS'][0:0] = ['libtier0_srv.so']
   1.208  					compiler['POSTLINKFLAGS'][0:0] = ['libvstdlib_srv.so']
   1.209  				elif sdk in ['l4d', 'nd', 'csgo']: