# -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-

"""
Copyright (c) 2014-2016,  Regents of the University of California,
                          Arizona Board of Regents,
                          Colorado State University,
                          University Pierre & Marie Curie, Sorbonne University,
                          Washington University in St. Louis,
                          Beijing Institute of Technology,
                          The University of Memphis.

This file is part of NFD (Named Data Networking Forwarding Daemon).
See AUTHORS.md for complete list of NFD authors and contributors.

NFD is free software: you can redistribute it and/or modify it under the terms
of the GNU General Public License as published by the Free Software Foundation,
either version 3 of the License, or (at your option) any later version.

NFD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.  See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with
NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
"""

top = '../..'

def build(bld):
    for module, name in {"cs-benchmark": "CS Benchmark",
                         "pit-fib-benchmark": "PIT & FIB Benchmark"}.items():
        # main
        bld(target='unit-tests-%s-main' % module,
            name='unit-tests-%s-main' % module,
            features='cxx',
            source='../main.cpp',
            use='BOOST',
            defines=['BOOST_TEST_MODULE=%s' % name]
            )

        # module
        bld.program(target='../../%s' % module,
                    features='cxx cxxprogram',
                    source=bld.path.ant_glob(['%s*.cpp' % module]),
                    use='daemon-objects unit-tests-base unit-tests-%s-main' % module,
                    includes='.',
                    install_path=None,
                    defines=['UNIT_TEST_CONFIG_PATH=\"%s/tmp-files/\"' % bld.bldnode]
                    )

    # face-benchmark does not rely on Boost.Test
    bld.program(target='../../face-benchmark',
                features='cxx cxxprogram',
                source=bld.path.ant_glob(['face-benchmark*.cpp']),
                use='daemon-objects',
                includes='.',
                install_path=None
                )
