| This directory contains LLVM bindings for the Go programming language | 
 | (http://golang.org). | 
 |  | 
 | Prerequisites | 
 | ------------- | 
 |  | 
 | * Go 1.2+. | 
 | * CMake (to build LLVM). | 
 |  | 
 | Using the bindings | 
 | ------------------ | 
 |  | 
 | The package path "llvm.org/llvm/bindings/go/llvm" can be used to | 
 | import the latest development version of LLVM from SVN. Paths such as | 
 | "llvm.org/llvm.v36/bindings/go/llvm" refer to released versions of LLVM. | 
 |  | 
 | It is recommended to use the "-d" flag with "go get" to download the | 
 | package or a dependency, as an additional step is required to build LLVM | 
 | (see "Building LLVM" below). | 
 |  | 
 | Building LLVM | 
 | ------------- | 
 |  | 
 | The script "build.sh" in this directory can be used to build LLVM and prepare | 
 | it to be used by the bindings. If you receive an error message from "go build" | 
 | like this: | 
 |  | 
 |     ./analysis.go:4:84: fatal error: llvm-c/Analysis.h: No such file or directory | 
 |      #include <llvm-c/Analysis.h> // If you are getting an error here read bindings/go/README.txt | 
 |  | 
 | or like this: | 
 |  | 
 |     ./llvm_dep.go:5: undefined: run_build_sh | 
 |  | 
 | it means that LLVM needs to be built or updated by running the script. | 
 |  | 
 |     $ $GOPATH/src/llvm.org/llvm/bindings/go/build.sh | 
 |  | 
 | Any command line arguments supplied to the script are passed to LLVM's CMake | 
 | build system. A good set of arguments to use during development are: | 
 |  | 
 |     $ $GOPATH/src/llvm.org/llvm/bindings/go/build.sh -DCMAKE_BUILD_TYPE=Debug -DLLVM_TARGETS_TO_BUILD=host -DBUILD_SHARED_LIBS=ON | 
 |  | 
 | Note that CMake keeps a cache of build settings so once you have built | 
 | LLVM there is no need to pass these arguments again after updating. | 
 |  | 
 | Alternatively, you can build LLVM yourself, but you must then set the | 
 | CGO_CPPFLAGS, CGO_CXXFLAGS and CGO_LDFLAGS environment variables: | 
 |  | 
 |     $ export CGO_CPPFLAGS="`/path/to/llvm-build/bin/llvm-config --cppflags`" | 
 |     $ export CGO_CXXFLAGS=-std=c++11 | 
 |     $ export CGO_LDFLAGS="`/path/to/llvm-build/bin/llvm-config --ldflags --libs --system-libs all`" | 
 |     $ go build -tags byollvm | 
 |  | 
 | If you see a compilation error while compiling your code with Go 1.9.4 or later as follows, | 
 |  | 
 |     go build llvm.org/llvm/bindings/go/llvm: invalid flag in #cgo LDFLAGS: -Wl,-headerpad_max_install_names | 
 |  | 
 | you need to setup $CGO_LDFLAGS_ALLOW to allow a compiler to specify some linker options: | 
 |  | 
 |     $ export CGO_LDFLAGS_ALLOW='-Wl,(-search_paths_first|-headerpad_max_install_names)' |