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

"""
Copyright (c) 2014  University of Memphis
                    Regents of the University of California,

This file is part of NLSR (Named-data Link State Routing).
See AUTHORS.md for complete list of NLSR authors and contributors.

NLSR 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.

NLSR 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
NLSR, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
"""

top = '..'

def build(bld):
    if bld.env['WITH_TESTS']:
        integrated_test_main = bld(
            target='integrated-tests-main',
            name='integrated-tests-main',
            features='cxx',
            source=bld.path.ant_glob(['*.cpp']),
            use='nlsr-objects',
          )

        integrated_test_nsync = bld.program (
            target="../integrated-tests-nsync",
            features="cxx cxxprogram",
            source=bld.path.ant_glob(['nsync/**/*.cc']),
            use='nsync-objects integrated-tests-main',
            includes='.',
            install_path=None,
            )

        integrated_test_nlsr = bld.program (
            target="../integrated-tests-nlsr",
            features="cxx cxxprogram",
            source=bld.path.ant_glob(['nlsr/**/*.cpp']),
            use='nlsr-objects integrated-tests-main',
            includes='.',
            install_path=None,
            )
