You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
2.9 KiB
56 lines
2.9 KiB
1. NOTE: These instructions use ~/.local/llvm_$(opam config var switch) as an install root for llvm/clang, but installing elsewhere should be fine. Also note that you probably don't want to use this clang for anything else because it is a default debug build and hence very slow. So some PATH management is likely needed to have ~/.local/llvm_$(opam config var switch) in PATH only when building / running llair. This is done automatically for the targets in test/Makefile.
|
|
2. clone llvm, clang, and libcxxabi
|
|
- cd ~/path/to/sledge
|
|
- git clone git+ssh://git@github.com/jberdine/llvm.git --branch ocaml_api
|
|
- git clone https://github.com/llvm-mirror/clang.git llvm/tools/clang
|
|
- git clone https://github.com/llvm-mirror/libcxxabi.git llvm/projects/libcxxabi
|
|
3. build llvm & clang
|
|
- brew install cmake ninja
|
|
- cd ~/path/to/sledge/llvm
|
|
- mkdir _build
|
|
- cd _build
|
|
- cmake -G Ninja -DCMAKE_INSTALL_PREFIX=~/.local/llvm_$(opam config var switch) -DLLVM_OCAML_INSTALL_PATH=~/.local/llvm_$(opam config var switch)/lib/ocaml ..
|
|
- ninja -j8
|
|
- ninja ocaml_doc
|
|
- ninja install
|
|
4. install deps
|
|
- add ~/.local/llvm_$(opam config var switch)/bin to shell PATH + because installing the opam package for llvm will look for it
|
|
+ export PATH=~/.local/llvm_$(opam config var switch)/bin:$PATH
|
|
- pin conf-llvm + opam pin add -n conf-llvm --dev
|
|
+ opam pin edit conf-llvm
|
|
- edit version number to match that of the llvm clone (= 7.0.0)
|
|
- pin llvm + cd ~/path/to/sledge/llvm
|
|
+ opam pin add -n -k git llvm . + opam pin edit llvm
|
|
- edit llvm and conf-llvm version number to match that of the llvm clone (= 7.0.0)
|
|
- when prompted, ok to save new opam file
|
|
5. install llair for llvm_sil
|
|
- cd ~/path/to/sledge
|
|
- opam pin add -n -k git llair .
|
|
+ when prompted, ok to create new package
|
|
- opam install llair
|
|
6. hush `ld: warning: directory not found for option '-L/opt/local/lib'`
|
|
- the zarith package adds a spurious linker option unless you have both brew and macports, so if you see this linker warning when compiling, execute + sudo mkdir -p /opt/local/lib
|
|
7. install dev tools
|
|
- opam install merlin ocp-indent tuareg user-setup
|
|
- install ocamlformat
|
|
8. if needed: point new clang to xcode c++ lib
|
|
- cd ~/.local/llvm_$(opam config var switch)/include
|
|
- ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++ .
|
|
9. llvm dev workflow
|
|
- modify llvm sources
|
|
- cd ~/path/to/sledge/llvm/_build; ninja -j8
|
|
- iterate
|
|
- (optional?) git add -u; git commit -m ...
|
|
- ninja -j8 && ninja ocaml_doc && ninja install && opam upgrade llvm
|
|
- cd ~/path/to/sledge; make
|
|
- it is not uncommon to get "inconsistent assumptions" errors: clean and re-make
|
|
10. llvm emacs mode
|
|
- (add-to-list 'load-path (expand-file-name "~/path/to/sledge/llvm/utils/emacs"))
|
|
- (require 'llvm-mode)
|
|
- (require 'autodisass-llvm-bitcode)
|