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

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)