# vim: set sts=2 ts=8 sw=2 tw=99 et ft=python:
import os

project = builder.LibraryProject('sdktools.ext')
project.sources += [
  'extension.cpp',
  'variant-t.cpp',
  'inputnatives.cpp',
  'output.cpp',
  'outputnatives.cpp',
  'tempents.cpp',
  'tenatives.cpp',
  'teamnatives.cpp',
  'trnatives.cpp',
  'vcaller.cpp',
  'vcallbuilder.cpp',
  'vdecoder.cpp',
  'vglobals.cpp',
  'vhelpers.cpp',
  'vnatives.cpp',
  'voice.cpp',
  'vsound.cpp',
  'clientnatives.cpp',
  'hooks.cpp',
  'gamerulesnatives.cpp',
  'vstringtable.cpp',
  '../../public/smsdk_ext.cpp'
]

for sdk_name in SM.sdks:
  sdk = SM.sdks[sdk_name]
  if sdk['name'] in ['mock']:
    continue

  for cxx in builder.targets:
    if not cxx.target.arch in sdk['platforms'][cxx.target.platform]:
      continue

    binary = SM.HL2ExtConfig(project, builder, cxx, 'sdktools.ext.' + sdk['extension'], sdk)
    SM.AddCDetour(binary)
    
    binary.compiler.cxxincludes += [
      os.path.join(builder.sourcePath, 'public', 'jit'),
      os.path.join(builder.sourcePath, 'public', 'jit', 'x86'),
    ]

    if sdk['name'] in ('episode1', 'darkm'):
      binary.compiler.cxxincludes += [os.path.join(sdk['path'], 'game_shared')]
      binary.compiler.cxxincludes += [os.path.join(sdk['path'], 'dlls')]
    else:
      binary.compiler.cxxincludes += [
        os.path.join(sdk['path'], 'game', 'shared'),
        os.path.join(sdk['path'], 'game', 'server'),
      ]

    #binary.sources += [os.path.join(builder.options.hl2sdk_root, sdk['path'], 'game', 'server', 'variant_t.cpp')]

    binary.compiler.defines += ['HAVE_STRING_H']

    if sdk['name'] != 'episode1':
      binary.compiler.defines += ['HOOKING_ENABLED']

    if binary.compiler.behavior == 'gcc':
      binary.compiler.cxxflags += ['-Wno-invalid-offsetof']

SM.extensions += builder.Add(project)