83
|
1 This directory contains LLVM bindings for the Go programming language
|
|
2 (http://golang.org).
|
|
3
|
|
4 Prerequisites
|
|
5 -------------
|
|
6
|
|
7 * Go 1.2+.
|
|
8 * CMake (to build LLVM).
|
|
9
|
|
10 Using the bindings
|
|
11 ------------------
|
|
12
|
|
13 The package path "llvm.org/llvm/bindings/go/llvm" can be used to
|
|
14 import the latest development version of LLVM from SVN. Paths such as
|
|
15 "llvm.org/llvm.v36/bindings/go/llvm" refer to released versions of LLVM.
|
|
16
|
|
17 It is recommended to use the "-d" flag with "go get" to download the
|
|
18 package or a dependency, as an additional step is required to build LLVM
|
|
19 (see "Building LLVM" below).
|
|
20
|
|
21 Building LLVM
|
|
22 -------------
|
|
23
|
|
24 The script "build.sh" in this directory can be used to build LLVM and prepare
|
|
25 it to be used by the bindings. If you receive an error message from "go build"
|
|
26 like this:
|
|
27
|
|
28 ./analysis.go:4:84: fatal error: llvm-c/Analysis.h: No such file or directory
|
|
29 #include <llvm-c/Analysis.h> // If you are getting an error here read bindings/go/README.txt
|
|
30
|
|
31 or like this:
|
|
32
|
|
33 ./llvm_dep.go:5: undefined: run_build_sh
|
|
34
|
|
35 it means that LLVM needs to be built or updated by running the script.
|
|
36
|
|
37 $ $GOPATH/src/llvm.org/llvm/bindings/go/build.sh
|
|
38
|
|
39 Any command line arguments supplied to the script are passed to LLVM's CMake
|
|
40 build system. A good set of arguments to use during development are:
|
|
41
|
|
42 $ $GOPATH/src/llvm.org/llvm/bindings/go/build.sh -DCMAKE_BUILD_TYPE=Debug -DLLVM_TARGETS_TO_BUILD=host -DBUILD_SHARED_LIBS=ON
|
|
43
|
|
44 Note that CMake keeps a cache of build settings so once you have built
|
|
45 LLVM there is no need to pass these arguments again after updating.
|
|
46
|
|
47 Alternatively, you can build LLVM yourself, but you must then set the
|
|
48 CGO_CPPFLAGS, CGO_CXXFLAGS and CGO_LDFLAGS environment variables:
|
|
49
|
|
50 $ export CGO_CPPFLAGS="`/path/to/llvm-build/bin/llvm-config --cppflags`"
|
|
51 $ export CGO_CXXFLAGS=-std=c++11
|
|
52 $ export CGO_LDFLAGS="`/path/to/llvm-build/bin/llvm-config --ldflags --libs --system-libs all`"
|
|
53 $ go build -tags byollvm
|