.PHONY: all clean check noise-check TOPDIR = ../.. SRCDIR = $(TOPDIR)/libraries/Crypto SRCDIR2 = $(TOPDIR)/libraries/NewHope SRCDIR3 = $(TOPDIR)/libraries/CryptoLW SRCDIR4 = $(TOPDIR)/libraries/CryptoLegacy SRCDIR5 = $(TOPDIR)/libraries/NoiseProtocol #VPATH = $(SRCDIR) vpath %.cpp $(SRCDIR) vpath %.cpp $(SRCDIR2) vpath %.cpp $(SRCDIR3)/src vpath %.cpp $(SRCDIR4)/src vpath %.cpp $(SRCDIR5)/src vpath %.o . vpath %.ino $(SRCDIR)/examples vpath %.ino $(SRCDIR2)/examples vpath %.ino $(SRCDIR3)/examples vpath %.ino $(SRCDIR4)/examples vpath %.sketch . LIBRARY = libCrypto.a CPPFLAGS = \ -I$(TOPDIR)/host/emulation \ -I$(TOPDIR)/libraries/Crypto \ -I$(TOPDIR)/libraries/CryptoLW/src \ -I$(TOPDIR)/libraries/CryptoLegacy/src \ -I$(TOPDIR)/libraries/NewHope \ -I$(TOPDIR)/libraries/NoiseProtocol/src \ -DHOST_BUILD CXXFLAGS = -g -Wall $(CPPFLAGS) CCFLAGS = -g -Wall $(CPPFLAGS) SOURCES = \ Acorn128.cpp \ AES128.cpp \ AES192.cpp \ AES256.cpp \ AESCommon.cpp \ Ascon128.cpp \ AuthenticatedCipher.cpp \ BigNumberUtil.cpp \ BLAKE2b.cpp \ BLAKE2s.cpp \ BlockCipher.cpp \ CBC.cpp \ CFB.cpp \ ChaCha.cpp \ ChaChaPoly.cpp \ Cipher.cpp \ Crypto.cpp \ CTR.cpp \ Curve25519.cpp \ EAX.cpp \ Ed25519.cpp \ GCM.cpp \ GF128.cpp \ GHASH.cpp \ Hash.cpp \ KeccakCore.cpp \ KeyRing.cpp \ NewHope.cpp \ NoiseSource.cpp \ OFB.cpp \ OMAC.cpp \ P521.cpp \ Poly1305.cpp \ RNG_host.cpp \ SHA1.cpp \ SHA256.cpp \ SHA3.cpp \ SHA512.cpp \ SHAKE.cpp \ Speck.cpp \ SpeckSmall.cpp \ SpeckTiny.cpp \ XOF.cpp \ XTS.cpp SOURCES += \ NoiseCipherState_AESGCM.cpp \ NoiseCipherState_ChaChaPoly.cpp \ NoiseCipherState.cpp \ NoiseDHState_Curve25519.cpp \ NoiseDHState.cpp \ NoiseHandshakeState.cpp \ Noise_IK_25519_AESGCM_SHA256.cpp \ Noise_IK_25519_ChaChaPoly_BLAKE2s.cpp \ Noise_IK_25519_ChaChaPoly_SHA256.cpp \ Noise_IK.cpp \ NoiseNamespace.cpp \ Noise_NNpsk0_25519_AESGCM_SHA256.cpp \ Noise_NNpsk0_25519_ChaChaPoly_BLAKE2s.cpp \ Noise_NNpsk0_25519_ChaChaPoly_SHA256.cpp \ Noise_NNpsk0.cpp \ NoiseProtocolDescriptor.cpp \ NoiseSymmetricState_AESGCM_SHA256.cpp \ NoiseSymmetricState_ChaChaPoly_BLAKE2s.cpp \ NoiseSymmetricState_ChaChaPoly_SHA256.cpp \ NoiseSymmetricState.cpp \ Noise_XX_25519_AESGCM_SHA256.cpp \ Noise_XX_25519_ChaChaPoly_BLAKE2s.cpp \ Noise_XX_25519_ChaChaPoly_SHA256.cpp \ Noise_XX.cpp SKETCHES = \ TestAcorn/TestAcorn.ino \ TestAES/TestAES.ino \ TestAESTiny/TestAESTiny.ino \ TestAESSmall/TestAESSmall.ino \ TestAscon/TestAscon.ino \ TestBigNumberUtil/TestBigNumberUtil.ino \ TestBLAKE2b/TestBLAKE2b.ino \ TestBLAKE2s/TestBLAKE2s.ino \ TestCBC/TestCBC.ino \ TestCFB/TestCFB.ino \ TestChaCha/TestChaCha.ino \ TestChaChaPoly/TestChaChaPoly.ino \ TestCTR/TestCTR.ino \ TestCurve25519/TestCurve25519.ino \ TestCurve25519Math/TestCurve25519Math.ino \ TestEAX/TestEAX.ino \ TestEd25519/TestEd25519.ino \ TestGCM/TestGCM.ino \ TestGHASH/TestGHASH.ino \ TestKeyRing/TestKeyRing.ino \ TestNewHope/TestNewHope.ino \ TestOFB/TestOFB.ino \ TestP521/TestP521.ino \ TestP521Math/TestP521Math.ino \ TestPoly1305/TestPoly1305.ino \ TestSHA1/TestSHA1.ino \ TestSHA256/TestSHA256.ino \ TestSHA3_256/TestSHA3_256.ino \ TestSHA3_512/TestSHA3_512.ino \ TestSHA512/TestSHA512.ino \ TestSHAKE128/TestSHAKE128.ino \ TestSHAKE256/TestSHAKE256.ino \ TestSpeck/TestSpeck.ino \ TestXTS/TestXTS.ino \ TSTPROG1 = noise/test-vector TSTPROG1_SOURCES = \ noise/json-reader.cpp \ noise/test-vector.cpp TSTPROG1_OBJECTS = $(patsubst %.cpp,%.o,$(TSTPROG1_SOURCES)) DEP_SOURCES = $(SOURCES) $(TSTPROG1_SOURCES) OBJECTS = $(patsubst %.cpp,%.o,$(SOURCES)) DEPS = $(patsubst %.cpp,.depend/%.d,$(DEP_SOURCES)) SKETCH_OUTPUTS = $(patsubst %.ino,%.sketch,$(SKETCHES)) all: $(LIBRARY) $(TSTPROG1) $(TSTPROG1): $(TSTPROG1_OBJECTS) $(LIBRARY) $(CXX) $(CXXFLAGS) -o $@ $(TSTPROG1_OBJECTS) -L. -lCrypto $(LIBRARY): $(OBJECTS) $(RM) $(LIBRARY) $(AR) cr $(LIBRARY) $(OBJECTS) clean: $(RM) $(OBJECTS) $(LIBRARY) $(RM) $(SKETCH_OUTPUTS) $(RM) $(TSTPROG1) $(TSTPROG1_OBJECTS) $(RM) -r .depend Test* check: $(LIBRARY) $(SKETCH_OUTPUTS) @for sketch in $(SKETCH_OUTPUTS); do \ echo Running $$sketch; \ $$sketch | grep -i fail; \ done; exit 0 noise-check: $(TSTPROG1) @$(TSTPROG1) noise/test-vectors.txt %.o: %.cpp $(CXX) $(CXXFLAGS) -o $@ -c $< %.sketch: %.ino $(LIBRARY) mkdir -p `dirname $@` $(CXX) -x c++ $(CXXFLAGS) \ -include $(TOPDIR)/host/emulation/Arduino.h \ -include $(TOPDIR)/host/emulation/Arduino.cpp \ -o $@ $< -L. -lCrypto .depend/%.d: %.cpp @set -e; rm -f $@; mkdir -p `dirname $@`; \ $(CXX) -MM $(CPPFLAGS) $< > $@.$$$$; \ sed 's,\(.*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \ rm -f $@.$$$$ -include $(DEPS)