aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xconfigure.py320
-rw-r--r--src/lib/asn1/info.txt4
-rw-r--r--src/lib/block/aes/aes_ni/info.txt4
-rw-r--r--src/lib/block/aes/aes_ssse3/info.txt4
-rw-r--r--src/lib/block/aes/info.txt4
-rw-r--r--src/lib/block/blowfish/info.txt4
-rw-r--r--src/lib/block/camellia/info.txt4
-rw-r--r--src/lib/block/cascade/info.txt4
-rw-r--r--src/lib/block/cast/info.txt4
-rw-r--r--src/lib/block/des/info.txt4
-rw-r--r--src/lib/block/gost_28147/info.txt4
-rw-r--r--src/lib/block/idea/idea_sse2/info.txt5
-rw-r--r--src/lib/block/idea/info.txt4
-rw-r--r--src/lib/block/info.txt4
-rw-r--r--src/lib/block/kasumi/info.txt4
-rw-r--r--src/lib/block/lion/info.txt4
-rw-r--r--src/lib/block/misty1/info.txt4
-rw-r--r--src/lib/block/noekeon/info.txt4
-rw-r--r--src/lib/block/noekeon/noekeon_simd/info.txt4
-rw-r--r--src/lib/block/seed/info.txt4
-rw-r--r--src/lib/block/serpent/info.txt4
-rw-r--r--src/lib/block/serpent/serpent_simd/info.txt4
-rw-r--r--src/lib/block/threefish/info.txt4
-rw-r--r--src/lib/block/threefish/threefish_avx2/info.txt4
-rw-r--r--src/lib/block/twofish/info.txt4
-rw-r--r--src/lib/block/xtea/info.txt4
-rw-r--r--src/lib/codec/base64/info.txt4
-rw-r--r--src/lib/codec/hex/info.txt4
-rw-r--r--src/lib/compression/bzip2/info.txt4
-rw-r--r--src/lib/compression/info.txt4
-rw-r--r--src/lib/compression/lzma/info.txt4
-rw-r--r--src/lib/compression/zlib/info.txt4
-rw-r--r--src/lib/entropy/cryptoapi_rng/info.txt4
-rw-r--r--src/lib/entropy/darwin_secrandom/info.txt4
-rw-r--r--src/lib/entropy/dev_random/info.txt4
-rw-r--r--src/lib/entropy/getentropy/info.txt4
-rw-r--r--src/lib/entropy/info.txt4
-rw-r--r--src/lib/entropy/proc_walk/info.txt4
-rw-r--r--src/lib/entropy/rdrand/info.txt4
-rw-r--r--src/lib/entropy/rdseed/info.txt4
-rw-r--r--src/lib/entropy/win32_stats/info.txt4
-rw-r--r--src/lib/ffi/info.txt5
-rw-r--r--src/lib/filters/codec_filt/info.txt4
-rw-r--r--src/lib/filters/fd_unix/info.txt4
-rw-r--r--src/lib/filters/info.txt4
-rw-r--r--src/lib/hash/blake2/info.txt4
-rw-r--r--src/lib/hash/checksum/adler32/info.txt4
-rw-r--r--src/lib/hash/checksum/crc24/info.txt4
-rw-r--r--src/lib/hash/checksum/crc32/info.txt4
-rw-r--r--src/lib/hash/comb4p/info.txt4
-rw-r--r--src/lib/hash/gost_3411/info.txt4
-rw-r--r--src/lib/hash/keccak/info.txt4
-rw-r--r--src/lib/hash/md4/info.txt4
-rw-r--r--src/lib/hash/md5/info.txt4
-rw-r--r--src/lib/hash/mdx_hash/info.txt4
-rw-r--r--src/lib/hash/par_hash/info.txt4
-rw-r--r--src/lib/hash/rmd160/info.txt4
-rw-r--r--src/lib/hash/sha1/info.txt4
-rw-r--r--src/lib/hash/sha1/sha1_sse2/info.txt4
-rw-r--r--src/lib/hash/sha2_32/info.txt4
-rw-r--r--src/lib/hash/sha2_64/info.txt4
-rw-r--r--src/lib/hash/sha3/info.txt4
-rw-r--r--src/lib/hash/shake/info.txt4
-rw-r--r--src/lib/hash/skein/info.txt4
-rw-r--r--src/lib/hash/tiger/info.txt4
-rw-r--r--src/lib/hash/whirlpool/info.txt4
-rw-r--r--src/lib/kdf/hkdf/info.txt4
-rw-r--r--src/lib/kdf/info.txt4
-rw-r--r--src/lib/kdf/kdf1/info.txt4
-rw-r--r--src/lib/kdf/kdf1_iso18033/info.txt4
-rw-r--r--src/lib/kdf/kdf2/info.txt4
-rw-r--r--src/lib/kdf/prf_tls/info.txt6
-rw-r--r--src/lib/kdf/prf_x942/info.txt4
-rw-r--r--src/lib/kdf/sp800_108/info.txt4
-rw-r--r--src/lib/kdf/sp800_56c/info.txt4
-rw-r--r--src/lib/mac/cbc_mac/info.txt4
-rw-r--r--src/lib/mac/cmac/info.txt4
-rw-r--r--src/lib/mac/gmac/info.txt4
-rw-r--r--src/lib/mac/hmac/info.txt4
-rw-r--r--src/lib/mac/info.txt4
-rw-r--r--src/lib/mac/poly1305/info.txt4
-rw-r--r--src/lib/mac/siphash/info.txt4
-rw-r--r--src/lib/mac/x919_mac/info.txt4
-rw-r--r--src/lib/math/bigint/info.txt6
-rw-r--r--src/lib/math/ec_gfp/info.txt4
-rw-r--r--src/lib/math/mp/info.txt4
-rw-r--r--src/lib/math/numbertheory/info.txt4
-rw-r--r--src/lib/misc/aont/info.txt4
-rw-r--r--src/lib/misc/cryptobox/info.txt4
-rw-r--r--src/lib/misc/fpe_fe1/info.txt4
-rw-r--r--src/lib/misc/rfc3394/info.txt4
-rw-r--r--src/lib/misc/srp6/info.txt4
-rw-r--r--src/lib/misc/tss/info.txt4
-rw-r--r--src/lib/modes/aead/ccm/info.txt4
-rw-r--r--src/lib/modes/aead/chacha20poly1305/info.txt4
-rw-r--r--src/lib/modes/aead/eax/info.txt4
-rw-r--r--src/lib/modes/aead/gcm/clmul/info.txt5
-rw-r--r--src/lib/modes/aead/gcm/info.txt4
-rw-r--r--src/lib/modes/aead/info.txt4
-rw-r--r--src/lib/modes/aead/ocb/info.txt4
-rw-r--r--src/lib/modes/aead/siv/info.txt4
-rw-r--r--src/lib/modes/cbc/info.txt4
-rw-r--r--src/lib/modes/cfb/info.txt4
-rw-r--r--src/lib/modes/info.txt4
-rw-r--r--src/lib/modes/mode_pad/info.txt4
-rw-r--r--src/lib/modes/xts/info.txt4
-rw-r--r--src/lib/passhash/bcrypt/info.txt5
-rw-r--r--src/lib/passhash/passhash9/info.txt4
-rw-r--r--src/lib/pbkdf/info.txt4
-rw-r--r--src/lib/pbkdf/pbkdf1/info.txt4
-rw-r--r--src/lib/pbkdf/pbkdf2/info.txt4
-rw-r--r--src/lib/pk_pad/eme_oaep/info.txt4
-rw-r--r--src/lib/pk_pad/eme_pkcs1/info.txt4
-rw-r--r--src/lib/pk_pad/eme_raw/info.txt4
-rw-r--r--src/lib/pk_pad/emsa1/info.txt4
-rw-r--r--src/lib/pk_pad/emsa_pkcs1/info.txt4
-rw-r--r--src/lib/pk_pad/emsa_pssr/info.txt4
-rw-r--r--src/lib/pk_pad/emsa_raw/info.txt4
-rw-r--r--src/lib/pk_pad/emsa_x931/info.txt4
-rw-r--r--src/lib/pk_pad/hash_id/info.txt4
-rw-r--r--src/lib/pk_pad/info.txt4
-rw-r--r--src/lib/pk_pad/iso9796/info.txt4
-rw-r--r--src/lib/pk_pad/mgf1/info.txt4
-rw-r--r--src/lib/prov/openssl/info.txt4
-rw-r--r--src/lib/prov/pkcs11/info.txt4
-rw-r--r--src/lib/prov/tpm/info.txt4
-rw-r--r--src/lib/pubkey/cecpq1/info.txt4
-rw-r--r--src/lib/pubkey/curve25519/info.txt4
-rw-r--r--src/lib/pubkey/dh/info.txt4
-rw-r--r--src/lib/pubkey/dl_algo/info.txt4
-rw-r--r--src/lib/pubkey/dl_group/info.txt4
-rw-r--r--src/lib/pubkey/dlies/info.txt4
-rw-r--r--src/lib/pubkey/dsa/info.txt4
-rw-r--r--src/lib/pubkey/ec_group/info.txt4
-rw-r--r--src/lib/pubkey/ecc_key/info.txt4
-rw-r--r--src/lib/pubkey/ecdh/info.txt4
-rw-r--r--src/lib/pubkey/ecdsa/info.txt4
-rw-r--r--src/lib/pubkey/ecgdsa/info.txt4
-rw-r--r--src/lib/pubkey/ecies/info.txt4
-rw-r--r--src/lib/pubkey/eckcdsa/info.txt4
-rw-r--r--src/lib/pubkey/elgamal/info.txt4
-rw-r--r--src/lib/pubkey/gost_3410/info.txt4
-rw-r--r--src/lib/pubkey/info.txt4
-rw-r--r--src/lib/pubkey/keypair/info.txt4
-rw-r--r--src/lib/pubkey/mce/info.txt4
-rw-r--r--src/lib/pubkey/mceies/info.txt4
-rw-r--r--src/lib/pubkey/newhope/info.txt4
-rw-r--r--src/lib/pubkey/pbes2/info.txt4
-rw-r--r--src/lib/pubkey/pem/info.txt4
-rw-r--r--src/lib/pubkey/rfc6979/info.txt4
-rw-r--r--src/lib/pubkey/rsa/info.txt4
-rw-r--r--src/lib/pubkey/xmss/info.txt4
-rw-r--r--src/lib/rng/auto_rng/info.txt6
-rw-r--r--src/lib/rng/hmac_drbg/info.txt4
-rw-r--r--src/lib/rng/rdrand_rng/info.txt4
-rw-r--r--src/lib/rng/stateful_rng/info.txt5
-rw-r--r--src/lib/rng/system_rng/info.txt5
-rw-r--r--src/lib/stream/chacha/chacha_sse2/info.txt4
-rw-r--r--src/lib/stream/chacha/info.txt4
-rw-r--r--src/lib/stream/ctr/info.txt4
-rw-r--r--src/lib/stream/info.txt4
-rw-r--r--src/lib/stream/ofb/info.txt4
-rw-r--r--src/lib/stream/rc4/info.txt4
-rw-r--r--src/lib/stream/salsa20/info.txt4
-rw-r--r--src/lib/stream/shake_cipher/info.txt4
-rw-r--r--src/lib/tls/info.txt4
-rw-r--r--src/lib/tls/sessions_sql/info.txt4
-rw-r--r--src/lib/tls/sessions_sqlite3/info.txt4
-rw-r--r--src/lib/tls/tls_cbc/info.txt4
-rw-r--r--src/lib/utils/boost/info.txt10
-rw-r--r--src/lib/utils/dyn_load/info.txt4
-rw-r--r--src/lib/utils/http_util/info.txt4
-rw-r--r--src/lib/utils/info.txt4
-rw-r--r--src/lib/utils/locking_allocator/info.txt4
-rw-r--r--src/lib/utils/simd/info.txt4
-rw-r--r--src/lib/x509/certstor_sql/info.txt5
-rw-r--r--src/lib/x509/certstor_sqlite3/info.txt4
-rw-r--r--src/lib/x509/info.txt6
178 files changed, 701 insertions, 348 deletions
diff --git a/configure.py b/configure.py
index 703b85699..528f121ab 100755
--- a/configure.py
+++ b/configure.py
@@ -4,7 +4,7 @@
Configuration program for botan
(C) 2009,2010,2011,2012,2013,2014,2015,2016,2017 Jack Lloyd
-(C) 2015,2016 Simon Warta (Kullo GmbH)
+(C) 2015,2016,2017 Simon Warta (Kullo GmbH)
Botan is released under the Simplified BSD License (see license.txt)
@@ -51,17 +51,46 @@ def chunks(l, n):
for i in range(0, len(l), n):
yield l[i:i+n]
-def get_vc_revision():
- def get_vc_revision_impl(cmdlist):
- try:
- cmdname = cmdlist[0]
+class Version(object):
+ """
+ Version information are all static members
+ """
+ major = botan_version.release_major
+ minor = botan_version.release_minor
+ patch = botan_version.release_patch
+ so_rev = botan_version.release_so_abi_rev
+ release_type = botan_version.release_type
+ datestamp = botan_version.release_datestamp
+ packed = major * 1000 + minor # Used on Darwin for dylib versioning
+ _vc_rev = None
+
+ @staticmethod
+ def as_string():
+ return '%d.%d.%d' % (Version.major, Version.minor, Version.patch)
+
+ @staticmethod
+ def vc_rev():
+ # Lazy load to ensure _local_repo_vc_revision() does not run before logger is set up
+ if Version._vc_rev is None:
+ Version._vc_rev = botan_version.release_vc_rev
+ if Version._vc_rev is None:
+ Version._vc_rev = Version._local_repo_vc_revision()
+ if Version._vc_rev is None:
+ Version._vc_rev = 'unknown'
+ return Version._vc_rev
- vc = subprocess.Popen(cmdlist,
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE,
- universal_newlines=True)
+ @staticmethod
+ def _local_repo_vc_revision():
+ vc_command = ['git', 'rev-parse', 'HEAD']
+ cmdname = vc_command[0]
+ try:
+ vc = subprocess.Popen(
+ vc_command,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE,
+ universal_newlines=True)
(stdout, stderr) = vc.communicate()
if vc.returncode != 0:
@@ -77,64 +106,34 @@ def get_vc_revision():
logging.debug('Error getting rev from %s - %s' % (cmdname, e.strerror))
return None
- vc_command = ['git', 'rev-parse', 'HEAD']
- rev = get_vc_revision_impl(vc_command)
- if rev is not None:
- return rev
- else:
- return 'unknown'
-
-class BuildConfigurationInformation(object):
-
- """
- Version information
- """
- version_major = botan_version.release_major
- version_minor = botan_version.release_minor
- version_patch = botan_version.release_patch
- version_so_rev = botan_version.release_so_abi_rev
-
- version_release_type = botan_version.release_type
-
- version_datestamp = botan_version.release_datestamp
-
- version_vc_rev = botan_version.release_vc_rev
- version_string = '%d.%d.%d' % (version_major, version_minor, version_patch)
-
- # This is used on Darwin for dylib versioning
- version_packed = version_major * 1000 + version_minor
+class BuildPaths(object): # pylint: disable=too-many-instance-attributes
"""
Constructor
"""
def __init__(self, options, modules):
-
- if self.version_vc_rev is None:
- self.version_vc_rev = get_vc_revision()
-
self.build_dir = os.path.join(options.with_build_dir, 'build')
- self.obj_dir = os.path.join(self.build_dir, 'obj')
- self.libobj_dir = os.path.join(self.obj_dir, 'lib')
- self.cliobj_dir = os.path.join(self.obj_dir, 'cli')
- self.testobj_dir = os.path.join(self.obj_dir, 'test')
+ self.libobj_dir = os.path.join(self.build_dir, 'obj', 'lib')
+ self.cliobj_dir = os.path.join(self.build_dir, 'obj', 'cli')
+ self.testobj_dir = os.path.join(self.build_dir, 'obj', 'test')
self.doc_output_dir = os.path.join(self.build_dir, 'docs')
+ self.doc_output_dir_manual = os.path.join(self.doc_output_dir, 'manual')
+ self.doc_output_dir_doxygen = os.path.join(self.doc_output_dir, 'doxygen') if options.with_doxygen else None
self.include_dir = os.path.join(self.build_dir, 'include')
self.botan_include_dir = os.path.join(self.include_dir, 'botan')
self.internal_include_dir = os.path.join(self.botan_include_dir, 'internal')
self.external_include_dir = os.path.join(self.include_dir, 'external')
- self.modules = modules
- self.sources = sorted(flatten([mod.sources() for mod in modules]))
self.internal_headers = sorted(flatten([m.internal_headers() for m in modules]))
self.external_headers = sorted(flatten([m.external_headers() for m in modules]))
if options.amalgamation:
- self.build_sources = ['botan_all.cpp']
+ self.lib_sources = ['botan_all.cpp']
else:
- self.build_sources = self.sources
+ self.lib_sources = sorted(flatten([mod.sources() for mod in modules]))
self.public_headers = sorted(flatten([m.public_headers() for m in modules]))
@@ -159,55 +158,49 @@ class BuildConfigurationInformation(object):
self.python_dir = os.path.join(options.src_dir, 'python')
- def build_doc_commands():
-
- def get_doc_cmd():
- if options.with_sphinx:
- sphinx = 'sphinx-build -c $(SPHINX_CONFIG) $(SPHINX_OPTS) '
- if options.quiet:
- sphinx += '-q '
- sphinx += '%s %s'
- return sphinx
- else:
- return '$(COPY) %s' + os.sep + '*.rst %s'
-
- doc_cmd = get_doc_cmd()
-
- def cmd_for(src):
- return doc_cmd % (os.path.join(self.doc_dir, src),
- os.path.join(self.doc_output_dir, src))
-
- yield cmd_for('manual')
-
- if options.with_doxygen:
- yield 'doxygen %s%sbotan.doxy' % (self.build_dir, os.sep)
-
- self.build_doc_commands = '\n'.join(['\t' + s for s in build_doc_commands()])
-
- def build_dirs():
- yield self.libobj_dir
- yield self.cliobj_dir
- yield self.testobj_dir
- yield self.botan_include_dir
- yield self.internal_include_dir
- yield self.external_include_dir
- yield os.path.join(self.doc_output_dir, 'manual')
-
- if options.with_doxygen:
- yield os.path.join(self.doc_output_dir, 'doxygen')
-
- self.build_dirs = list(build_dirs())
+ def build_dirs(self):
+ out = [
+ self.libobj_dir,
+ self.cliobj_dir,
+ self.testobj_dir,
+ self.botan_include_dir,
+ self.internal_include_dir,
+ self.external_include_dir,
+ self.doc_output_dir_manual,
+ ]
+ if self.doc_output_dir_doxygen:
+ out += [self.doc_output_dir_doxygen]
+ return out
def src_info(self, typ):
if typ == 'lib':
- return (self.build_sources, self.libobj_dir)
+ return (self.lib_sources, self.libobj_dir)
elif typ == 'cli':
return (self.cli_sources, self.cliobj_dir)
elif typ == 'test':
return (self.test_sources, self.testobj_dir)
- def pkg_config_file(self):
- return 'botan-%d.pc' % (self.version_major)
+
+PKG_CONFIG_FILENAME = 'botan-%d.pc' % (Version.major)
+
+
+def make_build_doc_commands(build_paths, options):
+ def build_manual_command(src_dir, dst_dir):
+ if options.with_sphinx:
+ sphinx = 'sphinx-build -c $(SPHINX_CONFIG) $(SPHINX_OPTS) '
+ if options.quiet:
+ sphinx += '-q '
+ sphinx += '%s %s' % (src_dir, dst_dir)
+ return sphinx
+ else:
+ return '$(COPY) %s%s*.rst %s' % (src_dir, os.sep, dst_dir)
+
+ cmds = [
+ build_manual_command(os.path.join(build_paths.doc_dir, 'manual'), build_paths.doc_output_dir_manual)
+ ]
+ if options.with_doxygen:
+ cmds += ['doxygen %s%sbotan.doxy' % (build_paths.build_dir, os.sep)]
+ return '\n'.join(['\t' + cmd for cmd in cmds])
def process_command_line(args): # pylint: disable=too-many-locals
@@ -217,7 +210,7 @@ def process_command_line(args): # pylint: disable=too-many-locals
parser = optparse.OptionParser(
formatter=optparse.IndentedHelpFormatter(max_help_position=50),
- version=BuildConfigurationInformation.version_string)
+ version=Version.as_string())
parser.add_option('--verbose', action='store_true', default=False,
help='Show debug messages')
@@ -523,6 +516,29 @@ class LexResult(object):
pass
+class LexerError(ConfigureError):
+ def __init__(self, msg, lexfile, line):
+ super(LexerError, self).__init__(msg)
+ self.msg = msg
+ self.lexfile = lexfile
+ self.line = line
+
+ def __str__(self):
+ return '%s at %s:%d' % (self.msg, self.lexfile, self.line)
+
+
+def parse_lex_dict(as_list):
+ if len(as_list) % 3 != 0:
+ raise ConfigureError("Lex dictionary has invalid format")
+
+ result = {}
+ for key, sep, value in [as_list[3*i:3*i+3] for i in range(0, len(as_list)//3)]:
+ if sep != '->':
+ raise ConfigureError("Lex dictionary has invalid format")
+ result[key] = value
+ return result
+
+
def lex_me_harder(infofile, allowed_groups, name_val_pairs):
"""
Generic lexer function for info.txt and src/build-data files
@@ -533,15 +549,6 @@ def lex_me_harder(infofile, allowed_groups, name_val_pairs):
def py_var(group):
return group.replace(':', '_')
- class LexerError(ConfigureError):
- def __init__(self, msg, line):
- super(LexerError, self).__init__(msg)
- self.msg = msg
- self.line = line
-
- def __str__(self):
- return '%s at %s:%d' % (self.msg, infofile, self.line)
-
lexer = shlex.shlex(open(infofile), infofile, posix=True)
lexer.wordchars += '|:.<>/,-!+' # handle various funky chars in info.txt
@@ -551,10 +558,12 @@ def lex_me_harder(infofile, allowed_groups, name_val_pairs):
out.__dict__[key] = val
def lexed_tokens(): # Convert to an interator
- token = lexer.get_token()
- while token != None:
- yield token
+ while True:
token = lexer.get_token()
+ if token != lexer.eof:
+ yield token
+ else:
+ return
for token in lexed_tokens():
match = re.match('<(.*)>', token)
@@ -565,7 +574,7 @@ def lex_me_harder(infofile, allowed_groups, name_val_pairs):
if group not in allowed_groups:
raise LexerError('Unknown group "%s"' % (group),
- lexer.lineno)
+ infofile, lexer.lineno)
end_marker = '</' + group + '>'
@@ -575,28 +584,20 @@ def lex_me_harder(infofile, allowed_groups, name_val_pairs):
token = lexer.get_token()
if token is None:
raise LexerError('Group "%s" not terminated' % (group),
- lexer.lineno)
+ infofile, lexer.lineno)
elif token in name_val_pairs.keys():
if isinstance(out.__dict__[token], list):
out.__dict__[token].append(lexer.get_token())
-
- # Dirty hack
- if token == 'define':
- nxt = lexer.get_token()
- if not nxt:
- raise LexerError('No version set for API', lexer.lineno)
- if not re.match('^[0-9]{8}$', nxt):
- raise LexerError('Bad API rev "%s"' % (nxt), lexer.lineno)
- out.__dict__[token].append(nxt)
else:
out.__dict__[token] = lexer.get_token()
else: # No match -> error
- raise LexerError('Bad token "%s"' % (token), lexer.lineno)
+ raise LexerError('Bad token "%s"' % (token), infofile, lexer.lineno)
return out
+
def force_to_dict(l):
"""
Convert a lex'ed map (from build-data files) from a list to a dict
@@ -635,12 +636,11 @@ class ModuleInfo(InfoObject):
lex = lex_me_harder(
infofile,
[
- 'header:internal', 'header:public', 'header:external', 'requires',
+ 'defines', 'header:internal', 'header:public', 'header:external', 'requires',
'os', 'arch', 'cc', 'libs', 'frameworks', 'comment', 'warning'
],
{
'load_on': 'auto',
- 'define': [],
'need_isa': ''
})
@@ -692,7 +692,8 @@ class ModuleInfo(InfoObject):
self.arch = lex.arch
self.cc = lex.cc
self.comment = ' '.join(lex.comment) if lex.comment else None
- self.define = lex.define
+ self._defines = parse_lex_dict(lex.defines)
+ self._validate_defines_content(self._defines)
self.frameworks = convert_lib_list(lex.frameworks)
self.libs = convert_lib_list(lex.libs)
self.load_on = lex.load_on
@@ -733,6 +734,14 @@ class ModuleInfo(InfoObject):
intersect_check('public', self.header_public, 'external', self.header_external)
intersect_check('external', self.header_external, 'internal', self.header_internal)
+ @staticmethod
+ def _validate_defines_content(defines):
+ for key, value in defines.items():
+ if not re.match('^[0-9A-Za-z_]{3,30}$', key):
+ raise ConfigureError('Module defines key has invalid format: "%s"' % key)
+ if not re.match('^[0-9]{8}$', value):
+ raise ConfigureError('Module defines value has invalid format: "%s"' % value)
+
def cross_check(self, arch_info, os_info, cc_info):
for supp_os in self.os:
if supp_os not in os_info:
@@ -757,7 +766,7 @@ class ModuleInfo(InfoObject):
return self.header_external
def defines(self):
- return ['HAS_' + d[0] + ' ' + d[1] for d in chunks(self.define, 2)]
+ return ['HAS_%s %s' % (key, value) for key, value in self._defines.items()]
def compatible_cpu(self, archinfo, options):
arch_name = archinfo.basename
@@ -1369,7 +1378,7 @@ def gen_bakefile(build_config, options, external_libs):
# shared library project
f.write('shared-library botan {\n')
f.write('\tdefines = "BOTAN_DLL=__declspec(dllexport)";\n')
- bakefile_sources(f, build_config.sources)
+ bakefile_sources(f, build_config.lib_sources)
f.write('}\n')
# cli project
@@ -1608,21 +1617,18 @@ def create_template_vars(build_config, options, modules, cc, arch, osinfo):
return opts
variables = {
- 'version_major': build_config.version_major,
- 'version_minor': build_config.version_minor,
- 'version_patch': build_config.version_patch,
- 'version_vc_rev': build_config.version_vc_rev,
- 'so_abi_rev': build_config.version_so_rev,
- 'version': build_config.version_string,
-
- 'version_packed': build_config.version_packed,
-
- 'release_type': build_config.version_release_type,
+ 'version_major': Version.major,
+ 'version_minor': Version.minor,
+ 'version_patch': Version.patch,
+ 'version_vc_rev': Version.vc_rev(),
+ 'so_abi_rev': Version.so_rev,
+ 'version': Version.as_string(),
+ 'version_packed': Version.packed,
+ 'release_type': Version.release_type,
+ 'version_datestamp': Version.datestamp,
'distribution_info': options.distribution_info,
- 'version_datestamp': build_config.version_datestamp,
-
'base_dir': options.base_dir,
'src_dir': options.src_dir,
'doc_dir': build_config.doc_dir,
@@ -1655,7 +1661,7 @@ def create_template_vars(build_config, options, modules, cc, arch, osinfo):
'doc_output_dir': build_config.doc_output_dir,
- 'build_doc_commands': build_config.build_doc_commands,
+ 'build_doc_commands': make_build_doc_commands(build_config, options),
'python_dir': build_config.python_dir,
'sphinx_config_dir': os.path.join(options.build_data, 'sphinx'),
@@ -1711,20 +1717,20 @@ def create_template_vars(build_config, options, modules, cc, arch, osinfo):
'static_suffix': osinfo.static_suffix,
'soname_base': osinfo.soname_pattern_base.format(
- version_major=build_config.version_major,
- version_minor=build_config.version_minor,
- version_patch=build_config.version_patch,
- abi_rev=build_config.version_so_rev),
+ version_major=Version.major,
+ version_minor=Version.minor,
+ version_patch=Version.patch,
+ abi_rev=Version.so_rev),
'soname_abi': osinfo.soname_pattern_abi.format(
- version_major=build_config.version_major,
- version_minor=build_config.version_minor,
- version_patch=build_config.version_patch,
- abi_rev=build_config.version_so_rev),
+ version_major=Version.major,
+ version_minor=Version.minor,
+ version_patch=Version.patch,
+ abi_rev=Version.so_rev),
'soname_patch': osinfo.soname_pattern_patch.format(
- version_major=build_config.version_major,
- version_minor=build_config.version_minor,
- version_patch=build_config.version_patch,
- abi_rev=build_config.version_so_rev),
+ version_major=Version.major,
+ version_minor=Version.minor,
+ version_patch=Version.patch,
+ abi_rev=Version.so_rev),
'mod_list': '\n'.join(sorted([m.basename for m in modules])),
@@ -1753,11 +1759,11 @@ def create_template_vars(build_config, options, modules, cc, arch, osinfo):
else:
variables['libname'] = 'botan'
else:
- variables['botan_pkgconfig'] = os.path.join(build_config.build_dir, build_config.pkg_config_file())
+ variables['botan_pkgconfig'] = os.path.join(build_config.build_dir, PKG_CONFIG_FILENAME)
# 'botan' or 'botan-2'. Used in Makefile and install script
# This can be made consistent over all platforms in the future
- variables['libname'] = 'botan-%d' % (build_config.version_major)
+ variables['libname'] = 'botan-%d' % (Version.major)
variables["header_in"] = process_template(os.path.join(options.makefile_dir, 'header.in'), variables)
@@ -1974,7 +1980,7 @@ def portable_symlink(file_path, target_dir, method):
else:
raise ConfigureError('Unknown link method %s' % (method))
-def generate_amalgamation(build_config, options):
+def generate_amalgamation(build_config, modules, options):
"""
Generate the amalgamation
"""
@@ -2071,7 +2077,7 @@ def generate_amalgamation(build_config, options):
*
* Botan is released under the Simplified BSD License (see license.txt)
*/
-""" % (build_config.version_string)
+""" % (Version.as_string())
botan_h.write(amalg_header)
@@ -2115,7 +2121,7 @@ def generate_amalgamation(build_config, options):
botan_amalg_files = {}
headers_written = {}
- for mod in build_config.modules:
+ for mod in modules:
tgt = ''
if not options.single_amalgamation_file:
@@ -2396,7 +2402,7 @@ def main(argv=None):
using_mods = [modules[m] for m in loaded_mods]
- build_config = BuildConfigurationInformation(options, using_mods)
+ build_config = BuildPaths(options, using_mods)
build_config.public_headers.append(os.path.join(build_config.build_dir, 'build.h'))
@@ -2441,7 +2447,7 @@ def main(argv=None):
if e.errno != errno.ENOENT:
logging.error('Problem while removing build dir: %s' % (e))
- for build_dir in build_config.build_dirs:
+ for build_dir in build_config.build_dirs():
try:
robust_makedirs(build_dir)
except OSError as e:
@@ -2464,7 +2470,7 @@ def main(argv=None):
write_template(in_build_dir('botan.doxy'), in_build_data('botan.doxy.in'))
if options.os != 'windows':
- write_template(in_build_dir(build_config.pkg_config_file()), in_build_data('botan.pc.in'))
+ write_template(in_build_dir(PKG_CONFIG_FILENAME), in_build_data('botan.pc.in'))
if options.os == 'windows':
write_template(in_build_dir('botan.iss'), in_build_data('innosetup.in'))
@@ -2494,8 +2500,8 @@ def main(argv=None):
json.dump(template_vars, f, sort_keys=True, indent=2)
if options.amalgamation:
- amalgamation_cpp_files = generate_amalgamation(build_config, options)
- build_config.build_sources = amalgamation_cpp_files
+ amalgamation_cpp_files = generate_amalgamation(build_config, using_mods, options)
+ build_config.lib_sources = amalgamation_cpp_files
gen_makefile_lists(template_vars, build_config, options, using_mods, cc, arch, osinfo)
if options.with_bakefile:
@@ -2509,10 +2515,10 @@ def main(argv=None):
return 'dated %d' % (datestamp)
logging.info('Botan %s (VC %s) (%s %s) build setup is complete' % (
- build_config.version_string,
- build_config.version_vc_rev,
- build_config.version_release_type,
- release_date(build_config.version_datestamp)))
+ Version.as_string(),
+ Version.vc_rev(),
+ Version.release_type,
+ release_date(Version.datestamp)))
if options.unsafe_fuzzer_mode:
logging.warning("The fuzzer mode flag is labeled unsafe for a reason, this version is for testing only")
diff --git a/src/lib/asn1/info.txt b/src/lib/asn1/info.txt
index c2782282d..4b3689f45 100644
--- a/src/lib/asn1/info.txt
+++ b/src/lib/asn1/info.txt
@@ -1,4 +1,6 @@
-define ASN1 20161102
+<defines>
+ASN1 -> 20161102
+</defines>
<requires>
bigint
diff --git a/src/lib/block/aes/aes_ni/info.txt b/src/lib/block/aes/aes_ni/info.txt
index 11bf90390..d5d359348 100644
--- a/src/lib/block/aes/aes_ni/info.txt
+++ b/src/lib/block/aes/aes_ni/info.txt
@@ -1,4 +1,6 @@
-define AES_NI 20131128
+<defines>
+AES_NI -> 20131128
+</defines>
load_on auto
diff --git a/src/lib/block/aes/aes_ssse3/info.txt b/src/lib/block/aes/aes_ssse3/info.txt
index 9e27801e6..8457eed56 100644
--- a/src/lib/block/aes/aes_ssse3/info.txt
+++ b/src/lib/block/aes/aes_ssse3/info.txt
@@ -1,4 +1,6 @@
-define AES_SSSE3 20131128
+<defines>
+AES_SSSE3 -> 20131128
+</defines>
load_on auto
diff --git a/src/lib/block/aes/info.txt b/src/lib/block/aes/info.txt
index 09bd9a0ca..62455cf2c 100644
--- a/src/lib/block/aes/info.txt
+++ b/src/lib/block/aes/info.txt
@@ -1 +1,3 @@
-define AES 20131128
+<defines>
+AES -> 20131128
+</defines>
diff --git a/src/lib/block/blowfish/info.txt b/src/lib/block/blowfish/info.txt
index 1a33140d3..e028a5559 100644
--- a/src/lib/block/blowfish/info.txt
+++ b/src/lib/block/blowfish/info.txt
@@ -1 +1,3 @@
-define BLOWFISH 20131128
+<defines>
+BLOWFISH -> 20131128
+</defines>
diff --git a/src/lib/block/camellia/info.txt b/src/lib/block/camellia/info.txt
index 041ba75a2..c70a7f345 100644
--- a/src/lib/block/camellia/info.txt
+++ b/src/lib/block/camellia/info.txt
@@ -1,4 +1,6 @@
-define CAMELLIA 20150922
+<defines>
+CAMELLIA -> 20150922
+</defines>
<header:public>
camellia.h
diff --git a/src/lib/block/cascade/info.txt b/src/lib/block/cascade/info.txt
index 14f618fd0..15f5b2262 100644
--- a/src/lib/block/cascade/info.txt
+++ b/src/lib/block/cascade/info.txt
@@ -1,4 +1,6 @@
-define CASCADE 20131128
+<defines>
+CASCADE -> 20131128
+</defines>
<header:public>
cascade.h
diff --git a/src/lib/block/cast/info.txt b/src/lib/block/cast/info.txt
index be4cb7510..75d7e4ca3 100644
--- a/src/lib/block/cast/info.txt
+++ b/src/lib/block/cast/info.txt
@@ -1,4 +1,6 @@
-define CAST 20131128
+<defines>
+CAST -> 20131128
+</defines>
<header:internal>
cast_sboxes.h
diff --git a/src/lib/block/des/info.txt b/src/lib/block/des/info.txt
index a5d50d56e..05f85b523 100644
--- a/src/lib/block/des/info.txt
+++ b/src/lib/block/des/info.txt
@@ -1 +1,3 @@
-define DES 20131128
+<defines>
+DES -> 20131128
+</defines>
diff --git a/src/lib/block/gost_28147/info.txt b/src/lib/block/gost_28147/info.txt
index 396557248..17fc97159 100644
--- a/src/lib/block/gost_28147/info.txt
+++ b/src/lib/block/gost_28147/info.txt
@@ -1 +1,3 @@
-define GOST_28147_89 20131128
+<defines>
+GOST_28147_89 -> 20131128
+</defines>
diff --git a/src/lib/block/idea/idea_sse2/info.txt b/src/lib/block/idea/idea_sse2/info.txt
index 78f365b93..4479f12ad 100644
--- a/src/lib/block/idea/idea_sse2/info.txt
+++ b/src/lib/block/idea/idea_sse2/info.txt
@@ -1,4 +1,5 @@
-define IDEA_SSE2 20131128
+<defines>
+IDEA_SSE2 -> 20131128
+</defines>
need_isa sse2
-
diff --git a/src/lib/block/idea/info.txt b/src/lib/block/idea/info.txt
index dbca72c8d..bcbdce03f 100644
--- a/src/lib/block/idea/info.txt
+++ b/src/lib/block/idea/info.txt
@@ -1 +1,3 @@
-define IDEA 20131128
+<defines>
+IDEA -> 20131128
+</defines>
diff --git a/src/lib/block/info.txt b/src/lib/block/info.txt
index 30f7392ef..b03a8c8f5 100644
--- a/src/lib/block/info.txt
+++ b/src/lib/block/info.txt
@@ -1,4 +1,6 @@
-define BLOCK_CIPHER 20131128
+<defines>
+BLOCK_CIPHER -> 20131128
+</defines>
<header:public>
block_cipher.h
diff --git a/src/lib/block/kasumi/info.txt b/src/lib/block/kasumi/info.txt
index 3dd2a3ac0..b48183ca9 100644
--- a/src/lib/block/kasumi/info.txt
+++ b/src/lib/block/kasumi/info.txt
@@ -1 +1,3 @@
-define KASUMI 20131128
+<defines>
+KASUMI -> 20131128
+</defines>
diff --git a/src/lib/block/lion/info.txt b/src/lib/block/lion/info.txt
index 6074dbd08..c818627eb 100644
--- a/src/lib/block/lion/info.txt
+++ b/src/lib/block/lion/info.txt
@@ -1 +1,3 @@
-define LION 20131128
+<defines>
+LION -> 20131128
+</defines>
diff --git a/src/lib/block/misty1/info.txt b/src/lib/block/misty1/info.txt
index 568f13574..bf21dd439 100644
--- a/src/lib/block/misty1/info.txt
+++ b/src/lib/block/misty1/info.txt
@@ -1 +1,3 @@
-define MISTY1 20131128
+<defines>
+MISTY1 -> 20131128
+</defines>
diff --git a/src/lib/block/noekeon/info.txt b/src/lib/block/noekeon/info.txt
index 769d7150e..f3445eb7e 100644
--- a/src/lib/block/noekeon/info.txt
+++ b/src/lib/block/noekeon/info.txt
@@ -1 +1,3 @@
-define NOEKEON 20131128
+<defines>
+NOEKEON -> 20131128
+</defines>
diff --git a/src/lib/block/noekeon/noekeon_simd/info.txt b/src/lib/block/noekeon/noekeon_simd/info.txt
index 45ff93467..a09e491b5 100644
--- a/src/lib/block/noekeon/noekeon_simd/info.txt
+++ b/src/lib/block/noekeon/noekeon_simd/info.txt
@@ -1,4 +1,6 @@
-define NOEKEON_SIMD 20160903
+<defines>
+NOEKEON_SIMD -> 20160903
+</defines>
<requires>
noekeon
diff --git a/src/lib/block/seed/info.txt b/src/lib/block/seed/info.txt
index 1c6b28792..dd395eda1 100644
--- a/src/lib/block/seed/info.txt
+++ b/src/lib/block/seed/info.txt
@@ -1 +1,3 @@
-define SEED 20131128
+<defines>
+SEED -> 20131128
+</defines>
diff --git a/src/lib/block/serpent/info.txt b/src/lib/block/serpent/info.txt
index 6337ef6c0..89b860ce4 100644
--- a/src/lib/block/serpent/info.txt
+++ b/src/lib/block/serpent/info.txt
@@ -1,4 +1,6 @@
-define SERPENT 20131128
+<defines>
+SERPENT -> 20131128
+</defines>
<header:public>
serpent.h
diff --git a/src/lib/block/serpent/serpent_simd/info.txt b/src/lib/block/serpent/serpent_simd/info.txt
index a719ba388..f7dadf33f 100644
--- a/src/lib/block/serpent/serpent_simd/info.txt
+++ b/src/lib/block/serpent/serpent_simd/info.txt
@@ -1,4 +1,6 @@
-define SERPENT_SIMD 20160903
+<defines>
+SERPENT_SIMD -> 20160903
+</defines>
<requires>
simd
diff --git a/src/lib/block/threefish/info.txt b/src/lib/block/threefish/info.txt
index 15843cdd3..e12223679 100644
--- a/src/lib/block/threefish/info.txt
+++ b/src/lib/block/threefish/info.txt
@@ -1 +1,3 @@
-define THREEFISH_512 20131224
+<defines>
+THREEFISH_512 -> 20131224
+</defines>
diff --git a/src/lib/block/threefish/threefish_avx2/info.txt b/src/lib/block/threefish/threefish_avx2/info.txt
index 8e7db6455..bc2675fb4 100644
--- a/src/lib/block/threefish/threefish_avx2/info.txt
+++ b/src/lib/block/threefish/threefish_avx2/info.txt
@@ -1,4 +1,6 @@
-define THREEFISH_512_AVX2 20160903
+<defines>
+THREEFISH_512_AVX2 -> 20160903
+</defines>
need_isa avx2
diff --git a/src/lib/block/twofish/info.txt b/src/lib/block/twofish/info.txt
index c4351db59..9febbc8dd 100644
--- a/src/lib/block/twofish/info.txt
+++ b/src/lib/block/twofish/info.txt
@@ -1 +1,3 @@
-define TWOFISH 20131128
+<defines>
+TWOFISH -> 20131128
+</defines>
diff --git a/src/lib/block/xtea/info.txt b/src/lib/block/xtea/info.txt
index e2cc8ac34..b9b9ad365 100644
--- a/src/lib/block/xtea/info.txt
+++ b/src/lib/block/xtea/info.txt
@@ -1 +1,3 @@
-define XTEA 20131128
+<defines>
+XTEA -> 20131128
+</defines>
diff --git a/src/lib/codec/base64/info.txt b/src/lib/codec/base64/info.txt
index cacae6b0c..ceed63605 100644
--- a/src/lib/codec/base64/info.txt
+++ b/src/lib/codec/base64/info.txt
@@ -1 +1,3 @@
-define BASE64_CODEC 20131128
+<defines>
+BASE64_CODEC -> 20131128
+</defines>
diff --git a/src/lib/codec/hex/info.txt b/src/lib/codec/hex/info.txt
index ead5beffd..6ee27e57c 100644
--- a/src/lib/codec/hex/info.txt
+++ b/src/lib/codec/hex/info.txt
@@ -1 +1,3 @@
-define HEX_CODEC 20131128
+<defines>
+HEX_CODEC -> 20131128
+</defines>
diff --git a/src/lib/compression/bzip2/info.txt b/src/lib/compression/bzip2/info.txt
index bc8d780be..8826df2f9 100644
--- a/src/lib/compression/bzip2/info.txt
+++ b/src/lib/compression/bzip2/info.txt
@@ -1,4 +1,6 @@
-define BZIP2 20160412
+<defines>
+BZIP2 -> 20160412
+</defines>
load_on vendor
diff --git a/src/lib/compression/info.txt b/src/lib/compression/info.txt
index bfbc806c8..fade2e51a 100644
--- a/src/lib/compression/info.txt
+++ b/src/lib/compression/info.txt
@@ -1,4 +1,6 @@
-define COMPRESSION 20141117
+<defines>
+COMPRESSION -> 20141117
+</defines>
<header:internal>
compress_utils.h
diff --git a/src/lib/compression/lzma/info.txt b/src/lib/compression/lzma/info.txt
index 7a712338e..477a7b795 100644
--- a/src/lib/compression/lzma/info.txt
+++ b/src/lib/compression/lzma/info.txt
@@ -1,4 +1,6 @@
-define LZMA 20160412
+<defines>
+LZMA -> 20160412
+</defines>
load_on vendor
diff --git a/src/lib/compression/zlib/info.txt b/src/lib/compression/zlib/info.txt
index 6c82c49a3..8e3a12261 100644
--- a/src/lib/compression/zlib/info.txt
+++ b/src/lib/compression/zlib/info.txt
@@ -1,4 +1,6 @@
-define ZLIB 20160412
+<defines>
+ZLIB -> 20160412
+</defines>
load_on vendor
diff --git a/src/lib/entropy/cryptoapi_rng/info.txt b/src/lib/entropy/cryptoapi_rng/info.txt
index 846a11371..21b42f2a0 100644
--- a/src/lib/entropy/cryptoapi_rng/info.txt
+++ b/src/lib/entropy/cryptoapi_rng/info.txt
@@ -1,4 +1,6 @@
-define ENTROPY_SRC_CAPI 20131128
+<defines>
+ENTROPY_SRC_CAPI -> 20131128
+</defines>
<header:internal>
es_capi.h
diff --git a/src/lib/entropy/darwin_secrandom/info.txt b/src/lib/entropy/darwin_secrandom/info.txt
index 554a4b3d8..477818818 100644
--- a/src/lib/entropy/darwin_secrandom/info.txt
+++ b/src/lib/entropy/darwin_secrandom/info.txt
@@ -1,4 +1,6 @@
-define ENTROPY_SRC_DARWIN_SECRANDOM 20150925
+<defines>
+ENTROPY_SRC_DARWIN_SECRANDOM -> 20150925
+</defines>
<header:internal>
darwin_secrandom.h
diff --git a/src/lib/entropy/dev_random/info.txt b/src/lib/entropy/dev_random/info.txt
index 56162f84e..eeffe5b85 100644
--- a/src/lib/entropy/dev_random/info.txt
+++ b/src/lib/entropy/dev_random/info.txt
@@ -1,4 +1,6 @@
-define ENTROPY_SRC_DEV_RANDOM 20131128
+<defines>
+ENTROPY_SRC_DEV_RANDOM -> 20131128
+</defines>
<header:internal>
dev_random.h
diff --git a/src/lib/entropy/getentropy/info.txt b/src/lib/entropy/getentropy/info.txt
index 89e7b120d..a44299cbe 100644
--- a/src/lib/entropy/getentropy/info.txt
+++ b/src/lib/entropy/getentropy/info.txt
@@ -1,4 +1,6 @@
-define ENTROPY_SRC_GETENTROPY 20170327
+<defines>
+ENTROPY_SRC_GETENTROPY -> 20170327
+</defines>
<header:internal>
getentropy.h
diff --git a/src/lib/entropy/info.txt b/src/lib/entropy/info.txt
index d80176113..57f1930b9 100644
--- a/src/lib/entropy/info.txt
+++ b/src/lib/entropy/info.txt
@@ -1,4 +1,6 @@
-define ENTROPY_SOURCE 20151120
+<defines>
+ENTROPY_SOURCE -> 20151120
+</defines>
<requires>
rng
diff --git a/src/lib/entropy/proc_walk/info.txt b/src/lib/entropy/proc_walk/info.txt
index ef9f602f3..363fa8cd9 100644
--- a/src/lib/entropy/proc_walk/info.txt
+++ b/src/lib/entropy/proc_walk/info.txt
@@ -1,4 +1,6 @@
-define ENTROPY_SRC_PROC_WALKER 20131128
+<defines>
+ENTROPY_SRC_PROC_WALKER -> 20131128
+</defines>
<header:internal>
proc_walk.h
diff --git a/src/lib/entropy/rdrand/info.txt b/src/lib/entropy/rdrand/info.txt
index 01ef2bc05..6abe8765d 100644
--- a/src/lib/entropy/rdrand/info.txt
+++ b/src/lib/entropy/rdrand/info.txt
@@ -1,4 +1,6 @@
-define ENTROPY_SRC_RDRAND 20131128
+<defines>
+ENTROPY_SRC_RDRAND -> 20131128
+</defines>
<requires>
rdrand_rng
diff --git a/src/lib/entropy/rdseed/info.txt b/src/lib/entropy/rdseed/info.txt
index 10e797322..13ea33175 100644
--- a/src/lib/entropy/rdseed/info.txt
+++ b/src/lib/entropy/rdseed/info.txt
@@ -1,4 +1,6 @@
-define ENTROPY_SRC_RDSEED 20151218
+<defines>
+ENTROPY_SRC_RDSEED -> 20151218
+</defines>
need_isa rdseed
diff --git a/src/lib/entropy/win32_stats/info.txt b/src/lib/entropy/win32_stats/info.txt
index 1787c9138..7c84fc235 100644
--- a/src/lib/entropy/win32_stats/info.txt
+++ b/src/lib/entropy/win32_stats/info.txt
@@ -1,4 +1,6 @@
-define ENTROPY_SRC_WIN32 20131128
+<defines>
+ENTROPY_SRC_WIN32 -> 20131128
+</defines>
<header:internal>
es_win32.h
diff --git a/src/lib/ffi/info.txt b/src/lib/ffi/info.txt
index e1d29981f..71b4e6cf9 100644
--- a/src/lib/ffi/info.txt
+++ b/src/lib/ffi/info.txt
@@ -1,4 +1,6 @@
-define FFI 20170327
+<defines>
+FFI -> 20170327
+</defines>
<requires>
aead
@@ -11,4 +13,3 @@ x509
system_rng
auto_rng
</requires>
-
diff --git a/src/lib/filters/codec_filt/info.txt b/src/lib/filters/codec_filt/info.txt
index 30b6c2ed1..347c876a7 100644
--- a/src/lib/filters/codec_filt/info.txt
+++ b/src/lib/filters/codec_filt/info.txt
@@ -1,4 +1,6 @@
-define CODEC_FILTERS 20131128
+<defines>
+CODEC_FILTERS -> 20131128
+</defines>
<requires>
base64
diff --git a/src/lib/filters/fd_unix/info.txt b/src/lib/filters/fd_unix/info.txt
index ea76d0dd7..6e2efced8 100644
--- a/src/lib/filters/fd_unix/info.txt
+++ b/src/lib/filters/fd_unix/info.txt
@@ -1,4 +1,6 @@
-define PIPE_UNIXFD_IO 20131128
+<defines>
+PIPE_UNIXFD_IO -> 20131128
+</defines>
load_on auto
diff --git a/src/lib/filters/info.txt b/src/lib/filters/info.txt
index 0e51d0f8a..cfc114353 100644
--- a/src/lib/filters/info.txt
+++ b/src/lib/filters/info.txt
@@ -1,4 +1,6 @@
-define FILTERS 20160415
+<defines>
+FILTERS -> 20160415
+</defines>
<header:public>
basefilt.h
diff --git a/src/lib/hash/blake2/info.txt b/src/lib/hash/blake2/info.txt
index 6c6d88afe..b99be4601 100644
--- a/src/lib/hash/blake2/info.txt
+++ b/src/lib/hash/blake2/info.txt
@@ -1 +1,3 @@
-define BLAKE2B 20130131
+<defines>
+BLAKE2B -> 20130131
+</defines>
diff --git a/src/lib/hash/checksum/adler32/info.txt b/src/lib/hash/checksum/adler32/info.txt
index 26ca8b255..4ddcb2e08 100644
--- a/src/lib/hash/checksum/adler32/info.txt
+++ b/src/lib/hash/checksum/adler32/info.txt
@@ -1 +1,3 @@
-define ADLER32 20131128
+<defines>
+ADLER32 -> 20131128
+</defines>
diff --git a/src/lib/hash/checksum/crc24/info.txt b/src/lib/hash/checksum/crc24/info.txt
index c55ad3108..3c5070cc4 100644
--- a/src/lib/hash/checksum/crc24/info.txt
+++ b/src/lib/hash/checksum/crc24/info.txt
@@ -1 +1,3 @@
-define CRC24 20131128
+<defines>
+CRC24 -> 20131128
+</defines>
diff --git a/src/lib/hash/checksum/crc32/info.txt b/src/lib/hash/checksum/crc32/info.txt
index 44bb2b56a..7d3e45239 100644
--- a/src/lib/hash/checksum/crc32/info.txt
+++ b/src/lib/hash/checksum/crc32/info.txt
@@ -1 +1,3 @@
-define CRC32 20131128
+<defines>
+CRC32 -> 20131128
+</defines>
diff --git a/src/lib/hash/comb4p/info.txt b/src/lib/hash/comb4p/info.txt
index 375895610..1bfac599e 100644
--- a/src/lib/hash/comb4p/info.txt
+++ b/src/lib/hash/comb4p/info.txt
@@ -1 +1,3 @@
-define COMB4P 20131128
+<defines>
+COMB4P -> 20131128
+</defines>
diff --git a/src/lib/hash/gost_3411/info.txt b/src/lib/hash/gost_3411/info.txt
index af8eddac6..31749c302 100644
--- a/src/lib/hash/gost_3411/info.txt
+++ b/src/lib/hash/gost_3411/info.txt
@@ -1,4 +1,6 @@
-define GOST_34_11 20131128
+<defines>
+GOST_34_11 -> 20131128
+</defines>
<requires>
gost_28147
diff --git a/src/lib/hash/keccak/info.txt b/src/lib/hash/keccak/info.txt
index 712a99c76..6f7345af8 100644
--- a/src/lib/hash/keccak/info.txt
+++ b/src/lib/hash/keccak/info.txt
@@ -1,4 +1,6 @@
-define KECCAK 20131128
+<defines>
+KECCAK -> 20131128
+</defines>
<requires>
sha3
diff --git a/src/lib/hash/md4/info.txt b/src/lib/hash/md4/info.txt
index 8894d4af3..fde5168ad 100644
--- a/src/lib/hash/md4/info.txt
+++ b/src/lib/hash/md4/info.txt
@@ -1,4 +1,6 @@
-define MD4 20131128
+<defines>
+MD4 -> 20131128
+</defines>
<requires>
mdx_hash
diff --git a/src/lib/hash/md5/info.txt b/src/lib/hash/md5/info.txt
index 8bbf1c3e7..5e0aadec8 100644
--- a/src/lib/hash/md5/info.txt
+++ b/src/lib/hash/md5/info.txt
@@ -1,4 +1,6 @@
-define MD5 20131128
+<defines>
+MD5 -> 20131128
+</defines>
<requires>
mdx_hash
diff --git a/src/lib/hash/mdx_hash/info.txt b/src/lib/hash/mdx_hash/info.txt
index d9a24c621..6a509f1be 100644
--- a/src/lib/hash/mdx_hash/info.txt
+++ b/src/lib/hash/mdx_hash/info.txt
@@ -1,3 +1,5 @@
-define MDX_HASH_FUNCTION 20131128
+<defines>
+MDX_HASH_FUNCTION -> 20131128
+</defines>
load_on dep
diff --git a/src/lib/hash/par_hash/info.txt b/src/lib/hash/par_hash/info.txt
index 4f559b545..b04e0f4df 100644
--- a/src/lib/hash/par_hash/info.txt
+++ b/src/lib/hash/par_hash/info.txt
@@ -1 +1,3 @@
-define PARALLEL_HASH 20131128
+<defines>
+PARALLEL_HASH -> 20131128
+</defines>
diff --git a/src/lib/hash/rmd160/info.txt b/src/lib/hash/rmd160/info.txt
index 4e1451bb6..53e2f993d 100644
--- a/src/lib/hash/rmd160/info.txt
+++ b/src/lib/hash/rmd160/info.txt
@@ -1,4 +1,6 @@
-define RIPEMD_160 20131128
+<defines>
+RIPEMD_160 -> 20131128
+</defines>
<requires>
mdx_hash
diff --git a/src/lib/hash/sha1/info.txt b/src/lib/hash/sha1/info.txt
index fffb51275..6d326af1c 100644
--- a/src/lib/hash/sha1/info.txt
+++ b/src/lib/hash/sha1/info.txt
@@ -1,4 +1,6 @@
-define SHA1 20131128
+<defines>
+SHA1 -> 20131128
+</defines>
<requires>
mdx_hash
diff --git a/src/lib/hash/sha1/sha1_sse2/info.txt b/src/lib/hash/sha1/sha1_sse2/info.txt
index cc1179014..272bf5e8d 100644
--- a/src/lib/hash/sha1/sha1_sse2/info.txt
+++ b/src/lib/hash/sha1/sha1_sse2/info.txt
@@ -1,3 +1,5 @@
-define SHA1_SSE2 20160803
+<defines>
+SHA1_SSE2 -> 20160803
+</defines>
need_isa sse2
diff --git a/src/lib/hash/sha2_32/info.txt b/src/lib/hash/sha2_32/info.txt
index b15db2ede..7992eff26 100644
--- a/src/lib/hash/sha2_32/info.txt
+++ b/src/lib/hash/sha2_32/info.txt
@@ -1,4 +1,6 @@
-define SHA2_32 20131128
+<defines>
+SHA2_32 -> 20131128
+</defines>
<requires>
mdx_hash
diff --git a/src/lib/hash/sha2_64/info.txt b/src/lib/hash/sha2_64/info.txt
index a457dffec..6fb415a6b 100644
--- a/src/lib/hash/sha2_64/info.txt
+++ b/src/lib/hash/sha2_64/info.txt
@@ -1,4 +1,6 @@
-define SHA2_64 20131128
+<defines>
+SHA2_64 -> 20131128
+</defines>
<requires>
mdx_hash
diff --git a/src/lib/hash/sha3/info.txt b/src/lib/hash/sha3/info.txt
index f755e9ea5..76ae81bd8 100644
--- a/src/lib/hash/sha3/info.txt
+++ b/src/lib/hash/sha3/info.txt
@@ -1 +1,3 @@
-define SHA3 20161018
+<defines>
+SHA3 -> 20161018
+</defines>
diff --git a/src/lib/hash/shake/info.txt b/src/lib/hash/shake/info.txt
index f579383eb..59a1a852a 100644
--- a/src/lib/hash/shake/info.txt
+++ b/src/lib/hash/shake/info.txt
@@ -1,4 +1,6 @@
-define SHAKE 20161009
+<defines>
+SHAKE -> 20161009
+</defines>
<requires>
sha3
diff --git a/src/lib/hash/skein/info.txt b/src/lib/hash/skein/info.txt
index 82cc69bc2..3de41289a 100644
--- a/src/lib/hash/skein/info.txt
+++ b/src/lib/hash/skein/info.txt
@@ -1,4 +1,6 @@
-define SKEIN_512 20131128
+<defines>
+SKEIN_512 -> 20131128
+</defines>
<requires>
threefish
diff --git a/src/lib/hash/tiger/info.txt b/src/lib/hash/tiger/info.txt
index 773f2b037..a244b2f0b 100644
--- a/src/lib/hash/tiger/info.txt
+++ b/src/lib/hash/tiger/info.txt
@@ -1,4 +1,6 @@
-define TIGER 20131128
+<defines>
+TIGER -> 20131128
+</defines>
<requires>
mdx_hash
diff --git a/src/lib/hash/whirlpool/info.txt b/src/lib/hash/whirlpool/info.txt
index 8b0abc25a..e1a8da77a 100644
--- a/src/lib/hash/whirlpool/info.txt
+++ b/src/lib/hash/whirlpool/info.txt
@@ -1,4 +1,6 @@
-define WHIRLPOOL 20131128
+<defines>
+WHIRLPOOL -> 20131128
+</defines>
<requires>
mdx_hash
diff --git a/src/lib/kdf/hkdf/info.txt b/src/lib/kdf/hkdf/info.txt
index 7389e5bb1..db6618c3c 100644
--- a/src/lib/kdf/hkdf/info.txt
+++ b/src/lib/kdf/hkdf/info.txt
@@ -1 +1,3 @@
-define HKDF 20131128
+<defines>
+HKDF -> 20131128
+</defines>
diff --git a/src/lib/kdf/info.txt b/src/lib/kdf/info.txt
index 68aa46895..3d96cea19 100644
--- a/src/lib/kdf/info.txt
+++ b/src/lib/kdf/info.txt
@@ -1,4 +1,6 @@
-define KDF_BASE 20131128
+<defines>
+KDF_BASE -> 20131128
+</defines>
<requires>
base
diff --git a/src/lib/kdf/kdf1/info.txt b/src/lib/kdf/kdf1/info.txt
index a77bf1508..a2372c7e3 100644
--- a/src/lib/kdf/kdf1/info.txt
+++ b/src/lib/kdf/kdf1/info.txt
@@ -1 +1,3 @@
-define KDF1 20131128
+<defines>
+KDF1 -> 20131128
+</defines>
diff --git a/src/lib/kdf/kdf1_iso18033/info.txt b/src/lib/kdf/kdf1_iso18033/info.txt
index 507a04561..af6026836 100644
--- a/src/lib/kdf/kdf1_iso18033/info.txt
+++ b/src/lib/kdf/kdf1_iso18033/info.txt
@@ -1 +1,3 @@
-define KDF1_18033 20160128
+<defines>
+KDF1_18033 -> 20160128
+</defines>
diff --git a/src/lib/kdf/kdf2/info.txt b/src/lib/kdf/kdf2/info.txt
index 4f63019b1..26c824cf2 100644
--- a/src/lib/kdf/kdf2/info.txt
+++ b/src/lib/kdf/kdf2/info.txt
@@ -1 +1,3 @@
-define KDF2 20131128
+<defines>
+KDF2 -> 20131128
+</defines>
diff --git a/src/lib/kdf/prf_tls/info.txt b/src/lib/kdf/prf_tls/info.txt
index 505e1ff1e..d4307b6af 100644
--- a/src/lib/kdf/prf_tls/info.txt
+++ b/src/lib/kdf/prf_tls/info.txt
@@ -1,5 +1,7 @@
-define TLS_V10_PRF 20131128
-define TLS_V12_PRF 20131128
+<defines>
+TLS_V10_PRF -> 20131128
+TLS_V12_PRF -> 20131128
+</defines>
<requires>
hmac
diff --git a/src/lib/kdf/prf_x942/info.txt b/src/lib/kdf/prf_x942/info.txt
index c016f0b66..822643365 100644
--- a/src/lib/kdf/prf_x942/info.txt
+++ b/src/lib/kdf/prf_x942/info.txt
@@ -1,4 +1,6 @@
-define X942_PRF 20131128
+<defines>
+X942_PRF -> 20131128
+</defines>
<requires>
asn1
diff --git a/src/lib/kdf/sp800_108/info.txt b/src/lib/kdf/sp800_108/info.txt
index a78531fe7..864a7fb9c 100644
--- a/src/lib/kdf/sp800_108/info.txt
+++ b/src/lib/kdf/sp800_108/info.txt
@@ -1,4 +1,6 @@
-define SP800_108 20160128
+<defines>
+SP800_108 -> 20160128
+</defines>
<requires>
mac
diff --git a/src/lib/kdf/sp800_56c/info.txt b/src/lib/kdf/sp800_56c/info.txt
index 203c05a83..e598e8845 100644
--- a/src/lib/kdf/sp800_56c/info.txt
+++ b/src/lib/kdf/sp800_56c/info.txt
@@ -1,4 +1,6 @@
-define SP800_56C 20160211
+<defines>
+SP800_56C -> 20160211
+</defines>
<requires>
sp800_108
diff --git a/src/lib/mac/cbc_mac/info.txt b/src/lib/mac/cbc_mac/info.txt
index 5e864ca22..1cf22eae0 100644
--- a/src/lib/mac/cbc_mac/info.txt
+++ b/src/lib/mac/cbc_mac/info.txt
@@ -1 +1,3 @@
-define CBC_MAC 20131128
+<defines>
+CBC_MAC -> 20131128
+</defines>
diff --git a/src/lib/mac/cmac/info.txt b/src/lib/mac/cmac/info.txt
index 39c75aed1..01bdf7884 100644
--- a/src/lib/mac/cmac/info.txt
+++ b/src/lib/mac/cmac/info.txt
@@ -1 +1,3 @@
-define CMAC 20131128
+<defines>
+CMAC -> 20131128
+</defines>
diff --git a/src/lib/mac/gmac/info.txt b/src/lib/mac/gmac/info.txt
index 921690c93..416e914db 100644
--- a/src/lib/mac/gmac/info.txt
+++ b/src/lib/mac/gmac/info.txt
@@ -1,4 +1,6 @@
-define GMAC 20160207
+<defines>
+GMAC -> 20160207
+</defines>
<requires>
gcm
diff --git a/src/lib/mac/hmac/info.txt b/src/lib/mac/hmac/info.txt
index 171cd8515..cf1a288f6 100644
--- a/src/lib/mac/hmac/info.txt
+++ b/src/lib/mac/hmac/info.txt
@@ -1 +1,3 @@
-define HMAC 20131128
+<defines>
+HMAC -> 20131128
+</defines>
diff --git a/src/lib/mac/info.txt b/src/lib/mac/info.txt
index ab7833857..7aef92b87 100644
--- a/src/lib/mac/info.txt
+++ b/src/lib/mac/info.txt
@@ -1,4 +1,6 @@
-define MAC 20150626
+<defines>
+MAC -> 20150626
+</defines>
<header:public>
mac.h
diff --git a/src/lib/mac/poly1305/info.txt b/src/lib/mac/poly1305/info.txt
index ed3133850..868f97241 100644
--- a/src/lib/mac/poly1305/info.txt
+++ b/src/lib/mac/poly1305/info.txt
@@ -1,4 +1,6 @@
-define POLY1305 20141227
+<defines>
+POLY1305 -> 20141227
+</defines>
<header:public>
poly1305.h
diff --git a/src/lib/mac/siphash/info.txt b/src/lib/mac/siphash/info.txt
index 98c4d0986..8d4c20d1a 100644
--- a/src/lib/mac/siphash/info.txt
+++ b/src/lib/mac/siphash/info.txt
@@ -1 +1,3 @@
-define SIPHASH 20150110
+<defines>
+SIPHASH -> 20150110
+</defines>
diff --git a/src/lib/mac/x919_mac/info.txt b/src/lib/mac/x919_mac/info.txt
index 90d849803..65d6cee64 100644
--- a/src/lib/mac/x919_mac/info.txt
+++ b/src/lib/mac/x919_mac/info.txt
@@ -1,4 +1,6 @@
-define ANSI_X919_MAC 20131128
+<defines>
+ANSI_X919_MAC -> 20131128
+</defines>
<requires>
des
diff --git a/src/lib/math/bigint/info.txt b/src/lib/math/bigint/info.txt
index c91c85e9f..e84061bb6 100644
--- a/src/lib/math/bigint/info.txt
+++ b/src/lib/math/bigint/info.txt
@@ -1,6 +1,8 @@
-load_on auto
+<defines>
+BIGINT -> 20131128
+</defines>
-define BIGINT 20131128
+load_on auto
<header:public>
bigint.h
diff --git a/src/lib/math/ec_gfp/info.txt b/src/lib/math/ec_gfp/info.txt
index 060551562..c4e57da15 100644
--- a/src/lib/math/ec_gfp/info.txt
+++ b/src/lib/math/ec_gfp/info.txt
@@ -1,4 +1,6 @@
-define EC_CURVE_GFP 20131128
+<defines>
+EC_CURVE_GFP -> 20131128
+</defines>
load_on auto
diff --git a/src/lib/math/mp/info.txt b/src/lib/math/mp/info.txt
index 0b8b9c33b..0f5b075f0 100644
--- a/src/lib/math/mp/info.txt
+++ b/src/lib/math/mp/info.txt
@@ -1,4 +1,6 @@
-define BIGINT_MP 20151225
+<defines>
+BIGINT_MP -> 20151225
+</defines>
<header:public>
mp_types.h
diff --git a/src/lib/math/numbertheory/info.txt b/src/lib/math/numbertheory/info.txt
index 49f7ab2fb..0a386b9f3 100644
--- a/src/lib/math/numbertheory/info.txt
+++ b/src/lib/math/numbertheory/info.txt
@@ -1,4 +1,6 @@
-define NUMBERTHEORY 20131128
+<defines>
+NUMBERTHEORY -> 20131128
+</defines>
load_on auto
diff --git a/src/lib/misc/aont/info.txt b/src/lib/misc/aont/info.txt
index 05426fba9..bbd6449f7 100644
--- a/src/lib/misc/aont/info.txt
+++ b/src/lib/misc/aont/info.txt
@@ -1,4 +1,6 @@
-define PACKAGE_TRANSFORM 20131128
+<defines>
+PACKAGE_TRANSFORM -> 20131128
+</defines>
<requires>
ctr
diff --git a/src/lib/misc/cryptobox/info.txt b/src/lib/misc/cryptobox/info.txt
index b7bf6e4e8..f69498f72 100644
--- a/src/lib/misc/cryptobox/info.txt
+++ b/src/lib/misc/cryptobox/info.txt
@@ -1,4 +1,6 @@
-define CRYPTO_BOX 20131128
+<defines>
+CRYPTO_BOX -> 20131128
+</defines>
<requires>
filters
diff --git a/src/lib/misc/fpe_fe1/info.txt b/src/lib/misc/fpe_fe1/info.txt
index c268abe0b..1902fa966 100644
--- a/src/lib/misc/fpe_fe1/info.txt
+++ b/src/lib/misc/fpe_fe1/info.txt
@@ -1,4 +1,6 @@
-define FPE_FE1 20131128
+<defines>
+FPE_FE1 -> 20131128
+</defines>
<requires>
bigint
diff --git a/src/lib/misc/rfc3394/info.txt b/src/lib/misc/rfc3394/info.txt
index 8cd5989ca..ac56ee833 100644
--- a/src/lib/misc/rfc3394/info.txt
+++ b/src/lib/misc/rfc3394/info.txt
@@ -1,4 +1,6 @@
-define RFC3394_KEYWRAP 20131128
+<defines>
+RFC3394_KEYWRAP -> 20131128
+</defines>
<requires>
aes
diff --git a/src/lib/misc/srp6/info.txt b/src/lib/misc/srp6/info.txt
index 2b4b5249e..27b7848f5 100644
--- a/src/lib/misc/srp6/info.txt
+++ b/src/lib/misc/srp6/info.txt
@@ -1,4 +1,6 @@
-define SRP6 20161017
+<defines>
+SRP6 -> 20161017
+</defines>
<requires>
bigint
diff --git a/src/lib/misc/tss/info.txt b/src/lib/misc/tss/info.txt
index 5aaca6707..513be70bc 100644
--- a/src/lib/misc/tss/info.txt
+++ b/src/lib/misc/tss/info.txt
@@ -1,4 +1,6 @@
-define THRESHOLD_SECRET_SHARING 20131128
+<defines>
+THRESHOLD_SECRET_SHARING -> 20131128
+</defines>
<requires>
rng
diff --git a/src/lib/modes/aead/ccm/info.txt b/src/lib/modes/aead/ccm/info.txt
index ee8373caf..b12a43b03 100644
--- a/src/lib/modes/aead/ccm/info.txt
+++ b/src/lib/modes/aead/ccm/info.txt
@@ -1 +1,3 @@
-define AEAD_CCM 20131128
+<defines>
+AEAD_CCM -> 20131128
+</defines>
diff --git a/src/lib/modes/aead/chacha20poly1305/info.txt b/src/lib/modes/aead/chacha20poly1305/info.txt
index f03f2797e..7452f65c3 100644
--- a/src/lib/modes/aead/chacha20poly1305/info.txt
+++ b/src/lib/modes/aead/chacha20poly1305/info.txt
@@ -1,4 +1,6 @@
-define AEAD_CHACHA20_POLY1305 20141228
+<defines>
+AEAD_CHACHA20_POLY1305 -> 20141228
+</defines>
<requires>
chacha
diff --git a/src/lib/modes/aead/eax/info.txt b/src/lib/modes/aead/eax/info.txt
index 140da5740..6bc01ff70 100644
--- a/src/lib/modes/aead/eax/info.txt
+++ b/src/lib/modes/aead/eax/info.txt
@@ -1,4 +1,6 @@
-define AEAD_EAX 20131128
+<defines>
+AEAD_EAX -> 20131128
+</defines>
<requires>
cmac
diff --git a/src/lib/modes/aead/gcm/clmul/info.txt b/src/lib/modes/aead/gcm/clmul/info.txt
index 098aa16f9..999502e31 100644
--- a/src/lib/modes/aead/gcm/clmul/info.txt
+++ b/src/lib/modes/aead/gcm/clmul/info.txt
@@ -1,5 +1,6 @@
-
-define GCM_CLMUL 20131227
+<defines>
+GCM_CLMUL -> 20131227
+</defines>
need_isa aesni
diff --git a/src/lib/modes/aead/gcm/info.txt b/src/lib/modes/aead/gcm/info.txt
index 708e61fdd..6dc5c6928 100644
--- a/src/lib/modes/aead/gcm/info.txt
+++ b/src/lib/modes/aead/gcm/info.txt
@@ -1,4 +1,6 @@
-define AEAD_GCM 20131128
+<defines>
+AEAD_GCM -> 20131128
+</defines>
<requires>
ctr
diff --git a/src/lib/modes/aead/info.txt b/src/lib/modes/aead/info.txt
index 102f05b7b..15106e46a 100644
--- a/src/lib/modes/aead/info.txt
+++ b/src/lib/modes/aead/info.txt
@@ -1 +1,3 @@
-define AEAD_MODES 20131128
+<defines>
+AEAD_MODES -> 20131128
+</defines>
diff --git a/src/lib/modes/aead/ocb/info.txt b/src/lib/modes/aead/ocb/info.txt
index a3af9dc29..738d7c20e 100644
--- a/src/lib/modes/aead/ocb/info.txt
+++ b/src/lib/modes/aead/ocb/info.txt
@@ -1,4 +1,6 @@
-define AEAD_OCB 20131128
+<defines>
+AEAD_OCB -> 20131128
+</defines>
<requires>
cmac
diff --git a/src/lib/modes/aead/siv/info.txt b/src/lib/modes/aead/siv/info.txt
index b76a82422..d25798ac9 100644
--- a/src/lib/modes/aead/siv/info.txt
+++ b/src/lib/modes/aead/siv/info.txt
@@ -1,4 +1,6 @@
-define AEAD_SIV 20131202
+<defines>
+AEAD_SIV -> 20131202
+</defines>
load_on auto
diff --git a/src/lib/modes/cbc/info.txt b/src/lib/modes/cbc/info.txt
index ce59deba0..a1e3e1dec 100644
--- a/src/lib/modes/cbc/info.txt
+++ b/src/lib/modes/cbc/info.txt
@@ -1,4 +1,6 @@
-define MODE_CBC 20131128
+<defines>
+MODE_CBC -> 20131128
+</defines>
<requires>
mode_pad
diff --git a/src/lib/modes/cfb/info.txt b/src/lib/modes/cfb/info.txt
index 8d0e20a84..29744514f 100644
--- a/src/lib/modes/cfb/info.txt
+++ b/src/lib/modes/cfb/info.txt
@@ -1 +1,3 @@
-define MODE_CFB 20131128
+<defines>
+MODE_CFB -> 20131128
+</defines>
diff --git a/src/lib/modes/info.txt b/src/lib/modes/info.txt
index 1e50e7de5..70bd189d7 100644
--- a/src/lib/modes/info.txt
+++ b/src/lib/modes/info.txt
@@ -1,4 +1,6 @@
-define MODES 20150626
+<defines>
+MODES -> 20150626
+</defines>
<header:public>
cipher_mode.h
diff --git a/src/lib/modes/mode_pad/info.txt b/src/lib/modes/mode_pad/info.txt
index e9df6334b..12b6e5b3a 100644
--- a/src/lib/modes/mode_pad/info.txt
+++ b/src/lib/modes/mode_pad/info.txt
@@ -1 +1,3 @@
-define CIPHER_MODE_PADDING 20131128
+<defines>
+CIPHER_MODE_PADDING -> 20131128
+</defines>
diff --git a/src/lib/modes/xts/info.txt b/src/lib/modes/xts/info.txt
index 5f5dc7834..04cd046c7 100644
--- a/src/lib/modes/xts/info.txt
+++ b/src/lib/modes/xts/info.txt
@@ -1 +1,3 @@
-define MODE_XTS 20131128
+<defines>
+MODE_XTS -> 20131128
+</defines>
diff --git a/src/lib/passhash/bcrypt/info.txt b/src/lib/passhash/bcrypt/info.txt
index 4ea70d012..6be060ea0 100644
--- a/src/lib/passhash/bcrypt/info.txt
+++ b/src/lib/passhash/bcrypt/info.txt
@@ -1,8 +1,9 @@
-define BCRYPT 20131128
+<defines>
+BCRYPT -> 20131128
+</defines>
<requires>
blowfish
rng
base64
</requires>
-
diff --git a/src/lib/passhash/passhash9/info.txt b/src/lib/passhash/passhash9/info.txt
index e47a27f67..525427b45 100644
--- a/src/lib/passhash/passhash9/info.txt
+++ b/src/lib/passhash/passhash9/info.txt
@@ -1,4 +1,6 @@
-define PASSHASH9 20131128
+<defines>
+PASSHASH9 -> 20131128
+</defines>
<requires>
pbkdf2
diff --git a/src/lib/pbkdf/info.txt b/src/lib/pbkdf/info.txt
index 3addbdb58..b279ca2ff 100644
--- a/src/lib/pbkdf/info.txt
+++ b/src/lib/pbkdf/info.txt
@@ -1,4 +1,6 @@
-define PBKDF 20150626
+<defines>
+PBKDF -> 20150626
+</defines>
<requires>
base
diff --git a/src/lib/pbkdf/pbkdf1/info.txt b/src/lib/pbkdf/pbkdf1/info.txt
index 1ec626cac..e4b972e4b 100644
--- a/src/lib/pbkdf/pbkdf1/info.txt
+++ b/src/lib/pbkdf/pbkdf1/info.txt
@@ -1,4 +1,6 @@
-define PBKDF1 20131128
+<defines>
+PBKDF1 -> 20131128
+</defines>
<requires>
hash
diff --git a/src/lib/pbkdf/pbkdf2/info.txt b/src/lib/pbkdf/pbkdf2/info.txt
index 9863532b7..bc5c2e491 100644
--- a/src/lib/pbkdf/pbkdf2/info.txt
+++ b/src/lib/pbkdf/pbkdf2/info.txt
@@ -1,4 +1,6 @@
-define PBKDF2 20131128
+<defines>
+PBKDF2 -> 20131128
+</defines>
<requires>
hmac
diff --git a/src/lib/pk_pad/eme_oaep/info.txt b/src/lib/pk_pad/eme_oaep/info.txt
index a07502159..0ec01eb32 100644
--- a/src/lib/pk_pad/eme_oaep/info.txt
+++ b/src/lib/pk_pad/eme_oaep/info.txt
@@ -1,4 +1,6 @@
-define EME_OAEP 20140118
+<defines>
+EME_OAEP -> 20140118
+</defines>
<requires>
mgf1
diff --git a/src/lib/pk_pad/eme_pkcs1/info.txt b/src/lib/pk_pad/eme_pkcs1/info.txt
index 432aaf8eb..7c827cc34 100644
--- a/src/lib/pk_pad/eme_pkcs1/info.txt
+++ b/src/lib/pk_pad/eme_pkcs1/info.txt
@@ -1 +1,3 @@
-define EME_PKCS1v15 20131128
+<defines>
+EME_PKCS1v15 -> 20131128
+</defines>
diff --git a/src/lib/pk_pad/eme_raw/info.txt b/src/lib/pk_pad/eme_raw/info.txt
index 4c94824cf..c42365e98 100644
--- a/src/lib/pk_pad/eme_raw/info.txt
+++ b/src/lib/pk_pad/eme_raw/info.txt
@@ -1 +1,3 @@
-define EME_RAW 20150313
+<defines>
+EME_RAW -> 20150313
+</defines>
diff --git a/src/lib/pk_pad/emsa1/info.txt b/src/lib/pk_pad/emsa1/info.txt
index e52afcb1a..5b5bf1f6b 100644
--- a/src/lib/pk_pad/emsa1/info.txt
+++ b/src/lib/pk_pad/emsa1/info.txt
@@ -1 +1,3 @@
-define EMSA1 20131128
+<defines>
+EMSA1 -> 20131128
+</defines>
diff --git a/src/lib/pk_pad/emsa_pkcs1/info.txt b/src/lib/pk_pad/emsa_pkcs1/info.txt
index 72f75e41b..b70f4e244 100644
--- a/src/lib/pk_pad/emsa_pkcs1/info.txt
+++ b/src/lib/pk_pad/emsa_pkcs1/info.txt
@@ -1,4 +1,6 @@
-define EMSA_PKCS1 20140118
+<defines>
+EMSA_PKCS1 -> 20140118
+</defines>
<requires>
hash_id
diff --git a/src/lib/pk_pad/emsa_pssr/info.txt b/src/lib/pk_pad/emsa_pssr/info.txt
index 2152b307d..f514936c3 100644
--- a/src/lib/pk_pad/emsa_pssr/info.txt
+++ b/src/lib/pk_pad/emsa_pssr/info.txt
@@ -1,4 +1,6 @@
-define EMSA_PSSR 20131128
+<defines>
+EMSA_PSSR -> 20131128
+</defines>
<requires>
mgf1
diff --git a/src/lib/pk_pad/emsa_raw/info.txt b/src/lib/pk_pad/emsa_raw/info.txt
index f01d1bfa2..ffd3cbe3b 100644
--- a/src/lib/pk_pad/emsa_raw/info.txt
+++ b/src/lib/pk_pad/emsa_raw/info.txt
@@ -1 +1,3 @@
-define EMSA_RAW 20131128
+<defines>
+EMSA_RAW -> 20131128
+</defines>
diff --git a/src/lib/pk_pad/emsa_x931/info.txt b/src/lib/pk_pad/emsa_x931/info.txt
index e2e40f144..d3c5ca76e 100644
--- a/src/lib/pk_pad/emsa_x931/info.txt
+++ b/src/lib/pk_pad/emsa_x931/info.txt
@@ -1,4 +1,6 @@
-define EMSA_X931 20140118
+<defines>
+EMSA_X931 -> 20140118
+</defines>
<requires>
hash_id
diff --git a/src/lib/pk_pad/hash_id/info.txt b/src/lib/pk_pad/hash_id/info.txt
index d44e58f77..8cd930a9f 100644
--- a/src/lib/pk_pad/hash_id/info.txt
+++ b/src/lib/pk_pad/hash_id/info.txt
@@ -1 +1,3 @@
-define HASH_ID 20131128
+<defines>
+HASH_ID -> 20131128
+</defines>
diff --git a/src/lib/pk_pad/info.txt b/src/lib/pk_pad/info.txt
index 8cb935faa..4c25e4371 100644
--- a/src/lib/pk_pad/info.txt
+++ b/src/lib/pk_pad/info.txt
@@ -1,4 +1,6 @@
-define PK_PADDING 20131128
+<defines>
+PK_PADDING -> 20131128
+</defines>
load_on auto
diff --git a/src/lib/pk_pad/iso9796/info.txt b/src/lib/pk_pad/iso9796/info.txt
index 3458ece45..92bdb3c7d 100644
--- a/src/lib/pk_pad/iso9796/info.txt
+++ b/src/lib/pk_pad/iso9796/info.txt
@@ -1,4 +1,6 @@
-define ISO_9796 20161121
+<defines>
+ISO_9796 -> 20161121
+</defines>
<requires>
mgf1
diff --git a/src/lib/pk_pad/mgf1/info.txt b/src/lib/pk_pad/mgf1/info.txt
index 8e20d78df..f17c72fda 100644
--- a/src/lib/pk_pad/mgf1/info.txt
+++ b/src/lib/pk_pad/mgf1/info.txt
@@ -1 +1,3 @@
-define MGF1 20140118
+<defines>
+MGF1 -> 20140118
+</defines>
diff --git a/src/lib/prov/openssl/info.txt b/src/lib/prov/openssl/info.txt
index d2c42f98f..75ff3b6df 100644
--- a/src/lib/prov/openssl/info.txt
+++ b/src/lib/prov/openssl/info.txt
@@ -1,4 +1,6 @@
-define OPENSSL 20151219
+<defines>
+OPENSSL -> 20151219
+</defines>
load_on vendor
diff --git a/src/lib/prov/pkcs11/info.txt b/src/lib/prov/pkcs11/info.txt
index 3707d2e5a..b47fc6b29 100644
--- a/src/lib/prov/pkcs11/info.txt
+++ b/src/lib/prov/pkcs11/info.txt
@@ -1,4 +1,6 @@
-define PKCS11 20160219
+<defines>
+PKCS11 -> 20160219
+</defines>
<requires>
dyn_load
diff --git a/src/lib/prov/tpm/info.txt b/src/lib/prov/tpm/info.txt
index f0860f3ec..8ec00ba86 100644
--- a/src/lib/prov/tpm/info.txt
+++ b/src/lib/prov/tpm/info.txt
@@ -1,4 +1,6 @@
-define TPM 20151126
+<defines>
+TPM -> 20151126
+</defines>
load_on vendor
diff --git a/src/lib/pubkey/cecpq1/info.txt b/src/lib/pubkey/cecpq1/info.txt
index 614ba3962..1e50f4c88 100644
--- a/src/lib/pubkey/cecpq1/info.txt
+++ b/src/lib/pubkey/cecpq1/info.txt
@@ -1,4 +1,6 @@
-define CECPQ1 20161116
+<defines>
+CECPQ1 -> 20161116
+</defines>
<requires>
newhope
diff --git a/src/lib/pubkey/curve25519/info.txt b/src/lib/pubkey/curve25519/info.txt
index 6139dc32f..816286c64 100644
--- a/src/lib/pubkey/curve25519/info.txt
+++ b/src/lib/pubkey/curve25519/info.txt
@@ -1,4 +1,6 @@
-define CURVE_25519 20141227
+<defines>
+CURVE_25519 -> 20141227
+</defines>
<header:public>
curve25519.h
diff --git a/src/lib/pubkey/dh/info.txt b/src/lib/pubkey/dh/info.txt
index 960872fe3..1b9ba2494 100644
--- a/src/lib/pubkey/dh/info.txt
+++ b/src/lib/pubkey/dh/info.txt
@@ -1,4 +1,6 @@
-define DIFFIE_HELLMAN 20131128
+<defines>
+DIFFIE_HELLMAN -> 20131128
+</defines>
<header:public>
dh.h
diff --git a/src/lib/pubkey/dl_algo/info.txt b/src/lib/pubkey/dl_algo/info.txt
index 6f3b3195d..44e649cd6 100644
--- a/src/lib/pubkey/dl_algo/info.txt
+++ b/src/lib/pubkey/dl_algo/info.txt
@@ -1,4 +1,6 @@
-define DL_PUBLIC_KEY_FAMILY 20131128
+<defines>
+DL_PUBLIC_KEY_FAMILY -> 20131128
+</defines>
<requires>
asn1
diff --git a/src/lib/pubkey/dl_group/info.txt b/src/lib/pubkey/dl_group/info.txt
index 66f142062..a73edb18c 100644
--- a/src/lib/pubkey/dl_group/info.txt
+++ b/src/lib/pubkey/dl_group/info.txt
@@ -1,4 +1,6 @@
-define DL_GROUP 20131128
+<defines>
+DL_GROUP -> 20131128
+</defines>
<requires>
asn1
diff --git a/src/lib/pubkey/dlies/info.txt b/src/lib/pubkey/dlies/info.txt
index 30362ad78..65e3b22c9 100644
--- a/src/lib/pubkey/dlies/info.txt
+++ b/src/lib/pubkey/dlies/info.txt
@@ -1,4 +1,6 @@
-define DLIES 20160713
+<defines>
+DLIES -> 20160713
+</defines>
<requires>
kdf
diff --git a/src/lib/pubkey/dsa/info.txt b/src/lib/pubkey/dsa/info.txt
index 855363789..a9f288ede 100644
--- a/src/lib/pubkey/dsa/info.txt
+++ b/src/lib/pubkey/dsa/info.txt
@@ -1,4 +1,6 @@
-define DSA 20131128
+<defines>
+DSA -> 20131128
+</defines>
<requires>
dl_algo
diff --git a/src/lib/pubkey/ec_group/info.txt b/src/lib/pubkey/ec_group/info.txt
index 3f9b76769..922c9d663 100644
--- a/src/lib/pubkey/ec_group/info.txt
+++ b/src/lib/pubkey/ec_group/info.txt
@@ -1,4 +1,6 @@
-define ECC_GROUP 20131128
+<defines>
+ECC_GROUP -> 20131128
+</defines>
<requires>
asn1
diff --git a/src/lib/pubkey/ecc_key/info.txt b/src/lib/pubkey/ecc_key/info.txt
index fc4d4c91c..ac345a089 100644
--- a/src/lib/pubkey/ecc_key/info.txt
+++ b/src/lib/pubkey/ecc_key/info.txt
@@ -1,4 +1,6 @@
-define ECC_PUBLIC_KEY_CRYPTO 20131128
+<defines>
+ECC_PUBLIC_KEY_CRYPTO -> 20131128
+</defines>
<requires>
asn1
diff --git a/src/lib/pubkey/ecdh/info.txt b/src/lib/pubkey/ecdh/info.txt
index cfff0b304..11ca921da 100644
--- a/src/lib/pubkey/ecdh/info.txt
+++ b/src/lib/pubkey/ecdh/info.txt
@@ -1,4 +1,6 @@
-define ECDH 20131128
+<defines>
+ECDH -> 20131128
+</defines>
<requires>
asn1
diff --git a/src/lib/pubkey/ecdsa/info.txt b/src/lib/pubkey/ecdsa/info.txt
index 3b12bff0d..6bd32ca17 100644
--- a/src/lib/pubkey/ecdsa/info.txt
+++ b/src/lib/pubkey/ecdsa/info.txt
@@ -1,4 +1,6 @@
-define ECDSA 20131128
+<defines>
+ECDSA -> 20131128
+</defines>
<requires>
asn1
diff --git a/src/lib/pubkey/ecgdsa/info.txt b/src/lib/pubkey/ecgdsa/info.txt
index 79dec3199..3f967cfcf 100644
--- a/src/lib/pubkey/ecgdsa/info.txt
+++ b/src/lib/pubkey/ecgdsa/info.txt
@@ -1,4 +1,6 @@
-define ECGDSA 20160301
+<defines>
+ECGDSA -> 20160301
+</defines>
<requires>
asn1
diff --git a/src/lib/pubkey/ecies/info.txt b/src/lib/pubkey/ecies/info.txt
index fb35e7b97..530cc3970 100644
--- a/src/lib/pubkey/ecies/info.txt
+++ b/src/lib/pubkey/ecies/info.txt
@@ -1,4 +1,6 @@
-define ECIES 20160128
+<defines>
+ECIES -> 20160128
+</defines>
<requires>
kdf
diff --git a/src/lib/pubkey/eckcdsa/info.txt b/src/lib/pubkey/eckcdsa/info.txt
index d3df354b1..7c6b74b04 100644
--- a/src/lib/pubkey/eckcdsa/info.txt
+++ b/src/lib/pubkey/eckcdsa/info.txt
@@ -1,4 +1,6 @@
-define ECKCDSA 20160413
+<defines>
+ECKCDSA -> 20160413
+</defines>
<requires>
asn1
diff --git a/src/lib/pubkey/elgamal/info.txt b/src/lib/pubkey/elgamal/info.txt
index 068949c66..0b36658bc 100644
--- a/src/lib/pubkey/elgamal/info.txt
+++ b/src/lib/pubkey/elgamal/info.txt
@@ -1,4 +1,6 @@
-define ELGAMAL 20131128
+<defines>
+ELGAMAL -> 20131128
+</defines>
<requires>
dl_algo
diff --git a/src/lib/pubkey/gost_3410/info.txt b/src/lib/pubkey/gost_3410/info.txt
index eb2255ad2..dd0535781 100644
--- a/src/lib/pubkey/gost_3410/info.txt
+++ b/src/lib/pubkey/gost_3410/info.txt
@@ -1,4 +1,6 @@
-define GOST_34_10_2001 20131128
+<defines>
+GOST_34_10_2001 -> 20131128
+</defines>
load_on auto
diff --git a/src/lib/pubkey/info.txt b/src/lib/pubkey/info.txt
index d598e7b25..bd848e353 100644
--- a/src/lib/pubkey/info.txt
+++ b/src/lib/pubkey/info.txt
@@ -1,4 +1,6 @@
-define PUBLIC_KEY_CRYPTO 20131128
+<defines>
+PUBLIC_KEY_CRYPTO -> 20131128
+</defines>
<header:public>
blinding.h
diff --git a/src/lib/pubkey/keypair/info.txt b/src/lib/pubkey/keypair/info.txt
index 2bc9fce29..ed85abf69 100644
--- a/src/lib/pubkey/keypair/info.txt
+++ b/src/lib/pubkey/keypair/info.txt
@@ -1,4 +1,6 @@
-define KEYPAIR_TESTING 20131128
+<defines>
+KEYPAIR_TESTING -> 20131128
+</defines>
<requires>
</requires>
diff --git a/src/lib/pubkey/mce/info.txt b/src/lib/pubkey/mce/info.txt
index bb0f06764..becf616b3 100644
--- a/src/lib/pubkey/mce/info.txt
+++ b/src/lib/pubkey/mce/info.txt
@@ -1,4 +1,6 @@
-define MCELIECE 20150922
+<defines>
+MCELIECE -> 20150922
+</defines>
<header:public>
mceliece.h
diff --git a/src/lib/pubkey/mceies/info.txt b/src/lib/pubkey/mceies/info.txt
index 56363fe4f..cf5e01154 100644
--- a/src/lib/pubkey/mceies/info.txt
+++ b/src/lib/pubkey/mceies/info.txt
@@ -1,4 +1,6 @@
-define MCEIES 20150706
+<defines>
+MCEIES -> 20150706
+</defines>
<requires>
aes
diff --git a/src/lib/pubkey/newhope/info.txt b/src/lib/pubkey/newhope/info.txt
index 74ceef989..4877a138b 100644
--- a/src/lib/pubkey/newhope/info.txt
+++ b/src/lib/pubkey/newhope/info.txt
@@ -1,4 +1,6 @@
-define NEWHOPE 20161018
+<defines>
+NEWHOPE -> 20161018
+</defines>
<requires>
sha3
diff --git a/src/lib/pubkey/pbes2/info.txt b/src/lib/pubkey/pbes2/info.txt
index 8a42e4133..f8c6d3719 100644
--- a/src/lib/pubkey/pbes2/info.txt
+++ b/src/lib/pubkey/pbes2/info.txt
@@ -1,4 +1,6 @@
-define PKCS5_PBES2 20141119
+<defines>
+PKCS5_PBES2 -> 20141119
+</defines>
<requires>
asn1
diff --git a/src/lib/pubkey/pem/info.txt b/src/lib/pubkey/pem/info.txt
index 9340a7cef..471d9abd6 100644
--- a/src/lib/pubkey/pem/info.txt
+++ b/src/lib/pubkey/pem/info.txt
@@ -1,4 +1,6 @@
-define PEM_CODEC 20131128
+<defines>
+PEM_CODEC -> 20131128
+</defines>
<requires>
base64
diff --git a/src/lib/pubkey/rfc6979/info.txt b/src/lib/pubkey/rfc6979/info.txt
index 7055084b9..72a61301c 100644
--- a/src/lib/pubkey/rfc6979/info.txt
+++ b/src/lib/pubkey/rfc6979/info.txt
@@ -1,4 +1,6 @@
-define RFC6979_GENERATOR 20140321
+<defines>
+RFC6979_GENERATOR -> 20140321
+</defines>
<requires>
bigint
diff --git a/src/lib/pubkey/rsa/info.txt b/src/lib/pubkey/rsa/info.txt
index 6df380696..9fc9354b8 100644
--- a/src/lib/pubkey/rsa/info.txt
+++ b/src/lib/pubkey/rsa/info.txt
@@ -1,4 +1,6 @@
-define RSA 20160730
+<defines>
+RSA -> 20160730
+</defines>
<requires>
keypair
diff --git a/src/lib/pubkey/xmss/info.txt b/src/lib/pubkey/xmss/info.txt
index 8a834ffeb..4ecf5da31 100644
--- a/src/lib/pubkey/xmss/info.txt
+++ b/src/lib/pubkey/xmss/info.txt
@@ -1,4 +1,6 @@
-define XMSS 20161008
+<defines>
+XMSS -> 20161008
+</defines>
<header:public>
atomic.h
diff --git a/src/lib/rng/auto_rng/info.txt b/src/lib/rng/auto_rng/info.txt
index 4dd51c2b0..f1adcc800 100644
--- a/src/lib/rng/auto_rng/info.txt
+++ b/src/lib/rng/auto_rng/info.txt
@@ -1,5 +1,7 @@
-define AUTO_SEEDING_RNG 20160821
-define AUTO_RNG 20161126
+<defines>
+AUTO_SEEDING_RNG -> 20160821
+AUTO_RNG -> 20161126
+</defines>
<requires>
hmac_drbg
diff --git a/src/lib/rng/hmac_drbg/info.txt b/src/lib/rng/hmac_drbg/info.txt
index 7f2c12fd0..a8922bdf0 100644
--- a/src/lib/rng/hmac_drbg/info.txt
+++ b/src/lib/rng/hmac_drbg/info.txt
@@ -1,4 +1,6 @@
-define HMAC_DRBG 20140319
+<defines>
+HMAC_DRBG -> 20140319
+</defines>
<requires>
hmac
diff --git a/src/lib/rng/rdrand_rng/info.txt b/src/lib/rng/rdrand_rng/info.txt
index 2e597ebec..452dbde58 100644
--- a/src/lib/rng/rdrand_rng/info.txt
+++ b/src/lib/rng/rdrand_rng/info.txt
@@ -1,4 +1,6 @@
-define RDRAND_RNG 20160619
+<defines>
+RDRAND_RNG -> 20160619
+</defines>
need_isa rdrand
diff --git a/src/lib/rng/stateful_rng/info.txt b/src/lib/rng/stateful_rng/info.txt
index b4dcedf4a..edc2d9169 100644
--- a/src/lib/rng/stateful_rng/info.txt
+++ b/src/lib/rng/stateful_rng/info.txt
@@ -1,2 +1,3 @@
-define STATEFUL_RNG 20160819
-
+<defines>
+STATEFUL_RNG -> 20160819
+</defines>
diff --git a/src/lib/rng/system_rng/info.txt b/src/lib/rng/system_rng/info.txt
index 08b311299..3df7dd387 100644
--- a/src/lib/rng/system_rng/info.txt
+++ b/src/lib/rng/system_rng/info.txt
@@ -1,4 +1,7 @@
-define SYSTEM_RNG 20141202
+<defines>
+SYSTEM_RNG -> 20141202
+</defines>
+
# Any system with /dev/random or CryptGenRandom
diff --git a/src/lib/stream/chacha/chacha_sse2/info.txt b/src/lib/stream/chacha/chacha_sse2/info.txt
index 965479746..20e0eb03f 100644
--- a/src/lib/stream/chacha/chacha_sse2/info.txt
+++ b/src/lib/stream/chacha/chacha_sse2/info.txt
@@ -1,3 +1,5 @@
-define CHACHA_SSE2 20160831
+<defines>
+CHACHA_SSE2 -> 20160831
+</defines>
need_isa sse2
diff --git a/src/lib/stream/chacha/info.txt b/src/lib/stream/chacha/info.txt
index f3bd1ffe8..0bcd013ad 100644
--- a/src/lib/stream/chacha/info.txt
+++ b/src/lib/stream/chacha/info.txt
@@ -1 +1,3 @@
-define CHACHA 20140103
+<defines>
+CHACHA -> 20140103
+</defines>
diff --git a/src/lib/stream/ctr/info.txt b/src/lib/stream/ctr/info.txt
index c0c6694b0..4cb30fa2f 100644
--- a/src/lib/stream/ctr/info.txt
+++ b/src/lib/stream/ctr/info.txt
@@ -1 +1,3 @@
-define CTR_BE 20131128
+<defines>
+CTR_BE -> 20131128
+</defines>
diff --git a/src/lib/stream/info.txt b/src/lib/stream/info.txt
index 59b5d577a..4f62c5a7c 100644
--- a/src/lib/stream/info.txt
+++ b/src/lib/stream/info.txt
@@ -1,4 +1,6 @@
-define STREAM_CIPHER 20131128
+<defines>
+STREAM_CIPHER -> 20131128
+</defines>
<header:public>
stream_cipher.h
diff --git a/src/lib/stream/ofb/info.txt b/src/lib/stream/ofb/info.txt
index 2d3d78f79..be585d0d3 100644
--- a/src/lib/stream/ofb/info.txt
+++ b/src/lib/stream/ofb/info.txt
@@ -1 +1,3 @@
-define OFB 20131128
+<defines>
+OFB -> 20131128
+</defines>
diff --git a/src/lib/stream/rc4/info.txt b/src/lib/stream/rc4/info.txt
index f61b8a4cc..97cc22760 100644
--- a/src/lib/stream/rc4/info.txt
+++ b/src/lib/stream/rc4/info.txt
@@ -1 +1,3 @@
-define RC4 20131128
+<defines>
+RC4 -> 20131128
+</defines>
diff --git a/src/lib/stream/salsa20/info.txt b/src/lib/stream/salsa20/info.txt
index 10f9a8cb2..3c7fed8fe 100644
--- a/src/lib/stream/salsa20/info.txt
+++ b/src/lib/stream/salsa20/info.txt
@@ -1 +1,3 @@
-define SALSA20 20131128
+<defines>
+SALSA20 -> 20131128
+</defines>
diff --git a/src/lib/stream/shake_cipher/info.txt b/src/lib/stream/shake_cipher/info.txt
index 53e6f5012..500a7265d 100644
--- a/src/lib/stream/shake_cipher/info.txt
+++ b/src/lib/stream/shake_cipher/info.txt
@@ -1 +1,3 @@
-define SHAKE_CIPHER 20161018
+<defines>
+SHAKE_CIPHER -> 20161018
+</defines>
diff --git a/src/lib/tls/info.txt b/src/lib/tls/info.txt
index 86d651730..a189f7978 100644
--- a/src/lib/tls/info.txt
+++ b/src/lib/tls/info.txt
@@ -1,4 +1,6 @@
-define TLS 20150319
+<defines>
+TLS -> 20150319
+</defines>
load_on auto
diff --git a/src/lib/tls/sessions_sql/info.txt b/src/lib/tls/sessions_sql/info.txt
index 7016a3d42..58392bd0c 100644
--- a/src/lib/tls/sessions_sql/info.txt
+++ b/src/lib/tls/sessions_sql/info.txt
@@ -1,4 +1,6 @@
-define TLS_SESSION_MANAGER_SQL_DB 20141219
+<defines>
+TLS_SESSION_MANAGER_SQL_DB -> 20141219
+</defines>
<requires>
pbkdf2
diff --git a/src/lib/tls/sessions_sqlite3/info.txt b/src/lib/tls/sessions_sqlite3/info.txt
index b04b6a9d6..612142c09 100644
--- a/src/lib/tls/sessions_sqlite3/info.txt
+++ b/src/lib/tls/sessions_sqlite3/info.txt
@@ -1,4 +1,6 @@
-define TLS_SQLITE3_SESSION_MANAGER 20131128
+<defines>
+TLS_SQLITE3_SESSION_MANAGER -> 20131128
+</defines>
<requires>
sessions_sql
diff --git a/src/lib/tls/tls_cbc/info.txt b/src/lib/tls/tls_cbc/info.txt
index 0a2827e71..321236696 100644
--- a/src/lib/tls/tls_cbc/info.txt
+++ b/src/lib/tls/tls_cbc/info.txt
@@ -1,4 +1,6 @@
-define TLS_CBC 20161008
+<defines>
+TLS_CBC -> 20161008
+</defines>
<header:internal>
tls_cbc.h
diff --git a/src/lib/utils/boost/info.txt b/src/lib/utils/boost/info.txt
index 8748c0bf1..c12b99a28 100644
--- a/src/lib/utils/boost/info.txt
+++ b/src/lib/utils/boost/info.txt
@@ -1,11 +1,11 @@
-define BOOST_FILESYSTEM 20131228
-define BOOST_ASIO 20131228
-define BOOST_DATETIME 20150720
+<defines>
+BOOST_FILESYSTEM -> 20131228
+BOOST_ASIO -> 20131228
+BOOST_DATETIME -> 20150720
+</defines>
load_on vendor
<libs>
all -> boost_system,boost_filesystem
</libs>
-
-
diff --git a/src/lib/utils/dyn_load/info.txt b/src/lib/utils/dyn_load/info.txt
index 22a79be43..2caeac728 100644
--- a/src/lib/utils/dyn_load/info.txt
+++ b/src/lib/utils/dyn_load/info.txt
@@ -1,4 +1,6 @@
-define DYNAMIC_LOADER 20160310
+<defines>
+DYNAMIC_LOADER -> 20160310
+</defines>
load_on dep
diff --git a/src/lib/utils/http_util/info.txt b/src/lib/utils/http_util/info.txt
index a23a43a3d..fe9fc3ea7 100644
--- a/src/lib/utils/http_util/info.txt
+++ b/src/lib/utils/http_util/info.txt
@@ -1 +1,3 @@
-define HTTP_UTIL 20131128
+<defines>
+HTTP_UTIL -> 20131128
+</defines>
diff --git a/src/lib/utils/info.txt b/src/lib/utils/info.txt
index 306e6e9ad..da84b64b4 100644
--- a/src/lib/utils/info.txt
+++ b/src/lib/utils/info.txt
@@ -1,4 +1,6 @@
-define UTIL_FUNCTIONS 20161127
+<defines>
+UTIL_FUNCTIONS -> 20161127
+</defines>
load_on always
diff --git a/src/lib/utils/locking_allocator/info.txt b/src/lib/utils/locking_allocator/info.txt
index 0831fddb6..5f848f62d 100644
--- a/src/lib/utils/locking_allocator/info.txt
+++ b/src/lib/utils/locking_allocator/info.txt
@@ -1,4 +1,6 @@
-define LOCKING_ALLOCATOR 20131128
+<defines>
+LOCKING_ALLOCATOR -> 20131128
+</defines>
<os>
linux
diff --git a/src/lib/utils/simd/info.txt b/src/lib/utils/simd/info.txt
index 6b9e381fa..7784902a6 100644
--- a/src/lib/utils/simd/info.txt
+++ b/src/lib/utils/simd/info.txt
@@ -1,4 +1,6 @@
-define SIMD_32 20131128
+<defines>
+SIMD_32 -> 20131128
+</defines>
<header:internal>
simd_32.h
diff --git a/src/lib/x509/certstor_sql/info.txt b/src/lib/x509/certstor_sql/info.txt
index 619784e70..a6046e5d7 100644
--- a/src/lib/x509/certstor_sql/info.txt
+++ b/src/lib/x509/certstor_sql/info.txt
@@ -1,2 +1,3 @@
-define CERTSTOR_SQL 20160818
-
+<defines>
+CERTSTOR_SQL -> 20160818
+</defines>
diff --git a/src/lib/x509/certstor_sqlite3/info.txt b/src/lib/x509/certstor_sqlite3/info.txt
index d5e50fc95..39b8c579b 100644
--- a/src/lib/x509/certstor_sqlite3/info.txt
+++ b/src/lib/x509/certstor_sqlite3/info.txt
@@ -1,4 +1,6 @@
-define CERTSTOR_SQLITE3 20160818
+<defines>
+CERTSTOR_SQLITE3 -> 20160818
+</defines>
<requires>
certstor_sql
diff --git a/src/lib/x509/info.txt b/src/lib/x509/info.txt
index b1a0ab414..8221dc0f1 100644
--- a/src/lib/x509/info.txt
+++ b/src/lib/x509/info.txt
@@ -1,5 +1,7 @@
-define X509_CERTIFICATES 20151023
-define OCSP 20161118
+<defines>
+X509_CERTIFICATES -> 20151023
+OCSP -> 20161118
+</defines>
<requires>
asn1