#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you 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.
#

NIMBLE_INCLUDE += \
	$(NIMBLE_ROOT)/nimble/host/mesh/include \

NIMBLE_SRC += \
	$(NIMBLE_ROOT)/nimble/host/mesh/src/access.c \
	$(NIMBLE_ROOT)/nimble/host/mesh/src/adv.c \
	$(NIMBLE_ROOT)/nimble/host/mesh/src/beacon.c \
	$(NIMBLE_ROOT)/nimble/host/mesh/src/cfg_cli.c \
	$(NIMBLE_ROOT)/nimble/host/mesh/src/cfg_srv.c \
	$(NIMBLE_ROOT)/nimble/host/mesh/src/crypto.c \
	$(NIMBLE_ROOT)/nimble/host/mesh/src/friend.c \
	$(NIMBLE_ROOT)/nimble/host/mesh/src/glue.c \
	$(NIMBLE_ROOT)/nimble/host/mesh/src/health_cli.c \
	$(NIMBLE_ROOT)/nimble/host/mesh/src/health_srv.c \
	$(NIMBLE_ROOT)/nimble/host/mesh/src/light_model.c \
	$(NIMBLE_ROOT)/nimble/host/mesh/src/lpn.c \
	$(NIMBLE_ROOT)/nimble/host/mesh/src/mesh.c \
	$(NIMBLE_ROOT)/nimble/host/mesh/src/model_cli.c \
	$(NIMBLE_ROOT)/nimble/host/mesh/src/model_srv.c \
	$(NIMBLE_ROOT)/nimble/host/mesh/src/net.c \
	$(NIMBLE_ROOT)/nimble/host/mesh/src/prov.c \
	$(NIMBLE_ROOT)/nimble/host/mesh/src/proxy.c \
	$(NIMBLE_ROOT)/nimble/host/mesh/src/shell.c \
	$(NIMBLE_ROOT)/nimble/host/mesh/src/testing.c \
	$(NIMBLE_ROOT)/nimble/host/mesh/src/transport.c \
