subdirs = [
  'lang',
  'concurrent',
  'system',
  'data',
  'math',
  'text',
  ]

def options(opt):
  pass

def configure(conf):
  env = conf.env
  env.append_unique('CXXFLAGS', ['-O2', '-Wall', '-g', '-pipe', '-D_REENTRANT', '-fno-omit-frame-pointer'])
  ver = env.CC_VERSION
  if env.COMPILER_CXX != 'g++' or int(ver[0]) < 4 or (int(ver[0]) == 4 and int(ver[1]) < 6):
    env.append_unique('CXXFLAGS', '-D_FORTIFY_SOURCE=1')

  env.HPREFIX = env.PREFIX + '/include/jubatus/util'
  conf.check_cxx(lib = 'pthread')

  conf.env.stash()
  try:
    for x in [y.split('=') for y in conf.env.DEFINES]:
      conf.env.define_key.remove(x[0])

    conf.recurse(subdirs)
    conf.write_config_header('util-config.h', guard = 'JUBATUS_UTIL_PFI_CONFIG_H_')
  finally:
    env.revert()

def build(bld):
  b = bld.shlib(
    source = 'empty.cpp',
    target = 'jubatus_util',
    vnum = bld.env['VERSION'],
    use = [
      'core_headers',
      'jubatus_util_concurrent',
      'jubatus_util_data',
      'jubatus_util_lang',
      'jubatus_util_math',
      'jubatus_util_system',
      'jubatus_util_text',
      ])
  bld.install_files('${HPREFIX}/', ['util-config.h'])

  bld.recurse(subdirs)
