core/AMBuilder
author Dr!fter
Wed Jul 10 19:56:51 2013 -0400 (2013-07-10)
changeset 3939 31183c7eae14
parent 3925 47e48ab11bc3
child 3981 af3681eade3f
permissions -rw-r--r--
Update GroundEndChanged for CS:S and CS:GO
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
skamonkey@3856
    31
	if i in ['csgo', 'dota']:
skamonkey@3743
    32
		if AMBuild.target['platform'] == 'linux':
skamonkey@3743
    33
			link = os.path.join(os.path.join(AMBuild.outputFolder, extension.workFolder), 'libprotobuf.a')
skamonkey@3743
    34
			target = os.path.join(os.path.join(AMBuild.cache[sdk['sdk']], 'lib', 'linux32', 'release'), 'libprotobuf.a')
skamonkey@3743
    35
			try:
skamonkey@3743
    36
				os.lstat(link)
skamonkey@3743
    37
			except:
skamonkey@3743
    38
				extension.AddCommand(SymlinkCommand(link, target))
skamonkey@3743
    39
		elif AMBuild.target['platform'] == 'darwin':
skamonkey@3743
    40
			link = os.path.join(os.path.join(AMBuild.outputFolder, extension.workFolder), 'libprotobuf.a')
skamonkey@3743
    41
			target = os.path.join(os.path.join(AMBuild.cache[sdk['sdk']], 'lib', 'osx32', 'release'), 'libprotobuf.a')
skamonkey@3743
    42
			try:
skamonkey@3743
    43
				os.lstat(link)
skamonkey@3743
    44
			except:
skamonkey@3743
    45
				extension.AddCommand(SymlinkCommand(link, target))
skamonkey@3743
    46
		elif AMBuild.target['platform'] == 'windows':
skamonkey@3743
    47
			libPath = os.path.join(AMBuild.cache[sdk['sdk']], 'lib', 'win32', 'release', 'vs2010', 'libprotobuf.lib')
skamonkey@3743
    48
			binary.RebuildIfNewer(libPath)
skamonkey@3743
    49
			binary['POSTLINKFLAGS'].append(libPath)
skamonkey@3743
    50
dvander@2784
    51
	files = [
dvander@2784
    52
		'AdminCache.cpp',
dvander@2784
    53
		'MenuStyle_Valve.cpp',
dvander@2784
    54
		'logic_bridge.cpp',
dvander@2784
    55
		'smn_entities.cpp',
dvander@2784
    56
		'sm_stringutil.cpp',
dvander@2784
    57
		'ADTFactory.cpp',
dvander@2784
    58
		'ForwardSys.cpp',
dvander@2784
    59
		'MenuVoting.cpp',
dvander@2784
    60
		'smn_events.cpp',
dvander@2784
    61
		'smn_menus.cpp',
dvander@2784
    62
		'sm_trie.cpp',
dvander@2784
    63
		'CDataPack.cpp',
dvander@2784
    64
		'frame_hooks.cpp',
dvander@2784
    65
		'smn_nextmap.cpp',
dvander@2784
    66
		'sourcemm_api.cpp',
dvander@2784
    67
		'ChatTriggers.cpp',
dvander@2784
    68
		'smn_player.cpp',
dvander@2784
    69
		'sourcemod.cpp',
dvander@2784
    70
		'concmd_cleaner.cpp',
dvander@2784
    71
		'HalfLife2.cpp',
dvander@2784
    72
		'NextMap.cpp',
dvander@2784
    73
		'ConCmdManager.cpp',
dvander@2784
    74
		'ConVarManager.cpp',
dvander@2784
    75
		'LibrarySys.cpp',
dvander@2784
    76
		'PlayerManager.cpp',
dvander@2784
    77
		'TimerSys.cpp',
dvander@2784
    78
		'CoreConfig.cpp',
dvander@2784
    79
		'Logger.cpp',
dvander@2784
    80
		'smn_halflife.cpp',
dvander@2784
    81
		'smn_console.cpp',
dvander@2784
    82
		'UserMessages.cpp',
dvander@2784
    83
		'Database.cpp',
dvander@2784
    84
		'MenuManager.cpp',
dvander@2784
    85
		'smn_core.cpp',
dvander@2784
    86
		'smn_hudtext.cpp',
dvander@2784
    87
		'smn_usermsgs.cpp',
dvander@2784
    88
		'MenuStyle_Base.cpp',
dvander@2784
    89
		'smn_database.cpp',
dvander@2784
    90
		'smn_keyvalues.cpp',
dvander@2784
    91
		'smn_vector.cpp',
dvander@2784
    92
		'EventManager.cpp',
dvander@2784
    93
		'MenuStyle_Radio.cpp',
dvander@2784
    94
		'sm_autonatives.cpp',
dvander@2784
    95
		'sm_srvcmds.cpp',
dvander@2806
    96
		'ConsoleDetours.cpp'
dvander@2784
    97
		]
skamonkey@3743
    98
	
skamonkey@3856
    99
	if i in ['csgo', 'dota']:
skamonkey@3743
   100
		files.append('smn_protobuf.cpp')
skamonkey@3743
   101
	else:
skamonkey@3743
   102
		files.append('smn_bitbuffer.cpp')
skamonkey@3743
   103
dvander@2784
   104
	binary.AddSourceFiles('core', files)
skamonkey@3743
   105
skamonkey@3743
   106
	if i == 'csgo':
skamonkey@3743
   107
		files = [
skamonkey@3743
   108
			os.path.join('public', 'engine', 'protobuf', 'netmessages.pb.cc'),
skamonkey@3743
   109
			os.path.join('public', 'game', 'shared', 'csgo', 'protobuf', 'cstrike15_usermessages.pb.cc'),
skamonkey@3743
   110
			os.path.join('public', 'game', 'shared', 'csgo', 'protobuf', 'cstrike15_usermessage_helpers.cpp'),
skamonkey@3743
   111
			]
skamonkey@3743
   112
		binary.AddSourceFiles(AMBuild.cache[sdk['sdk']], files)
skamonkey@3856
   113
	elif i == 'dota':
skamonkey@3856
   114
		files = [
skamonkey@3925
   115
			os.path.join('public', 'engine', 'protobuf', 'networkbasetypes.pb.cc'),
skamonkey@3856
   116
			os.path.join('public', 'engine', 'protobuf', 'netmessages.pb.cc'),
skamonkey@3856
   117
			os.path.join('public', 'game', 'shared', 'protobuf', 'ai_activity.pb.cc'),
skamonkey@3856
   118
			os.path.join('public', 'game', 'shared', 'protobuf', 'usermessages.pb.cc'),
skamonkey@3856
   119
			os.path.join('public', 'game', 'shared', 'dota', 'protobuf', 'dota_commonmessages.pb.cc'),
skamonkey@3856
   120
			os.path.join('public', 'game', 'shared', 'dota', 'protobuf', 'dota_usermessages.pb.cc'),
skamonkey@3856
   121
			os.path.join('public', 'game', 'shared', 'dota', 'protobuf', 'dota_usermessage_helpers.cpp'),
skamonkey@3856
   122
			]
skamonkey@3856
   123
		binary.AddSourceFiles(AMBuild.cache[sdk['sdk']], files)
skamonkey@3743
   124
dvander@2784
   125
	SM.PostSetupHL2Job(extension, binary, i)
asherkin@3748
   126
	
skamonkey@3856
   127
	if i in ['csgo', 'dota']:
asherkin@3748
   128
		if AMBuild.target['platform'] in ['linux', 'darwin']:
asherkin@3748
   129
			binary.AddObjectFiles(['libprotobuf.a'])
asherkin@3748
   130
	
dvander@2784
   131
	SM.AutoVersion('core', binary)
asherkin@3835
   132
	SM.ExtractDebugInfo(extension, binary)
dvander@2784
   133
	binary.SendToJob()
asherkin@3477
   134