# vim: set sts=2 ts=8 sw=2 tw=99 et ft=python: import os for sdk_name in SM.sdks: sdk = SM.sdks[sdk_name] binary_name = 'sourcemod.' + sdk.ext binary = SM.HL2Library(builder, binary_name, sdk) compiler = binary.compiler if sdk.name == 'csgo': # Protobuf 2.3 headers have some signed/unsigned compares. I believe that it's fixed in later versions, but Valve. if compiler.cxx.behavior == 'gcc': compiler.cflags += ['-Wno-sign-compare'] compiler.cxxincludes += [ os.path.join(sdk.path, 'common', 'protobuf-2.3.0', 'src'), os.path.join(sdk.path, 'public', 'engine', 'protobuf'), os.path.join(sdk.path, 'public', 'game', 'shared', 'csgo', 'protobuf') ] elif sdk.name == 'dota': compiler.cxxincludes += [ os.path.join(sdk.path, 'common', 'protobuf-2.4.1', 'src'), os.path.join(sdk.path, 'public', 'engine', 'protobuf'), os.path.join(sdk.path, 'public', 'game', 'shared', 'protobuf'), os.path.join(sdk.path, 'public', 'game', 'shared', 'dota', 'protobuf') ] if builder.target_platform == 'linux': compiler.postlink += ['-lpthread', '-lrt'] if sdk.name == 'csgo' or sdk.name == 'dota': if builder.target_platform == 'linux': lib_path = os.path.join(sdk.path, 'lib', 'linux32', 'release', 'libprotobuf.a') elif builder.target_platform == 'mac': lib_path = os.path.join(sdk.path, 'lib', 'osx32', 'release', 'libprotobuf.a') elif builder.target_platform == 'windows': if 'DEBUG' in compiler.defines: lib_path = os.path.join(sdk.path, 'lib', 'win32', 'debug', 'vs2010', 'libprotobuf.lib') else: lib_path = os.path.join(sdk.path, 'lib', 'win32', 'release', 'vs2010', 'libprotobuf.lib') compiler.linkflags.insert(0, binary.Dep(lib_path)) binary.sources += [ 'AdminCache.cpp', 'MenuStyle_Valve.cpp', 'logic_bridge.cpp', 'smn_entities.cpp', 'sm_stringutil.cpp', 'MenuVoting.cpp', 'smn_events.cpp', 'smn_menus.cpp', 'sm_trie.cpp', 'CDataPack.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', 'LibrarySys.cpp', 'PlayerManager.cpp', 'TimerSys.cpp', 'CoreConfig.cpp', 'Logger.cpp', 'smn_halflife.cpp', 'smn_console.cpp', 'UserMessages.cpp', 'MenuManager.cpp', 'smn_core.cpp', 'smn_hudtext.cpp', 'smn_usermsgs.cpp', 'MenuStyle_Base.cpp', 'smn_keyvalues.cpp', 'smn_vector.cpp', 'EventManager.cpp', 'MenuStyle_Radio.cpp', 'sm_autonatives.cpp', 'sm_srvcmds.cpp', 'ConsoleDetours.cpp' ] if sdk.name in ['csgo', 'dota']: binary.sources += ['smn_protobuf.cpp'] else: binary.sources += ['smn_bitbuffer.cpp'] if sdk.name == 'csgo': binary.sources += [ os.path.join(sdk.path, 'public', 'engine', 'protobuf', 'netmessages.pb.cc'), os.path.join(sdk.path, 'public', 'game', 'shared', 'csgo', 'protobuf', 'cstrike15_usermessages.pb.cc'), os.path.join(sdk.path, 'public', 'game', 'shared', 'csgo', 'protobuf', 'cstrike15_usermessage_helpers.cpp'), ] elif sdk.name == 'dota': binary.sources += [ os.path.join(sdk.path, 'public', 'engine', 'protobuf', 'networkbasetypes.pb.cc'), os.path.join(sdk.path, 'public', 'engine', 'protobuf', 'netmessages.pb.cc'), os.path.join(sdk.path, 'public', 'game', 'shared', 'protobuf', 'ai_activity.pb.cc'), os.path.join(sdk.path, 'public', 'game', 'shared', 'protobuf', 'usermessages.pb.cc'), os.path.join(sdk.path, 'public', 'game', 'shared', 'dota', 'protobuf', 'dota_commonmessages.pb.cc'), os.path.join(sdk.path, 'public', 'game', 'shared', 'dota', 'protobuf', 'dota_usermessages.pb.cc'), os.path.join(sdk.path, 'public', 'game', 'shared', 'dota', 'protobuf', 'dota_usermessage_helpers.cpp'), ] SM.binaries += [builder.Add(binary)]