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

"""
Copyright (c) 2014-2016,  The 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,
            )
