diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 602e2c8f..c81adb62 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -35,7 +35,7 @@ jobs: echo "deb http://apt.llvm.org/$(lsb_release -cs)/ llvm-toolchain-$(lsb_release -cs)-${{ matrix.llvm }} main" | sudo tee /etc/apt/sources.list.d/llvm.list wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - sudo apt-get update - sudo apt-get install -y --no-install-recommends llvm-${{ matrix.llvm }}-dev clang-${{ matrix.llvm }} lld-${{ matrix.llvm }} libgc-dev + sudo apt-get install -y llvm-${{ matrix.llvm }}-dev clang-${{ matrix.llvm }} lld-${{ matrix.llvm }} pkg-config libgc-dev libcjson-dev libsqlite3-dev python3.11-dev echo /usr/lib/llvm-${{ matrix.llvm }}/bin >> $GITHUB_PATH - name: Clang information diff --git a/README.md b/README.md index 5cd84387..e0dd75b7 100644 --- a/README.md +++ b/README.md @@ -211,6 +211,18 @@ Here are the Go packages that can be imported correctly: * [sync/atomic](https://pkg.go.dev/sync/atomic) (partially) +## Dependencies + +- [Go 1.20+](https://go.dev) (build only) +- [LLVM 17](https://llvm.org) +- [Clang 17](https://clang.llvm.org) +- [LLD 17](https://lld.llvm.org) +- [pkg-config 0.29+](https://www.freedesktop.org/wiki/Software/pkg-config/) +- [bdwgc/libgc 8.0+](https://www.hboehm.info/gc/) +- [cJSON 1.7+](https://github.com/DaveGamble/cJSON) (optional, for [`github.com/goplus/llgo/c/cjson`](https://pkg.go.dev/github.com/goplus/llgo/c/cjson)) +- [SQLite 3](https://www.sqlite.org) (optional, for [`github.com/goplus/llgo/c/sqlite`](https://pkg.go.dev/github.com/goplus/llgo/c/sqlite)) +- [Python 3.11+](https://www.python.org) (optional, for [`github.com/goplus/llgo/py`](https://pkg.go.dev/github.com/goplus/llgo/py)) + ## How to install Follow these steps to generate the `llgo` command (its usage is the same as the `go` command): @@ -219,8 +231,10 @@ Follow these steps to generate the `llgo` command (its usage is the same as the ```sh brew update # execute if needed -brew install llvm@17 libgc +brew install llvm@17 pkg-config libgc +brew install cjson sqlite python@3.12 # optional export PATH=$(brew --prefix llvm@17)/bin:$PATH # you may want to add this to your shell RC file, e.g. ~/.zshrc +export CC=clang CXX=clang++ # only for go build; optional if you have other compatible compilers go install -v ./... ``` @@ -230,8 +244,10 @@ go install -v ./... echo "deb http://apt.llvm.org/$(lsb_release -cs)/ llvm-toolchain-$(lsb_release -cs)-17 main" | sudo tee /etc/apt/sources.list.d/llvm.list wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - sudo apt-get update # execute if needed -sudo apt-get install -y --no-install-recommends llvm-17-dev clang-17 lld-17 libgc-dev +sudo apt-get install -y llvm-17-dev clang-17 lld-17 pkg-config libgc-dev +sudo apt-get install -y libcjson-dev libsqlite3-dev python3.12-dev # optional export PATH=/usr/lib/llvm-17/bin:$PATH # you may want to add this to your shell RC file, e.g. ~/.bashrc +export CC=clang CXX=clang++ # only for go build; optional if you have other compatible compilers go install -v ./... ``` @@ -251,6 +267,7 @@ TODO How do I generate these tools? ```sh +export CC=clang CXX=clang++ # only for go build; optional if you have other compatible compilers go install -v ./... # compile all tools except pydump cd chore/_xtool llgo install ./... # compile pydump