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

for cxx in builder.targets:
  arch = cxx.target.arch
  binary = SM.ExtLibrary(builder, cxx, 'dbi.pgsql.ext')
  compiler = binary.compiler
  compiler.cxxincludes += [
    os.path.join(SM.mms_root, 'core', 'sourcehook')
  ]
  if compiler.family == 'gcc' or compiler.family == 'clang':
    compiler.cxxflags += ['-fno-rtti']
  elif compiler.family == 'msvc':
    compiler.cxxflags += ['/GR-']

  if compiler.target.platform == 'linux' or compiler.target.platform == 'mac':
    compiler.postlink += [
      '-lz',
      '-lpthread',
      '-lm'
    ]
  if compiler.target.platform == 'linux':
    if arch == 'x86':
      path = os.path.join(builder.sourcePath, 'extensions', 'pgsql', 'lib_linux')
    elif arch == 'x86_64':
      path = os.path.join(builder.sourcePath, 'extensions', 'pgsql', 'lib_linux64')
    compiler.postlink += [
      os.path.join(path, 'libpq.a'),
      '-lrt'
    ]
  elif compiler.target.platform == 'windows':
    if arch == 'x86':
      path = os.path.join(builder.sourcePath, 'extensions', 'pgsql', 'lib_win')
    elif arch == 'x86_64':
      path = os.path.join(builder.sourcePath, 'extensions', 'pgsql', 'lib_win64')
    compiler.postlink += [
      os.path.join(path, 'libpq.lib'),
      'wsock32.lib',
      'ws2_32.lib',
      'secur32.lib'
    ]
  elif compiler.target.platform == 'mac':
    if arch == 'x86':
      path = os.path.join(builder.sourcePath, 'extensions', 'pgsql', 'lib_darwin')
    elif arch == 'x86_64':
      path = os.path.join(builder.sourcePath, 'extensions', 'pgsql', 'lib_darwin64')
    compiler.postlink += [
      os.path.join(path, 'libpq.a')
    ]

  compiler.cxxincludes += [path]

  binary.sources += [
    os.path.join('..', '..', 'public', 'smsdk_ext.cpp'),
    os.path.join('pgsql', 'PgBasicResults.cpp'),
    os.path.join('pgsql', 'PgDatabase.cpp'),
    os.path.join('pgsql', 'PgDriver.cpp'),
    os.path.join('pgsql', 'PgStatement.cpp'),
    'extension.cpp'
  ]
  SM.extensions += [builder.Add(binary)]