core/AMBuilder
author Peace-Maker <januk@freenet.de>
Wed Apr 23 08:55:09 2014 -0400 (2014-04-23)
changeset 4330 98726cea1607
parent 4265 4e7e7b18ae2b
permissions -rw-r--r--
Mark CS:S as supporting HudMsg (bug 6108, r=psychonic).
dvander@4182
     1
# vim: set sts=2 ts=8 sw=2 tw=99 et ft=python: 
dvander@2784
     2
import os
dvander@2784
     3
dvander@4182
     4
for sdk_name in SM.sdks:
dvander@4182
     5
  sdk = SM.sdks[sdk_name]
dvander@4182
     6
  binary_name = 'sourcemod.' + sdk.ext
dvander@4182
     7
dvander@4182
     8
  binary = SM.HL2Library(builder, binary_name, sdk)
dvander@4182
     9
  compiler = binary.compiler
skamonkey@3743
    10
ds@4241
    11
  if sdk.name == 'csgo':
dvander@4182
    12
    # Protobuf 2.3 headers have some signed/unsigned compares. I believe that it's fixed in later versions, but Valve.
ds@4241
    13
    if compiler.cxx.behavior == 'gcc':
dvander@4182
    14
      compiler.cflags += ['-Wno-sign-compare']
dvander@4182
    15
    compiler.cxxincludes += [
dvander@4182
    16
      os.path.join(sdk.path, 'common', 'protobuf-2.3.0', 'src'),
dvander@4182
    17
      os.path.join(sdk.path, 'public', 'engine', 'protobuf'),
dvander@4182
    18
      os.path.join(sdk.path, 'public', 'game', 'shared', 'csgo', 'protobuf')
dvander@4182
    19
    ]
ds@4241
    20
  elif sdk.name == 'dota':
dvander@4182
    21
    compiler.cxxincludes += [
dvander@4182
    22
      os.path.join(sdk.path, 'common', 'protobuf-2.4.1', 'src'),
dvander@4182
    23
      os.path.join(sdk.path, 'public', 'engine', 'protobuf'),
dvander@4182
    24
      os.path.join(sdk.path, 'public', 'game', 'shared', 'protobuf'),
dvander@4182
    25
      os.path.join(sdk.path, 'public', 'game', 'shared', 'dota', 'protobuf')
dvander@4182
    26
    ]
dvander@4027
    27
ds@4241
    28
  if builder.target_platform == 'linux':
dvander@4182
    29
    compiler.postlink += ['-lpthread', '-lrt']
dvander@4182
    30
ds@4241
    31
  if sdk.name == 'csgo' or sdk.name == 'dota':
ds@4241
    32
    if builder.target_platform == 'linux':
dvander@4182
    33
      lib_path = os.path.join(sdk.path, 'lib', 'linux32', 'release', 'libprotobuf.a')
ds@4241
    34
    elif builder.target_platform == 'mac':
dvander@4182
    35
      lib_path = os.path.join(sdk.path, 'lib', 'osx32', 'release', 'libprotobuf.a')
ds@4241
    36
    elif builder.target_platform == 'windows':
skamonkey@4265
    37
      msvc_ver = int(compiler.cxx.version)
skamonkey@4265
    38
      vs_year = ''
skamonkey@4265
    39
      if msvc_ver == 1800:
skamonkey@4265
    40
        vs_year = '2013'
skamonkey@4265
    41
      elif msvc_ver == 1700:
skamonkey@4265
    42
        vs_year = '2012'
skamonkey@4265
    43
      elif msvc_ver == 1600:
skamonkey@4265
    44
        vs_year = '2010'
skamonkey@4265
    45
      else:
skamonkey@4265
    46
        raise Exception('Cannot find libprotobuf for MSVC version "' + compiler.cxx.version + '"')
skamonkey@4265
    47
dvander@4182
    48
      if 'DEBUG' in compiler.defines:
skamonkey@4265
    49
        lib_path = os.path.join(sdk.path, 'lib', 'win32', 'debug', 'vs' + vs_year, 'libprotobuf.lib')
dvander@4182
    50
      else:
skamonkey@4265
    51
        lib_path = os.path.join(sdk.path, 'lib', 'win32', 'release', 'vs' + vs_year, 'libprotobuf.lib')
dvander@4182
    52
    compiler.linkflags.insert(0, binary.Dep(lib_path))
skamonkey@3743
    53
dvander@4182
    54
  binary.sources += [
dvander@4182
    55
    'AdminCache.cpp',
dvander@4182
    56
    'MenuStyle_Valve.cpp',
dvander@4182
    57
    'logic_bridge.cpp',
dvander@4182
    58
    'smn_entities.cpp',
dvander@4182
    59
    'sm_stringutil.cpp',
dvander@4182
    60
    'MenuVoting.cpp',
dvander@4182
    61
    'smn_events.cpp',
dvander@4182
    62
    'smn_menus.cpp',
dvander@4182
    63
    'sm_trie.cpp',
dvander@4182
    64
    'CDataPack.cpp',
dvander@4182
    65
    'frame_hooks.cpp',
dvander@4182
    66
    'smn_nextmap.cpp',
dvander@4182
    67
    'sourcemm_api.cpp',
dvander@4182
    68
    'ChatTriggers.cpp',
dvander@4182
    69
    'smn_player.cpp',
dvander@4182
    70
    'sourcemod.cpp',
dvander@4182
    71
    'concmd_cleaner.cpp',
dvander@4182
    72
    'HalfLife2.cpp',
dvander@4182
    73
    'NextMap.cpp',
dvander@4182
    74
    'ConCmdManager.cpp',
dvander@4182
    75
    'ConVarManager.cpp',
dvander@4182
    76
    'LibrarySys.cpp',
dvander@4182
    77
    'PlayerManager.cpp',
dvander@4182
    78
    'TimerSys.cpp',
dvander@4182
    79
    'CoreConfig.cpp',
dvander@4182
    80
    'Logger.cpp',
dvander@4182
    81
    'smn_halflife.cpp',
dvander@4182
    82
    'smn_console.cpp',
dvander@4182
    83
    'UserMessages.cpp',
dvander@4182
    84
    'MenuManager.cpp',
dvander@4182
    85
    'smn_core.cpp',
dvander@4182
    86
    'smn_hudtext.cpp',
dvander@4182
    87
    'smn_usermsgs.cpp',
dvander@4182
    88
    'MenuStyle_Base.cpp',
dvander@4182
    89
    'smn_keyvalues.cpp',
dvander@4182
    90
    'smn_vector.cpp',
dvander@4182
    91
    'EventManager.cpp',
dvander@4182
    92
    'MenuStyle_Radio.cpp',
dvander@4182
    93
    'sm_autonatives.cpp',
dvander@4182
    94
    'sm_srvcmds.cpp',
dvander@4182
    95
    'ConsoleDetours.cpp'
dvander@4182
    96
  ]
dvander@4182
    97
  
dvander@4182
    98
  if sdk.name in ['csgo', 'dota']:
dvander@4182
    99
    binary.sources += ['smn_protobuf.cpp']
dvander@4182
   100
  else:
dvander@4182
   101
    binary.sources += ['smn_bitbuffer.cpp']
skamonkey@3743
   102
ds@4241
   103
  if sdk.name == 'csgo':
dvander@4182
   104
    binary.sources += [
dvander@4182
   105
      os.path.join(sdk.path, 'public', 'engine', 'protobuf', 'netmessages.pb.cc'),
dvander@4182
   106
      os.path.join(sdk.path, 'public', 'game', 'shared', 'csgo', 'protobuf', 'cstrike15_usermessages.pb.cc'),
dvander@4182
   107
      os.path.join(sdk.path, 'public', 'game', 'shared', 'csgo', 'protobuf', 'cstrike15_usermessage_helpers.cpp'),
dvander@4182
   108
    ]
ds@4241
   109
  elif sdk.name == 'dota':
dvander@4182
   110
    binary.sources += [
dvander@4182
   111
      os.path.join(sdk.path, 'public', 'engine', 'protobuf', 'networkbasetypes.pb.cc'),
dvander@4182
   112
      os.path.join(sdk.path, 'public', 'engine', 'protobuf', 'netmessages.pb.cc'),
dvander@4182
   113
      os.path.join(sdk.path, 'public', 'game', 'shared', 'protobuf', 'ai_activity.pb.cc'),
dvander@4182
   114
      os.path.join(sdk.path, 'public', 'game', 'shared', 'protobuf', 'usermessages.pb.cc'),
dvander@4182
   115
      os.path.join(sdk.path, 'public', 'game', 'shared', 'dota', 'protobuf', 'dota_commonmessages.pb.cc'),
dvander@4182
   116
      os.path.join(sdk.path, 'public', 'game', 'shared', 'dota', 'protobuf', 'dota_usermessages.pb.cc'),
dvander@4182
   117
      os.path.join(sdk.path, 'public', 'game', 'shared', 'dota', 'protobuf', 'dota_usermessage_helpers.cpp'),
dvander@4182
   118
    ]
skamonkey@3743
   119
dvander@4182
   120
  SM.binaries += [builder.Add(binary)]
skamonkey@3743
   121