def options(opt):
  pass

def configure(conf):
  pass

def build(bld):
  if not bld.is_defined('JUBATUS_DISABLE_ASSERTIONS'):
    libassert = " LIBGLOG"
  else:
    libassert = ""

  bld.shlib(
    source = [
      'mixable_versioned_table.cpp',
      'linear_function_mixer.cpp',
      ],
    target = 'jubatus_mixables',
    includes = '.',
    use = 'jubatus_util MSGPACK jubastorage jubatus_column_table'+libassert
    )

  source = [
      'classifier.cpp',
      'regression.cpp',
      'recommender.cpp',
      'stat.cpp',
      'anomaly.cpp',
      'graph.cpp',
      'nearest_neighbor.cpp',
      'clustering.cpp',
      ]

  bld.shlib(
    source = source,
    target = 'jubatus_driver',
    includes = '.',
    use = 'jubatus_util jubacommon MSGPACK jubaconverter jubastorage jubatus_classifier jubatus_regression jubatus_recommender jubatus_stat jubatus_anomaly jubatus_graph jubatus_clustering jubatus_mixables'+libassert
    )

  def make_test(t):
    bld.program(
      features='gtest',
      source=t + '.cpp',
      target=t,
      includes='.',
      use='jubatus_driver'+libassert
      )

  tests = [
    'linear_function_mixer_test',
    'anomaly_test',
    'classifier_test',
    'graph_test',
    'regression_test',
    'recommender_test',
    'stat_test',
    'nearest_neighbor_test',
    ]

  for t in tests:
    make_test(t)

  bld.install_files('${PREFIX}/include/jubatus/core/driver', [
      'classifier.hpp',
      'regression.hpp',
      'recommender.hpp',
      'stat.hpp',
      'anomaly.hpp',
      'graph.hpp',
      'diffv.hpp',
      'linear_function_mixer.hpp',
      'mixable_versioned_table.hpp',
      'nearest_neighbor.hpp',
      ])
