#!/usr/bin/env bash

#
#    Copyright (c) 2020 Project CHIP Authors
#    Copyright (c) 2014-2017 Nest Labs, Inc.
#
#    Licensed under the Apache License, Version 2.0 (the "License");
#    you may not use this file except in compliance with the License.
#    You may obtain a copy of the License at
#
#        http://www.apache.org/licenses/LICENSE-2.0
#
#    Unless required by applicable law or agreed to in writing, software
#    distributed under the License is distributed on an "AS IS" BASIS,
#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#    See the License for the specific language governing permissions and
#    limitations under the License.
#

#
#    Description:
#      This file is a trampoline script to the nlbuild-autotools
#      bootstrap script and augments it by providing the path to the
#      nlbuild-autotools repository for this project.
#

# Set this to the relative location of nlbuild-autotools to this script

nlbuild_autotools_stem="third_party/nlbuild-autotools/repo"

abs_srcdir=$(cd "$(dirname "${0}")" && pwd)

(cd "$abs_srcdir" && exec "$abs_srcdir/$nlbuild_autotools_stem/scripts/bootstrap" -I "$abs_srcdir/$nlbuild_autotools_stem" "${@}")
