diff --git a/.circleci/config.yml b/.circleci/config.yml index 1dff3ba719..86da321dd3 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -55,7 +55,7 @@ commands: - run: name: "Install apt dependencies" command: | - echo 'deb https://apt.llvm.org/buster/ llvm-toolchain-buster-<> main' > /etc/apt/sources.list.d/llvm.list + echo 'deb https://apt.llvm.org/bullseye/ llvm-toolchain-bullseye-<> main' > /etc/apt/sources.list.d/llvm.list wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - apt-get update apt-get install --no-install-recommends -y \ @@ -100,11 +100,18 @@ commands: jobs: test-llvm14-go118: docker: - - image: golang:1.18-buster + - image: golang:1.18-bullseye steps: - test-linux: llvm: "14" resource_class: large + test-llvm17-go121: + docker: + - image: golang:1.21-bullseye + steps: + - test-linux: + llvm: "17" + resource_class: large workflows: test-all: @@ -112,3 +119,5 @@ workflows: # This tests our lowest supported versions of Go and LLVM, to make sure at # least the smoke tests still pass. - test-llvm14-go118 + # This tests the upcoming LLVM 17 support. + - test-llvm17-go121 diff --git a/.github/workflows/build-macos.yml b/.github/workflows/build-macos.yml index 1284a4edd3..ccfd73f861 100644 --- a/.github/workflows/build-macos.yml +++ b/.github/workflows/build-macos.yml @@ -116,11 +116,18 @@ jobs: test-macos-homebrew: name: homebrew-install runs-on: macos-latest + strategy: + matrix: + version: [16, 17] steps: + - name: test + if: matrix.version == 16 + run: echo default LLVM + - name: Update Homebrew + run: brew update - name: Install LLVM - shell: bash run: | - HOMEBREW_NO_AUTO_UPDATE=1 brew install llvm@16 + HOMEBREW_NO_AUTO_UPDATE=1 brew install llvm@${{ matrix.version }} - name: Checkout uses: actions/checkout@v3 - name: Install Go @@ -128,7 +135,13 @@ jobs: with: go-version: '1.21' cache: true - - name: Build TinyGo + - name: Build TinyGo (LLVM ${{ matrix.version }}) + run: go install -tags=llvm${{ matrix.version }} + - name: Check binary + run: tinygo version + - name: Build TinyGo (default LLVM) + if: ${{ matrix.version }} == '16' run: go install - name: Check binary + if: ${{ matrix.version }} == '16' run: tinygo version diff --git a/cgo/libclang_config_llvm16.go b/cgo/libclang_config_llvm16.go index 79aacd2f26..28091701dc 100644 --- a/cgo/libclang_config_llvm16.go +++ b/cgo/libclang_config_llvm16.go @@ -1,4 +1,4 @@ -//go:build !byollvm && !llvm14 && !llvm15 +//go:build !byollvm && !llvm14 && !llvm15 && !llvm17 package cgo diff --git a/cgo/libclang_config_llvm17.go b/cgo/libclang_config_llvm17.go new file mode 100644 index 0000000000..fd6d1480e3 --- /dev/null +++ b/cgo/libclang_config_llvm17.go @@ -0,0 +1,15 @@ +//go:build !byollvm && llvm17 + +package cgo + +/* +#cgo linux CFLAGS: -I/usr/include/llvm-17 -I/usr/include/llvm-c-17 -I/usr/lib/llvm-17/include +#cgo darwin,amd64 CFLAGS: -I/usr/local/opt/llvm@17/include +#cgo darwin,arm64 CFLAGS: -I/opt/homebrew/opt/llvm@17/include +#cgo freebsd CFLAGS: -I/usr/local/llvm17/include +#cgo linux LDFLAGS: -L/usr/lib/llvm-17/lib -lclang +#cgo darwin,amd64 LDFLAGS: -L/usr/local/opt/llvm@17/lib -lclang -lffi +#cgo darwin,arm64 LDFLAGS: -L/opt/homebrew/opt/llvm@17/lib -lclang -lffi +#cgo freebsd LDFLAGS: -L/usr/local/llvm17/lib -lclang +*/ +import "C" diff --git a/go.mod b/go.mod index 48049c88ef..36d601f882 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( golang.org/x/sys v0.11.0 golang.org/x/tools v0.12.0 gopkg.in/yaml.v2 v2.4.0 - tinygo.org/x/go-llvm v0.0.0-20230920233244-32ed56c6be9c + tinygo.org/x/go-llvm v0.0.0-20230923132128-bba3c7009bfd ) require ( diff --git a/go.sum b/go.sum index b895ee1d8c..1b5ad074be 100644 --- a/go.sum +++ b/go.sum @@ -65,5 +65,5 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= -tinygo.org/x/go-llvm v0.0.0-20230920233244-32ed56c6be9c h1:rS8mAFqf0CfxPCbtfsI3bWL4jkb0TBYA1wx7tY1nu28= -tinygo.org/x/go-llvm v0.0.0-20230920233244-32ed56c6be9c/go.mod h1:GFbusT2VTA4I+l4j80b17KFK+6whv69Wtny5U+T8RR0= +tinygo.org/x/go-llvm v0.0.0-20230923132128-bba3c7009bfd h1:iSVvs8r3ooxYTsmcf7FKCHq83eOSUkWKtmQhnDadDQU= +tinygo.org/x/go-llvm v0.0.0-20230923132128-bba3c7009bfd/go.mod h1:GFbusT2VTA4I+l4j80b17KFK+6whv69Wtny5U+T8RR0=