# -*- python -*-
from waflib import Options

def options(opt): pass

def configure(conf): pass

def make_test(bld, src, use):
  bld.program(
    features = 'gtest',
    source = src,
    target = src[0:src.rindex('.')],
    use = use,
    )

def make_tests(bld, srcs, use):
  for src in srcs:
    make_test(bld, src, use)

def build(bld):
  source = [
      'storage_factory.cpp',
      'storage_base.cpp',
      'local_storage.cpp',
      'local_storage_mixture.cpp',
      'sparse_matrix_storage.cpp',
      'inverted_index_storage.cpp',
      'column_table.cpp',
      'bit_index_storage.cpp',
      'labels.cpp',
      'lsh_vector.cpp',
      'lsh_util.cpp',
      'lsh_index_storage.cpp',
      'bit_vector.cpp'
  ]
  headers = [
      'abstract_column.hpp',
      'bit_index_storage.hpp',
      'bit_vector.hpp',
      'column_table.hpp',
      'column_type.hpp',
      'fixed_size_heap.hpp',
      'inverted_index_storage.hpp',
      'labels.hpp',
      'local_storage.hpp',
      'local_storage_mixture.hpp',
      'lsh_index_storage.hpp',
      'lsh_util.hpp',
      'lsh_vector.hpp',
      'owner.hpp',
      'recommender_storage_base.hpp',
      'row_deleter.hpp',
      'sparse_matrix_storage.hpp',
      'storage_base.hpp',
      'storage_exception.hpp',
      'storage_factory.hpp',
      'storage_type.hpp',
  ]
  use = ['jubatus_util', 'MSGPACK']

  bld.core_sources.extend(bld.add_prefix(source))
  bld.core_headers.extend(bld.add_prefix(headers))
  bld.core_use.extend(use)

  make_tests(bld, [
      'storage_test.cpp',
      'storage_factory_test.cpp',
      'local_storage_mixture_test.cpp',
      'sparse_matrix_storage_test.cpp',
      'fixed_size_heap_test.cpp',
      'inverted_index_storage_test.cpp',
      'labels_test.cpp',
      'lsh_vector_test.cpp',
      'lsh_util_test.cpp',
      'lsh_index_storage_test.cpp',
      'bit_vector_test.cpp',
      'bit_index_storage_test.cpp',
      'storage_type_test.cpp',
      ], ['jubatus_util', 'jubatus_core'])

