core/AMBuilder
author Nicholas Hastings <skamonkey@gmail.com>
Fri Aug 30 14:15:02 2013 -0400 (2013-08-30)
changeset 4102 0eb66c45a884
parent 4027 d2c15108b468
child 4137 11a7aa48621c
permissions -rw-r--r--
Reserved slot fixes for OB games when SourceTV or Replay are enabled (bug 5499, r=drifter).
dvander@2784
     1
# vim: set ts=2 sw=2 tw=99 noet ft=python: 
dvander@2784
     2
import os
skamonkey@3743
     3
from ambuild.command import SymlinkCommand
dvander@2784
     4
dvander@2784
     5
for i in SM.sdkInfo:
dvander@2784
     6
	sdk = SM.sdkInfo[i]
ds@2990
     7
	if AMBuild.target['platform'] not in sdk['platform']:
ds@2990
     8
		continue
ds@2990
     9
dvander@2784
    10
	name = 'sourcemod.' + sdk['ext']
dvander@2784
    11
dvander@2784
    12
	compiler = SM.DefaultHL2Compiler('core', i)
dvander@2784
    13
skamonkey@3743
    14
	if i == 'csgo':
skamonkey@3745
    15
		# Protobuf 2.3 headers have some signed/unsigned compares. I believe that it's fixed in later versions, but Valve.
skamonkey@3745
    16
		if isinstance(compiler.cxx, Cpp.CompatGCC):
skamonkey@3745
    17
			compiler.AddToListVar('CFLAGS', '-Wno-sign-compare')
skamonkey@3743
    18
		compiler['CXXINCLUDES'].append(os.path.join(AMBuild.cache[sdk['sdk']], 'common', 'protobuf-2.3.0', 'src'))
skamonkey@3743
    19
		compiler['CXXINCLUDES'].append(os.path.join(AMBuild.cache[sdk['sdk']], 'public', 'engine', 'protobuf'))
skamonkey@3743
    20
		compiler['CXXINCLUDES'].append(os.path.join(AMBuild.cache[sdk['sdk']], 'public', 'game', 'shared', 'csgo', 'protobuf'))
skamonkey@3856
    21
	elif i == 'dota':
skamonkey@3856
    22
		compiler['CXXINCLUDES'].append(os.path.join(AMBuild.cache[sdk['sdk']], 'common', 'protobuf-2.4.1', 'src'))
skamonkey@3856
    23
		compiler['CXXINCLUDES'].append(os.path.join(AMBuild.cache[sdk['sdk']], 'public', 'engine', 'protobuf'))
skamonkey@3856
    24
		compiler['CXXINCLUDES'].append(os.path.join(AMBuild.cache[sdk['sdk']], 'public', 'game', 'shared', 'protobuf'))
skamonkey@3856
    25
		compiler['CXXINCLUDES'].append(os.path.join(AMBuild.cache[sdk['sdk']], 'public', 'game', 'shared', 'dota', 'protobuf'))
skamonkey@3743
    26
dvander@2784
    27
	extension = AMBuild.AddJob(name)
dvander@2784
    28
	binary = Cpp.LibraryBuilder(name, AMBuild, extension, compiler)
dvander@2784
    29
	SM.PreSetupHL2Job(extension, binary, i)
skamonkey@3743
    30
dvander@4027
    31
	if AMBuild.target['platform'] == 'linux':
dvander@4027
    32
		compiler['POSTLINKFLAGS'].append('-lpthread')
dvander@4027
    33
		compiler['POSTLINKFLAGS'].append('-lrt')
dvander@4027
    34
skamonkey@3856
    35
	if i in ['csgo', 'dota']:
skamonkey@3743
    36
		if AMBuild.target['platform'] == 'linux':
skamonkey@3743
    37
			link = os.path.join(os.path.join(AMBuild.outputFolder, extension.workFolder), 'libprotobuf.a')
skamonkey@3743
    38
			target = os.path.join(os.path.join(AMBuild.cache[sdk['sdk']], 'lib', 'linux32', 'release'), 'libprotobuf.a')
skamonkey@3743
    39
			try:
skamonkey@3743
    40
				os.lstat(link)
skamonkey@3743
    41
			except:
skamonkey@3743
    42
				extension.AddCommand(SymlinkCommand(link, target))
skamonkey@3743
    43
		elif AMBuild.target['platform'] == 'darwin':
skamonkey@3743
    44
			link = os.path.join(os.path.join(AMBuild.outputFolder, extension.workFolder), 'libprotobuf.a')
skamonkey@3743
    45
			target = os.path.join(os.path.join(AMBuild.cache[sdk['sdk']], 'lib', 'osx32', 'release'), 'libprotobuf.a')
skamonkey@3743
    46
			try:
skamonkey@3743
    47
				os.lstat(link)
skamonkey@3743
    48
			except:
skamonkey@3743
    49
				extension.AddCommand(SymlinkCommand(link, target))
skamonkey@3743
    50
		elif AMBuild.target['platform'] == 'windows':
skamonkey@3981
    51
			if 'DEBUG' in compiler['CDEFINES']:
skamonkey@3981
    52
				libPath = os.path.join(AMBuild.cache[sdk['sdk']], 'lib', 'win32', 'debug', 'vs2010', 'libprotobuf.lib')
skamonkey@3981
    53
			else:
skamonkey@3981
    54
				libPath = os.path.join(AMBuild.cache[sdk['sdk']], 'lib', 'win32', 'release', 'vs2010', 'libprotobuf.lib')
skamonkey@3743
    55
			binary.RebuildIfNewer(libPath)
skamonkey@3743
    56
			binary['POSTLINKFLAGS'].append(libPath)
skamonkey@3743
    57
dvander@2784
    58
	files = [
dvander@2784
    59
		'AdminCache.cpp',
dvander@2784
    60
		'MenuStyle_Valve.cpp',
dvander@2784
    61
		'logic_bridge.cpp',
dvander@2784
    62
		'smn_entities.cpp',
dvander@2784
    63
		'sm_stringutil.cpp',
dvander@2784
    64
		'ADTFactory.cpp',
dvander@2784
    65
		'ForwardSys.cpp',
dvander@2784
    66
		'MenuVoting.cpp',
dvander@2784
    67
		'smn_events.cpp',
dvander@2784
    68
		'smn_menus.cpp',
dvander@2784
    69
		'sm_trie.cpp',
dvander@2784
    70
		'CDataPack.cpp',
dvander@2784
    71
		'frame_hooks.cpp',
dvander@2784
    72
		'smn_nextmap.cpp',
dvander@2784
    73
		'sourcemm_api.cpp',
dvander@2784
    74
		'ChatTriggers.cpp',
dvander@2784
    75
		'smn_player.cpp',
dvander@2784
    76
		'sourcemod.cpp',
dvander@2784
    77
		'concmd_cleaner.cpp',
dvander@2784
    78
		'HalfLife2.cpp',
dvander@2784
    79
		'NextMap.cpp',
dvander@2784
    80
		'ConCmdManager.cpp',
dvander@2784
    81
		'ConVarManager.cpp',
dvander@2784
    82
		'LibrarySys.cpp',
dvander@2784
    83
		'PlayerManager.cpp',
dvander@2784
    84
		'TimerSys.cpp',
dvander@2784
    85
		'CoreConfig.cpp',
dvander@2784
    86
		'Logger.cpp',
dvander@2784
    87
		'smn_halflife.cpp',
dvander@2784
    88
		'smn_console.cpp',
dvander@2784
    89
		'UserMessages.cpp',
dvander@2784
    90
		'Database.cpp',
dvander@2784
    91
		'MenuManager.cpp',
dvander@2784
    92
		'smn_core.cpp',
dvander@2784
    93
		'smn_hudtext.cpp',
dvander@2784
    94
		'smn_usermsgs.cpp',
dvander@2784
    95
		'MenuStyle_Base.cpp',
dvander@2784
    96
		'smn_database.cpp',
dvander@2784
    97
		'smn_keyvalues.cpp',
dvander@2784
    98
		'smn_vector.cpp',
dvander@2784
    99
		'EventManager.cpp',
dvander@2784
   100
		'MenuStyle_Radio.cpp',
dvander@2784
   101
		'sm_autonatives.cpp',
dvander@2784
   102
		'sm_srvcmds.cpp',
dvander@2806
   103
		'ConsoleDetours.cpp'
dvander@2784
   104
		]
skamonkey@3743
   105
	
skamonkey@3856
   106
	if i in ['csgo', 'dota']:
skamonkey@3743
   107
		files.append('smn_protobuf.cpp')
skamonkey@3743
   108
	else:
skamonkey@3743
   109
		files.append('smn_bitbuffer.cpp')
skamonkey@3743
   110
dvander@2784
   111
	binary.AddSourceFiles('core', files)
skamonkey@3743
   112
skamonkey@3743
   113
	if i == 'csgo':
skamonkey@3743
   114
		files = [
skamonkey@3743
   115
			os.path.join('public', 'engine', 'protobuf', 'netmessages.pb.cc'),
skamonkey@3743
   116
			os.path.join('public', 'game', 'shared', 'csgo', 'protobuf', 'cstrike15_usermessages.pb.cc'),
skamonkey@3743
   117
			os.path.join('public', 'game', 'shared', 'csgo', 'protobuf', 'cstrike15_usermessage_helpers.cpp'),
skamonkey@3743
   118
			]
skamonkey@3743
   119
		binary.AddSourceFiles(AMBuild.cache[sdk['sdk']], files)
skamonkey@3856
   120
	elif i == 'dota':
skamonkey@3856
   121
		files = [
skamonkey@3925
   122
			os.path.join('public', 'engine', 'protobuf', 'networkbasetypes.pb.cc'),
skamonkey@3856
   123
			os.path.join('public', 'engine', 'protobuf', 'netmessages.pb.cc'),
skamonkey@3856
   124
			os.path.join('public', 'game', 'shared', 'protobuf', 'ai_activity.pb.cc'),
skamonkey@3856
   125
			os.path.join('public', 'game', 'shared', 'protobuf', 'usermessages.pb.cc'),
skamonkey@3856
   126
			os.path.join('public', 'game', 'shared', 'dota', 'protobuf', 'dota_commonmessages.pb.cc'),
skamonkey@3856
   127
			os.path.join('public', 'game', 'shared', 'dota', 'protobuf', 'dota_usermessages.pb.cc'),
skamonkey@3856
   128
			os.path.join('public', 'game', 'shared', 'dota', 'protobuf', 'dota_usermessage_helpers.cpp'),
skamonkey@3856
   129
			]
skamonkey@3856
   130
		binary.AddSourceFiles(AMBuild.cache[sdk['sdk']], files)
skamonkey@3743
   131
dvander@2784
   132
	SM.PostSetupHL2Job(extension, binary, i)
asherkin@3748
   133
	
skamonkey@3856
   134
	if i in ['csgo', 'dota']:
asherkin@3748
   135
		if AMBuild.target['platform'] in ['linux', 'darwin']:
asherkin@3748
   136
			binary.AddObjectFiles(['libprotobuf.a'])
asherkin@3748
   137
	
dvander@2784
   138
	SM.AutoVersion('core', binary)
asherkin@3835
   139
	SM.ExtractDebugInfo(extension, binary)
dvander@2784
   140
	binary.SendToJob()
asherkin@3477
   141