core/AMBuilder
author Ruben Gonzalez <drifter01620@gmail.com>
Thu May 22 09:49:27 2014 -0400 (2014-05-22)
changeset 4378 568f4497ef4a
parent 4265 4e7e7b18ae2b
permissions -rw-r--r--
Update CS:GO team score gamedata.
     1 # vim: set sts=2 ts=8 sw=2 tw=99 et ft=python: 
     2 import os
     3 
     4 for sdk_name in SM.sdks:
     5   sdk = SM.sdks[sdk_name]
     6   binary_name = 'sourcemod.' + sdk.ext
     7 
     8   binary = SM.HL2Library(builder, binary_name, sdk)
     9   compiler = binary.compiler
    10 
    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')
    19     ]
    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')
    26     ]
    27 
    28   if builder.target_platform == 'linux':
    29     compiler.postlink += ['-lpthread', '-lrt']
    30 
    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)
    38       vs_year = ''
    39       if msvc_ver == 1800:
    40         vs_year = '2013'
    41       elif msvc_ver == 1700:
    42         vs_year = '2012'
    43       elif msvc_ver == 1600:
    44         vs_year = '2010'
    45       else:
    46         raise Exception('Cannot find libprotobuf for MSVC version "' + compiler.cxx.version + '"')
    47 
    48       if 'DEBUG' in compiler.defines:
    49         lib_path = os.path.join(sdk.path, 'lib', 'win32', 'debug', 'vs' + vs_year, 'libprotobuf.lib')
    50       else:
    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))
    53 
    54   binary.sources += [
    55     'AdminCache.cpp',
    56     'MenuStyle_Valve.cpp',
    57     'logic_bridge.cpp',
    58     'smn_entities.cpp',
    59     'sm_stringutil.cpp',
    60     'MenuVoting.cpp',
    61     'smn_events.cpp',
    62     'smn_menus.cpp',
    63     'sm_trie.cpp',
    64     'CDataPack.cpp',
    65     'frame_hooks.cpp',
    66     'smn_nextmap.cpp',
    67     'sourcemm_api.cpp',
    68     'ChatTriggers.cpp',
    69     'smn_player.cpp',
    70     'sourcemod.cpp',
    71     'concmd_cleaner.cpp',
    72     'HalfLife2.cpp',
    73     'NextMap.cpp',
    74     'ConCmdManager.cpp',
    75     'ConVarManager.cpp',
    76     'LibrarySys.cpp',
    77     'PlayerManager.cpp',
    78     'TimerSys.cpp',
    79     'CoreConfig.cpp',
    80     'Logger.cpp',
    81     'smn_halflife.cpp',
    82     'smn_console.cpp',
    83     'UserMessages.cpp',
    84     'MenuManager.cpp',
    85     'smn_core.cpp',
    86     'smn_hudtext.cpp',
    87     'smn_usermsgs.cpp',
    88     'MenuStyle_Base.cpp',
    89     'smn_keyvalues.cpp',
    90     'smn_vector.cpp',
    91     'EventManager.cpp',
    92     'MenuStyle_Radio.cpp',
    93     'sm_autonatives.cpp',
    94     'sm_srvcmds.cpp',
    95     'ConsoleDetours.cpp'
    96   ]
    97   
    98   if sdk.name in ['csgo', 'dota']:
    99     binary.sources += ['smn_protobuf.cpp']
   100   else:
   101     binary.sources += ['smn_bitbuffer.cpp']
   102 
   103   if sdk.name == 'csgo':
   104     binary.sources += [
   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'),
   108     ]
   109   elif sdk.name == 'dota':
   110     binary.sources += [
   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'),
   118     ]
   119 
   120   SM.binaries += [builder.Add(binary)]
   121