# vim: set sts=2 ts=8 sw=2 tw=99 et ft=python: import os project = SM.HL2Project(builder, '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', 'vprof_tool.cpp', 'smn_commandline.cpp', 'GameHooks.cpp', ] for sdk_name in SM.sdks: sdk = SM.sdks[sdk_name] for arch in SM.archs: if not arch in sdk.platformSpec[builder.target.platform]: continue binary_name = 'sourcemod.' + sdk.ext binary = SM.HL2Config(project, binary_name, sdk, arch) compiler = binary.compiler compiler.cxxincludes += [ builder.sourcePath ] if sdk.name == 'csgo': 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', 'csgo', 'protobuf') ] if compiler.like('msvc'): compiler.defines += ['_ALLOW_KEYWORD_MACROS'] if builder.target.platform == 'linux': compiler.postlink += ['-lpthread', '-lrt'] if sdk.name == 'csgo': if builder.target.platform == 'linux': if arch == 'x86': lib_path = os.path.join(sdk.path, 'lib', 'linux32', 'release', 'libprotobuf.a') elif arch == 'x64': lib_path = os.path.join(sdk.path, 'lib', 'linux64', 'release', 'libprotobuf.a') compiler.linkflags += ['-Wl,--exclude-libs=libprotobuf.a'] elif builder.target.platform == 'mac': if arch == 'x86': lib_path = os.path.join(sdk.path, 'lib', 'osx32', 'release', 'libprotobuf.a') elif arch == 'x64': lib_path = os.path.join(sdk.path, 'lib', 'osx64', 'release', 'libprotobuf.a') elif builder.target.platform == 'windows': msvc_ver = compiler.version vs_year = '' if msvc_ver == 1800: vs_year = '2013' elif 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', 'win32', 'debug', 'vs' + vs_year, 'libprotobuf.lib') else: lib_path = os.path.join(sdk.path, 'lib', 'win32', 'release', 'vs' + vs_year, 'libprotobuf.lib') compiler.linkflags.insert(0, binary.Dep(lib_path)) if sdk.name == 'csgo': 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'), ] SM.binaries += builder.Add(project)