core/AMBuilder
author David Anderson <dvander@alliedmods.net>
Mon Dec 30 17:50:56 2013 -0500 (2013-12-30)
changeset 4182 8ef93b2feddf
parent 4139 de7d1cd00703
child 4241 46fdb8cd9883
permissions -rw-r--r--
Port simple C++ build scripts to AMBuild 2 (bug 5997 part 1, r=ds).
     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 is '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 is '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 is '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 is 'linux':
    29     compiler.postlink += ['-lpthread', '-lrt']
    30 
    31   if sdk.name is 'csgo' or sdk.name is 'dota':
    32     if builder.target_platform is 'linux':
    33       lib_path = os.path.join(sdk.path, 'lib', 'linux32', 'release', 'libprotobuf.a')
    34     elif builder.target_platform is 'mac':
    35       lib_path = os.path.join(sdk.path, 'lib', 'osx32', 'release', 'libprotobuf.a')
    36     elif builder.target_platform is 'windows':
    37       if 'DEBUG' in compiler.defines:
    38         lib_path = os.path.join(sdk.path, 'lib', 'win32', 'debug', 'vs2010', 'libprotobuf.lib')
    39       else:
    40         lib_path = os.path.join(sdk.path, 'lib', 'win32', 'release', 'vs2010', 'libprotobuf.lib')
    41     compiler.linkflags.insert(0, binary.Dep(lib_path))
    42 
    43   binary.sources += [
    44     'AdminCache.cpp',
    45     'MenuStyle_Valve.cpp',
    46     'logic_bridge.cpp',
    47     'smn_entities.cpp',
    48     'sm_stringutil.cpp',
    49     'MenuVoting.cpp',
    50     'smn_events.cpp',
    51     'smn_menus.cpp',
    52     'sm_trie.cpp',
    53     'CDataPack.cpp',
    54     'frame_hooks.cpp',
    55     'smn_nextmap.cpp',
    56     'sourcemm_api.cpp',
    57     'ChatTriggers.cpp',
    58     'smn_player.cpp',
    59     'sourcemod.cpp',
    60     'concmd_cleaner.cpp',
    61     'HalfLife2.cpp',
    62     'NextMap.cpp',
    63     'ConCmdManager.cpp',
    64     'ConVarManager.cpp',
    65     'LibrarySys.cpp',
    66     'PlayerManager.cpp',
    67     'TimerSys.cpp',
    68     'CoreConfig.cpp',
    69     'Logger.cpp',
    70     'smn_halflife.cpp',
    71     'smn_console.cpp',
    72     'UserMessages.cpp',
    73     'MenuManager.cpp',
    74     'smn_core.cpp',
    75     'smn_hudtext.cpp',
    76     'smn_usermsgs.cpp',
    77     'MenuStyle_Base.cpp',
    78     'smn_keyvalues.cpp',
    79     'smn_vector.cpp',
    80     'EventManager.cpp',
    81     'MenuStyle_Radio.cpp',
    82     'sm_autonatives.cpp',
    83     'sm_srvcmds.cpp',
    84     'ConsoleDetours.cpp'
    85   ]
    86   
    87   if sdk.name in ['csgo', 'dota']:
    88     binary.sources += ['smn_protobuf.cpp']
    89   else:
    90     binary.sources += ['smn_bitbuffer.cpp']
    91 
    92   if sdk.name is 'csgo':
    93     binary.sources += [
    94       os.path.join(sdk.path, 'public', 'engine', 'protobuf', 'netmessages.pb.cc'),
    95       os.path.join(sdk.path, 'public', 'game', 'shared', 'csgo', 'protobuf', 'cstrike15_usermessages.pb.cc'),
    96       os.path.join(sdk.path, 'public', 'game', 'shared', 'csgo', 'protobuf', 'cstrike15_usermessage_helpers.cpp'),
    97     ]
    98   elif sdk.name is 'dota':
    99     binary.sources += [
   100       os.path.join(sdk.path, 'public', 'engine', 'protobuf', 'networkbasetypes.pb.cc'),
   101       os.path.join(sdk.path, 'public', 'engine', 'protobuf', 'netmessages.pb.cc'),
   102       os.path.join(sdk.path, 'public', 'game', 'shared', 'protobuf', 'ai_activity.pb.cc'),
   103       os.path.join(sdk.path, 'public', 'game', 'shared', 'protobuf', 'usermessages.pb.cc'),
   104       os.path.join(sdk.path, 'public', 'game', 'shared', 'dota', 'protobuf', 'dota_commonmessages.pb.cc'),
   105       os.path.join(sdk.path, 'public', 'game', 'shared', 'dota', 'protobuf', 'dota_usermessages.pb.cc'),
   106       os.path.join(sdk.path, 'public', 'game', 'shared', 'dota', 'protobuf', 'dota_usermessage_helpers.cpp'),
   107     ]
   108 
   109   SM.binaries += [builder.Add(binary)]
   110