Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

./bin/build-emcpp.sh fail with : :ERROR: Targeting asm.js with --separate-asm and -s MODULARIZE=1 requires specifying the target variable name #96

Open
ang-st opened this issue Apr 2, 2019 · 12 comments

Comments

@ang-st
Copy link

ang-st commented Apr 2, 2019

[ 50%] Built target MyMoneroCoreCpp_WASM
[ 51%] Linking CXX executable MyMoneroCoreCpp_ASMJS.js
shared:DEBUG: EM_CONFIG is located in /home/ang-st/.emscripten
shared:DEBUG: TEMP_DIR not defined in /home/ang-st/.emscripten, using /tmp
shared:DEBUG: PYTHON not defined in /home/ang-st/.emscripten, using "/usr/bin/python"
shared:DEBUG: JAVA not defined in /home/ang-st/.emscripten, using "java"
cache:DEBUG: PID 28824 acquiring multiprocess file lock to Emscripten cache at /home/ang-st/.emscripten_cache
cache:DEBUG: done
cache:DEBUG: PID 28824 released multiprocess file lock to Emscripten cache at /home/ang-st/.emscripten_cache
shared:DEBUG: check tells us to use asm.js backend
emcc:WARNING: invocation: /home/ang-st/code/bc-gw/bc-gw/monero-playground/emsdk/emscripten/1.38.30/emcc.py -std=c++11 -Wall -std=c++11 --bind -s MODULARIZE=1 -s EXPORT_NAME="MyMoneroCoreCpp" --llvm-lto 1 -s ERROR_ON_UNDEFINED_SYMBOLS=0 -s ASSERTIONS=2 -s EXIT_RUNTIME=0 -s BINARYEN_TRAP_MODE='clamp' -s PRECISE_F32=1 -s DISABLE_EXCEPTION_CATCHING=0 -s EXCEPTION_DEBUG=1 -s DEMANGLE_SUPPORT=1 -s NO_DYNAMIC_EXECUTION=1 -s NODEJS_CATCH_EXIT=0 -s EXTRA_EXPORTED_RUNTIME_METHODS=["UTF8ToString"] -s WASM=0 -Os --separate-asm -s AGGRESSIVE_VARIABLE_ELIMINATION=1 -s ALLOW_MEMORY_GROWTH=0 --memory-init-file 0 @CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/objects1.rsp -o MyMoneroCoreCpp_ASMJS.js @CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/linklibs.rsp --emscripten-cxx  (in /home/ang-st/code/bc-gw/bc-gw/monero-playground/mymonero-core-js/build)
root:WARNING: Read response file CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/objects1.rsp: ['CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/index.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/emscr_async_send_bridge.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/src/monero_address_utils.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/src/monero_paymentID_utils.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/src/monero_key_image_utils.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/src/monero_fee_utils.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/src/monero_transfer_utils.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/src/monero_fork_rules.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/src/monero_wallet_utils.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/src/serial_bridge_index.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/src/monero_send_routine.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/src/serial_bridge_utils.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/src/tools__ret_vals.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/cryptonote_basic/cryptonote_basic_impl.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/cryptonote_basic/account.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/cryptonote_basic/cryptonote_format_utils.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/crypto.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/hash.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/slow-hash-dummied.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/oaes_lib.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/crypto-ops.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/crypto-ops-data.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/keccak.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/chacha.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/random.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/aesb.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/tree-hash.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/hash-extra-blake.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/blake256.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/hash-extra-groestl.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/hash-extra-jh.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/hash-extra-skein.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/groestl.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/jh.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/skein.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/cryptonote_core/cryptonote_tx_utils.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/common/base58.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/common/threadpool.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/common/aligned.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/common/util.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/epee/src/hex.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/epee/src/string_tools.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/epee/src/memwipe.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/epee/src/mlocker.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/epee/src/wipeable_string.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/device/device.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/device/device_default.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/ringct/rctOps.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/ringct/rctTypes.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/ringct/rctCryptoOps.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/ringct/rctSigs.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/ringct/bulletproofs.cc.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/ringct/multiexp.cc.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/mnemonics/electrum-words.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/vtlogger/logger.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/contrib/libsodium/src/crypto_verify/verify.c.o']
root:WARNING: Read response file CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/linklibs.rsp: ['boost/lib/libboost_chrono.a', 'boost/lib/libboost_system.a', 'boost/lib/libboost_thread.a']
shared:DEBUG: successfully executed /home/ang-st/code/bc-gw/bc-gw/monero-playground/emsdk/clang/e1.38.30_64bit/clang++ --version
root:DEBUG: Checking JS engine ['/home/ang-st/code/bc-gw/bc-gw/monero-playground/emsdk/node/8.9.1_64bit/bin/node']
shared:DEBUG: successfully executed /home/ang-st/code/bc-gw/bc-gw/monero-playground/emsdk/node/8.9.1_64bit/bin/node --version
shared:DEBUG: successfully executed /home/ang-st/code/bc-gw/bc-gw/monero-playground/emsdk/clang/e1.38.30_64bit/llc --version
shared:DEBUG: successfully executed /home/ang-st/code/bc-gw/bc-gw/monero-playground/emsdk/clang/e1.38.30_64bit/clang++ --version
shared:INFO: (Emscripten: Running sanity checks)
shared:WARNING: java does not seem to exist, required for closure compiler, which is optional (define JAVA in /home/ang-st/.emscripten if you want it)
shared:WARNING: closure compiler will not be available
shared:WARNING: --separate-asm works best when compiling to HTML. Otherwise, you must yourself load the '.asm.js' file that is emitted separately, and must do so before loading the main '.js' file. [-Wseparate-asm]
shared:ERROR: Targeting asm.js with --separate-asm and -s MODULARIZE=1 requires specifying the target variable name to which the asm.js module is loaded into. See https://github.com/emscripten-core/emscripten/pull/7949 for details
CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/build.make:1585: recipe for target 'MyMoneroCoreCpp_ASMJS.js' failed
make[2]: *** [MyMoneroCoreCpp_ASMJS.js] Error 1
CMakeFiles/Makefile2:104: recipe for target 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/all' failed
make[1]: *** [CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
shared:DEBUG: executed cmake --build .
@ang-st
Copy link
Author

ang-st commented Apr 2, 2019

I ended to pass through this error by adding an extra flag -s SEPARATE_ASM_MODULE_NAME=xxx

like :

 /home/ang-st/code/bc-gw/bc-gw/monero-playground/emsdk/emscripten/1.38.30/emcc.py -std=c++11 -Wall -std=c++11 --bind -s MODULARIZE=1 -s EXPORT_NAME=MyMoneroCoreCpp --llvm-lto 1 -s ERROR_ON_UNDEFINED_SYMBOLS=0 -s ASSERTIONS=2 -s EXIT_RUNTIME=0 -s BINARYEN_TRAP_MODE='clamp' -s PRECISE_F32=1 -s DISABLE_EXCEPTION_CATCHING=0 -s EXCEPTION_DEBUG=1 -s DEMANGLE_SUPPORT=1 -s NO_DYNAMIC_EXECUTION=1 -s NODEJS_CATCH_EXIT=0 -s EXTRA_EXPORTED_RUNTIME_METHODS=\["UTF8ToString"\] -s WASM=0 -Os --separate-asm -s AGGRESSIVE_VARIABLE_ELIMINATION=1 -s ALLOW_MEMORY_GROWTH=0 --memory-init-file 0 @CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/objects1.rsp -o MyMoneroCoreCpp_ASMJS.js @CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/linklibs.rsp --emscripten-cxx  -s SEPARATE_ASM_MODULE_NAME=xxx
shared:WARNING: --separate-asm works best when compiling to HTML. Otherwise, you must yourself load the '.asm.js' file that is emitted separately, and must do so before loading the main '.js' file. [-Wseparate-asm]
warning: undefined symbol: err

@paulshapiro
Copy link
Contributor

What version of emscripten are you using? What version did they add SEPARATE_ASM_MODULE_NAME?

Your build log indicates some irregularities as well, but none of them seem overtly impactful, though they could be another good starting place to look.

@ang-st
Copy link
Author

ang-st commented Apr 2, 2019

The error message mention emscripten-core/emscripten#7949
I'm using the latest release : emscripten 1.38.30

what version is known to successfully build the repo ?

@italocoin-project
Copy link

It works until emscripten 1.38.21

@ang-st
Copy link
Author

ang-st commented Apr 4, 2019

Awesome !
It built successfully from master with #97 merged.
Thanks

@moneroexamples
Copy link

Same issue. Removing the line from cmake makes it compile:

-s SEPARATE_ASM_MODULE_NAME=asmjs \

@italocoin-project
Copy link

italocoin-project commented Apr 27, 2019

@moneroexamples what version of emscripten you have? I've tested it with latest and works perfectly

@moneroexamples
Copy link

@italocoin-project

38.16.

@italocoin-project
Copy link

It works on my end, did you tried on a clean environment? Maybe some cache issue?

@moneroexamples
Copy link

@italocoin-project
Haven't tried much really. Just made it compile by removing the said line and I moved to other things. Also made note of this in this issue for completeness. Maybe later will try on the newest version of emsdk, as I see now that mine is not the latest one.

@italocoin-project
Copy link

italocoin-project commented Apr 27, 2019

This fix is needed for newest emsdk. From emscripten 1.38.30 above, you need this fix

@moneroexamples
Copy link

Just upgraded to 38.30 and it works fine.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants