# Copyright (C) 2011 Codership Oy <info@codership.com>

env = DefaultEnvironment() #.Clone()

conf = Configure(env)

if not conf.CheckLibWithHeader(libs=['boost_program_options'],
                               header='boost/program_options.hpp',
                               language='CXX',
                               autoadd=0):
    print 'Error: boost_program_options not found'
    Exit (1)

env.Prepend(LIBS=File('#/galerautils/src/libgalerautils.a'))
env.Prepend(LIBS=File('#/galerautils/src/libgalerautils++.a'))
env.Prepend(LIBS=File('#/gcomm/src/libgcomm.a'))
env.Prepend(LIBS=File('#/gcs/src/libgcs4garb.a'))

# Add libboost_program_options to garbd environment.
garbd_env = env.Clone()

Import('BPO_STATIC', 'BPO_STATIC')

bpo_static = '/usr/lib/libboost_program_options.a'
bpo_local_static = '/usr/local/lib/libboost_program_options.a'

import os

if BPO_STATIC != '':
    if os.path.isfile(BPO_STATIC):
        garbd_env.Append(LIBS=File(BPO_STATIC))
    else:
        print "Error: Specified library `%s' does not exist" % (BPO_STATIC)
        Exit (1)

elif os.path.isfile(bpo_static):
    garbd_env.Append(LIBS=File(bpo_static))
elif os.path.isfile(bpo_local_static):
    garbd_env.Append(LIBS=File(bpo_local_static))
else:
    garbd_env.Append(LIBS=['boost_program_options'])

# special environment for garb_config.cpp
conf_env = env.Clone()
Import('GALERA_VER', 'GALERA_REV')
conf_env.Append(CPPFLAGS = ' -DGALERA_VER=\\"' + GALERA_VER + '\\"')
conf_env.Append(CPPFLAGS = ' -DGALERA_REV=\\"' + GALERA_REV + '\\"')

garb = garbd_env.Program(target = 'garbd',
                   source = Split('''
                                  garb_logger.cpp
                                  garb_gcs.cpp
                                  garb_recv_loop.cpp
                                  garb_main.cpp
                              ''')
                              +
                              conf_env.SharedObject(['garb_config.cpp'])
                   )

