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

for cxx in MMS.all_targets:
  name = 'test_sourcehook'
  binary = MMS.Program(cxx, name)
  if binary.compiler.target.platform == 'windows':
    continue
  if binary.compiler.target.arch == 'x86_64' and binary.compiler.target.platform == 'linux':
    continue

  binary.compiler.defines += [
    'SOURCEHOOK_TESTS',
  ]

  binary.compiler.cxxincludes += [
    os.path.join(builder.sourcePath, 'core'),
    os.path.join(builder.sourcePath, 'core', 'sourcehook'),
  ]
  if binary.compiler.version >= 'gcc-4.9':
    binary.compiler.cxxflags += ['-fno-devirtualize']
  if binary.compiler.version >= 'clang-2.9' or binary.compiler.version >= 'apple-clang-3.0':
    binary.compiler.cxxflags += ['-Wno-null-dereference']

  binary.sources += [
    'main.cpp',
    '../sourcehook.cpp',
    '../sourcehook_impl_chookmaninfo.cpp',
    '../sourcehook_impl_chookidman.cpp',
    '../sourcehook_impl_cproto.cpp',
    '../sourcehook_impl_cvfnptr.cpp',
    '../sourcehook_hookmangen.cpp',
    'test1.cpp',
    'test2.cpp',
    'test3.cpp',
    'test4.cpp',
    'testbail.cpp',
    'testbail2.cpp',
    'testhookmangen.cpp',
    'testlist.cpp',
    'testmanual.cpp',
    'testmulti.cpp',
    'testoddthunks.cpp',
    'testrecall.cpp',
    'testreentr.cpp',
    'testref.cpp',
    'testrefret.cpp',
    'testvphooks.cpp',
  ]
  if cxx.target.arch == 'x86':
    binary.sources += ['../sourcehook_hookmangen_x86.cpp']
  elif binary.compiler.target.arch == 'x86_64':
    binary.sources += ['../sourcehook_hookmangen_x86_64.cpp']

  builder.Add(binary)
