Closed Satancito closed 1 year ago
Two issues I'm seeing in the output from configure.py which would probably prevent a build:
em++
not being available in path. I'm not sure what that might be about. Perhaps it is named something differently on Windows? Or it was not found in your PATH?
ERROR: Error linking ... symbolic link privilege not held
This is a bug, we avoid trying to use symlink on Windows since apparently symlink requires a admin permission not normally held by users. But the logic does not expect anyone to be cross compiling from Windows. Provide additional option --link-method=hardlink
to resolve this.
PS C:\Users\Megam\Temp\Botan> $env:CXX="em++.bat"
PS C:\Users\Megam\Temp\Botan> python ./configure.py --cc=clang --cpu=llvm --os=emscripten --debug-mode --without-documentation --prefix="C:/users/Megam/Temp/Botan/dist/Botan-2.12.1-Emscripten-llvm-Debug" --link-method=hardlink
INFO: ./configure.py invoked with options "--cc=clang --cpu=llvm --os=emscripten --debug-mode --without-documentation --prefix=C:/users/Megam/Temp/Botan/dist/Botan-2.12.1-Emscripten-llvm-Debug --link-method=hardlink"
INFO: Configuring to build Botan 2.12.1 (revision git:1a6ad661ce64287ccbe26460ccc3aa4247d86ba8)
INFO: Running under 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)]
INFO: CXX environment variable is set which will override compiler path
INFO: Implicit --cc-bin=em++.bat due to environment variable CXX
INFO: Autodetected platform information: OS="Windows" machine="AMD64" proc="Intel64 Family 6 Model 58 Stepping 9, GenuineIntel"
INFO: Shared libs not supported on emscripten, disabling shared lib support
INFO: Auto-detected compiler version 11.0
WARNING: Unable to detect target architecture via compiler macro checks
INFO: Target is clang:11.0-emscripten-llvm
INFO: Skipping (dependency failure): asio certstor_sqlite3 chacha_simd32 noekeon_simd rdrand serpent_simd sessions_sqlite3 shacal2_simd
INFO: Skipping (incompatible CPU): aes_armv8 aes_ni aes_power8 aes_vperm chacha_avx2 clmul_cpu clmul_ssse3 idea_sse2 p9_darn rdrand_rng rdseed serpent_avx2 sha1_armv8 sha1_sse2 sha1_x86 sha2_32_armv8 sha2_32_bmi2 sha2_32_x86 sha2_64_bmi2 sha3_bmi2 shacal2_x86 simd simd_avx2 sm4_armv8 threefish_512_avx2
INFO: Skipping (incompatible OS): certstor_system_macos certstor_system_windows commoncrypto getentropy proc_walk thread_utils win32_stats
INFO: Skipping (no enabled compression schemes): compression
INFO: Skipping (requires external dependency): boost bzip2 lzma openssl sqlite3 tpm zlib
INFO: Loading modules: adler32 aead aes aont argon2 aria asn1 auto_rng base base32 base58 base64 bcrypt bcrypt_pbkdf bigint blake2 block blowfish camellia cascade cast128 cast256 cbc cbc_mac ccm cecpq1 certstor_flatfile certstor_sql certstor_system cfb chacha chacha20poly1305 chacha_rng checksum cmac codec_filt comb4p cpuid crc24 crc32 cryptobox ctr curve25519 des dev_random dh dl_algo dl_group dlies dsa dyn_load eax ec_group ecc_key ecdh ecdsa ecgdsa ecies eckcdsa ed25519 elgamal eme_oaep eme_pkcs1 eme_raw emsa1 emsa_pkcs1 emsa_pssr emsa_raw emsa_x931 entropy fd_unix ffi filters fpe_fe1 gcm gmac gost_28147 gost_3410 gost_3411 hash hash_id hex hkdf hmac hmac_drbg hotp http_util idea iso9796 kasumi kdf kdf1 kdf1_iso18033 kdf2 keccak keypair lion locking_allocator mac mce mceies md4 md5 mdx_hash mem_pool mgf1 misty1 mode_pad modes mp newhope nist_keywrap noekeon numbertheory ocb ofb par_hash passhash9 pbes2 pbkdf pbkdf1 pbkdf2 pem pgp_s2k pk_pad pkcs11 poly1305 poly_dbl prf_tls prf_x942 psk_db pubkey rc4 rfc3394 rfc6979 rmd160 rng rsa salsa20 scrypt seed serpent sessions_sql sha1 sha2_32 sha2_64 sha3 shacal2 shake shake_cipher siphash siv skein sm2 sm3 sm4 socket sodium sp800_108 sp800_56a sp800_56c srp6 stateful_rng stream streebog system_rng threefish_512 tiger tls tls_cbc tss twofish utils uuid whirlpool x509 x919_mac xmss xtea xts
INFO: Using hardlink to link files into build dir (use --link-method to change)
INFO: Botan 2.12.1 (revision git:1a6ad661ce64287ccbe26460ccc3aa4247d86ba8) (release dated 20191014) build setup is complete
All Ok. but make tool doesn't exists.
Finally in WSL Ubuntu Linux x64.
root@X-PC:/Temp/Botan# CXX=em++ ./configure.py --cc=clang --cpu=llvm --os=emscripten --without-documentation --prefix="/Temp/Botan/dist/Botan-2.12.1-Emscripten-llvm-Debug"
INFO: ./configure.py invoked with options "--cc=clang --cpu=llvm --os=emscripten --without-documentation --prefix=/Temp/Botan/dist/Botan-2.12.1-Emscripten-llvm-Debug"
INFO: Configuring to build Botan 2.12.1 (revision git:1a6ad661ce64287ccbe26460ccc3aa4247d86ba8)
INFO: Running under 2.7.17 (default, Nov 7 2019, 10:07:09) [GCC 7.4.0]
INFO: CXX environment variable is set which will override compiler path
INFO: Implicit --cc-bin=em++ due to environment variable CXX
INFO: Autodetected platform information: OS="Linux" machine="x86_64" proc="x86_64"
INFO: Using /etc/ssl/certs/ca-certificates.crt as system certificate store
INFO: Shared libs not supported on emscripten, disabling shared lib support
INFO: Auto-detected compiler version 11.0
WARNING: Unable to detect target architecture via compiler macro checks
INFO: Target is clang:11.0-emscripten-llvm
INFO: Skipping (dependency failure): asio certstor_sqlite3 chacha_simd32 noekeon_simd rdrand serpent_simd sessions_sqlite3 shacal2_simd
INFO: Skipping (incompatible CPU): aes_armv8 aes_ni aes_power8 aes_vperm chacha_avx2 clmul_cpu clmul_ssse3 idea_sse2 p9_darn rdrand_rng rdseed serpent_avx2 sha1_armv8 sha1_sse2 sha1_x86 sha2_32_armv8 sha2_32_bmi2 sha2_32_x86 sha2_64_bmi2 sha3_bmi2 shacal2_x86 simd simd_avx2 sm4_armv8 threefish_512_avx2
INFO: Skipping (incompatible OS): certstor_system_macos certstor_system_windows commoncrypto getentropy proc_walk thread_utils win32_stats
INFO: Skipping (no enabled compression schemes): compression
INFO: Skipping (requires external dependency): boost bzip2 lzma openssl sqlite3 tpm zlib
INFO: Loading modules: adler32 aead aes aont argon2 aria asn1 auto_rng base base32 base58 base64 bcrypt bcrypt_pbkdf bigint blake2 block blowfish camellia cascade cast128 cast256 cbc cbc_mac ccm cecpq1 certstor_flatfile certstor_sql certstor_system cfb chacha chacha20poly1305 chacha_rng checksum cmac codec_filt comb4p cpuid crc24 crc32 cryptobox ctr curve25519 des dev_random dh dl_algo dl_group dlies dsa dyn_load eax ec_group ecc_key ecdh ecdsa ecgdsa ecies eckcdsa ed25519 elgamal eme_oaep eme_pkcs1 eme_raw emsa1 emsa_pkcs1 emsa_pssr emsa_raw emsa_x931 entropy fd_unix ffi filters fpe_fe1 gcm gmac gost_28147 gost_3410 gost_3411 hash hash_id hex hkdf hmac hmac_drbg hotp http_util idea iso9796 kasumi kdf kdf1 kdf1_iso18033 kdf2 keccak keypair lion locking_allocator mac mce mceies md4 md5 mdx_hash mem_pool mgf1 misty1 mode_pad modes mp newhope nist_keywrap noekeon numbertheory ocb ofb par_hash passhash9 pbes2 pbkdf pbkdf1 pbkdf2 pem pgp_s2k pk_pad pkcs11 poly1305 poly_dbl prf_tls prf_x942 psk_db pubkey rc4 rfc3394 rfc6979 rmd160 rng rsa salsa20 scrypt seed serpent sessions_sql sha1 sha2_32 sha2_64 sha3 shacal2 shake shake_cipher siphash siv skein sm2 sm3 sm4 socket sodium sp800_108 sp800_56a sp800_56c srp6 stateful_rng stream streebog system_rng threefish_512 tiger tls tls_cbc tss twofish utils uuid whirlpool x509 x919_mac xmss xtea xts
INFO: Using symlink to link files into build dir (use --link-method to change)
INFO: Botan 2.12.1 (revision git:1a6ad661ce64287ccbe26460ccc3aa4247d86ba8) (release dated 20191014) build setup is complete
root@X-PC:/InsaneTemp/Botan# make
em++ -std=c++11 -D_REENTRANT -O3 -emit-llvm -fno-use-cxa-atexit -DBOTAN_IS_BEING_BUILT -Wall -Wextra -Wpedantic -Wshadow -Wstrict-aliasing -Wstrict-overflow=5 -Wcast-align -Wmissing-declarations -Wpointer-arith -Wcast-qual -Ibuild/include -Ibuild/include/external -c src/lib/asn1/alg_id.cpp -o build/obj/lib/asn1_alg_id.bc
em++ -std=c++11 -D_REENTRANT -O3 -emit-llvm -fno-use-cxa-atexit -DBOTAN_IS_BEING_BUILT -Wall -Wextra -Wpedantic -Wshadow -Wstrict-aliasing -Wstrict-overflow=5 -Wcast-align -Wmissing-declarations -Wpointer-arith -Wcast-qual -Ibuild/include -Ibuild/include/external -c src/lib/asn1/asn1_attribute.cpp -o build/obj/lib/asn1_attribute.bc
em++ -std=c++11 -D_REENTRANT -O3 -emit-llvm -fno-use-cxa-atexit -DBOTAN_IS_BEING_BUILT -Wall -Wextra -Wpedantic -Wshadow -Wstrict-aliasing -Wstrict-overflow=5 -Wcast-align -Wmissing-declarations -Wpointer-arith -Wcast-qual -Ibuild/include -Ibuild/include/external -c src/lib/asn1/asn1_obj.cpp -o build/obj/lib/asn1_obj.bc
em++ -std=c++11 -D_REENTRANT -O3 -emit-llvm -fno-use-cxa-atexit -DBOTAN_IS_BEING_BUILT -Wall -Wextra -Wpedantic -Wshadow -Wstrict-aliasing -Wstrict-overflow=5 -Wcast-align -Wmissing-declarations -Wpointer-arith -Wcast-qual -Ibuild/include -Ibuild/include/external -c src/lib/asn1/asn1_oid.cpp -o build/obj/lib/asn1_oid.bc
em++ -std=c++11 -D_REENTRANT -O3 -emit-llvm -fno-use-cxa-atexit -DBOTAN_IS_BEING_BUILT -Wall -Wextra -Wpedantic -Wshadow -Wstrict-aliasing -Wstrict-overflow=5 -Wcast-align -Wmissing-declarations -Wpointer-arith -Wcast-qual -Ibuild/include -Ibuild/include/external -c src/lib/asn1/asn1_print.cpp -o build/obj/lib/asn1_print.bc
em++ -std=c++11 -D_REENTRANT -O3 -emit-llvm -fno-use-cxa-atexit -DBOTAN_IS_BEING_BUILT -Wall -Wextra -Wpedantic -Wshadow -Wstrict-aliasing -Wstrict-overflow=5 -Wcast-align -Wmissing-declarations -Wpointer-arith -Wcast-qual -Ibuild/include -Ibuild/include/external -c src/lib/asn1/asn1_str.cpp -o build/obj/lib/asn1_str.bc
em++ -std=c++11 -D_REENTRANT -O3 -emit-llvm -fno-use-cxa-atexit -DBOTAN_IS_BEING_BUILT -Wall -Wextra -Wpedantic -Wshadow -Wstrict-aliasing -Wstrict-overflow=5 -Wcast-align -Wmissing-declarations -Wpointer-arith -Wcast-qual -Ibuild/include -Ibuild/include/external -c src/lib/asn1/asn1_time.cpp -o build/obj/lib/asn1_time.bc
em++ -std=c++11 -D_REENTRANT -O3 -emit-llvm -fno-use-cxa-atexit -DBOTAN_IS_BEING_BUILT -Wall -Wextra -Wpedantic -Wshadow -Wstrict-aliasing -Wstrict-overflow=5 -Wcast-align -Wmissing-declarations -Wpointer-arith -Wcast-qual -Ibuild/include -Ibuild/include/external -c src/lib/asn1/ber_dec.cpp -o build/obj/lib/asn1_ber_dec.bc
em++ -std=c++11 -D_REENTRANT -O3 -emit-llvm -fno-use-cxa-atexit -DBOTAN_IS_BEING_BUILT -Wall -Wextra -Wpedantic -Wshadow -Wstrict-aliasing -Wstrict-overflow=5 -Wcast-align -Wmissing-declarations -Wpointer-arith -Wcast-qual -Ibuild/include -Ibuild/include/external -c src/lib/asn1/der_enc.cpp -o build/obj/lib/asn1_der_enc.bc
em++ -std=c++11 -D_REENTRANT -O3 -emit-llvm -fno-use-cxa-atexit -DBOTAN_IS_BEING_BUILT -Wall -Wextra -Wpedantic -Wshadow -Wstrict-aliasing -Wstrict-overflow=5 -Wcast-align -Wmissing-declarations -Wpointer-arith -Wcast-qual -Ibuild/include -Ibuild/include/external -c src/lib/asn1/oid_maps.cpp -o build/obj/lib/asn1_oid_maps.bc
em++ -std=c++11 -D_REENTRANT -O3 -emit-llvm -fno-use-cxa-atexit -DBOTAN_IS_BEING_BUILT -Wall -Wextra -Wpedantic -Wshadow -Wstrict-aliasing -Wstrict-overflow=5 -Wcast-align -Wmissing-declarations -Wpointer-arith -Wcast-qual -Ibuild/include -Ibuild/include/external -c src/lib/asn1/oids.cpp -o build/obj/lib/asn1_oids.bc
em++ -std=c++11 -D_REENTRANT -O3 -emit-llvm -fno-use-cxa-atexit -DBOTAN_IS_BEING_BUILT -Wall -Wextra -Wpedantic -Wshadow -Wstrict-aliasing -Wstrict-overflow=5 -Wcast-align -Wmissing-declarations -Wpointer-arith -Wcast-qual -Ibuild/include -Ibuild/include/external -c src/lib/base/buf_comp.cpp -o build/obj/lib/base_buf_comp.bc
em++ -std=c++11 -D_REENTRANT -O3 -emit-llvm -fno-use-cxa-atexit -DBOTAN_IS_BEING_BUILT -Wall -Wextra -Wpedantic -Wshadow -Wstrict-aliasing -Wstrict-overflow=5 -Wcast-align -Wmissing-declarations -Wpointer-arith -Wcast-qual -Ibuild/include -Ibuild/include/external -c src/lib/base/scan_name.cpp -o build/obj/lib/base_scan_name.bc
em++ -std=c++11 -D_REENTRANT -O3 -emit-llvm -fno-use-cxa-atexit -DBOTAN_IS_BEING_BUILT -Wall -Wextra -Wpedantic -Wshadow -Wstrict-aliasing -Wstrict-overflow=5 -Wcast-align -Wmissing-declarations -Wpointer-arith -Wcast-qual -Ibuild/include -Ibuild/include/external -c src/lib/base/sym_algo.cpp -o build/obj/lib/base_sym_algo.bc
more output...
more output...
more output...
more output...
more output...
more output...
more output...
em++ build/obj/cli/argon2.bc build/obj/cli/asn1.bc build/obj/cli/bcrypt.bc build/obj/cli/cc_enc.bc build/obj/cli/cli.bc build/obj/cli/cli_rng.bc build/obj/cli/codec.bc build/obj/cli/compress.bc build/obj/cli/encryption.bc build/obj/cli/entropy.bc build/obj/cli/hash.bc build/obj/cli/hmac.bc build/obj/cli/main.bc build/obj/cli/math.bc build/obj/cli/pbkdf.bc build/obj/cli/pk_crypt.bc build/obj/cli/psk.bc build/obj/cli/pubkey.bc build/obj/cli/sandbox.bc build/obj/cli/speed.bc build/obj/cli/timing_tests.bc build/obj/cli/tls_client.bc build/obj/cli/tls_http_server.bc build/obj/cli/tls_proxy.bc build/obj/cli/tls_server.bc build/obj/cli/tls_utils.bc build/obj/cli/tss.bc build/obj/cli/utils.bc build/obj/cli/x509.bc -L. -lbotan-2 -o botan.bc
shared:WARNING: **Assuming object file output in the absence of `-c`, based on output filename.** Please add with `-c` or `-r` to avoid this warning
wasm-ld: **error**: unknown file type: asn1_alg_id.o
shared:ERROR: **'/WebAssembly/emsdk/upstream/bin/wasm-ld -o botan.bc --lto-O0 build/obj/cli/argon2.bc build/obj/cli/asn1.bc -L/WebAssembly/emsdk/upstream/emscripten/system/local/lib build/obj/cli/bcrypt.bc -L/WebAssembly/emsdk/upstream/emscripten/system/lib build/obj/cli/cc_enc.bc -L/root/.emscripten_cache/wasm-obj build/obj/cli/cli.bc build/obj/cli/cli_rng.bc build/obj/cli/codec.bc build/obj/cli/compress.bc build/obj/cli/encryption.bc build/obj/cli/entropy.bc build/obj/cli/hash.bc build/obj/cli/hmac.bc build/obj/cli/main.bc build/obj/cli/math.bc build/obj/cli/pbkdf.bc build/obj/cli/pk_crypt.bc build/obj/cli/psk.bc build/obj/cli/pubkey.bc build/obj/cli/sandbox.bc build/obj/cli/speed.bc build/obj/cli/timing_tests.bc build/obj/cli/tls_client.bc build/obj/cli/tls_http_server.bc build/obj/cli/tls_proxy.bc build/obj/cli/tls_server.bc build/obj/cli/tls_utils.bc build/obj/cli/tss.bc build/obj/cli/utils.bc build/obj/cli/x509.bc -L. ./libbotan-2.a --allow-undefined --import-memory --import-table -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --strip-debug --export __wasm_call_ctors --export __data_end --export main --export malloc --export free --export setThrew --export __errno_location --export fflush -z stack-size=5242880 --initial-memory=16777216 --no-entry --max-memory=16777216 --global-base=1024 --relocatable' failed (1)**
Makefile:71: recipe for target 'botan.bc' failed
make: *** [botan.bc] Error 1
For make
you'll need some kind of make installed. I'm surprised Emscripten doesn't come with something. GNU make, BSD make or nmake
from Visual C++ all should work.
For the error under WSL I'm not sure what is going on. I haven't tested this build in some time maybe we have a regression. It's also possible Emscripten or LLVM has changed in a way that has broken our build. What version of Emscripten do you have installed? The output gives versions for Python etc but not Emscripten or LLVM.
"Windows x86 Debug" library compilation using nmake. ALL OK "Windows x86 Release" library compilation using nmake. ALL OK "Windows x64 Debug" library compilation using nmake. ALL OK "Windows x64 Release" library compilation using nmake. ALL OK
"Linux x86 Debug" library compilation using GNU make on WSL Ubuntu x64. ALL OK "Linux x86 Release" library compilation using GNU make on WSL Ubuntu x64. ALL OK "Linux x64 Debug" library compilation using GNU make on WSL Ubuntu x64. ALL OK "Linux x64 Release" library compilation using GNU make on WSL Ubuntu x64. ALL OK
But compile using Emscripten compiler i have errors. Compiler versión - WSL Ubuntu x64
root@X-PC:~# em++ -v
emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 1.39.8
clang version 11.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project 9dc84e9b02d1e402503906099d42fbae4da7d8d9)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /WebAssembly/emsdk/upstream/bin
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.4.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.4.0
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Candidate multilib: x32;@mx32
Selected multilib: .;@m64
shared:INFO: (Emscripten: Running sanity checks)
root@X-PC:~#
Invoke Configure.py - WSL Ubuntu x64
Invoke make - WSL Ubuntu x64 more and more output until this error
.o is extension from GCC/MSVC compiler (Object files). But em++ compiler generates .bc (bitcode files), maybe this is the error. unknown file type: asn1_alg_id.o maybe emscripten tool needs asn1_alg_id.bc
Trying on WINDOWS using nmake
Set compiler environment var and Invoke configure.py OK
Especial powershell function to set MSVC environment variables
function Set-Vcvars
{
param (
[parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[Object]
$VcvarsFilename
)
cmd /c """$vcvarsFilename"" & SET" | ForEach-Object {
if ($_ -match "=") {
$v = $_.split("=");
Set-Item -Force -Path "Env:\$($v[0])" -value "$($v[1])"
}
}
}
Run function
PS C:\Users\Megam\InsaneTemp\Botan> Set-Vcvars "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"
Run nmake more and more output until this error "command line is too long"
Checking last command string is 12902 characters long.
em++.bat -std=c++11 -D_REENTRANT -g -emit-llvm -fno-use-cxa-atexit -DBOTAN_IS_BEING_BUILT -Wall -Wextra -Wpedantic -Wshadow -Wstrict-aliasing -Wstrict-overflow=5 -Wcast-align -Wmissing-declarations -Wpointer-arith -Wcast-qual -Ibuild\include -Ibuild\include\external -c src/lib/x509/x509self.cpp -o build\obj\lib\x509_x509self.bc
emar cr ./libbotan-2.a build\obj\lib\asn1_alg_id.bc build\obj\lib\asn1_attribute.bc build\obj\lib\asn1_obj.bc build\obj\lib\asn1_oid.bc build\obj\lib\asn1_print.bc build\obj\lib\asn1_str.bc build\obj\lib\asn1_time.bc build\obj\lib\asn1_ber_dec.bc build\obj\lib\asn1_der_enc.bc build\obj\lib\asn1_oid_maps.bc build\obj\lib\asn1_oids.bc build\obj\lib\base_buf_comp.bc build\obj\lib\base_scan_name.bc build\obj\lib\base_sym_algo.bc build\obj\lib\base_symkey.bc build\obj\lib\block_aes.bc build\obj\lib\block_aria.bc build\obj\lib\block_cipher.bc build\obj\lib\block_blowfish.bc build\obj\lib\block_camellia.bc build\obj\lib\block_cascade.bc build\obj\lib\block_cast128.bc build\obj\lib\block_cast256.bc build\obj\lib\block_des.bc build\obj\lib\block_des_tab.bc build\obj\lib\block_des_desx.bc build\obj\lib\block_gost_28147.bc build\obj\lib\block_idea.bc build\obj\lib\block_kasumi.bc build\obj\lib\block_lion.bc build\obj\lib\block_misty1.bc build\obj\lib\block_noekeon.bc build\obj\lib\block_seed.bc build\obj\lib\block_serpent.bc build\obj\lib\block_shacal2.bc build\obj\lib\block_sm4.bc build\obj\lib\block_threefish_512.bc build\obj\lib\block_twofish.bc build\obj\lib\block_twofish_tab.bc build\obj\lib\block_xtea.bc build\obj\lib\codec_base32.bc build\obj\lib\codec_base58.bc build\obj\lib\codec_base64.bc build\obj\lib\codec_hex.bc build\obj\lib\compat_sodium_25519.bc build\obj\lib\compat_sodium_aead.bc build\obj\lib\compat_sodium_auth.bc build\obj\lib\compat_sodium_box.bc build\obj\lib\compat_sodium_chacha.bc build\obj\lib\compat_sodium_salsa.bc build\obj\lib\compat_sodium_secretbox.bc build\obj\lib\compat_sodium_utils.bc build\obj\lib\entropy_dev_random.bc build\obj\lib\entropy_srcs.bc build\obj\lib\ffi.bc build\obj\lib\ffi_block.bc build\obj\lib\ffi_cert.bc build\obj\lib\ffi_cipher.bc build\obj\lib\ffi_fpe.bc build\obj\lib\ffi_hash.bc build\obj\lib\ffi_hotp.bc build\obj\lib\ffi_kdf.bc build\obj\lib\ffi_keywrap.bc build\obj\lib\ffi_mac.bc build\obj\lib\ffi_mp.bc build\obj\lib\ffi_pk_op.bc build\obj\lib\ffi_pkey.bc build\obj\lib\ffi_pkey_algs.bc build\obj\lib\ffi_rng.bc build\obj\lib\ffi_totp.bc build\obj\lib\filters_algo_filt.bc build\obj\lib\filters_b64_filt.bc build\obj\lib\filters_basefilt.bc build\obj\lib\filters_buf_filt.bc build\obj\lib\filters_cipher_filter.bc build\obj\lib\filters_comp_filter.bc build\obj\lib\filters_data_snk.bc build\obj\lib\filters_fd_unix.bc build\obj\lib\filters_filter.bc build\obj\lib\filters_hex_filt.bc build\obj\lib\filters_out_buf.bc build\obj\lib\filters_pipe.bc build\obj\lib\filters_pipe_io.bc build\obj\lib\filters_pipe_rw.bc build\obj\lib\filters_secqueue.bc build\obj\lib\filters_threaded_fork.bc build\obj\lib\hash_blake2_blake2b.bc build\obj\lib\hash_checksum_adler32.bc build\obj\lib\hash_checksum_crc24.bc build\obj\lib\hash_checksum_crc32.bc build\obj\lib\hash_comb4p.bc build\obj\lib\hash_gost_3411.bc build\obj\lib\hash.bc build\obj\lib\hash_keccak.bc build\obj\lib\hash_md4.bc build\obj\lib\hash_md5.bc build\obj\lib\hash_mdx_hash.bc build\obj\lib\hash_par_hash.bc build\obj\lib\hash_rmd160.bc build\obj\lib\hash_sha1_sha160.bc build\obj\lib\hash_sha2_32.bc build\obj\lib\hash_sha2_64.bc build\obj\lib\hash_sha3.bc build\obj\lib\hash_shake.bc build\obj\lib\hash_skein_512.bc build\obj\lib\hash_sm3.bc build\obj\lib\hash_streebog.bc build\obj\lib\hash_streebog_precalc.bc build\obj\lib\hash_tiger_tig_tab.bc build\obj\lib\hash_tiger.bc build\obj\lib\hash_whirlpool.bc build\obj\lib\hash_whirlpool_whrl_tab.bc build\obj\lib\kdf_hkdf.bc build\obj\lib\kdf.bc build\obj\lib\kdf_kdf1.bc build\obj\lib\kdf_kdf1_iso18033.bc build\obj\lib\kdf_kdf2.bc build\obj\lib\kdf_prf_tls.bc build\obj\lib\kdf_prf_x942.bc build\obj\lib\kdf_sp800_108.bc build\obj\lib\kdf_sp800_56a.bc build\obj\lib\kdf_sp800_56c.bc build\obj\lib\mac_cbc_mac.bc build\obj\lib\mac_cmac.bc build\obj\lib\mac_gmac.bc build\obj\lib\mac_hmac.bc build\obj\lib\mac.bc build\obj\lib\mac_poly1305.bc build\obj\lib\mac_siphash.bc build\obj\lib\mac_x919_mac.bc build\obj\lib\math_bigint_big_code.bc build\obj\lib\math_bigint_big_io.bc build\obj\lib\math_bigint_big_ops2.bc build\obj\lib\math_bigint_big_ops3.bc build\obj\lib\math_bigint_big_rand.bc build\obj\lib\math_bigint.bc build\obj\lib\math_bigint_divide.bc build\obj\lib\math_mp_comba.bc build\obj\lib\math_mp_karat.bc build\obj\lib\math_mp_monty.bc build\obj\lib\math_mp_monty_n.bc build\obj\lib\math_numbertheory_dsa_gen.bc build\obj\lib\math_numbertheory_jacobi.bc build\obj\lib\math_numbertheory_make_prm.bc build\obj\lib\math_numbertheory_monty.bc build\obj\lib\math_numbertheory_monty_exp.bc build\obj\lib\math_numbertheory_mp_numth.bc build\obj\lib\math_numbertheory_nistp_redc.bc build\obj\lib\math_numbertheory_numthry.bc build\obj\lib\math_numbertheory_pow_mod.bc build\obj\lib\math_numbertheory_primality.bc build\obj\lib\math_numbertheory_primes.bc build\obj\lib\math_numbertheory_reducer.bc build\obj\lib\math_numbertheory_ressol.bc build\obj\lib\misc_aont_package.bc build\obj\lib\misc_cryptobox.bc build\obj\lib\misc_fpe_fe1.bc build\obj\lib\misc_hotp.bc build\obj\lib\misc_hotp_totp.bc build\obj\lib\misc_nist_keywrap.bc build\obj\lib\misc_rfc3394.bc build\obj\lib\misc_srp6.bc build\obj\lib\misc_tss.bc build\obj\lib\modes_aead.bc build\obj\lib\modes_aead_ccm.bc build\obj\lib\modes_aead_chacha20poly1305.bc build\obj\lib\modes_aead_eax.bc build\obj\lib\modes_aead_gcm.bc build\obj\lib\modes_aead_gcm_ghash.bc build\obj\lib\modes_aead_ocb.bc build\obj\lib\modes_aead_siv.bc build\obj\lib\modes_cbc.bc build\obj\lib\modes_cfb.bc build\obj\lib\modes_cipher_mode.bc build\obj\lib\modes_mode_pad.bc build\obj\lib\modes_xts.bc build\obj\lib\passhash_bcrypt.bc build\obj\lib\passhash_passhash9.bc build\obj\lib\pbkdf_argon2.bc build\obj\lib\pbkdf_argon2_argon2fmt.bc build\obj\lib\pbkdf_argon2_argon2pwhash.bc build\obj\lib\pbkdf_bcrypt_pbkdf.bc build\obj\lib\pbkdf.bc build\obj\lib\pbkdf_pbkdf1.bc build\obj\lib\pbkdf_pbkdf2.bc build\obj\lib\pbkdf_pgp_s2k.bc build\obj\lib\pbkdf_pwdhash.bc build\obj\lib\pbkdf_scrypt.bc build\obj\lib\pk_pad_eme.bc build\obj\lib\pk_pad_eme_oaep_oaep.bc build\obj\lib\pk_pad_eme_pkcs1_eme_pkcs.bc build\obj\lib\pk_pad_eme_raw.bc build\obj\lib\pk_pad_emsa.bc build\obj\lib\pk_pad_emsa1.bc build\obj\lib\pk_pad_emsa_pkcs1.bc build\obj\lib\pk_pad_emsa_pssr_pssr.bc build\obj\lib\pk_pad_emsa_raw.bc build\obj\lib\pk_pad_emsa_x931.bc build\obj\lib\pk_pad_hash_id.bc build\obj\lib\pk_pad_iso9796.bc build\obj\lib\pk_pad_mgf1.bc build\obj\lib\pk_pad_padding.bc build\obj\lib\prov_pkcs11_p11.bc build\obj\lib\prov_pkcs11_p11_ecc_key.bc build\obj\lib\prov_pkcs11_p11_ecdh.bc build\obj\lib\prov_pkcs11_p11_ecdsa.bc build\obj\lib\prov_pkcs11_p11_mechanism.bc build\obj\lib\prov_pkcs11_p11_module.bc build\obj\lib\prov_pkcs11_p11_object.bc build\obj\lib\prov_pkcs11_p11_randomgenerator.bc build\obj\lib\prov_pkcs11_p11_rsa.bc build\obj\lib\prov_pkcs11_p11_session.bc build\obj\lib\prov_pkcs11_p11_slot.bc build\obj\lib\prov_pkcs11_p11_x509.bc build\obj\lib\psk_db.bc build\obj\lib\psk_db_psk_db_sql.bc build\obj\lib\pubkey_blinding.bc build\obj\lib\pubkey_cecpq1.bc build\obj\lib\pubkey_curve25519.bc build\obj\lib\pubkey_curve25519_donna.bc build\obj\lib\pubkey_dh.bc build\obj\lib\pubkey_dl_algo.bc build\obj\lib\pubkey_dl_group.bc build\obj\lib\pubkey_dl_group_dl_named.bc build\obj\lib\pubkey_dlies.bc build\obj\lib\pubkey_dsa.bc build\obj\lib\pubkey_ec_group_curve_gfp.bc build\obj\lib\pubkey_ec_group.bc build\obj\lib\pubkey_ec_group_ec_named.bc build\obj\lib\pubkey_ec_group_point_gfp.bc build\obj\lib\pubkey_ec_group_point_mul.bc build\obj\lib\pubkey_ecc_key.bc build\obj\lib\pubkey_ecdh.bc build\obj\lib\pubkey_ecdsa.bc build\obj\lib\pubkey_ecgdsa.bc build\obj\lib\pubkey_ecies.bc build\obj\lib\pubkey_eckcdsa.bc build\obj\lib\pubkey_ed25519.bc build\obj\lib\pubkey_ed25519_fe.bc build\obj\lib\pubkey_ed25519_key.bc build\obj\lib\pubkey_ed25519_ge.bc build\obj\lib\pubkey_ed25519_sc_muladd.bc build\obj\lib\pubkey_ed25519_sc_reduce.bc build\obj\lib\pubkey_elgamal.bc build\obj\lib\pubkey_gost_3410.bc build\obj\lib\pubkey_keypair.bc build\obj\lib\pubkey_mce_code_based_key_gen.bc build\obj\lib\pubkey_mce_gf2m_rootfind_dcmp.bc build\obj\lib\pubkey_mce_gf2m_small_m.bc build\obj\lib\pubkey_mce_goppa_code.bc build\obj\lib\pubkey_mce_workfactor.bc build\obj\lib\pubkey_mce_mceliece.bc build\obj\lib\pubkey_mce_mceliece_key.bc build\obj\lib\pubkey_mce_polyn_gf2m.bc build\obj\lib\pubkey_mceies.bc build\obj\lib\pubkey_newhope.bc build\obj\lib\pubkey_pbes2.bc build\obj\lib\pubkey_pem.bc build\obj\lib\pubkey_pk_algs.bc build\obj\lib\pubkey_pk_keys.bc build\obj\lib\pubkey_pk_ops.bc build\obj\lib\pubkey_pkcs8.bc build\obj\lib\pubkey.bc build\obj\lib\pubkey_rfc6979.bc build\obj\lib\pubkey_rsa.bc build\obj\lib\pubkey_sm2.bc build\obj\lib\pubkey_sm2_enc.bc build\obj\lib\pubkey_workfactor.bc build\obj\lib\pubkey_x509_key.bc build\obj\lib\pubkey_xmss_common_ops.bc build\obj\lib\pubkey_xmss_hash.bc build\obj\lib\pubkey_xmss_index_registry.bc build\obj\lib\pubkey_xmss_parameters.bc build\obj\lib\pubkey_xmss_privatekey.bc build\obj\lib\pubkey_xmss_publickey.bc build\obj\lib\pubkey_xmss_signature.bc build\obj\lib\pubkey_xmss_signature_operation.bc build\obj\lib\pubkey_xmss_verification_operation.bc build\obj\lib\pubkey_xmss_wots_parameters.bc build\obj\lib\pubkey_xmss_wots_privatekey.bc build\obj\lib\pubkey_xmss_wots_publickey.bc build\obj\lib\rng_auto_rng.bc build\obj\lib\rng_chacha_rng.bc build\obj\lib\rng_hmac_drbg.bc build\obj\lib\rng.bc build\obj\lib\rng_stateful_rng.bc build\obj\lib\rng_system_rng.bc build\obj\lib\stream_chacha.bc build\obj\lib\stream_ctr.bc build\obj\lib\stream_ofb.bc build\obj\lib\stream_rc4.bc build\obj\lib\stream_salsa20.bc build\obj\lib\stream_shake_cipher.bc build\obj\lib\stream_cipher.bc build\obj\lib\tls_credentials_manager.bc build\obj\lib\tls_msg_cert_req.bc build\obj\lib\tls_msg_cert_status.bc build\obj\lib\tls_msg_cert_verify.bc build\obj\lib\tls_msg_certificate.bc build\obj\lib\tls_msg_client_hello.bc build\obj\lib\tls_msg_client_kex.bc build\obj\lib\tls_msg_finished.bc build\obj\lib\tls_msg_hello_verify.bc build\obj\lib\tls_msg_server_hello.bc build\obj\lib\tls_msg_server_kex.bc build\obj\lib\tls_msg_session_ticket.bc build\obj\lib\tls_sessions_sql_tls_session_manager_sql.bc build\obj\lib\tls_alert.bc build\obj\lib\tls_algos.bc build\obj\lib\tls_blocking.bc build\obj\lib\tls_callbacks.bc build\obj\lib\tls_cbc.bc build\obj\lib\tls_channel.bc build\obj\lib\tls_ciphersuite.bc build\obj\lib\tls_client.bc build\obj\lib\tls_extensions.bc build\obj\lib\tls_handshake_hash.bc build\obj\lib\tls_handshake_io.bc build\obj\lib\tls_handshake_state.bc build\obj\lib\tls_policy.bc build\obj\lib\tls_record.bc build\obj\lib\tls_server.bc build\obj\lib\tls_session.bc build\obj\lib\tls_session_key.bc build\obj\lib\tls_session_manager_memory.bc build\obj\lib\tls_suite_info.bc build\obj\lib\tls_text_policy.bc build\obj\lib\tls_version.bc build\obj\lib\utils_assert.bc build\obj\lib\utils_calendar.bc build\obj\lib\utils_charset.bc build\obj\lib\utils_cpuid.bc build\obj\lib\utils_cpuid_arm.bc build\obj\lib\utils_cpuid_ppc.bc build\obj\lib\utils_cpuid_x86.bc build\obj\lib\utils_ct_utils.bc build\obj\lib\utils_data_src.bc build\obj\lib\utils_dyn_load.bc build\obj\lib\utils_exceptn.bc build\obj\lib\utils_filesystem.bc build\obj\lib\utils_http_util.bc build\obj\lib\utils_locking_allocator.bc build\obj\lib\utils_mem_ops.bc build\obj\lib\utils_mem_pool.bc build\obj\lib\utils_os_utils.bc build\obj\lib\utils_parsing.bc build\obj\lib\utils_poly_dbl.bc build\obj\lib\utils_read_cfg.bc build\obj\lib\utils_read_kv.bc build\obj\lib\utils_socket.bc build\obj\lib\utils_timer.bc build\obj\lib\utils_uuid.bc build\obj\lib\utils_version.bc build\obj\lib\x509_asn1_alt_name.bc build\obj\lib\x509_cert_status.bc build\obj\lib\x509_certstor.bc build\obj\lib\x509_certstor_flatfile.bc build\obj\lib\x509_certstor_sql.bc build\obj\lib\x509_certstor_system.bc build\obj\lib\x509_crl_ent.bc build\obj\lib\x509_datastor.bc build\obj\lib\x509_key_constraint.bc build\obj\lib\x509_name_constraint.bc build\obj\lib\x509_ocsp.bc build\obj\lib\x509_ocsp_types.bc build\obj\lib\x509_pkcs10.bc build\obj\lib\x509_ca.bc build\obj\lib\x509_crl.bc build\obj\lib\x509_dn.bc build\obj\lib\x509_dn_ub.bc build\obj\lib\x509_ext.bc build\obj\lib\x509_obj.bc build\obj\lib\x509_x509cert.bc build\obj\lib\x509_x509opt.bc build\obj\lib\x509_x509path.bc build\obj\lib\x509_x509self.bc La línea de comandos es demasiado larga.
NMAKE : fatal error U1077: 'I:\WebAssembly\emsdk\upstream\emscripten\emar.BAT' : código devuelto '0x1'
Stop.
Command prompt (Cmd. exe) command-line string limitation
UPDATE I
PS C:\Users\Megam\InsaneTemp\Botan> cd .\build\obj\lib\
PS C:\Users\Megam\InsaneTemp\Botan\build\obj\lib> emar cr ./libbotan-2.a asn1_alg_id.bc asn1_attribute.bc asn1_obj.bc asn1_oid.bc asn1_print.bc asn1_str.bc asn1_time.bc asn1_ber_dec.bc asn1_der_enc.bc asn1_oid_maps.bc asn1_oids.bc base_buf_comp.bc base_scan_name.bc base_sym_algo.bc base_symkey.bc block_aes.bc block_aria.bc block_cipher.bc block_blowfish.bc block_camellia.bc block_cascade.bc block_cast128.bc block_cast256.bc block_des.bc block_des_tab.bc block_des_desx.bc block_gost_28147.bc block_idea.bc block_kasumi.bc block_lion.bc block_misty1.bc block_noekeon.bc block_seed.bc block_serpent.bc block_shacal2.bc block_sm4.bc block_threefish_512.bc block_twofish.bc block_twofish_tab.bc block_xtea.bc codec_base32.bc codec_base58.bc codec_base64.bc codec_hex.bc compat_sodium_25519.bc compat_sodium_aead.bc compat_sodium_auth.bc compat_sodium_box.bc compat_sodium_chacha.bc compat_sodium_salsa.bc compat_sodium_secretbox.bc compat_sodium_utils.bc entropy_dev_random.bc entropy_srcs.bc ffi.bc ffi_block.bc ffi_cert.bc ffi_cipher.bc ffi_fpe.bc ffi_hash.bc ffi_hotp.bc ffi_kdf.bc ffi_keywrap.bc ffi_mac.bc ffi_mp.bc ffi_pk_op.bc ffi_pkey.bc ffi_pkey_algs.bc ffi_rng.bc ffi_totp.bc filters_algo_filt.bc filters_b64_filt.bc filters_basefilt.bc filters_buf_filt.bc filters_cipher_filter.bc filters_comp_filter.bc filters_data_snk.bc filters_fd_unix.bc filters_filter.bc filters_hex_filt.bc filters_out_buf.bc filters_pipe.bc filters_pipe_io.bc filters_pipe_rw.bc filters_secqueue.bc filters_threaded_fork.bc hash_blake2_blake2b.bc hash_checksum_adler32.bc hash_checksum_crc24.bc hash_checksum_crc32.bc hash_comb4p.bc hash_gost_3411.bc hash.bc hash_keccak.bc hash_md4.bc hash_md5.bc hash_mdx_hash.bc hash_par_hash.bc hash_rmd160.bc hash_sha1_sha160.bc hash_sha2_32.bc hash_sha2_64.bc hash_sha3.bc hash_shake.bc hash_skein_512.bc hash_sm3.bc hash_streebog.bc hash_streebog_precalc.bc hash_tiger_tig_tab.bc hash_tiger.bc hash_whirlpool.bc hash_whirlpool_whrl_tab.bc kdf_hkdf.bc kdf.bc kdf_kdf1.bc kdf_kdf1_iso18033.bc kdf_kdf2.bc kdf_prf_tls.bc kdf_prf_x942.bc kdf_sp800_108.bc kdf_sp800_56a.bc kdf_sp800_56c.bc mac_cbc_mac.bc mac_cmac.bc mac_gmac.bc mac_hmac.bc mac.bc mac_poly1305.bc mac_siphash.bc mac_x919_mac.bc math_bigint_big_code.bc math_bigint_big_io.bc math_bigint_big_ops2.bc math_bigint_big_ops3.bc math_bigint_big_rand.bc math_bigint.bc math_bigint_divide.bc math_mp_comba.bc math_mp_karat.bc math_mp_monty.bc math_mp_monty_n.bc math_numbertheory_dsa_gen.bc math_numbertheory_jacobi.bc math_numbertheory_make_prm.bc math_numbertheory_monty.bc math_numbertheory_monty_exp.bc math_numbertheory_mp_numth.bc math_numbertheory_nistp_redc.bc math_numbertheory_numthry.bc math_numbertheory_pow_mod.bc math_numbertheory_primality.bc math_numbertheory_primes.bc math_numbertheory_reducer.bc math_numbertheory_ressol.bc misc_aont_package.bc misc_cryptobox.bc misc_fpe_fe1.bc misc_hotp.bc misc_hotp_totp.bc misc_nist_keywrap.bc misc_rfc3394.bc misc_srp6.bc misc_tss.bc modes_aead.bc modes_aead_ccm.bc modes_aead_chacha20poly1305.bc modes_aead_eax.bc modes_aead_gcm.bc modes_aead_gcm_ghash.bc modes_aead_ocb.bc modes_aead_siv.bc modes_cbc.bc modes_cfb.bc modes_cipher_mode.bc modes_mode_pad.bc modes_xts.bc passhash_bcrypt.bc passhash_passhash9.bc pbkdf_argon2.bc pbkdf_argon2_argon2fmt.bc pbkdf_argon2_argon2pwhash.bc pbkdf_bcrypt_pbkdf.bc pbkdf.bc pbkdf_pbkdf1.bc pbkdf_pbkdf2.bc pbkdf_pgp_s2k.bc pbkdf_pwdhash.bc pbkdf_scrypt.bc pk_pad_eme.bc pk_pad_eme_oaep_oaep.bc pk_pad_eme_pkcs1_eme_pkcs.bc pk_pad_eme_raw.bc pk_pad_emsa.bc pk_pad_emsa1.bc pk_pad_emsa_pkcs1.bc pk_pad_emsa_pssr_pssr.bc pk_pad_emsa_raw.bc pk_pad_emsa_x931.bc pk_pad_hash_id.bc pk_pad_iso9796.bc pk_pad_mgf1.bc pk_pad_padding.bc prov_pkcs11_p11.bc prov_pkcs11_p11_ecc_key.bc prov_pkcs11_p11_ecdh.bc prov_pkcs11_p11_ecdsa.bc prov_pkcs11_p11_mechanism.bc prov_pkcs11_p11_module.bc prov_pkcs11_p11_object.bc prov_pkcs11_p11_randomgenerator.bc prov_pkcs11_p11_rsa.bc prov_pkcs11_p11_session.bc prov_pkcs11_p11_slot.bc prov_pkcs11_p11_x509.bc psk_db.bc psk_db_psk_db_sql.bc pubkey_blinding.bc pubkey_cecpq1.bc pubkey_curve25519.bc pubkey_curve25519_donna.bc pubkey_dh.bc pubkey_dl_algo.bc pubkey_dl_group.bc pubkey_dl_group_dl_named.bc pubkey_dlies.bc pubkey_dsa.bc pubkey_ec_group_curve_gfp.bc pubkey_ec_group.bc pubkey_ec_group_ec_named.bc pubkey_ec_group_point_gfp.bc pubkey_ec_group_point_mul.bc pubkey_ecc_key.bc pubkey_ecdh.bc pubkey_ecdsa.bc pubkey_ecgdsa.bc pubkey_ecies.bc pubkey_eckcdsa.bc pubkey_ed25519.bc pubkey_ed25519_fe.bc pubkey_ed25519_key.bc pubkey_ed25519_ge.bc pubkey_ed25519_sc_muladd.bc pubkey_ed25519_sc_reduce.bc pubkey_elgamal.bc pubkey_gost_3410.bc pubkey_keypair.bc pubkey_mce_code_based_key_gen.bc pubkey_mce_gf2m_rootfind_dcmp.bc pubkey_mce_gf2m_small_m.bc pubkey_mce_goppa_code.bc pubkey_mce_workfactor.bc pubkey_mce_mceliece.bc pubkey_mce_mceliece_key.bc pubkey_mce_polyn_gf2m.bc pubkey_mceies.bc pubkey_newhope.bc pubkey_pbes2.bc pubkey_pem.bc pubkey_pk_algs.bc pubkey_pk_keys.bc pubkey_pk_ops.bc pubkey_pkcs8.bc pubkey.bc pubkey_rfc6979.bc pubkey_rsa.bc pubkey_sm2.bc pubkey_sm2_enc.bc pubkey_workfactor.bc pubkey_x509_key.bc pubkey_xmss_common_ops.bc pubkey_xmss_hash.bc pubkey_xmss_index_registry.bc pubkey_xmss_parameters.bc pubkey_xmss_privatekey.bc pubkey_xmss_publickey.bc pubkey_xmss_signature.bc pubkey_xmss_signature_operation.bc pubkey_xmss_verification_operation.bc pubkey_xmss_wots_parameters.bc pubkey_xmss_wots_privatekey.bc pubkey_xmss_wots_publickey.bc rng_auto_rng.bc rng_chacha_rng.bc rng_hmac_drbg.bc rng.bc rng_stateful_rng.bc rng_system_rng.bc stream_chacha.bc stream_ctr.bc stream_ofb.bc stream_rc4.bc stream_salsa20.bc stream_shake_cipher.bc stream_cipher.bc tls_credentials_manager.bc tls_msg_cert_req.bc tls_msg_cert_status.bc tls_msg_cert_verify.bc tls_msg_certificate.bc tls_msg_client_hello.bc tls_msg_client_kex.bc tls_msg_finished.bc tls_msg_hello_verify.bc tls_msg_server_hello.bc tls_msg_server_kex.bc tls_msg_session_ticket.bc tls_sessions_sql_tls_session_manager_sql.bc tls_alert.bc tls_algos.bc tls_blocking.bc tls_callbacks.bc tls_cbc.bc tls_channel.bc tls_ciphersuite.bc tls_client.bc tls_extensions.bc tls_handshake_hash.bc tls_handshake_io.bc tls_handshake_state.bc tls_policy.bc tls_record.bc tls_server.bc tls_session.bc tls_session_key.bc tls_session_manager_memory.bc tls_suite_info.bc tls_text_policy.bc tls_version.bc utils_assert.bc utils_calendar.bc utils_charset.bc utils_cpuid.bc utils_cpuid_arm.bc utils_cpuid_ppc.bc utils_cpuid_x86.bc utils_ct_utils.bc utils_data_src.bc utils_dyn_load.bc utils_exceptn.bc utils_filesystem.bc utils_http_util.bc utils_locking_allocator.bc utils_mem_ops.bc utils_mem_pool.bc utils_os_utils.bc utils_parsing.bc utils_poly_dbl.bc utils_read_cfg.bc utils_read_kv.bc utils_socket.bc utils_timer.bc utils_uuid.bc utils_version.bc x509_asn1_alt_name.bc x509_cert_status.bc x509_certstor.bc x509_certstor_flatfile.bc x509_certstor_sql.bc x509_certstor_system.bc x509_crl_ent.bc x509_datastor.bc x509_key_constraint.bc x509_name_constraint.bc x509_ocsp.bc x509_ocsp_types.bc x509_pkcs10.bc x509_ca.bc x509_crl.bc x509_dn.bc x509_dn_ub.bc x509_ext.bc x509_obj.bc x509_x509cert.bc x509_x509opt.bc x509_x509path.bc x509_x509self.bc
The result but the rest of makefile tasks are lost. botan-test.bc and botan.bc aren't generated.
I am able to reproduce this on Linux. Something has changed but the error about .o is very confusing given all of the created files are LLVM .bc files...
Emscripten build should probably be added to CI
Compiled successfuly on Linux. Steps.
root@X-PC:/home/x# emsdk activate latest
Writing .emscripten configuration file to user home directory /root/
Backing up old Emscripten configuration file in /root/.emscripten.old
The Emscripten configuration file /root/.emscripten has been rewritten with the following contents:
NODE_JS = '/WebAssembly/emsdk/node/12.9.1_64bit/bin/node'
LLVM_ROOT = '/WebAssembly/emsdk/upstream/bin'
BINARYEN_ROOT = '/WebAssembly/emsdk/upstream'
EMSCRIPTEN_ROOT = '/WebAssembly/emsdk/upstream/emscripten'
TEMP_DIR = '/tmp'
COMPILER_ENGINE = NODE_JS
JS_ENGINES = [NODE_JS]
To conveniently access the selected set of tools from the command line, consider adding the following directories to PATH, or call 'source ../../WebAssembly/emsdk/emsdk_env.sh' to do this for you.
/WebAssembly/emsdk:/WebAssembly/emsdk/node/12.9.1_64bit/bin:/WebAssembly/emsdk/upstream/emscripten
Set the following tools as active:
node-12.9.1-64bit
releases-upstream-9e60f34accb4627d7358223862a7e74291886ab6-64bit
root@X-PC:/home/x# emsdk_env.sh
Adding directories to PATH:
PATH += /WebAssembly/emsdk/node/12.9.1_64bit/bin
Setting environment variables:
EMSDK = /WebAssembly/emsdk
EM_CONFIG = /root/.emscripten
EMSDK_NODE = /WebAssembly/emsdk/node/12.9.1_64bit/bin/node
Change directory to Botan source folder.
root@X-PC:/home/x# cd /Temp/Botan/
Configure Botan using emconfigure, with this tool we no need to set CXX environment variable. It set env variables with correct path to CXX and AR tools.
root@X-PC:/Temp/Botan# emconfigure ./configure.py --cc=clang --cpu=llvm --os=emscripten --without-documentation --prefix
="/Temp/Botan/dist/Botan-2.12.1-Emscripten-llvm-Release"
cache:INFO: generating system asset: is_vanilla.txt... (this will be cached in "/root/.emscripten_cache/is_vanilla.txt" for subsequent builds)
cache:INFO: - ok
INFO: ./configure.py invoked with options "--cc=clang --cpu=llvm --os=emscripten --without-documentation --prefix=/Temp/Botan/dist/Botan-2.12.1-Emscripten-llvm-Release"
INFO: Configuring to build Botan 2.12.1 (revision git:1a6ad661ce64287ccbe26460ccc3aa4247d86ba8)
INFO: Running under 2.7.17 (default, Nov 7 2019, 10:07:09) [GCC 7.4.0]
INFO: CXX environment variable is set which will override compiler path
INFO: Implicit --ar-command=/WebAssembly/emsdk/upstream/emscripten/emar due to environment variable AR
INFO: Implicit --cc-bin=/WebAssembly/emsdk/upstream/emscripten/em++ due to environment variable CXX
INFO: Autodetected platform information: OS="Linux" machine="x86_64" proc="x86_64"
INFO: Using /etc/ssl/certs/ca-certificates.crt as system certificate store
INFO: Shared libs not supported on emscripten, disabling shared lib support
INFO: Auto-detected compiler version 11.0
WARNING: Unable to detect target architecture via compiler macro checks
INFO: Target is clang:11.0-emscripten-llvm
INFO: Skipping (dependency failure): asio certstor_sqlite3 chacha_simd32 noekeon_simd rdrand serpent_simd sessions_sqlite3 shacal2_simd
INFO: Skipping (incompatible CPU): aes_armv8 aes_ni aes_power8 aes_vperm chacha_avx2 clmul_cpu clmul_ssse3 idea_sse2 p9_darn rdrand_rng rdseed serpent_avx2 sha1_armv8 sha1_sse2 sha1_x86 sha2_32_armv8 sha2_32_bmi2 sha2_32_x86 sha2_64_bmi2 sha3_bmi2 shacal2_x86 simd simd_avx2 sm4_armv8 threefish_512_avx2
INFO: Skipping (incompatible OS): certstor_system_macos certstor_system_windows commoncrypto getentropy proc_walk thread_utils win32_stats
INFO: Skipping (no enabled compression schemes): compression
INFO: Skipping (requires external dependency): boost bzip2 lzma openssl sqlite3 tpm zlib
INFO: Loading modules: adler32 aead aes aont argon2 aria asn1 auto_rng base base32 base58 base64 bcrypt bcrypt_pbkdf bigint blake2 block blowfish camellia cascade cast128 cast256 cbc cbc_mac ccm cecpq1 certstor_flatfile certstor_sql certstor_system cfb chacha chacha20poly1305 chacha_rng checksum cmac codec_filt comb4p cpuid crc24 crc32 cryptobox ctr curve25519 des dev_random dh dl_algo dl_group dlies dsa dyn_load eax ec_group ecc_key ecdh ecdsa ecgdsa ecies eckcdsa ed25519 elgamal eme_oaep eme_pkcs1 eme_raw emsa1 emsa_pkcs1 emsa_pssr emsa_raw emsa_x931 entropy fd_unix ffi filters fpe_fe1 gcm gmac gost_28147 gost_3410 gost_3411 hash hash_id hex hkdf hmac hmac_drbg hotp http_util idea iso9796 kasumi kdf kdf1 kdf1_iso18033 kdf2 keccak keypair lion locking_allocator mac mce mceies md4 md5 mdx_hash mem_pool mgf1 misty1 mode_pad modes mp newhope nist_keywrap noekeon numbertheory ocb ofb par_hash passhash9 pbes2 pbkdf pbkdf1 pbkdf2 pem pgp_s2k pk_pad pkcs11 poly1305 poly_dbl prf_tls prf_x942 psk_db pubkey rc4 rfc3394 rfc6979 rmd160 rng rsa salsa20 scrypt seed serpent sessions_sql sha1 sha2_32 sha2_64 sha3 shacal2 shake shake_cipher siphash siv skein sm2 sm3 sm4 socket sodium sp800_108 sp800_56a sp800_56c srp6 stateful_rng stream streebog system_rng threefish_512 tiger tls tls_cbc tss twofish utils uuid whirlpool x509 x919_mac xmss xtea xts
INFO: Using symlink to link files into build dir (use --link-method to change)
INFO: Botan 2.12.1 (revision git:1a6ad661ce64287ccbe26460ccc3aa4247d86ba8) (release dated 20191014) build setup is complete
Checking our Makefile with full path of CXX and AR
root@X-PC:/Temp/Botan# emmake make
We get compiled "libbotan-2.a"
root@X-PC:/Temp/Botan# tree dist/Botan-2.12.1-Emscripten-llvm-Release/
Botan-2.12.1-Emscripten-llvm-Release
├── bin
│ └── botan.bc
├── include
│ └── botan-2
│ └── botan
│ ├── adler32.h
│ ├── aead.h
│ ├── aes.h
│ ├── alg_id.h
│ ├── argon2.h
│ ├── aria.h
│ ├── asn1_alt_name.h
│ ├── asn1_attribute.h
│ ├── asn1_obj.h
│ ├── asn1_oid.h
│ ├── asn1_print.h
│ ├── asn1_str.h
│ ├── asn1_time.h
│ ├── assert.h
│ ├── atomic.h
│ ├── auto_rng.h
│ ├── base32.h
│ ├── base58.h
│ ├── base64.h
│ ├── basefilt.h
│ ├── bcrypt.h
│ ├── bcrypt_pbkdf.h
│ ├── ber_dec.h
│ ├── bigint.h
│ ├── blake2b.h
│ ├── blinding.h
│ ├── block_cipher.h
│ ├── blowfish.h
│ ├── botan.h
│ ├── bswap.h
│ ├── buf_comp.h
│ ├── buf_filt.h
│ ├── build.h
│ ├── calendar.h
│ ├── camellia.h
│ ├── cascade.h
│ ├── cast128.h
│ ├── cast256.h
│ ├── cbc.h
│ ├── cbc_mac.h
│ ├── ccm.h
│ ├── cecpq1.h
│ ├── cert_status.h
│ ├── certstor.h
│ ├── certstor_flatfile.h
│ ├── certstor_sql.h
│ ├── certstor_system.h
│ ├── cfb.h
│ ├── chacha.h
│ ├── chacha20poly1305.h
│ ├── chacha_rng.h
│ ├── charset.h
│ ├── cipher_filter.h
│ ├── cipher_mode.h
│ ├── cmac.h
│ ├── comb4p.h
│ ├── comp_filter.h
│ ├── compiler.h
│ ├── cpuid.h
│ ├── crc24.h
│ ├── crc32.h
│ ├── credentials_manager.h
│ ├── crl_ent.h
│ ├── cryptobox.h
│ ├── ctr.h
│ ├── curve25519.h
│ ├── curve_gfp.h
│ ├── curve_nistp.h
│ ├── data_snk.h
│ ├── data_src.h
│ ├── database.h
│ ├── datastor.h
│ ├── der_enc.h
│ ├── des.h
│ ├── desx.h
│ ├── dh.h
│ ├── divide.h
│ ├── dl_algo.h
│ ├── dl_group.h
│ ├── dlies.h
│ ├── dsa.h
│ ├── dyn_load.h
│ ├── eax.h
│ ├── ec_group.h
│ ├── ecc_key.h
│ ├── ecdh.h
│ ├── ecdsa.h
│ ├── ecgdsa.h
│ ├── ecies.h
│ ├── eckcdsa.h
│ ├── ed25519.h
│ ├── elgamal.h
│ ├── eme.h
│ ├── eme_pkcs.h
│ ├── eme_raw.h
│ ├── emsa.h
│ ├── emsa1.h
│ ├── emsa_pkcs1.h
│ ├── emsa_raw.h
│ ├── emsa_x931.h
│ ├── entropy_src.h
│ ├── exceptn.h
│ ├── fd_unix.h
│ ├── ffi.h
│ ├── filter.h
│ ├── filters.h
│ ├── fpe_fe1.h
│ ├── gcm.h
│ ├── gf2m_small_m.h
│ ├── ghash.h
│ ├── gmac.h
│ ├── gost_28147.h
│ ├── gost_3410.h
│ ├── gost_3411.h
│ ├── hash.h
│ ├── hash_id.h
│ ├── hex.h
│ ├── hkdf.h
│ ├── hmac.h
│ ├── hmac_drbg.h
│ ├── hotp.h
│ ├── http_util.h
│ ├── idea.h
│ ├── init.h
│ ├── iso9796.h
│ ├── kasumi.h
│ ├── kdf.h
│ ├── kdf1.h
│ ├── kdf1_iso18033.h
│ ├── kdf2.h
│ ├── keccak.h
│ ├── key_constraint.h
│ ├── key_filt.h
│ ├── key_spec.h
│ ├── keypair.h
│ ├── lion.h
│ ├── loadstor.h
│ ├── locking_allocator.h
│ ├── lookup.h
│ ├── mac.h
│ ├── mceies.h
│ ├── mceliece.h
│ ├── md4.h
│ ├── md5.h
│ ├── mdx_hash.h
│ ├── mem_ops.h
│ ├── mgf1.h
│ ├── misty1.h
│ ├── mode_pad.h
│ ├── monty.h
│ ├── mul128.h
│ ├── mutex.h
│ ├── name_constraint.h
│ ├── newhope.h
│ ├── nist_keywrap.h
│ ├── noekeon.h
│ ├── numthry.h
│ ├── oaep.h
│ ├── ocb.h
│ ├── ocsp.h
│ ├── ocsp_types.h
│ ├── ofb.h
│ ├── oids.h
│ ├── p11.h
│ ├── p11_ecc_key.h
│ ├── p11_ecdh.h
│ ├── p11_ecdsa.h
│ ├── p11_module.h
│ ├── p11_object.h
│ ├── p11_randomgenerator.h
│ ├── p11_rsa.h
│ ├── p11_session.h
│ ├── p11_slot.h
│ ├── p11_x509.h
│ ├── package.h
│ ├── par_hash.h
│ ├── parsing.h
│ ├── passhash9.h
│ ├── pbes2.h
│ ├── pbkdf.h
│ ├── pbkdf1.h
│ ├── pbkdf2.h
│ ├── pem.h
│ ├── pgp_s2k.h
│ ├── pipe.h
│ ├── pk_algs.h
│ ├── pk_keys.h
│ ├── pk_ops.h
│ ├── pk_ops_fwd.h
│ ├── pkcs10.h
│ ├── pkcs11.h
│ ├── pkcs11f.h
│ ├── pkcs11t.h
│ ├── pkcs8.h
│ ├── point_gfp.h
│ ├── poly1305.h
│ ├── polyn_gf2m.h
│ ├── pow_mod.h
│ ├── prf_tls.h
│ ├── prf_x942.h
│ ├── psk_db.h
│ ├── psk_db_sql.h
│ ├── pssr.h
│ ├── pubkey.h
│ ├── pwdhash.h
│ ├── rc4.h
│ ├── reducer.h
│ ├── rfc3394.h
│ ├── rfc6979.h
│ ├── rmd160.h
│ ├── rng.h
│ ├── rotate.h
│ ├── rsa.h
│ ├── salsa20.h
│ ├── scan_name.h
│ ├── scrypt.h
│ ├── secmem.h
│ ├── secqueue.h
│ ├── seed.h
│ ├── serpent.h
│ ├── sha160.h
│ ├── sha2_32.h
│ ├── sha2_64.h
│ ├── sha3.h
│ ├── shacal2.h
│ ├── shake.h
│ ├── shake_cipher.h
│ ├── siphash.h
│ ├── siv.h
│ ├── skein_512.h
│ ├── sm2.h
│ ├── sm2_enc.h
│ ├── sm3.h
│ ├── sm4.h
│ ├── sodium.h
│ ├── sp800_108.h
│ ├── sp800_56a.h
│ ├── sp800_56c.h
│ ├── srp6.h
│ ├── stateful_rng.h
│ ├── stl_compatibility.h
│ ├── stream_cipher.h
│ ├── stream_mode.h
│ ├── streebog.h
│ ├── sym_algo.h
│ ├── symkey.h
│ ├── system_rng.h
│ ├── threefish.h
│ ├── threefish_512.h
│ ├── tiger.h
│ ├── tls_alert.h
│ ├── tls_algos.h
│ ├── tls_blocking.h
│ ├── tls_callbacks.h
│ ├── tls_channel.h
│ ├── tls_ciphersuite.h
│ ├── tls_client.h
│ ├── tls_exceptn.h
│ ├── tls_extensions.h
│ ├── tls_handshake_msg.h
│ ├── tls_magic.h
│ ├── tls_messages.h
│ ├── tls_policy.h
│ ├── tls_server.h
│ ├── tls_server_info.h
│ ├── tls_session.h
│ ├── tls_session_manager.h
│ ├── tls_session_manager_sql.h
│ ├── tls_version.h
│ ├── totp.h
│ ├── tss.h
│ ├── twofish.h
│ ├── types.h
│ ├── uuid.h
│ ├── version.h
│ ├── whrlpool.h
│ ├── workfactor.h
│ ├── x509_ca.h
│ ├── x509_crl.h
│ ├── x509_dn.h
│ ├── x509_ext.h
│ ├── x509_key.h
│ ├── x509_obj.h
│ ├── x509cert.h
│ ├── x509path.h
│ ├── x509self.h
│ ├── x919_mac.h
│ ├── xmss.h
│ ├── xmss_address.h
│ ├── xmss_common_ops.h
│ ├── xmss_hash.h
│ ├── xmss_index_registry.h
│ ├── xmss_key_pair.h
│ ├── xmss_parameters.h
│ ├── xmss_privatekey.h
│ ├── xmss_publickey.h
│ ├── xmss_tools.h
│ ├── xmss_wots_parameters.h
│ ├── xmss_wots_privatekey.h
│ ├── xmss_wots_publickey.h
│ ├── xtea.h
│ └── xts.h
└── lib
├── libbotan-2.a
└── pkgconfig
└── botan-2.pc
On Windows I have this limitation Command prompt (Cmd. exe) command-line string limitation
You should decrease the size of the resulting command to be able to compile from Windows using nmake.
I believe that the problem is already solved. Use Linux (virtual machine, real machine or WSL) that has no limitations like Windows. Since the bitcode library is to compile and use in the browser. All ok. Thanks Jack for your help and time.
I'm using powershell. My commands
Activating Emscripten tools
PS> cd "I:\WebAssembly\emsdk"
PS> ./emsdk activate latest
PS> ./emsdk_env.bat
PS> cd "C:\Users\Megam/Temp/Botan/"
PS> $Env:CXX="em++"
PS> python "C:\Users\Megam/Temp/Botan/configure.py" --os=emscripten --cc=clang --cpu=llvm --debug-mode --prefix="C:\Users\Megam\Dropbox\Tools/Libs/Botan-2.12.1-Emscripten-llvm-Debug" --without-documentation
but cannot run make.