randombit / botan

Cryptography Toolkit
https://botan.randombit.net
BSD 2-Clause "Simplified" License
2.6k stars 570 forks source link

--single-amalgamation-file does not generate a file? #926

Closed ruipacheco closed 7 years ago

ruipacheco commented 7 years ago

Or maybe I'm not looking in the right place.

If I do python configure.py --minimized-build --enable-modules=md5,sha1,system_rng,sha2_64,tls --amalgamation I get a botan_all.h and a botan_all.cpp. If I do python configure.py --minimized-build --enable-modules=md5,sha1,system_rng,sha2_64,tls --single-amalgamation-file I can't find any files that should be included, although botan_tests runs and all tests pass.

What's the name of the generated file?

ruipacheco commented 7 years ago

Update: judging by configure.py's output it does look like no file is generated:

⟩ python configure.py --minimized-build --enable-modules=md5,sha1,system_rng,sha2_64,tls --amalgamation
   INFO: configure.py invoked with options "--minimized-build --enable-modules=md5,sha1,system_rng,sha2_64,tls --amalgamation"
   INFO: Platform: OS="Darwin" machine="x86_64" proc="i386"
   INFO: Guessing target OS is darwin (use --os to set)
   INFO: Guessing to use compiler clang (use --cc to set)
   INFO: Guessing target processor is a x86_64/x86_64 (use --cpu to set)
   INFO: Target is clang-darwin-x86_64-x86_64
   INFO: Skipping (incompatible OS): cryptoapi_rng getentropy locking_allocator win32_stats
   INFO: Skipping (not requested): adler32 aes_ni aes_ssse3 aont auto_rng bcrypt blake2 blowfish camellia cascade cast cbc_mac ccm cecpq1 certstor_sql certstor_sqlite3 cfb chacha chacha20poly1305 chacha_sse2 clmul cmac codec_filt comb4p compression crc24 crc32 cryptobox curve25519 darwin_secrandom des dev_random dlies dsa dyn_load eax ecgdsa ecies eckcdsa elgamal eme_oaep eme_raw emsa_raw emsa_x931 fd_unix ffi filters fpe_fe1 gmac gost_28147 gost_3410 gost_3411 hkdf hmac_drbg http_util idea idea_sse2 iso9796 kasumi kdf1 kdf1_iso18033 kdf2 keccak lion mce mceies md4 misty1 newhope noekeon noekeon_simd ocb ofb passhash9 pbkdf1 pkcs11 poly1305 prf_x942 proc_walk rc4 rdrand rdrand_rng rdseed rfc3394 rfc6979 rmd160 salsa20 seed serpent serpent_simd sessions_sql sessions_sqlite3 sha1_sse2 sha3 shake shake_cipher simd siphash siv skein sm3 sp800_108 sp800_56c srp6 stateful_rng threefish threefish_avx2 tiger tls_cbc tss twofish whirlpool x919_mac xmss xtea xts
   INFO: Skipping (requires external dependency): boost bzip2 lzma openssl sqlite3 tpm zlib
   INFO: Loading modules: aead aes asn1 base base64 bigint block cbc ctr dh dl_algo dl_group ec_gfp ec_group ecc_key ecdh ecdsa eme_pkcs1 emsa1 emsa_pkcs1 emsa_pssr entropy gcm hash hash_id hex hmac kdf keypair mac md5 mdx_hash mgf1 mode_pad modes mp numbertheory par_hash pbes2 pbkdf pbkdf2 pem pk_pad prf_tls pubkey rng rsa sha1 sha2_32 sha2_64 stream system_rng tls utils x509
   INFO: Assuming CPU is little endian
   INFO: Assuming unaligned memory access works
   INFO: Using symlink to link files into build dir (use --link-method to change)
   INFO: Writing amalgamation header to botan_all.h
   INFO: Writing amalgamation header to botan_all_internal.h
   INFO: Writing amalgamation source to botan_all.cpp
   INFO: Botan 2.2.0 (VC git:2f1b5f55d736715c6c15a117bcb70ae582cc7920) (unreleased undated) build setup is complete

This shows that 3 files were generated.

⟩ python configure.py --minimized-build --enable-modules=md5,sha1,system_rng,sha2_64,tls --single-amalgamation-file
   INFO: configure.py invoked with options "--minimized-build --enable-modules=md5,sha1,system_rng,sha2_64,tls --single-amalgamation-file"
   INFO: Platform: OS="Darwin" machine="x86_64" proc="i386"
   INFO: Guessing target OS is darwin (use --os to set)
   INFO: Guessing to use compiler clang (use --cc to set)
   INFO: Guessing target processor is a x86_64/x86_64 (use --cpu to set)
   INFO: Target is clang-darwin-x86_64-x86_64
   INFO: Skipping (incompatible OS): cryptoapi_rng getentropy locking_allocator win32_stats
   INFO: Skipping (not requested): adler32 aes_ni aes_ssse3 aont auto_rng bcrypt blake2 blowfish camellia cascade cast cbc_mac ccm cecpq1 certstor_sql certstor_sqlite3 cfb chacha chacha20poly1305 chacha_sse2 clmul cmac codec_filt comb4p compression crc24 crc32 cryptobox curve25519 darwin_secrandom des dev_random dlies dsa dyn_load eax ecgdsa ecies eckcdsa elgamal eme_oaep eme_raw emsa_raw emsa_x931 fd_unix ffi filters fpe_fe1 gmac gost_28147 gost_3410 gost_3411 hkdf hmac_drbg http_util idea idea_sse2 iso9796 kasumi kdf1 kdf1_iso18033 kdf2 keccak lion mce mceies md4 misty1 newhope noekeon noekeon_simd ocb ofb passhash9 pbkdf1 pkcs11 poly1305 prf_x942 proc_walk rc4 rdrand rdrand_rng rdseed rfc3394 rfc6979 rmd160 salsa20 seed serpent serpent_simd sessions_sql sessions_sqlite3 sha1_sse2 sha3 shake shake_cipher simd siphash siv skein sm3 sp800_108 sp800_56c srp6 stateful_rng threefish threefish_avx2 tiger tls_cbc tss twofish whirlpool x919_mac xmss xtea xts
   INFO: Skipping (requires external dependency): boost bzip2 lzma openssl sqlite3 tpm zlib
   INFO: Loading modules: aead aes asn1 base base64 bigint block cbc ctr dh dl_algo dl_group ec_gfp ec_group ecc_key ecdh ecdsa eme_pkcs1 emsa1 emsa_pkcs1 emsa_pssr entropy gcm hash hash_id hex hmac kdf keypair mac md5 mdx_hash mgf1 mode_pad modes mp numbertheory par_hash pbes2 pbkdf pbkdf2 pem pk_pad prf_tls pubkey rng rsa sha1 sha2_32 sha2_64 stream system_rng tls utils x509
   INFO: Assuming CPU is little endian
   INFO: Assuming unaligned memory access works
   INFO: Using symlink to link files into build dir (use --link-method to change)
   INFO: Botan 2.2.0 (VC git:2f1b5f55d736715c6c15a117bcb70ae582cc7920) (unreleased undated) build setup is complete

No files in output here.

webmaster128 commented 7 years ago

--single-amalgamation-file must be used together with --amalgamation We should throw an error if used alone. I'll prepare a PR.

ruipacheco commented 7 years ago

What's the right way to generate the single file? Because I always get 3 files:

⟩ python configure.py --minimized-build --enable-modules=md5,sha1,system_rng,sha2_64,tls --amalgamation --single-amalgamation-file
   INFO: configure.py invoked with options "--minimized-build --enable-modules=md5,sha1,system_rng,sha2_64,tls --amalgamation --single-amalgamation-file"
   INFO: Platform: OS="Darwin" machine="x86_64" proc="i386"
   INFO: Guessing target OS is darwin (use --os to set)
   INFO: Guessing to use compiler clang (use --cc to set)
   INFO: Guessing target processor is a x86_64/x86_64 (use --cpu to set)
   INFO: Target is clang-darwin-x86_64-x86_64
   INFO: Skipping (incompatible OS): cryptoapi_rng getentropy locking_allocator win32_stats
   INFO: Skipping (not requested): adler32 aes_ni aes_ssse3 aont auto_rng bcrypt blake2 blowfish camellia cascade cast cbc_mac ccm cecpq1 certstor_sql certstor_sqlite3 cfb chacha chacha20poly1305 chacha_sse2 clmul cmac codec_filt comb4p compression crc24 crc32 cryptobox curve25519 darwin_secrandom des dev_random dlies dsa dyn_load eax ecgdsa ecies eckcdsa elgamal eme_oaep eme_raw emsa_raw emsa_x931 fd_unix ffi filters fpe_fe1 gmac gost_28147 gost_3410 gost_3411 hkdf hmac_drbg http_util idea idea_sse2 iso9796 kasumi kdf1 kdf1_iso18033 kdf2 keccak lion mce mceies md4 misty1 newhope noekeon noekeon_simd ocb ofb passhash9 pbkdf1 pkcs11 poly1305 prf_x942 proc_walk rc4 rdrand rdrand_rng rdseed rfc3394 rfc6979 rmd160 salsa20 seed serpent serpent_simd sessions_sql sessions_sqlite3 sha1_sse2 sha3 shake shake_cipher simd siphash siv skein sm3 sp800_108 sp800_56c srp6 stateful_rng threefish threefish_avx2 tiger tls_cbc tss twofish whirlpool x919_mac xmss xtea xts
   INFO: Skipping (requires external dependency): boost bzip2 lzma openssl sqlite3 tpm zlib
   INFO: Loading modules: aead aes asn1 base base64 bigint block cbc ctr dh dl_algo dl_group ec_gfp ec_group ecc_key ecdh ecdsa eme_pkcs1 emsa1 emsa_pkcs1 emsa_pssr entropy gcm hash hash_id hex hmac kdf keypair mac md5 mdx_hash mgf1 mode_pad modes mp numbertheory par_hash pbes2 pbkdf pbkdf2 pem pk_pad prf_tls pubkey rng rsa sha1 sha2_32 sha2_64 stream system_rng tls utils x509
   INFO: Assuming CPU is little endian
   INFO: Assuming unaligned memory access works
   INFO: Using symlink to link files into build dir (use --link-method to change)
   INFO: Writing amalgamation header to botan_all.h
   INFO: Writing amalgamation header to botan_all_internal.h
   INFO: Writing amalgamation source to botan_all.cpp
   INFO: Botan 2.2.0 (VC git:2f1b5f55d736715c6c15a117bcb70ae582cc7920) (unreleased undated) build setup is complete

⟩ python configure.py --minimized-build --enable-modules=md5,sha1,system_rng,sha2_64,tls --single-amalgamation-file --amalgamation
   INFO: configure.py invoked with options "--minimized-build --enable-modules=md5,sha1,system_rng,sha2_64,tls --single-amalgamation-file --amalgamation"
   INFO: Platform: OS="Darwin" machine="x86_64" proc="i386"
   INFO: Guessing target OS is darwin (use --os to set)
   INFO: Guessing to use compiler clang (use --cc to set)
   INFO: Guessing target processor is a x86_64/x86_64 (use --cpu to set)
   INFO: Target is clang-darwin-x86_64-x86_64
   INFO: Skipping (incompatible OS): cryptoapi_rng getentropy locking_allocator win32_stats
   INFO: Skipping (not requested): adler32 aes_ni aes_ssse3 aont auto_rng bcrypt blake2 blowfish camellia cascade cast cbc_mac ccm cecpq1 certstor_sql certstor_sqlite3 cfb chacha chacha20poly1305 chacha_sse2 clmul cmac codec_filt comb4p compression crc24 crc32 cryptobox curve25519 darwin_secrandom des dev_random dlies dsa dyn_load eax ecgdsa ecies eckcdsa elgamal eme_oaep eme_raw emsa_raw emsa_x931 fd_unix ffi filters fpe_fe1 gmac gost_28147 gost_3410 gost_3411 hkdf hmac_drbg http_util idea idea_sse2 iso9796 kasumi kdf1 kdf1_iso18033 kdf2 keccak lion mce mceies md4 misty1 newhope noekeon noekeon_simd ocb ofb passhash9 pbkdf1 pkcs11 poly1305 prf_x942 proc_walk rc4 rdrand rdrand_rng rdseed rfc3394 rfc6979 rmd160 salsa20 seed serpent serpent_simd sessions_sql sessions_sqlite3 sha1_sse2 sha3 shake shake_cipher simd siphash siv skein sm3 sp800_108 sp800_56c srp6 stateful_rng threefish threefish_avx2 tiger tls_cbc tss twofish whirlpool x919_mac xmss xtea xts
   INFO: Skipping (requires external dependency): boost bzip2 lzma openssl sqlite3 tpm zlib
   INFO: Loading modules: aead aes asn1 base base64 bigint block cbc ctr dh dl_algo dl_group ec_gfp ec_group ecc_key ecdh ecdsa eme_pkcs1 emsa1 emsa_pkcs1 emsa_pssr entropy gcm hash hash_id hex hmac kdf keypair mac md5 mdx_hash mgf1 mode_pad modes mp numbertheory par_hash pbes2 pbkdf pbkdf2 pem pk_pad prf_tls pubkey rng rsa sha1 sha2_32 sha2_64 stream system_rng tls utils x509
   INFO: Assuming CPU is little endian
   INFO: Assuming unaligned memory access works
   INFO: Using symlink to link files into build dir (use --link-method to change)
   INFO: Writing amalgamation header to botan_all.h
   INFO: Writing amalgamation header to botan_all_internal.h
   INFO: Writing amalgamation source to botan_all.cpp
   INFO: Botan 2.2.0 (VC git:2f1b5f55d736715c6c15a117bcb70ae582cc7920) (unreleased undated) build setup is complete
webmaster128 commented 7 years ago

"single" in --single-amalgamation-file means one .cpp file that needs to be compiled. You always have at least 3 files (botan_all.cpp, botan_all.h, botan_all_internal.h) in amalgamation