# This Makefile can be included by client projects; it exports the set of # include directories relative to HACL_HOME and exports the set of needed # kremlin flags to successfully extract Vale. This Makefile honors # EVERCRYPT_CONFIG. VALE_BUNDLES=\ -bundle 'Vale.Stdcalls.*,Vale.Interop,Vale.Interop.*,Vale.Wrapper.X64.*[rename=Vale]' \ -bundle 'Vale.Inline.X64.*[rename=Vale_Inline]' \ -bundle Vale.*[rename=Unused2] # Other configs are possible, e.g. everest or hacl-vale, by exporting # EVERCRYPT_CONFIG manually. ifneq (,$(EVEREST_WINDOWS)) # hacl, vale, bcrypt EVERCRYPT_CONFIG = noopenssl else ifneq (,$(KAIZALA)) # hacl, openssl EVERCRYPT_CONFIG = kaizala else # everything EVERCRYPT_CONFIG ?= default endif # TODO: no more separate variable definitions? LIB_DIR = $(HACL_HOME)/lib SPECS_DIR = $(HACL_HOME)/specs $(addprefix $(HACL_HOME)/specs/,lemmas tests drbg frodo frodo/params-64-cSHAKE) CODE_DIRS = $(addprefix $(HACL_HOME)/code/,hash hmac hkdf drbg sha3 poly1305 \ chacha20 chacha20poly1305 curve25519 tests ed25519 salsa20 nacl-box meta frodo frodo/params-64-cSHAKE) EVERCRYPT_DIRS = $(addprefix $(HACL_HOME)/providers/,evercrypt evercrypt/fst test test/vectors evercrypt/config/$(EVERCRYPT_CONFIG)) MERKLE_DIRS = $(HACL_HOME)/secure_api/merkle_tree # Vale dirs also include directories that only contain .vaf files # (for a in $(find vale -iname '*.fst' -or -iname '*.fsti' -or -iname '*.vaf'); do dirname $a; done) | sort | uniq VALE_DIRS = \ $(HACL_HOME)/vale/code/arch \ $(HACL_HOME)/vale/code/arch/x64 \ $(HACL_HOME)/vale/code/arch/x64/interop \ $(HACL_HOME)/vale/code/crypto/aes \ $(HACL_HOME)/vale/code/crypto/aes/x64 \ $(HACL_HOME)/vale/code/crypto/bignum \ $(HACL_HOME)/vale/code/crypto/ecc/curve25519 \ $(HACL_HOME)/vale/code/crypto/poly1305 \ $(HACL_HOME)/vale/code/crypto/poly1305/x64 \ $(HACL_HOME)/vale/code/crypto/sha \ $(HACL_HOME)/vale/code/lib/collections \ $(HACL_HOME)/vale/code/lib/math \ $(HACL_HOME)/vale/code/lib/util \ $(HACL_HOME)/vale/code/lib/util/x64 \ $(HACL_HOME)/vale/code/lib/util/x64/stdcalls \ $(HACL_HOME)/vale/code/lib/transformers \ $(HACL_HOME)/vale/code/test \ $(HACL_HOME)/vale/code/thirdPartyPorts/Intel/aes/x64 \ $(HACL_HOME)/vale/code/thirdPartyPorts/OpenSSL/aes \ $(HACL_HOME)/vale/code/thirdPartyPorts/OpenSSL/poly1305/x64 \ $(HACL_HOME)/vale/code/thirdPartyPorts/OpenSSL/sha \ $(HACL_HOME)/vale/code/thirdPartyPorts/rfc7748/curve25519/x64 \ $(HACL_HOME)/vale/code/thirdPartyPorts/SymCrypt/bignum \ $(HACL_HOME)/vale/specs/crypto \ $(HACL_HOME)/vale/specs/defs \ $(HACL_HOME)/vale/specs/hardware \ $(HACL_HOME)/vale/specs/interop \ $(HACL_HOME)/vale/specs/math ALL_HACL_SOURCE_DIRS = \ $(LIB_DIR) $(SPECS_DIR) $(CODE_DIRS) $(VALE_DIRS) \ $(EVERCRYPT_DIRS) $(MERKLE_DIRS) \ $(KREMLIN_HOME)/runtime ALL_HACL_DIRS ?= $(ALL_HACL_SOURCE_DIRS) $(HACL_HOME)/obj