syoyo / minijit

Minimal clang/LLVM JIT experiment

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Minimal clang/llvm jit experience

Targets

  • Linux binary
  • CUDA(PTX)

Supported platform

  • Linux ubunti 18.04 or 20.04
  • Windows 10 64bit
    • MinGW build using llvm-mingw
    • MSVC or clang-cl build

Build on Linux

clang/LLVM build configuratrion

  • RTTI and EH(Exception handling) are enabled
    • In LLVM default, RTTI and EH are disabled
  • terminfo(for fancy text output for compile message?) is disabled(Linux only)
  • MinSizeRel build(to save storage)
  • Build shared libraries(libclang.so, libLLVM.so)

Build libclang/libLLVM as a separate build

I recommend to build libclang and libLLVM as a separated build for developing minijit.

$ git submodule update --init --recursive

to checkout llvm-project source repo. Then,

$ ./scripts/build-llvm-clang-linux.sh

Then Set MINIJIT_EXTERNAL_LLVM_PROJECT On for cmake to build minijit. (Optionally set path to built clang/llvm lib folder with MINIJIT_LLVM_PROJECT_DIR

Monolithic build

Monolithic build is for non-development. For example packaging release build, profiling, and CI build.

Set MINIJIT_EXTERNAL_LLVM_PROJECT Off for cmake to build minijit.

llvm-mingw build

llvm-mingw build(cross compile windows binary on Linux using llvm-mingw https://github.com/mstorsjo/llvm-mingw) is supported. To cross compile clang/llvm for Windows, native clang-tblgen is required but this is not available in common prebuilt binary available from llvm.org, so we build native clang/llvm tools firstly (Cross compiling llvm/clang at once wont work since unix code path(LLVM_ON_UNIX) is detected during the compilation)

Building native clang/llvm tools

This step is required only one time.

$ ./scripts/build-llvm-native-linux.sh

llvm/clang native tools are installed into dist-llvm-native

Cross compiling libclang/libLLVM

With the above clang/llvm native tools, you can now cross-compile libclang/libLLVM for Windows on Linux.

Set path to llvm-mingw to environement variable LLVM_MINGW_DIR or edit ./scripts/build-llvm-llvm-mingw-cross.sh to set a path to llvm-mingw, then

./scripts/build-llvm-llvm-mingw-cross.sh

MinGW build of libclang/libLLVM will be installed to dist-llvm-w64-mingw32/

License

MIT license.

Thrid party licenses

clang/LLVM: Apache License 2.0 with LLVM Exceptions

About

Minimal clang/LLVM JIT experiment

License:MIT License


Languages

Language:CMake 72.6%Language:C++ 18.5%Language:Shell 8.9%Language:Cuda 0.0%