# -*- 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_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,
            )
