From 24c2781b35b044f5d4d0fddcffa49c4454a404a0 Mon Sep 17 00:00:00 2001 From: Ayke van Laethem Date: Tue, 16 Sep 2025 11:24:58 +0200 Subject: [PATCH 1/7] LLVM 21 support --- .github/workflows/go.yml | 10 +++++----- ir.go | 13 ------------- ir_test.go | 1 - llvm_config_darwin_llvm21.go | 15 +++++++++++++++ llvm_config_linux_llvm21.go | 10 ++++++++++ 5 files changed, 30 insertions(+), 19 deletions(-) create mode 100644 llvm_config_darwin_llvm21.go create mode 100644 llvm_config_linux_llvm21.go diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index f4bd536..32aab59 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -10,7 +10,7 @@ jobs: runs-on: macos-latest strategy: matrix: - llvm: [14, 15, 16, 17, 18, 19, 20] + llvm: [14, 15, 16, 17, 18, 19, 20, 21] go-version: [1.18.x, 1.21.x, 1.22.x] steps: - name: Checkout @@ -24,7 +24,7 @@ jobs: # run: brew update # Optional step when a LLVM version is very new. - name: Update Homebrew - if: matrix.llvm == 20 + if: matrix.llvm == 21 run: brew update - name: Install LLVM run: HOMEBREW_NO_AUTO_UPDATE=1 brew install llvm@${{ matrix.llvm }} @@ -32,14 +32,14 @@ jobs: run: go test -v -tags=llvm${{ matrix.llvm }} - name: Test default LLVM - if: matrix.llvm == 19 + if: matrix.llvm == 21 run: go test -v test-linux: runs-on: ubuntu-22.04 strategy: matrix: - llvm: [14, 15, 16, 17, 18, 19, 20] + llvm: [14, 15, 16, 17, 18, 19, 20, 21] steps: - name: Checkout uses: actions/checkout@v4 @@ -57,6 +57,6 @@ jobs: run: go test -v -tags=llvm${{ matrix.llvm }} - name: Test default LLVM - if: matrix.llvm == 19 + if: matrix.llvm == 21 run: go test -v diff --git a/ir.go b/ir.go index 17e10a5..6455e09 100644 --- a/ir.go +++ b/ir.go @@ -77,7 +77,6 @@ type ( ComdatSelectionKind C.LLVMComdatSelectionKind IntPredicate C.LLVMIntPredicate FloatPredicate C.LLVMRealPredicate - LandingPadClause C.LLVMLandingPadClauseTy InlineAsmDialect C.LLVMInlineAsmDialect ) @@ -355,15 +354,6 @@ const ( FloatPredicateTrue FloatPredicate = C.LLVMRealPredicateTrue ) -//------------------------------------------------------------------------- -// llvm.LandingPadClause -//------------------------------------------------------------------------- - -const ( - LandingPadCatch LandingPadClause = C.LLVMLandingPadCatch - LandingPadFilter LandingPadClause = C.LLVMLandingPadFilter -) - //------------------------------------------------------------------------- // llvm.InlineAsmDialect //------------------------------------------------------------------------- @@ -939,9 +929,6 @@ func ConstNUWAdd(lhs, rhs Value) (v Value) { v.C = C.LLVMConstNUWAdd(lhs.C, rhs. func ConstSub(lhs, rhs Value) (v Value) { v.C = C.LLVMConstSub(lhs.C, rhs.C); return } func ConstNSWSub(lhs, rhs Value) (v Value) { v.C = C.LLVMConstNSWSub(lhs.C, rhs.C); return } func ConstNUWSub(lhs, rhs Value) (v Value) { v.C = C.LLVMConstNUWSub(lhs.C, rhs.C); return } -func ConstMul(lhs, rhs Value) (v Value) { v.C = C.LLVMConstMul(lhs.C, rhs.C); return } -func ConstNSWMul(lhs, rhs Value) (v Value) { v.C = C.LLVMConstNSWMul(lhs.C, rhs.C); return } -func ConstNUWMul(lhs, rhs Value) (v Value) { v.C = C.LLVMConstNUWMul(lhs.C, rhs.C); return } func ConstXor(lhs, rhs Value) (v Value) { v.C = C.LLVMConstXor(lhs.C, rhs.C); return } func ConstGEP(t Type, v Value, indices []Value) (rv Value) { diff --git a/ir_test.go b/ir_test.go index 57b306f..a912aec 100644 --- a/ir_test.go +++ b/ir_test.go @@ -62,7 +62,6 @@ func TestAttributes(t *testing.T) { "nest", "noalias", "nobuiltin", - "nocapture", "noduplicate", "noimplicitfloat", "noinline", diff --git a/llvm_config_darwin_llvm21.go b/llvm_config_darwin_llvm21.go new file mode 100644 index 0000000..1bc7c3c --- /dev/null +++ b/llvm_config_darwin_llvm21.go @@ -0,0 +1,15 @@ +//go:build !byollvm && darwin && !llvm14 && !llvm15 && !llvm16 && !llvm17 && !llvm18 && !llvm19 && !llvm20 + +package llvm + +// Automatically generated by `make config BUILDDIR=`, do not edit. + +// #cgo amd64 CPPFLAGS: -I/usr/local/opt/llvm@21/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo amd64 CXXFLAGS: -std=c++17 +// #cgo amd64 LDFLAGS: -L/usr/local/opt/llvm@21/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm +// #cgo arm64 CPPFLAGS: -I/opt/homebrew/opt/llvm@21/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo arm64 CXXFLAGS: -std=c++17 +// #cgo arm64 LDFLAGS: -L/opt/homebrew/opt/llvm@21/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm +import "C" + +type run_build_sh int diff --git a/llvm_config_linux_llvm21.go b/llvm_config_linux_llvm21.go new file mode 100644 index 0000000..00c0560 --- /dev/null +++ b/llvm_config_linux_llvm21.go @@ -0,0 +1,10 @@ +//go:build !byollvm && linux && !llvm14 && !llvm15 && !llvm16 && !llvm17 && !llvm18 && !llvm19 && !llvm20 + +package llvm + +// #cgo CPPFLAGS: -I/usr/include/llvm-21 -I/usr/include/llvm-c-21 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo CXXFLAGS: -std=c++17 +// #cgo LDFLAGS: -L/usr/lib/llvm-21/lib -lLLVM-21 +import "C" + +type run_build_sh int From cf30809de9ec45922ffc3086030909643edfac3a Mon Sep 17 00:00:00 2001 From: ZhouGuangyuan Date: Sun, 1 Mar 2026 10:52:34 +0800 Subject: [PATCH 2/7] Keep LLVM 19 as the default version --- .github/workflows/go.yml | 4 ++-- llvm_config_darwin_llvm19.go | 2 +- llvm_config_darwin_llvm21.go | 2 +- llvm_config_linux_llvm19.go | 2 +- llvm_config_linux_llvm21.go | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 32aab59..4bf2e8d 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -32,7 +32,7 @@ jobs: run: go test -v -tags=llvm${{ matrix.llvm }} - name: Test default LLVM - if: matrix.llvm == 21 + if: matrix.llvm == 19 run: go test -v test-linux: @@ -57,6 +57,6 @@ jobs: run: go test -v -tags=llvm${{ matrix.llvm }} - name: Test default LLVM - if: matrix.llvm == 21 + if: matrix.llvm == 19 run: go test -v diff --git a/llvm_config_darwin_llvm19.go b/llvm_config_darwin_llvm19.go index ac09d67..7c2875b 100644 --- a/llvm_config_darwin_llvm19.go +++ b/llvm_config_darwin_llvm19.go @@ -1,4 +1,4 @@ -//go:build !byollvm && darwin && !llvm14 && !llvm15 && !llvm16 && !llvm17 && !llvm18 && !llvm20 +//go:build !byollvm && darwin && !llvm14 && !llvm15 && !llvm16 && !llvm17 && !llvm18 && !llvm20 && !llvm21 package llvm diff --git a/llvm_config_darwin_llvm21.go b/llvm_config_darwin_llvm21.go index 1bc7c3c..ea084d0 100644 --- a/llvm_config_darwin_llvm21.go +++ b/llvm_config_darwin_llvm21.go @@ -1,4 +1,4 @@ -//go:build !byollvm && darwin && !llvm14 && !llvm15 && !llvm16 && !llvm17 && !llvm18 && !llvm19 && !llvm20 +//go:build !byollvm && darwin && llvm21 package llvm diff --git a/llvm_config_linux_llvm19.go b/llvm_config_linux_llvm19.go index 3fec2f8..728e3b8 100644 --- a/llvm_config_linux_llvm19.go +++ b/llvm_config_linux_llvm19.go @@ -1,4 +1,4 @@ -//go:build !byollvm && linux && !llvm14 && !llvm15 && !llvm16 && !llvm17 && !llvm18 && !llvm20 +//go:build !byollvm && linux && !llvm14 && !llvm15 && !llvm16 && !llvm17 && !llvm18 && !llvm20 && !llvm21 package llvm diff --git a/llvm_config_linux_llvm21.go b/llvm_config_linux_llvm21.go index 00c0560..8fa645e 100644 --- a/llvm_config_linux_llvm21.go +++ b/llvm_config_linux_llvm21.go @@ -1,4 +1,4 @@ -//go:build !byollvm && linux && !llvm14 && !llvm15 && !llvm16 && !llvm17 && !llvm18 && !llvm19 && !llvm20 +//go:build !byollvm && linux && llvm21 package llvm From fc31d00bbff6ba56e6c8e921ed9cbff47bdff8c6 Mon Sep 17 00:00:00 2001 From: Ayke van Laethem Date: Tue, 16 Sep 2025 17:01:18 +0200 Subject: [PATCH 3/7] Move the separate darwin/linux config files into one This matches TinyGo, where they are merged. It should make maintenance a little bit easier, and also makes it easier to add new OSes (like FreeBSD) without having to create a whole new set of files. --- llvm_config_darwin_llvm14.go | 15 --------------- llvm_config_darwin_llvm15.go | 15 --------------- llvm_config_darwin_llvm16.go | 15 --------------- llvm_config_darwin_llvm17.go | 15 --------------- llvm_config_darwin_llvm18.go | 15 --------------- llvm_config_darwin_llvm19.go | 15 --------------- llvm_config_darwin_llvm20.go | 15 --------------- llvm_config_darwin_llvm21.go | 15 --------------- llvm_config_linux_llvm14.go | 10 ---------- llvm_config_linux_llvm15.go | 10 ---------- llvm_config_linux_llvm16.go | 10 ---------- llvm_config_linux_llvm17.go | 10 ---------- llvm_config_linux_llvm18.go | 10 ---------- llvm_config_linux_llvm19.go | 10 ---------- llvm_config_linux_llvm20.go | 10 ---------- llvm_config_linux_llvm21.go | 10 ---------- llvm_config_llvm14.go | 16 ++++++++++++++++ llvm_config_llvm15.go | 16 ++++++++++++++++ llvm_config_llvm16.go | 16 ++++++++++++++++ llvm_config_llvm17.go | 16 ++++++++++++++++ llvm_config_llvm18.go | 16 ++++++++++++++++ llvm_config_llvm19.go | 16 ++++++++++++++++ llvm_config_llvm20.go | 16 ++++++++++++++++ llvm_config_llvm21.go | 16 ++++++++++++++++ 24 files changed, 128 insertions(+), 200 deletions(-) delete mode 100644 llvm_config_darwin_llvm14.go delete mode 100644 llvm_config_darwin_llvm15.go delete mode 100644 llvm_config_darwin_llvm16.go delete mode 100644 llvm_config_darwin_llvm17.go delete mode 100644 llvm_config_darwin_llvm18.go delete mode 100644 llvm_config_darwin_llvm19.go delete mode 100644 llvm_config_darwin_llvm20.go delete mode 100644 llvm_config_darwin_llvm21.go delete mode 100644 llvm_config_linux_llvm14.go delete mode 100644 llvm_config_linux_llvm15.go delete mode 100644 llvm_config_linux_llvm16.go delete mode 100644 llvm_config_linux_llvm17.go delete mode 100644 llvm_config_linux_llvm18.go delete mode 100644 llvm_config_linux_llvm19.go delete mode 100644 llvm_config_linux_llvm20.go delete mode 100644 llvm_config_linux_llvm21.go create mode 100644 llvm_config_llvm14.go create mode 100644 llvm_config_llvm15.go create mode 100644 llvm_config_llvm16.go create mode 100644 llvm_config_llvm17.go create mode 100644 llvm_config_llvm18.go create mode 100644 llvm_config_llvm19.go create mode 100644 llvm_config_llvm20.go create mode 100644 llvm_config_llvm21.go diff --git a/llvm_config_darwin_llvm14.go b/llvm_config_darwin_llvm14.go deleted file mode 100644 index 2a3c8a9..0000000 --- a/llvm_config_darwin_llvm14.go +++ /dev/null @@ -1,15 +0,0 @@ -//go:build !byollvm && darwin && llvm14 - -package llvm - -// Automatically generated by `make config BUILDDIR=`, do not edit. - -// #cgo amd64 CPPFLAGS: -I/usr/local/opt/llvm@14/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -// #cgo amd64 CXXFLAGS: -std=c++14 -// #cgo amd64 LDFLAGS: -L/usr/local/opt/llvm@14/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm -// #cgo arm64 CPPFLAGS: -I/opt/homebrew/opt/llvm@14/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -// #cgo arm64 CXXFLAGS: -std=c++14 -// #cgo arm64 LDFLAGS: -L/opt/homebrew/opt/llvm@14/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm -import "C" - -type run_build_sh int diff --git a/llvm_config_darwin_llvm15.go b/llvm_config_darwin_llvm15.go deleted file mode 100644 index 07a72fc..0000000 --- a/llvm_config_darwin_llvm15.go +++ /dev/null @@ -1,15 +0,0 @@ -//go:build !byollvm && darwin && llvm15 - -package llvm - -// Automatically generated by `make config BUILDDIR=`, do not edit. - -// #cgo amd64 CPPFLAGS: -I/usr/local/opt/llvm@15/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -// #cgo amd64 CXXFLAGS: -std=c++14 -// #cgo amd64 LDFLAGS: -L/usr/local/opt/llvm@15/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm -// #cgo arm64 CPPFLAGS: -I/opt/homebrew/opt/llvm@15/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -// #cgo arm64 CXXFLAGS: -std=c++14 -// #cgo arm64 LDFLAGS: -L/opt/homebrew/opt/llvm@15/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm -import "C" - -type run_build_sh int diff --git a/llvm_config_darwin_llvm16.go b/llvm_config_darwin_llvm16.go deleted file mode 100644 index 2acf0b0..0000000 --- a/llvm_config_darwin_llvm16.go +++ /dev/null @@ -1,15 +0,0 @@ -//go:build !byollvm && darwin && llvm16 - -package llvm - -// Automatically generated by `make config BUILDDIR=`, do not edit. - -// #cgo amd64 CPPFLAGS: -I/usr/local/opt/llvm@16/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -// #cgo amd64 CXXFLAGS: -std=c++17 -// #cgo amd64 LDFLAGS: -L/usr/local/opt/llvm@16/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm -// #cgo arm64 CPPFLAGS: -I/opt/homebrew/opt/llvm@16/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -// #cgo arm64 CXXFLAGS: -std=c++17 -// #cgo arm64 LDFLAGS: -L/opt/homebrew/opt/llvm@16/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm -import "C" - -type run_build_sh int diff --git a/llvm_config_darwin_llvm17.go b/llvm_config_darwin_llvm17.go deleted file mode 100644 index 3dc8f26..0000000 --- a/llvm_config_darwin_llvm17.go +++ /dev/null @@ -1,15 +0,0 @@ -//go:build !byollvm && darwin && llvm17 - -package llvm - -// Automatically generated by `make config BUILDDIR=`, do not edit. - -// #cgo amd64 CPPFLAGS: -I/usr/local/opt/llvm@17/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -// #cgo amd64 CXXFLAGS: -std=c++17 -// #cgo amd64 LDFLAGS: -L/usr/local/opt/llvm@17/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm -// #cgo arm64 CPPFLAGS: -I/opt/homebrew/opt/llvm@17/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -// #cgo arm64 CXXFLAGS: -std=c++17 -// #cgo arm64 LDFLAGS: -L/opt/homebrew/opt/llvm@17/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm -import "C" - -type run_build_sh int diff --git a/llvm_config_darwin_llvm18.go b/llvm_config_darwin_llvm18.go deleted file mode 100644 index 744a11e..0000000 --- a/llvm_config_darwin_llvm18.go +++ /dev/null @@ -1,15 +0,0 @@ -//go:build !byollvm && darwin && llvm18 - -package llvm - -// Automatically generated by `make config BUILDDIR=`, do not edit. - -// #cgo amd64 CPPFLAGS: -I/usr/local/opt/llvm@18/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -// #cgo amd64 CXXFLAGS: -std=c++17 -// #cgo amd64 LDFLAGS: -L/usr/local/opt/llvm@18/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm -// #cgo arm64 CPPFLAGS: -I/opt/homebrew/opt/llvm@18/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -// #cgo arm64 CXXFLAGS: -std=c++17 -// #cgo arm64 LDFLAGS: -L/opt/homebrew/opt/llvm@18/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm -import "C" - -type run_build_sh int diff --git a/llvm_config_darwin_llvm19.go b/llvm_config_darwin_llvm19.go deleted file mode 100644 index 7c2875b..0000000 --- a/llvm_config_darwin_llvm19.go +++ /dev/null @@ -1,15 +0,0 @@ -//go:build !byollvm && darwin && !llvm14 && !llvm15 && !llvm16 && !llvm17 && !llvm18 && !llvm20 && !llvm21 - -package llvm - -// Automatically generated by `make config BUILDDIR=`, do not edit. - -// #cgo amd64 CPPFLAGS: -I/usr/local/opt/llvm@19/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -// #cgo amd64 CXXFLAGS: -std=c++17 -// #cgo amd64 LDFLAGS: -L/usr/local/opt/llvm@19/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm -// #cgo arm64 CPPFLAGS: -I/opt/homebrew/opt/llvm@19/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -// #cgo arm64 CXXFLAGS: -std=c++17 -// #cgo arm64 LDFLAGS: -L/opt/homebrew/opt/llvm@19/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm -import "C" - -type run_build_sh int diff --git a/llvm_config_darwin_llvm20.go b/llvm_config_darwin_llvm20.go deleted file mode 100644 index 880e0d0..0000000 --- a/llvm_config_darwin_llvm20.go +++ /dev/null @@ -1,15 +0,0 @@ -//go:build !byollvm && darwin && llvm20 - -package llvm - -// Automatically generated by `make config BUILDDIR=`, do not edit. - -// #cgo amd64 CPPFLAGS: -I/usr/local/opt/llvm@20/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -// #cgo amd64 CXXFLAGS: -std=c++17 -// #cgo amd64 LDFLAGS: -L/usr/local/opt/llvm@20/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm -// #cgo arm64 CPPFLAGS: -I/opt/homebrew/opt/llvm@20/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -// #cgo arm64 CXXFLAGS: -std=c++17 -// #cgo arm64 LDFLAGS: -L/opt/homebrew/opt/llvm@20/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm -import "C" - -type run_build_sh int diff --git a/llvm_config_darwin_llvm21.go b/llvm_config_darwin_llvm21.go deleted file mode 100644 index ea084d0..0000000 --- a/llvm_config_darwin_llvm21.go +++ /dev/null @@ -1,15 +0,0 @@ -//go:build !byollvm && darwin && llvm21 - -package llvm - -// Automatically generated by `make config BUILDDIR=`, do not edit. - -// #cgo amd64 CPPFLAGS: -I/usr/local/opt/llvm@21/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -// #cgo amd64 CXXFLAGS: -std=c++17 -// #cgo amd64 LDFLAGS: -L/usr/local/opt/llvm@21/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm -// #cgo arm64 CPPFLAGS: -I/opt/homebrew/opt/llvm@21/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -// #cgo arm64 CXXFLAGS: -std=c++17 -// #cgo arm64 LDFLAGS: -L/opt/homebrew/opt/llvm@21/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm -import "C" - -type run_build_sh int diff --git a/llvm_config_linux_llvm14.go b/llvm_config_linux_llvm14.go deleted file mode 100644 index 3f91a53..0000000 --- a/llvm_config_linux_llvm14.go +++ /dev/null @@ -1,10 +0,0 @@ -//go:build !byollvm && linux && llvm14 - -package llvm - -// #cgo CPPFLAGS: -I/usr/lib/llvm-14/include -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -// #cgo CXXFLAGS: -std=c++14 -// #cgo LDFLAGS: -L/usr/lib/llvm-14/lib -lLLVM-14 -import "C" - -type run_build_sh int diff --git a/llvm_config_linux_llvm15.go b/llvm_config_linux_llvm15.go deleted file mode 100644 index 607ed7e..0000000 --- a/llvm_config_linux_llvm15.go +++ /dev/null @@ -1,10 +0,0 @@ -//go:build !byollvm && linux && llvm15 - -package llvm - -// #cgo CPPFLAGS: -I/usr/lib/llvm-15/include -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -// #cgo CXXFLAGS: -std=c++14 -// #cgo LDFLAGS: -L/usr/lib/llvm-15/lib -lLLVM-15 -import "C" - -type run_build_sh int diff --git a/llvm_config_linux_llvm16.go b/llvm_config_linux_llvm16.go deleted file mode 100644 index 4208cf4..0000000 --- a/llvm_config_linux_llvm16.go +++ /dev/null @@ -1,10 +0,0 @@ -//go:build !byollvm && linux && llvm16 - -package llvm - -// #cgo CPPFLAGS: -I/usr/lib/llvm-16/include -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -// #cgo CXXFLAGS: -std=c++17 -// #cgo LDFLAGS: -L/usr/lib/llvm-16/lib -lLLVM-16 -import "C" - -type run_build_sh int diff --git a/llvm_config_linux_llvm17.go b/llvm_config_linux_llvm17.go deleted file mode 100644 index f2951d7..0000000 --- a/llvm_config_linux_llvm17.go +++ /dev/null @@ -1,10 +0,0 @@ -//go:build !byollvm && linux && llvm17 - -package llvm - -// #cgo CPPFLAGS: -I/usr/include/llvm-17 -I/usr/include/llvm-c-17 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -// #cgo CXXFLAGS: -std=c++17 -// #cgo LDFLAGS: -L/usr/lib/llvm-17/lib -lLLVM-17 -import "C" - -type run_build_sh int diff --git a/llvm_config_linux_llvm18.go b/llvm_config_linux_llvm18.go deleted file mode 100644 index a4bbea0..0000000 --- a/llvm_config_linux_llvm18.go +++ /dev/null @@ -1,10 +0,0 @@ -//go:build !byollvm && linux && llvm18 - -package llvm - -// #cgo CPPFLAGS: -I/usr/include/llvm-18 -I/usr/include/llvm-c-18 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -// #cgo CXXFLAGS: -std=c++17 -// #cgo LDFLAGS: -L/usr/lib/llvm-18/lib -lLLVM-18 -import "C" - -type run_build_sh int diff --git a/llvm_config_linux_llvm19.go b/llvm_config_linux_llvm19.go deleted file mode 100644 index 728e3b8..0000000 --- a/llvm_config_linux_llvm19.go +++ /dev/null @@ -1,10 +0,0 @@ -//go:build !byollvm && linux && !llvm14 && !llvm15 && !llvm16 && !llvm17 && !llvm18 && !llvm20 && !llvm21 - -package llvm - -// #cgo CPPFLAGS: -I/usr/include/llvm-19 -I/usr/include/llvm-c-19 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -// #cgo CXXFLAGS: -std=c++17 -// #cgo LDFLAGS: -L/usr/lib/llvm-19/lib -lLLVM-19 -import "C" - -type run_build_sh int diff --git a/llvm_config_linux_llvm20.go b/llvm_config_linux_llvm20.go deleted file mode 100644 index 90c8b9b..0000000 --- a/llvm_config_linux_llvm20.go +++ /dev/null @@ -1,10 +0,0 @@ -//go:build !byollvm && linux && llvm20 - -package llvm - -// #cgo CPPFLAGS: -I/usr/include/llvm-20 -I/usr/include/llvm-c-20 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -// #cgo CXXFLAGS: -std=c++17 -// #cgo LDFLAGS: -L/usr/lib/llvm-20/lib -lLLVM-20 -import "C" - -type run_build_sh int diff --git a/llvm_config_linux_llvm21.go b/llvm_config_linux_llvm21.go deleted file mode 100644 index 8fa645e..0000000 --- a/llvm_config_linux_llvm21.go +++ /dev/null @@ -1,10 +0,0 @@ -//go:build !byollvm && linux && llvm21 - -package llvm - -// #cgo CPPFLAGS: -I/usr/include/llvm-21 -I/usr/include/llvm-c-21 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -// #cgo CXXFLAGS: -std=c++17 -// #cgo LDFLAGS: -L/usr/lib/llvm-21/lib -lLLVM-21 -import "C" - -type run_build_sh int diff --git a/llvm_config_llvm14.go b/llvm_config_llvm14.go new file mode 100644 index 0000000..9d38a5b --- /dev/null +++ b/llvm_config_llvm14.go @@ -0,0 +1,16 @@ +//go:build !byollvm && llvm14 + +package llvm + +// #cgo darwin,amd64 CPPFLAGS: -I/usr/local/opt/llvm@14/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo darwin,amd64 CXXFLAGS: -std=c++14 +// #cgo darwin,amd64 LDFLAGS: -L/usr/local/opt/llvm@14/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm +// #cgo darwin,arm64 CPPFLAGS: -I/opt/homebrew/opt/llvm@14/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo darwin,arm64 CXXFLAGS: -std=c++14 +// #cgo darwin,arm64 LDFLAGS: -L/opt/homebrew/opt/llvm@14/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm +// #cgo linux CPPFLAGS: -I/usr/lib/llvm-14/include -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo linux CXXFLAGS: -std=c++14 +// #cgo linux LDFLAGS: -L/usr/lib/llvm-14/lib -lLLVM-14 +import "C" + +type run_build_sh int diff --git a/llvm_config_llvm15.go b/llvm_config_llvm15.go new file mode 100644 index 0000000..34aebc0 --- /dev/null +++ b/llvm_config_llvm15.go @@ -0,0 +1,16 @@ +//go:build !byollvm && llvm15 + +package llvm + +// #cgo darwin,amd64 CPPFLAGS: -I/usr/local/opt/llvm@15/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo darwin,amd64 CXXFLAGS: -std=c++14 +// #cgo darwin,amd64 LDFLAGS: -L/usr/local/opt/llvm@15/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm +// #cgo darwin,arm64 CPPFLAGS: -I/opt/homebrew/opt/llvm@15/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo darwin,arm64 CXXFLAGS: -std=c++14 +// #cgo darwin,arm64 LDFLAGS: -L/opt/homebrew/opt/llvm@15/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm +// #cgo linux CPPFLAGS: -I/usr/lib/llvm-15/include -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo linux CXXFLAGS: -std=c++14 +// #cgo linux LDFLAGS: -L/usr/lib/llvm-15/lib -lLLVM-15 +import "C" + +type run_build_sh int diff --git a/llvm_config_llvm16.go b/llvm_config_llvm16.go new file mode 100644 index 0000000..936ca0f --- /dev/null +++ b/llvm_config_llvm16.go @@ -0,0 +1,16 @@ +//go:build !byollvm && llvm16 + +package llvm + +// #cgo darwin,amd64 CPPFLAGS: -I/usr/local/opt/llvm@16/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo darwin,amd64 CXXFLAGS: -std=c++17 +// #cgo darwin,amd64 LDFLAGS: -L/usr/local/opt/llvm@16/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm +// #cgo darwin,arm64 CPPFLAGS: -I/opt/homebrew/opt/llvm@16/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo darwin,arm64 CXXFLAGS: -std=c++17 +// #cgo darwin,arm64 LDFLAGS: -L/opt/homebrew/opt/llvm@16/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm +// #cgo linux CPPFLAGS: -I/usr/lib/llvm-16/include -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo linux CXXFLAGS: -std=c++17 +// #cgo linux LDFLAGS: -L/usr/lib/llvm-16/lib -lLLVM-16 +import "C" + +type run_build_sh int diff --git a/llvm_config_llvm17.go b/llvm_config_llvm17.go new file mode 100644 index 0000000..6a00b39 --- /dev/null +++ b/llvm_config_llvm17.go @@ -0,0 +1,16 @@ +//go:build !byollvm && llvm17 + +package llvm + +// #cgo darwin,amd64 CPPFLAGS: -I/usr/local/opt/llvm@17/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo darwin,amd64 CXXFLAGS: -std=c++17 +// #cgo darwin,amd64 LDFLAGS: -L/usr/local/opt/llvm@17/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm +// #cgo darwin,arm64 CPPFLAGS: -I/opt/homebrew/opt/llvm@17/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo darwin,arm64 CXXFLAGS: -std=c++17 +// #cgo darwin,arm64 LDFLAGS: -L/opt/homebrew/opt/llvm@17/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm +// #cgo linux CPPFLAGS: -I/usr/include/llvm-17 -I/usr/include/llvm-c-17 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo linux CXXFLAGS: -std=c++17 +// #cgo linux LDFLAGS: -L/usr/lib/llvm-17/lib -lLLVM-17 +import "C" + +type run_build_sh int diff --git a/llvm_config_llvm18.go b/llvm_config_llvm18.go new file mode 100644 index 0000000..c41fea0 --- /dev/null +++ b/llvm_config_llvm18.go @@ -0,0 +1,16 @@ +//go:build !byollvm && llvm18 + +package llvm + +// #cgo darwin,amd64 CPPFLAGS: -I/usr/local/opt/llvm@18/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo darwin,amd64 CXXFLAGS: -std=c++17 +// #cgo darwin,amd64 LDFLAGS: -L/usr/local/opt/llvm@18/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm +// #cgo darwin,arm64 CPPFLAGS: -I/opt/homebrew/opt/llvm@18/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo darwin,arm64 CXXFLAGS: -std=c++17 +// #cgo darwin,arm64 LDFLAGS: -L/opt/homebrew/opt/llvm@18/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm +// #cgo linux CPPFLAGS: -I/usr/include/llvm-18 -I/usr/include/llvm-c-18 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo linux CXXFLAGS: -std=c++17 +// #cgo linux LDFLAGS: -L/usr/lib/llvm-18/lib -lLLVM-18 +import "C" + +type run_build_sh int diff --git a/llvm_config_llvm19.go b/llvm_config_llvm19.go new file mode 100644 index 0000000..9bfc1e2 --- /dev/null +++ b/llvm_config_llvm19.go @@ -0,0 +1,16 @@ +//go:build !byollvm && !llvm14 && !llvm15 && !llvm16 && !llvm17 && !llvm18 && !llvm20 && !llvm21 + +package llvm + +// #cgo darwin,amd64 CPPFLAGS: -I/usr/local/opt/llvm@19/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo darwin,amd64 CXXFLAGS: -std=c++17 +// #cgo darwin,amd64 LDFLAGS: -L/usr/local/opt/llvm@19/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm +// #cgo darwin,arm64 CPPFLAGS: -I/opt/homebrew/opt/llvm@19/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo darwin,arm64 CXXFLAGS: -std=c++17 +// #cgo darwin,arm64 LDFLAGS: -L/opt/homebrew/opt/llvm@19/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm +// #cgo linux CPPFLAGS: -I/usr/include/llvm-19 -I/usr/include/llvm-c-19 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo linux CXXFLAGS: -std=c++17 +// #cgo linux LDFLAGS: -L/usr/lib/llvm-19/lib -lLLVM-19 +import "C" + +type run_build_sh int diff --git a/llvm_config_llvm20.go b/llvm_config_llvm20.go new file mode 100644 index 0000000..e0ca6a6 --- /dev/null +++ b/llvm_config_llvm20.go @@ -0,0 +1,16 @@ +//go:build !byollvm && llvm20 + +package llvm + +// #cgo darwin,amd64 CPPFLAGS: -I/usr/local/opt/llvm@20/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo darwin,amd64 CXXFLAGS: -std=c++17 +// #cgo darwin,amd64 LDFLAGS: -L/usr/local/opt/llvm@20/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm +// #cgo darwin,arm64 CPPFLAGS: -I/opt/homebrew/opt/llvm@20/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo darwin,arm64 CXXFLAGS: -std=c++17 +// #cgo darwin,arm64 LDFLAGS: -L/opt/homebrew/opt/llvm@20/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm +// #cgo linux CPPFLAGS: -I/usr/include/llvm-20 -I/usr/include/llvm-c-20 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo linux CXXFLAGS: -std=c++17 +// #cgo linux LDFLAGS: -L/usr/lib/llvm-20/lib -lLLVM-20 +import "C" + +type run_build_sh int diff --git a/llvm_config_llvm21.go b/llvm_config_llvm21.go new file mode 100644 index 0000000..ca06661 --- /dev/null +++ b/llvm_config_llvm21.go @@ -0,0 +1,16 @@ +//go:build !byollvm && llvm21 + +package llvm + +// #cgo darwin,amd64 CPPFLAGS: -I/usr/local/opt/llvm@21/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo darwin,amd64 CXXFLAGS: -std=c++17 +// #cgo darwin,amd64 LDFLAGS: -L/usr/local/opt/llvm@21/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm +// #cgo darwin,arm64 CPPFLAGS: -I/opt/homebrew/opt/llvm@21/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo darwin,arm64 CXXFLAGS: -std=c++17 +// #cgo darwin,arm64 LDFLAGS: -L/opt/homebrew/opt/llvm@21/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm +// #cgo linux CPPFLAGS: -I/usr/include/llvm-21 -I/usr/include/llvm-c-21 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo linux CXXFLAGS: -std=c++17 +// #cgo linux LDFLAGS: -L/usr/lib/llvm-21/lib -lLLVM-21 +import "C" + +type run_build_sh int From 6003353ad0f852a1db2763f28287faaef5ac3eb1 Mon Sep 17 00:00:00 2001 From: Qi Zhou Date: Tue, 29 Jul 2025 20:47:44 +0000 Subject: [PATCH 4/7] add ExecutionEngine.NewJITCompiler() add ExecutionEngine.GetFunctionAddress() --- executionengine.go | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/executionengine.go b/executionengine.go index 5fa8204..f9a3f99 100644 --- a/executionengine.go +++ b/executionengine.go @@ -18,8 +18,10 @@ package llvm #include */ import "C" -import "unsafe" -import "errors" +import ( + "errors" + "unsafe" +) func LinkInMCJIT() { C.LLVMLinkInMCJIT() } func LinkInInterpreter() { C.LLVMLinkInInterpreter() } @@ -110,6 +112,17 @@ func NewInterpreter(m Module) (ee ExecutionEngine, err error) { return } +func NewJITCompiler(m Module, optLevel int) (ee ExecutionEngine, err error) { + var cmsg *C.char + fail := C.LLVMCreateJITCompilerForModule(&ee.C, m.C, C.uint(optLevel), &cmsg) + if fail != 0 { + ee.C = nil + err = errors.New(C.GoString(cmsg)) + C.LLVMDisposeMessage(cmsg) + } + return +} + func NewMCJITCompilerOptions() MCJITCompilerOptions { var options C.struct_LLVMMCJITCompilerOptions C.LLVMInitializeMCJITCompilerOptions(&options, C.size_t(unsafe.Sizeof(C.struct_LLVMMCJITCompilerOptions{}))) @@ -159,6 +172,12 @@ func (ee ExecutionEngine) FindFunction(name string) (f Value) { return } +func (ee ExecutionEngine) GetFunctionAddress(name string) uint64 { + cname := C.CString(name) + defer C.free(unsafe.Pointer(cname)) + return uint64(C.LLVMGetFunctionAddress(ee.C, cname)) +} + func (ee ExecutionEngine) RecompileAndRelinkFunction(f Value) unsafe.Pointer { return C.LLVMRecompileAndRelinkFunction(ee.C, f.C) } From 0ed2f56cc9c2cd6d9f3939a892f06528b97af276 Mon Sep 17 00:00:00 2001 From: Al Hoang <3811822-hoanga@users.noreply.gitlab.com> Date: Thu, 11 Sep 2025 16:58:29 -0500 Subject: [PATCH 5/7] fix compilation on freebsd and add ci --- .github/workflows/go.yml | 29 +++++++++++++++++++++++++++++ llvm_config_llvm19.go | 3 +++ llvm_config_llvm20.go | 3 +++ llvm_config_llvm21.go | 3 +++ 4 files changed, 38 insertions(+) diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 4bf2e8d..794c381 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -60,3 +60,32 @@ jobs: if: matrix.llvm == 19 run: go test -v + test-freebsd: + name: test-freebsd + runs-on: ubuntu-latest + strategy: + matrix: + llvm: [19, 20] + steps: + - uses: actions/checkout@v4 + - name: FreeBSD test 14.3 + uses: vmactions/freebsd-vm@v1 + with: + release: '14.3' + usesh: true + prepare: | + # Update package database with IGNORE_OSVERSION + pkg update -f || true + # Install llvm build dependencies + pkg install -y llvm${{ matrix.llvm }} + # Install default version go dependency + pkg install -y go + run: | + # Show environment info + echo "FreeBSD version:" + freebsd-version + # Test with llvm${{ matrix.llvm }} + echo "Clang ${{ matrix.llvm }} version info:" + /usr/local/llvm${{ matrix.llvm }}/bin/clang --version + echo "Test with llvm${{ matrix.llvm }} tag" + go test -v -tags=llvm${{ matrix.llvm }} diff --git a/llvm_config_llvm19.go b/llvm_config_llvm19.go index 9bfc1e2..a1258d6 100644 --- a/llvm_config_llvm19.go +++ b/llvm_config_llvm19.go @@ -8,6 +8,9 @@ package llvm // #cgo darwin,arm64 CPPFLAGS: -I/opt/homebrew/opt/llvm@19/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS // #cgo darwin,arm64 CXXFLAGS: -std=c++17 // #cgo darwin,arm64 LDFLAGS: -L/opt/homebrew/opt/llvm@19/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm +// #cgo freebsd CPPFLAGS: -I/usr/local/llvm19/include -I/usr/local/llvm19/include/llvm-c -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo freebsd CXXFLAGS: -std=c++17 +// #cgo freebsd LDFLAGS: -L/usr/local/llvm19/lib -lLLVM // #cgo linux CPPFLAGS: -I/usr/include/llvm-19 -I/usr/include/llvm-c-19 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS // #cgo linux CXXFLAGS: -std=c++17 // #cgo linux LDFLAGS: -L/usr/lib/llvm-19/lib -lLLVM-19 diff --git a/llvm_config_llvm20.go b/llvm_config_llvm20.go index e0ca6a6..439a160 100644 --- a/llvm_config_llvm20.go +++ b/llvm_config_llvm20.go @@ -8,6 +8,9 @@ package llvm // #cgo darwin,arm64 CPPFLAGS: -I/opt/homebrew/opt/llvm@20/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS // #cgo darwin,arm64 CXXFLAGS: -std=c++17 // #cgo darwin,arm64 LDFLAGS: -L/opt/homebrew/opt/llvm@20/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm +// #cgo freebsd CPPFLAGS: -I/usr/local/llvm20/include -I/usr/local/llvm20/include/llvm-c -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo freebsd CXXFLAGS: -std=c++17 +// #cgo freebsd LDFLAGS: -L/usr/local/llvm20/lib -lLLVM // #cgo linux CPPFLAGS: -I/usr/include/llvm-20 -I/usr/include/llvm-c-20 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS // #cgo linux CXXFLAGS: -std=c++17 // #cgo linux LDFLAGS: -L/usr/lib/llvm-20/lib -lLLVM-20 diff --git a/llvm_config_llvm21.go b/llvm_config_llvm21.go index ca06661..81253a3 100644 --- a/llvm_config_llvm21.go +++ b/llvm_config_llvm21.go @@ -8,6 +8,9 @@ package llvm // #cgo darwin,arm64 CPPFLAGS: -I/opt/homebrew/opt/llvm@21/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS // #cgo darwin,arm64 CXXFLAGS: -std=c++17 // #cgo darwin,arm64 LDFLAGS: -L/opt/homebrew/opt/llvm@21/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm +// #cgo freebsd CPPFLAGS: -I/usr/local/llvm21/include -I/usr/local/llvm21/include/llvm-c -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo freebsd CXXFLAGS: -std=c++17 +// #cgo freebsd LDFLAGS: -L/usr/local/llvm21/lib -lLLVM // #cgo linux CPPFLAGS: -I/usr/include/llvm-21 -I/usr/include/llvm-c-21 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS // #cgo linux CXXFLAGS: -std=c++17 // #cgo linux LDFLAGS: -L/usr/lib/llvm-21/lib -lLLVM-21 From c8a913f1544f40fb3180a9d0a85156e94d48bf63 Mon Sep 17 00:00:00 2001 From: Al Hoang <3811822-hoanga@users.noreply.gitlab.com> Date: Wed, 24 Sep 2025 20:32:28 -0500 Subject: [PATCH 6/7] remove freebsd ci --- .github/workflows/go.yml | 29 ----------------------------- 1 file changed, 29 deletions(-) diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 794c381..4bf2e8d 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -60,32 +60,3 @@ jobs: if: matrix.llvm == 19 run: go test -v - test-freebsd: - name: test-freebsd - runs-on: ubuntu-latest - strategy: - matrix: - llvm: [19, 20] - steps: - - uses: actions/checkout@v4 - - name: FreeBSD test 14.3 - uses: vmactions/freebsd-vm@v1 - with: - release: '14.3' - usesh: true - prepare: | - # Update package database with IGNORE_OSVERSION - pkg update -f || true - # Install llvm build dependencies - pkg install -y llvm${{ matrix.llvm }} - # Install default version go dependency - pkg install -y go - run: | - # Show environment info - echo "FreeBSD version:" - freebsd-version - # Test with llvm${{ matrix.llvm }} - echo "Clang ${{ matrix.llvm }} version info:" - /usr/local/llvm${{ matrix.llvm }}/bin/clang --version - echo "Test with llvm${{ matrix.llvm }} tag" - go test -v -tags=llvm${{ matrix.llvm }} From f80af7d6e64b44d962b8fb3d26d4c733401fb578 Mon Sep 17 00:00:00 2001 From: Al Hoang <3811822-hoanga@users.noreply.gitlab.com> Date: Thu, 25 Sep 2025 07:33:18 -0500 Subject: [PATCH 7/7] fix bad formatting --- llvm_config_llvm19.go | 6 +++--- llvm_config_llvm20.go | 6 +++--- llvm_config_llvm21.go | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/llvm_config_llvm19.go b/llvm_config_llvm19.go index a1258d6..78dd5a0 100644 --- a/llvm_config_llvm19.go +++ b/llvm_config_llvm19.go @@ -8,9 +8,9 @@ package llvm // #cgo darwin,arm64 CPPFLAGS: -I/opt/homebrew/opt/llvm@19/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS // #cgo darwin,arm64 CXXFLAGS: -std=c++17 // #cgo darwin,arm64 LDFLAGS: -L/opt/homebrew/opt/llvm@19/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm -// #cgo freebsd CPPFLAGS: -I/usr/local/llvm19/include -I/usr/local/llvm19/include/llvm-c -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -// #cgo freebsd CXXFLAGS: -std=c++17 -// #cgo freebsd LDFLAGS: -L/usr/local/llvm19/lib -lLLVM +// #cgo freebsd CPPFLAGS: -I/usr/local/llvm19/include -I/usr/local/llvm19/include/llvm-c -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo freebsd CXXFLAGS: -std=c++17 +// #cgo freebsd LDFLAGS: -L/usr/local/llvm19/lib -lLLVM // #cgo linux CPPFLAGS: -I/usr/include/llvm-19 -I/usr/include/llvm-c-19 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS // #cgo linux CXXFLAGS: -std=c++17 // #cgo linux LDFLAGS: -L/usr/lib/llvm-19/lib -lLLVM-19 diff --git a/llvm_config_llvm20.go b/llvm_config_llvm20.go index 439a160..090bdd6 100644 --- a/llvm_config_llvm20.go +++ b/llvm_config_llvm20.go @@ -8,9 +8,9 @@ package llvm // #cgo darwin,arm64 CPPFLAGS: -I/opt/homebrew/opt/llvm@20/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS // #cgo darwin,arm64 CXXFLAGS: -std=c++17 // #cgo darwin,arm64 LDFLAGS: -L/opt/homebrew/opt/llvm@20/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm -// #cgo freebsd CPPFLAGS: -I/usr/local/llvm20/include -I/usr/local/llvm20/include/llvm-c -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -// #cgo freebsd CXXFLAGS: -std=c++17 -// #cgo freebsd LDFLAGS: -L/usr/local/llvm20/lib -lLLVM +// #cgo freebsd CPPFLAGS: -I/usr/local/llvm20/include -I/usr/local/llvm20/include/llvm-c -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo freebsd CXXFLAGS: -std=c++17 +// #cgo freebsd LDFLAGS: -L/usr/local/llvm20/lib -lLLVM // #cgo linux CPPFLAGS: -I/usr/include/llvm-20 -I/usr/include/llvm-c-20 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS // #cgo linux CXXFLAGS: -std=c++17 // #cgo linux LDFLAGS: -L/usr/lib/llvm-20/lib -lLLVM-20 diff --git a/llvm_config_llvm21.go b/llvm_config_llvm21.go index 81253a3..263c2fc 100644 --- a/llvm_config_llvm21.go +++ b/llvm_config_llvm21.go @@ -8,9 +8,9 @@ package llvm // #cgo darwin,arm64 CPPFLAGS: -I/opt/homebrew/opt/llvm@21/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS // #cgo darwin,arm64 CXXFLAGS: -std=c++17 // #cgo darwin,arm64 LDFLAGS: -L/opt/homebrew/opt/llvm@21/lib -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM -lz -lm -// #cgo freebsd CPPFLAGS: -I/usr/local/llvm21/include -I/usr/local/llvm21/include/llvm-c -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -// #cgo freebsd CXXFLAGS: -std=c++17 -// #cgo freebsd LDFLAGS: -L/usr/local/llvm21/lib -lLLVM +// #cgo freebsd CPPFLAGS: -I/usr/local/llvm21/include -I/usr/local/llvm21/include/llvm-c -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS +// #cgo freebsd CXXFLAGS: -std=c++17 +// #cgo freebsd LDFLAGS: -L/usr/local/llvm21/lib -lLLVM // #cgo linux CPPFLAGS: -I/usr/include/llvm-21 -I/usr/include/llvm-c-21 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS // #cgo linux CXXFLAGS: -std=c++17 // #cgo linux LDFLAGS: -L/usr/lib/llvm-21/lib -lLLVM-21