#
# Copyright 2020-present Open Networking Foundation
#
# 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.
#

# Released tags, commits hash, branches and reviews / pull requests.

# The APPNAME targets defined in the Makefile will download the repo and will try to checkout
# the APPNAME_VERSION defined here, using the following methods in order:
# (1) Checkout local source code (local branch not yet pushed);
# (2) Fetch from Gerrit/Github (pending review in the form of refs/changes/... or pending pull request);
#
# The APPNAME-build targets will try to build with the given version, using the following sources in order:
# (1) Download from Maven central (for released versions or snapshots);
# (2) Checkout Local source code (local branch not yet pushed);
# (3) Fetch from Gerrit/Github (pending review in the form of refs/changes/... or pending pull request);

export ONOS_VERSION            ?= 930b0cdde44c268052cd4690652405fdc95ef924 # onos-2.2
export TRELLIS_CONTROL_VERSION ?= 3.0.0
export TRELLIS_T3_VERSION      ?= 3.0.0
export FABRIC_TOFINO_VERSION   ?= e1cf4551b4ab74bb82a7cecf19d197698ffbc1cb
export UP4_VERSION             ?= b65aa0ff16627ae638c344d2b014c8e54b49a502
export KAFKA_ONOS_VERSION      ?= 2.4.0-SNAPSHOT
export FABRIC_TNA_VERSION      ?= ec40b45e229ff94821ed1f176ea4cce333f74cce
