Add gamedata for EntityFactoryDictionary and IServer for Dota 2 on Linux (
bug 6068, r=psychonic).
1 # vim: set sts=2 ts=8 sw=2 tw=99 et ft=python:
4 for sdk_name in SM.sdks:
5 sdk = SM.sdks[sdk_name]
6 binary_name = 'sourcemod.' + sdk.ext
8 binary = SM.HL2Library(builder, binary_name, sdk)
9 compiler = binary.compiler
11 if sdk.name == 'csgo':
12 # Protobuf 2.3 headers have some signed/unsigned compares. I believe that it's fixed in later versions, but Valve.
13 if compiler.cxx.behavior == 'gcc':
14 compiler.cflags += ['-Wno-sign-compare']
15 compiler.cxxincludes += [
16 os.path.join(sdk.path, 'common', 'protobuf-2.3.0', 'src'),
17 os.path.join(sdk.path, 'public', 'engine', 'protobuf'),
18 os.path.join(sdk.path, 'public', 'game', 'shared', 'csgo', 'protobuf')
20 elif sdk.name == 'dota':
21 compiler.cxxincludes += [
22 os.path.join(sdk.path, 'common', 'protobuf-2.4.1', 'src'),
23 os.path.join(sdk.path, 'public', 'engine', 'protobuf'),
24 os.path.join(sdk.path, 'public', 'game', 'shared', 'protobuf'),
25 os.path.join(sdk.path, 'public', 'game', 'shared', 'dota', 'protobuf')
28 if builder.target_platform == 'linux':
29 compiler.postlink += ['-lpthread', '-lrt']
31 if sdk.name == 'csgo' or sdk.name == 'dota':
32 if builder.target_platform == 'linux':
33 lib_path = os.path.join(sdk.path, 'lib', 'linux32', 'release', 'libprotobuf.a')
34 elif builder.target_platform == 'mac':
35 lib_path = os.path.join(sdk.path, 'lib', 'osx32', 'release', 'libprotobuf.a')
36 elif builder.target_platform == 'windows':
37 msvc_ver = int(compiler.cxx.version)
41 elif msvc_ver == 1700:
43 elif msvc_ver == 1600:
46 raise Exception('Cannot find libprotobuf for MSVC version "' + compiler.cxx.version + '"')
48 if 'DEBUG' in compiler.defines:
49 lib_path = os.path.join(sdk.path, 'lib', 'win32', 'debug', 'vs' + vs_year, 'libprotobuf.lib')
51 lib_path = os.path.join(sdk.path, 'lib', 'win32', 'release', 'vs' + vs_year, 'libprotobuf.lib')
52 compiler.linkflags.insert(0, binary.Dep(lib_path))
56 'MenuStyle_Valve.cpp',
92 'MenuStyle_Radio.cpp',
98 if sdk.name in ['csgo', 'dota']:
99 binary.sources += ['smn_protobuf.cpp']
101 binary.sources += ['smn_bitbuffer.cpp']
103 if sdk.name == 'csgo':
105 os.path.join(sdk.path, 'public', 'engine', 'protobuf', 'netmessages.pb.cc'),
106 os.path.join(sdk.path, 'public', 'game', 'shared', 'csgo', 'protobuf', 'cstrike15_usermessages.pb.cc'),
107 os.path.join(sdk.path, 'public', 'game', 'shared', 'csgo', 'protobuf', 'cstrike15_usermessage_helpers.cpp'),
109 elif sdk.name == 'dota':
111 os.path.join(sdk.path, 'public', 'engine', 'protobuf', 'networkbasetypes.pb.cc'),
112 os.path.join(sdk.path, 'public', 'engine', 'protobuf', 'netmessages.pb.cc'),
113 os.path.join(sdk.path, 'public', 'game', 'shared', 'protobuf', 'ai_activity.pb.cc'),
114 os.path.join(sdk.path, 'public', 'game', 'shared', 'protobuf', 'usermessages.pb.cc'),
115 os.path.join(sdk.path, 'public', 'game', 'shared', 'dota', 'protobuf', 'dota_commonmessages.pb.cc'),
116 os.path.join(sdk.path, 'public', 'game', 'shared', 'dota', 'protobuf', 'dota_usermessages.pb.cc'),
117 os.path.join(sdk.path, 'public', 'game', 'shared', 'dota', 'protobuf', 'dota_usermessage_helpers.cpp'),
120 SM.binaries += [builder.Add(binary)]