Giter Site home page Giter Site logo

🆘 This project is only somewhat active due to the low number of active maintainers. If you wish to participate, see #72.

llvmenv

crate docs.rs

Manage multiple LLVM/Clang build

Install

  1. Install cmake, builder (make/ninja), and C++ compiler (g++/clang++)
  2. Install Rust using rustup or any other method. The minimum supported Rust version is currently 1.48.0.
  3. cargo install llvmenv

Basic Usage

To install a specific version of LLVM after following the installation steps above, run these shell commands ("10.0.0" can be replaced with any other version found with llvmenv entries):

llvmenv init
llvmenv entries
llvmenv build-entry 10.0.0

zsh integration

You can swtich LLVM/Clang builds automatically using zsh precmd-hook. Please add a line into your .zshrc:

source <(llvmenv zsh)

If $LLVMENV_RUST_BINDING environmental value is non-zero, llvmenv exports LLVM_SYS_60_PREFIX=$(llvmenv prefix) in addition to $PATH.

export LLVMENV_RUST_BINDING=1
source <(llvmenv zsh)

This is useful for llvm-sys.rs users. Be sure that this env value will not be unset by llvmenv, only overwrite.

Concepts

entry

  • entry describes how to compile LLVM/Clang
  • Two types of entries
    • Remote: Download LLVM from Git/SVN repository or Tar archive, and then build
    • Local: Build locally cloned LLVM source
  • See the module document for detail

build

  • build is a directory where compiled executables (e.g. clang) and libraries are installed.
  • They are compiled by llvmenv build-entry, and placed at $XDG_DATA_HOME/llvmenv (usually $HOME/.local/share/llvmenv).
  • There is a special build, "system", which uses system's executables.

global/local prefix

  • llvmenv prefix returns the path of the current build (e.g. $XDG_DATA_HOME/llvmenv/llvm-dev, or /usr for system build).
  • llvmenv global [name] sets default build, and llvmenv local [name] sets directory-local build by creating .llvmenv text file.
  • You can confirm which .llvmenv sets the current prefix by llvmenv prefix -v.

llvmenv's Projects

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.