dvander@2784: # vim: set ts=2 sw=2 tw=99 noet ft=python: dvander@2784: import os skamonkey@3743: from ambuild.command import SymlinkCommand dvander@2784: dvander@2784: for i in SM.sdkInfo: dvander@2784: sdk = SM.sdkInfo[i] ds@2990: if AMBuild.target['platform'] not in sdk['platform']: ds@2990: continue ds@2990: dvander@2784: name = 'sourcemod.' + sdk['ext'] dvander@2784: dvander@2784: compiler = SM.DefaultHL2Compiler('core', i) dvander@2784: skamonkey@3743: if i == 'csgo': skamonkey@3745: # Protobuf 2.3 headers have some signed/unsigned compares. I believe that it's fixed in later versions, but Valve. skamonkey@3745: if isinstance(compiler.cxx, Cpp.CompatGCC): skamonkey@3745: compiler.AddToListVar('CFLAGS', '-Wno-sign-compare') skamonkey@3743: compiler['CXXINCLUDES'].append(os.path.join(AMBuild.cache[sdk['sdk']], 'common', 'protobuf-2.3.0', 'src')) skamonkey@3743: compiler['CXXINCLUDES'].append(os.path.join(AMBuild.cache[sdk['sdk']], 'public', 'engine', 'protobuf')) skamonkey@3743: compiler['CXXINCLUDES'].append(os.path.join(AMBuild.cache[sdk['sdk']], 'public', 'game', 'shared', 'csgo', 'protobuf')) skamonkey@3856: elif i == 'dota': skamonkey@3856: compiler['CXXINCLUDES'].append(os.path.join(AMBuild.cache[sdk['sdk']], 'common', 'protobuf-2.4.1', 'src')) skamonkey@3856: compiler['CXXINCLUDES'].append(os.path.join(AMBuild.cache[sdk['sdk']], 'public', 'engine', 'protobuf')) skamonkey@3856: compiler['CXXINCLUDES'].append(os.path.join(AMBuild.cache[sdk['sdk']], 'public', 'game', 'shared', 'protobuf')) skamonkey@3856: compiler['CXXINCLUDES'].append(os.path.join(AMBuild.cache[sdk['sdk']], 'public', 'game', 'shared', 'dota', 'protobuf')) skamonkey@3743: dvander@2784: extension = AMBuild.AddJob(name) dvander@2784: binary = Cpp.LibraryBuilder(name, AMBuild, extension, compiler) dvander@2784: SM.PreSetupHL2Job(extension, binary, i) skamonkey@3743: skamonkey@3856: if i in ['csgo', 'dota']: skamonkey@3743: if AMBuild.target['platform'] == 'linux': skamonkey@3743: link = os.path.join(os.path.join(AMBuild.outputFolder, extension.workFolder), 'libprotobuf.a') skamonkey@3743: target = os.path.join(os.path.join(AMBuild.cache[sdk['sdk']], 'lib', 'linux32', 'release'), 'libprotobuf.a') skamonkey@3743: try: skamonkey@3743: os.lstat(link) skamonkey@3743: except: skamonkey@3743: extension.AddCommand(SymlinkCommand(link, target)) skamonkey@3743: elif AMBuild.target['platform'] == 'darwin': skamonkey@3743: link = os.path.join(os.path.join(AMBuild.outputFolder, extension.workFolder), 'libprotobuf.a') skamonkey@3743: target = os.path.join(os.path.join(AMBuild.cache[sdk['sdk']], 'lib', 'osx32', 'release'), 'libprotobuf.a') skamonkey@3743: try: skamonkey@3743: os.lstat(link) skamonkey@3743: except: skamonkey@3743: extension.AddCommand(SymlinkCommand(link, target)) skamonkey@3743: elif AMBuild.target['platform'] == 'windows': skamonkey@3981: if 'DEBUG' in compiler['CDEFINES']: skamonkey@3981: libPath = os.path.join(AMBuild.cache[sdk['sdk']], 'lib', 'win32', 'debug', 'vs2010', 'libprotobuf.lib') skamonkey@3981: else: skamonkey@3981: libPath = os.path.join(AMBuild.cache[sdk['sdk']], 'lib', 'win32', 'release', 'vs2010', 'libprotobuf.lib') skamonkey@3743: binary.RebuildIfNewer(libPath) skamonkey@3743: binary['POSTLINKFLAGS'].append(libPath) skamonkey@3743: dvander@2784: files = [ dvander@2784: 'AdminCache.cpp', dvander@2784: 'MenuStyle_Valve.cpp', dvander@2784: 'logic_bridge.cpp', dvander@2784: 'smn_entities.cpp', dvander@2784: 'sm_stringutil.cpp', dvander@2784: 'ADTFactory.cpp', dvander@2784: 'ForwardSys.cpp', dvander@2784: 'MenuVoting.cpp', dvander@2784: 'smn_events.cpp', dvander@2784: 'smn_menus.cpp', dvander@2784: 'sm_trie.cpp', dvander@2784: 'CDataPack.cpp', dvander@2784: 'frame_hooks.cpp', dvander@2784: 'smn_nextmap.cpp', dvander@2784: 'sourcemm_api.cpp', dvander@2784: 'ChatTriggers.cpp', dvander@2784: 'smn_player.cpp', dvander@2784: 'sourcemod.cpp', dvander@2784: 'concmd_cleaner.cpp', dvander@2784: 'HalfLife2.cpp', dvander@2784: 'NextMap.cpp', dvander@2784: 'ConCmdManager.cpp', dvander@2784: 'ConVarManager.cpp', dvander@2784: 'LibrarySys.cpp', dvander@2784: 'PlayerManager.cpp', dvander@2784: 'TimerSys.cpp', dvander@2784: 'CoreConfig.cpp', dvander@2784: 'Logger.cpp', dvander@2784: 'smn_halflife.cpp', dvander@2784: 'smn_console.cpp', dvander@2784: 'UserMessages.cpp', dvander@2784: 'Database.cpp', dvander@2784: 'MenuManager.cpp', dvander@2784: 'smn_core.cpp', dvander@2784: 'smn_hudtext.cpp', dvander@2784: 'smn_usermsgs.cpp', dvander@2784: 'MenuStyle_Base.cpp', dvander@2784: 'smn_database.cpp', dvander@2784: 'smn_keyvalues.cpp', dvander@2784: 'smn_vector.cpp', dvander@2784: 'EventManager.cpp', dvander@2784: 'MenuStyle_Radio.cpp', dvander@2784: 'sm_autonatives.cpp', dvander@2784: 'sm_srvcmds.cpp', dvander@2806: 'ConsoleDetours.cpp' dvander@2784: ] skamonkey@3743: skamonkey@3856: if i in ['csgo', 'dota']: skamonkey@3743: files.append('smn_protobuf.cpp') skamonkey@3743: else: skamonkey@3743: files.append('smn_bitbuffer.cpp') skamonkey@3743: dvander@2784: binary.AddSourceFiles('core', files) skamonkey@3743: skamonkey@3743: if i == 'csgo': skamonkey@3743: files = [ skamonkey@3743: os.path.join('public', 'engine', 'protobuf', 'netmessages.pb.cc'), skamonkey@3743: os.path.join('public', 'game', 'shared', 'csgo', 'protobuf', 'cstrike15_usermessages.pb.cc'), skamonkey@3743: os.path.join('public', 'game', 'shared', 'csgo', 'protobuf', 'cstrike15_usermessage_helpers.cpp'), skamonkey@3743: ] skamonkey@3743: binary.AddSourceFiles(AMBuild.cache[sdk['sdk']], files) skamonkey@3856: elif i == 'dota': skamonkey@3856: files = [ skamonkey@3925: os.path.join('public', 'engine', 'protobuf', 'networkbasetypes.pb.cc'), skamonkey@3856: os.path.join('public', 'engine', 'protobuf', 'netmessages.pb.cc'), skamonkey@3856: os.path.join('public', 'game', 'shared', 'protobuf', 'ai_activity.pb.cc'), skamonkey@3856: os.path.join('public', 'game', 'shared', 'protobuf', 'usermessages.pb.cc'), skamonkey@3856: os.path.join('public', 'game', 'shared', 'dota', 'protobuf', 'dota_commonmessages.pb.cc'), skamonkey@3856: os.path.join('public', 'game', 'shared', 'dota', 'protobuf', 'dota_usermessages.pb.cc'), skamonkey@3856: os.path.join('public', 'game', 'shared', 'dota', 'protobuf', 'dota_usermessage_helpers.cpp'), skamonkey@3856: ] skamonkey@3856: binary.AddSourceFiles(AMBuild.cache[sdk['sdk']], files) skamonkey@3743: dvander@2784: SM.PostSetupHL2Job(extension, binary, i) asherkin@3748: skamonkey@3856: if i in ['csgo', 'dota']: asherkin@3748: if AMBuild.target['platform'] in ['linux', 'darwin']: asherkin@3748: binary.AddObjectFiles(['libprotobuf.a']) asherkin@3748: dvander@2784: SM.AutoVersion('core', binary) asherkin@3835: SM.ExtractDebugInfo(extension, binary) dvander@2784: binary.SendToJob() asherkin@3477: