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.
51 lines
2.7 KiB
51 lines
2.7 KiB
7 years ago
|
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. 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
|
||
|
6. install dev tools
|
||
|
- opam install merlin ocp-indent tuareg user-setup
|
||
|
- install ocamlformat
|
||
|
7. 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++ .
|
||
|
8. 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
|
||
|
9. llvm emacs mode
|
||
|
- (add-to-list 'load-path (expand-file-name "~/path/to/sledge/llvm/utils/emacs"))
|
||
|
- (require 'llvm-mode)
|
||
|
- (require 'autodisass-llvm-bitcode)
|