* Add hl2sdk-manifests submodule * Update AMBuild scripts to utilize hl2sdk-manifests * Add build*/ to .gitignore
		
			
				
	
	
		
			142 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			142 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # vim: set sts=2 ts=8 sw=2 tw=99 et ft=python:
 | |
| import os
 | |
| 
 | |
| project = builder.LibraryProject('sourcemod')
 | |
| 
 | |
| project.sources += [
 | |
|   'MenuStyle_Valve.cpp',
 | |
|   'logic_bridge.cpp',
 | |
|   'smn_entities.cpp',
 | |
|   'sm_stringutil.cpp',
 | |
|   'MenuVoting.cpp',
 | |
|   'smn_events.cpp',
 | |
|   'frame_hooks.cpp',
 | |
|   'smn_nextmap.cpp',
 | |
|   'sourcemm_api.cpp',
 | |
|   'ChatTriggers.cpp',
 | |
|   'smn_player.cpp',
 | |
|   'sourcemod.cpp',
 | |
|   'concmd_cleaner.cpp',
 | |
|   'HalfLife2.cpp',
 | |
|   'NextMap.cpp',
 | |
|   'ConCmdManager.cpp',
 | |
|   'ConVarManager.cpp',
 | |
|   'PlayerManager.cpp',
 | |
|   'TimerSys.cpp',
 | |
|   'CoreConfig.cpp',
 | |
|   'Logger.cpp',
 | |
|   'smn_halflife.cpp',
 | |
|   'smn_console.cpp',
 | |
|   'UserMessages.cpp',
 | |
|   'MenuManager.cpp',
 | |
|   'smn_hudtext.cpp',
 | |
|   'smn_usermsgs.cpp',
 | |
|   'MenuStyle_Base.cpp',
 | |
|   'smn_keyvalues.cpp',
 | |
|   'smn_vector.cpp',
 | |
|   'EventManager.cpp',
 | |
|   'MenuStyle_Radio.cpp',
 | |
|   'sm_autonatives.cpp',
 | |
|   'ConsoleDetours.cpp',
 | |
|   'smn_commandline.cpp',
 | |
|   'GameHooks.cpp',
 | |
| ]
 | |
| 
 | |
| # SDK name to shipping gamedir
 | |
| pb_gamedir_map = {
 | |
|   'csgo': 'csgo',
 | |
|   'blade': 'berimbau',
 | |
|   'mcv': 'vietnam',
 | |
| }
 | |
| 
 | |
| # SDK name to source code gamedir
 | |
| pb_gamesrcdir_map = {
 | |
|   'csgo': 'cstrike15',
 | |
|   'blade': 'berimbau',
 | |
|   'mcv': 'vietnam',
 | |
| }
 | |
| 
 | |
| for sdk_target in SM.sdk_targets:
 | |
|   sdk = sdk_target.sdk
 | |
|   cxx = sdk_target.cxx
 | |
| 
 | |
|   binary_name = 'sourcemod.' + sdk['extension']
 | |
|   needs_protobuf = sdk['name'] in ['csgo', 'blade', 'mcv']
 | |
| 
 | |
|   binary = SM.HL2Config(project, builder, cxx, binary_name, sdk)
 | |
|   SM.ConfigureForExtension(builder, binary.compiler)
 | |
| 
 | |
|   compiler = binary.compiler
 | |
|   compiler.cxxincludes += [
 | |
|     builder.sourcePath
 | |
|   ]
 | |
| 
 | |
|   if needs_protobuf:
 | |
|     compiler.cxxincludes += [
 | |
|       os.path.join(sdk['path'], 'common', 'protobuf-2.5.0', 'src'),
 | |
|       os.path.join(sdk['path'], 'public', 'engine', 'protobuf'),
 | |
|       os.path.join(sdk['path'], 'public', 'game', 'shared', pb_gamedir_map[sdk['name']], 'protobuf')
 | |
|     ]
 | |
|   
 | |
|   if compiler.like('msvc'):
 | |
|     compiler.defines += ['_ALLOW_KEYWORD_MACROS']
 | |
|   if cxx.target.platform == 'linux':
 | |
|     compiler.postlink += ['-lpthread', '-lrt']
 | |
| 
 | |
|   if needs_protobuf:
 | |
|     if compiler.target.platform == 'linux':
 | |
|       if compiler.target.arch == 'x86':
 | |
|         lib_path = os.path.join(sdk['path'], 'lib', 'linux32', 'release', 'libprotobuf.a')
 | |
|       elif compiler.target.arch == 'x86_64':
 | |
|         lib_path = os.path.join(sdk['path'], 'lib', 'linux64', 'release', 'libprotobuf.a')
 | |
|       compiler.linkflags += ['-Wl,--exclude-libs=libprotobuf.a']
 | |
|     elif compiler.target.platform == 'mac':
 | |
|       if compiler.target.arch == 'x86':
 | |
|         lib_path = os.path.join(sdk['path'], 'lib', 'osx32', 'release', 'libprotobuf.a')
 | |
|       elif compiler.target.arch == 'x86_64':
 | |
|         lib_path = os.path.join(sdk['path'], 'lib', 'osx64', 'release', 'libprotobuf.a')
 | |
|     elif compiler.target.platform == 'windows':
 | |
|       msvc_ver = compiler.version
 | |
|       vs_year = ''
 | |
|       platform = ''
 | |
|       if compiler.target.arch == 'x86':
 | |
|         platform = 'win32'
 | |
|       elif compiler.target.arch == 'x86_64':
 | |
|         platform = 'win64'
 | |
|       
 | |
|       if 1900 <= msvc_ver < 2000:
 | |
|         vs_year = '2015'
 | |
|       else:
 | |
|         raise Exception('Cannot find libprotobuf for MSVC version "' + str(compiler.version) + '"')
 | |
| 
 | |
|       if 'DEBUG' in compiler.defines:
 | |
|         lib_path = os.path.join(sdk['path'], 'lib', platform, 'debug', 'vs' + vs_year, 'libprotobuf.lib')
 | |
|       else:
 | |
|         lib_path = os.path.join(sdk['path'], 'lib', platform, 'release', 'vs' + vs_year, 'libprotobuf.lib')
 | |
|     compiler.linkflags.insert(0, lib_path)
 | |
| 
 | |
|   if needs_protobuf:
 | |
|     binary.sources += ['smn_protobuf.cpp']
 | |
|   else:
 | |
|     binary.sources += ['smn_bitbuffer.cpp']
 | |
| 
 | |
|   if sdk['name'] != 'blade':
 | |
|     binary.sources += [
 | |
|       'vprof_tool.cpp',
 | |
|     ]
 | |
| 
 | |
|   if needs_protobuf:
 | |
|     binary.sources += [
 | |
|       os.path.join(sdk['path'], 'public', 'engine', 'protobuf', 'netmessages.pb.cc'),
 | |
|       os.path.join(sdk['path'], 'public', 'game', 'shared', pb_gamedir_map[sdk['name']], 'protobuf', pb_gamesrcdir_map[sdk['name']] + '_usermessages.pb.cc'),
 | |
|       os.path.join(sdk['path'], 'public', 'game', 'shared', pb_gamedir_map[sdk['name']], 'protobuf', pb_gamesrcdir_map[sdk['name']] + '_usermessage_helpers.cpp'),
 | |
|     ]
 | |
|     if sdk['name'] == 'mcv':
 | |
|       binary.sources += [
 | |
|         os.path.join(sdk['path'], 'public', 'game', 'shared', pb_gamedir_map[sdk['name']], 'protobuf', pb_gamesrcdir_map[sdk['name']] + '_gcmessages.pb.cc'),
 | |
|         os.path.join(sdk['path'], 'public', 'engine', 'protobuf', 'engine_gcmessages.pb.cc'),
 | |
|       ]
 | |
| 
 | |
| SM.binaries += builder.Add(project)
 | |
| 
 |