core/AMBuilder
author David Anderson <dvander@alliedmods.net>
Sat Feb 16 15:57:00 2013 -0800 (2013-02-16)
changeset 3792 d8a07e40bcb6
parent 3791 47e1ee9cea86
child 3835 ac5919d50903
permissions -rw-r--r--
Move DebugReporter from core to logic (bug 5607, r=psychonic).
     1 # vim: set ts=2 sw=2 tw=99 noet ft=python: 
     2 import os
     3 from ambuild.command import SymlinkCommand
     4 
     5 for i in SM.sdkInfo:
     6 	sdk = SM.sdkInfo[i]
     7 	if AMBuild.target['platform'] not in sdk['platform']:
     8 		continue
     9 
    10 	name = 'sourcemod.' + sdk['ext']
    11 
    12 	compiler = SM.DefaultHL2Compiler('core', i)
    13 
    14 	if i == 'csgo':
    15 		# Protobuf 2.3 headers have some signed/unsigned compares. I believe that it's fixed in later versions, but Valve.
    16 		if isinstance(compiler.cxx, Cpp.CompatGCC):
    17 			compiler.AddToListVar('CFLAGS', '-Wno-sign-compare')
    18 		compiler['CXXINCLUDES'].append(os.path.join(AMBuild.cache[sdk['sdk']], 'common', 'protobuf-2.3.0', 'src'))
    19 		compiler['CXXINCLUDES'].append(os.path.join(AMBuild.cache[sdk['sdk']], 'public', 'engine', 'protobuf'))
    20 		compiler['CXXINCLUDES'].append(os.path.join(AMBuild.cache[sdk['sdk']], 'public', 'game', 'shared', 'csgo', 'protobuf'))
    21 
    22 	extension = AMBuild.AddJob(name)
    23 	binary = Cpp.LibraryBuilder(name, AMBuild, extension, compiler)
    24 	SM.PreSetupHL2Job(extension, binary, i)
    25 
    26 	if i == 'csgo':
    27 		if AMBuild.target['platform'] == 'linux':
    28 			link = os.path.join(os.path.join(AMBuild.outputFolder, extension.workFolder), 'libprotobuf.a')
    29 			target = os.path.join(os.path.join(AMBuild.cache[sdk['sdk']], 'lib', 'linux32', 'release'), 'libprotobuf.a')
    30 			try:
    31 				os.lstat(link)
    32 			except:
    33 				extension.AddCommand(SymlinkCommand(link, target))
    34 		elif AMBuild.target['platform'] == 'darwin':
    35 			link = os.path.join(os.path.join(AMBuild.outputFolder, extension.workFolder), 'libprotobuf.a')
    36 			target = os.path.join(os.path.join(AMBuild.cache[sdk['sdk']], 'lib', 'osx32', 'release'), 'libprotobuf.a')
    37 			try:
    38 				os.lstat(link)
    39 			except:
    40 				extension.AddCommand(SymlinkCommand(link, target))
    41 		elif AMBuild.target['platform'] == 'windows':
    42 			libPath = os.path.join(AMBuild.cache[sdk['sdk']], 'lib', 'win32', 'release', 'vs2010', 'libprotobuf.lib')
    43 			binary.RebuildIfNewer(libPath)
    44 			binary['POSTLINKFLAGS'].append(libPath)
    45 
    46 	files = [
    47 		'AdminCache.cpp',
    48 		'ExtensionSys.cpp',
    49 		'MenuStyle_Valve.cpp',
    50 		'logic_bridge.cpp',
    51 		'smn_entities.cpp',
    52 		'sm_stringutil.cpp',
    53 		'ADTFactory.cpp',
    54 		'ForwardSys.cpp',
    55 		'MenuVoting.cpp',
    56 		'smn_events.cpp',
    57 		'smn_menus.cpp',
    58 		'sm_trie.cpp',
    59 		'CDataPack.cpp',
    60 		'frame_hooks.cpp',
    61 		'NativeInvoker.cpp',
    62 		'smn_fakenatives.cpp',
    63 		'smn_nextmap.cpp',
    64 		'sourcemm_api.cpp',
    65 		'ChatTriggers.cpp',
    66 		'NativeOwner.cpp',
    67 		'smn_player.cpp',
    68 		'sourcemod.cpp',
    69 		'concmd_cleaner.cpp',
    70 		'HalfLife2.cpp',
    71 		'NextMap.cpp',
    72 		'ConCmdManager.cpp',
    73 		'HandleSys.cpp',
    74 		'ConVarManager.cpp',
    75 		'LibrarySys.cpp',
    76 		'PlayerManager.cpp',
    77 		'TimerSys.cpp',
    78 		'CoreConfig.cpp',
    79 		'Logger.cpp',
    80 		'smn_halflife.cpp',
    81 		'PluginSys.cpp',
    82 		'smn_console.cpp',
    83 		'UserMessages.cpp',
    84 		'Database.cpp',
    85 		'MenuManager.cpp',
    86 		'smn_core.cpp',
    87 		'smn_hudtext.cpp',
    88 		'smn_usermsgs.cpp',
    89 		'MenuStyle_Base.cpp',
    90 		'ShareSys.cpp',
    91 		'smn_database.cpp',
    92 		'smn_keyvalues.cpp',
    93 		'smn_vector.cpp',
    94 		'EventManager.cpp',
    95 		'MenuStyle_Radio.cpp',
    96 		'sm_autonatives.cpp',
    97 		'sm_srvcmds.cpp',
    98 		'ConsoleDetours.cpp'
    99 		]
   100 	
   101 	if i == 'csgo':
   102 		files.append('smn_protobuf.cpp')
   103 	else:
   104 		files.append('smn_bitbuffer.cpp')
   105 
   106 	binary.AddSourceFiles('core', files)
   107 
   108 	if i == 'csgo':
   109 		files = [
   110 			os.path.join('public', 'engine', 'protobuf', 'netmessages.pb.cc'),
   111 			os.path.join('public', 'game', 'shared', 'csgo', 'protobuf', 'cstrike15_usermessages.pb.cc'),
   112 			os.path.join('public', 'game', 'shared', 'csgo', 'protobuf', 'cstrike15_usermessage_helpers.cpp'),
   113 			]
   114 		binary.AddSourceFiles(AMBuild.cache[sdk['sdk']], files)
   115 
   116 	SM.PostSetupHL2Job(extension, binary, i)
   117 	
   118 	if i == 'csgo':
   119 		if AMBuild.target['platform'] in ['linux', 'darwin']:
   120 			binary.AddObjectFiles(['libprotobuf.a'])
   121 	
   122 	SM.AutoVersion('core', binary)
   123 	binary.SendToJob()
   124