#
#    Copyright (c) 2014-2017 Nest Labs, Inc.
#    All rights reserved.
#
#    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 the GNU automake template for the Nest Weave
#      Support library.
#
#      These sources are shared by other SDK makefiles and consequently
#      must be anchored relative to the top build directory.
#

nl_WeaveSupport_sources                                                                   = \
    @top_builddir@/src/lib/support/ASN1OID.cpp                                              \
    @top_builddir@/src/lib/support/ASN1Reader.cpp                                           \
    @top_builddir@/src/lib/support/ASN1Writer.cpp                                           \
    @top_builddir@/src/lib/support/Base64.cpp                                               \
    @top_builddir@/src/lib/support/ErrorStr.cpp                                             \
    @top_builddir@/src/lib/support/FibonacciUtils.cpp                                       \
    @top_builddir@/src/lib/support/MathUtils.cpp                                            \
    @top_builddir@/src/lib/support/NestCerts.cpp                                            \
    @top_builddir@/src/lib/support/NonProductionMarker.cpp                                  \
    @top_builddir@/src/lib/support/PersistedCounter.cpp                                     \
    @top_builddir@/src/lib/support/ProfileStringSupport.cpp                                 \
    @top_builddir@/src/lib/support/RandUtils.cpp                                            \
    @top_builddir@/src/lib/support/SerialNumberUtils.cpp                                    \
    @top_builddir@/src/lib/support/SerializationUtils.cpp                                   \
    @top_builddir@/src/lib/support/StatusReportStr.cpp                                      \
    @top_builddir@/src/lib/support/TimeUtils.cpp                                            \
    @top_builddir@/src/lib/support/WeaveCounter.cpp                                         \
    @top_builddir@/src/lib/support/WeaveNames.cpp                                           \
    @top_builddir@/src/lib/support/nlargparser.cpp                                          \
    @top_builddir@/src/lib/support/crypto/AESBlockCipher-OpenSSL.cpp                        \
    @top_builddir@/src/lib/support/crypto/AESBlockCipher-AESNI.cpp                          \
    @top_builddir@/src/lib/support/crypto/CTRMode.cpp                                       \
    @top_builddir@/src/lib/support/crypto/DRBG.cpp                                          \
    @top_builddir@/src/lib/support/crypto/EllipticCurve.cpp                                 \
    @top_builddir@/src/lib/support/crypto/EllipticCurve-OpenSSL.cpp                         \
    @top_builddir@/src/lib/support/crypto/EllipticCurve-uECC.cpp                            \
    @top_builddir@/src/lib/support/crypto/HKDF.cpp                                          \
    @top_builddir@/src/lib/support/crypto/HMAC.cpp                                          \
    @top_builddir@/src/lib/support/crypto/HashAlgos-OpenSSL.cpp                             \
    @top_builddir@/src/lib/support/crypto/HashAlgos-MinCrypt.cpp                            \
    @top_builddir@/src/lib/support/crypto/WeaveCrypto.cpp                                   \
    @top_builddir@/src/lib/support/crypto/WeaveCrypto-OpenSSL.cpp                           \
    @top_builddir@/src/lib/support/crypto/WeaveRNG-OpenSSL.cpp                              \
    @top_builddir@/src/lib/support/crypto/WeaveRNG-NestDRBG.cpp                             \
    @top_builddir@/src/lib/support/logging/WeaveLogging.cpp                                 \
    @top_builddir@/src/lib/support/logging/DecodedIPPacket.cpp                              \
    $(NULL)

if WEAVE_WITH_VERHOEFF
nl_WeaveSupport_sources                                                                  += \
    @top_builddir@/src/lib/support/verhoeff/Verhoeff.cpp                                    \
    @top_builddir@/src/lib/support/verhoeff/Verhoeff10.cpp                                  \
    @top_builddir@/src/lib/support/verhoeff/Verhoeff16.cpp                                  \
    @top_builddir@/src/lib/support/verhoeff/Verhoeff32.cpp                                  \
    @top_builddir@/src/lib/support/verhoeff/Verhoeff36.cpp                                  \
    @top_builddir@/src/lib/support/pairing-code/PairingCodeUtils.cpp                        \
    @top_builddir@/src/lib/support/pairing-code/NevisPairingCodeUtils.cpp                   \
    @top_builddir@/src/lib/support/pairing-code/KryptonitePairingCodeUtils.cpp              \
    $(NULL)
endif # WEAVE_WITH_VERHOEFF

if WEAVE_WITH_NLFAULTINJECTION
nl_WeaveSupport_sources += @top_builddir@/src/lib/support/WeaveFaultInjection.cpp
endif # WEAVE_WITH_NLFAULTINJECTION
