doublethinkco/cpp-ethereum-cross

Enable EVMJIT=TRUE

bobsummerwill opened this issue · 1 comments

At the moment we are building with EVMJIT=FALSE, which means that the client is using an interpreter, rather than JIT-ing.

As requested by @CJentzsch.

Flipping that setting is easy enough.

The issue is the dependency which that drags in onto LLVM, and specifically onto LLVM runtime libraries (a LOT of them):

/usr/lib/llvm-3.7/lib/libLLVMCore.a /usr/lib/llvm-3.7/lib/libLLVMSupport.a /usr/lib/llvm-3.7/lib/libLLVMMCJIT.a /usr/lib/llvm-3.7/lib/libLLVMX86AsmParser.a /usr/lib/llvm-3.7/lib/libLLVMX86CodeGen.a /usr/lib/llvm-3.7/lib/libLLVMipo.a /usr/lib/llvm-3.7/lib/libLLVMExecutionEngine.a /usr/lib/llvm-3.7/lib/libLLVMRuntimeDyld.a /usr/lib/llvm-3.7/lib/libLLVMAsmPrinter.a /usr/lib/llvm-3.7/lib/libLLVMSelectionDAG.a /usr/lib/llvm-3.7/lib/libLLVMCodeGen.a /usr/lib/llvm-3.7/lib/libLLVMTarget.a /usr/lib/llvm-3.7/lib/libLLVMInstrumentation.a /usr/lib/llvm-3.7/lib/libLLVMX86Desc.a /usr/lib/llvm-3.7/lib/libLLVMX86AsmPrinter.a /usr/lib/llvm-3.7/lib/libLLVMX86Utils.a /usr/lib/llvm-3.7/lib/libLLVMMCDisassembler.a /usr/lib/llvm-3.7/lib/libLLVMX86Info.a /usr/lib/llvm-3.7/lib/libLLVMScalarOpts.a /usr/lib/llvm-3.7/lib/libLLVMInstCombine.a /usr/lib/llvm-3.7/lib/libLLVMProfileData.a /usr/lib/llvm-3.7/lib/libLLVMObject.a /usr/lib/llvm-3.7/lib/libLLVMMCParser.a /usr/lib/llvm-3.7/lib/libLLVMMC.a /usr/lib/llvm-3.7/lib/libLLVMBitReader.a /usr/lib/llvm-3.7/lib/libLLVMVectorize.a /usr/lib/llvm-3.7/lib/libLLVMTransformUtils.a /usr/lib/llvm-3.7/lib/libLLVMipa.a /usr/lib/llvm-3.7/lib/libLLVMAnalysis.a /usr/lib/llvm-3.7/lib/libLLVMCore.a /usr/lib/llvm-3.7/lib/libLLVMSupport.a

And these:

-lz -lpthread -lffi -ledit -ltinfo -ldl -lm

We will need to cross-compile ALL of these, which is not likely to be a trivial undertaking. We're going to need/want to do that at some stage, though.

libffi - https://sourceware.org/libffi/
zlib - http://www.zlib.net/
libedit - http://thrysoee.dk/editline/

Are these stdlib?

libtinfo - https://aur.archlinux.org/packages/libtinfo/
libdl - http://refspecs.linuxbase.org/LSB_2.0.1/LSB-PDA/LSB-PDA/libdl.html
libm - http://stackoverflow.com/questions/5419366/why-do-i-have-to-explicitly-link-with-libm

We are not going to do this.

cross-compiling LLVM would be a nightmare.