Merge pull request #1253 from luoliwoshang/release/esp-clang
release:compile & release with esp clang/llvm
This commit is contained in:
26
.github/actions/setup-deps/action.yml
vendored
26
.github/actions/setup-deps/action.yml
vendored
@@ -5,6 +5,10 @@ inputs:
|
|||||||
description: "LLVM version to install"
|
description: "LLVM version to install"
|
||||||
required: true
|
required: true
|
||||||
default: "19"
|
default: "19"
|
||||||
|
install-llvm:
|
||||||
|
description: "Whether to install LLVM"
|
||||||
|
required: false
|
||||||
|
default: "true"
|
||||||
|
|
||||||
runs:
|
runs:
|
||||||
using: "composite"
|
using: "composite"
|
||||||
@@ -14,9 +18,17 @@ runs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
brew update
|
brew update
|
||||||
brew install llvm@${{inputs.llvm-version}} lld@${{inputs.llvm-version}} bdw-gc openssl libffi libuv
|
|
||||||
brew link --overwrite llvm@${{inputs.llvm-version}} lld@${{inputs.llvm-version}} libffi
|
# Install LLVM if requested
|
||||||
|
if [[ "${{ inputs.install-llvm }}" == "true" ]]; then
|
||||||
|
brew install llvm@${{inputs.llvm-version}} lld@${{inputs.llvm-version}}
|
||||||
|
brew link --overwrite llvm@${{inputs.llvm-version}} lld@${{inputs.llvm-version}}
|
||||||
echo "$(brew --prefix llvm@${{inputs.llvm-version}})/bin" >> $GITHUB_PATH
|
echo "$(brew --prefix llvm@${{inputs.llvm-version}})/bin" >> $GITHUB_PATH
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Install common dependencies
|
||||||
|
brew install bdw-gc openssl libffi libuv
|
||||||
|
brew link --overwrite libffi
|
||||||
|
|
||||||
# Install optional deps for demos.
|
# Install optional deps for demos.
|
||||||
#
|
#
|
||||||
@@ -31,11 +43,19 @@ runs:
|
|||||||
if: runner.os == 'Linux'
|
if: runner.os == 'Linux'
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
|
# Install LLVM if requested
|
||||||
|
if [[ "${{ inputs.install-llvm }}" == "true" ]]; then
|
||||||
echo "deb http://apt.llvm.org/$(lsb_release -cs)/ llvm-toolchain-$(lsb_release -cs)-${{inputs.llvm-version}} main" | sudo tee /etc/apt/sources.list.d/llvm.list
|
echo "deb http://apt.llvm.org/$(lsb_release -cs)/ llvm-toolchain-$(lsb_release -cs)-${{inputs.llvm-version}} main" | sudo tee /etc/apt/sources.list.d/llvm.list
|
||||||
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
|
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y llvm-${{inputs.llvm-version}}-dev clang-${{inputs.llvm-version}} libclang-${{inputs.llvm-version}}-dev lld-${{inputs.llvm-version}} libunwind-${{inputs.llvm-version}}-dev libc++-${{inputs.llvm-version}}-dev pkg-config libgc-dev libssl-dev zlib1g-dev libffi-dev libcjson-dev libuv1-dev
|
sudo apt-get install -y llvm-${{inputs.llvm-version}}-dev clang-${{inputs.llvm-version}} libclang-${{inputs.llvm-version}}-dev lld-${{inputs.llvm-version}} libunwind-${{inputs.llvm-version}}-dev libc++-${{inputs.llvm-version}}-dev
|
||||||
echo "PATH=/usr/lib/llvm-${{inputs.llvm-version}}/bin:$PATH" >> $GITHUB_ENV
|
echo "PATH=/usr/lib/llvm-${{inputs.llvm-version}}/bin:$PATH" >> $GITHUB_ENV
|
||||||
|
else
|
||||||
|
sudo apt-get update
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Install common dependencies
|
||||||
|
sudo apt-get install -y pkg-config libgc-dev libssl-dev zlib1g-dev libffi-dev libcjson-dev libuv1-dev
|
||||||
|
|
||||||
# Install optional deps for demos.
|
# Install optional deps for demos.
|
||||||
#
|
#
|
||||||
|
|||||||
3
.github/actions/setup-goreleaser/action.yml
vendored
3
.github/actions/setup-goreleaser/action.yml
vendored
@@ -35,3 +35,6 @@ runs:
|
|||||||
- name: Check file
|
- name: Check file
|
||||||
run: tree .sysroot
|
run: tree .sysroot
|
||||||
shell: bash
|
shell: bash
|
||||||
|
- name: Get Esp clang
|
||||||
|
run: bash .github/workflows/download_esp_clang.sh
|
||||||
|
shell: bash
|
||||||
|
|||||||
14
.github/actions/test-helloworld/action.yml
vendored
14
.github/actions/test-helloworld/action.yml
vendored
@@ -38,7 +38,7 @@ runs:
|
|||||||
Hello, LLGo!
|
Hello, LLGo!
|
||||||
Hello, LLGo!
|
Hello, LLGo!
|
||||||
Hello LLGo by cpp/std.Str"
|
Hello LLGo by cpp/std.Str"
|
||||||
OUTPUT=$(llgo run . 2>&1)
|
OUTPUT=$(llgo run . 2>&1 | tee /dev/stderr)
|
||||||
if echo "$OUTPUT" | grep -qF "$EXPECTED"; then
|
if echo "$OUTPUT" | grep -qF "$EXPECTED"; then
|
||||||
echo "Basic test passed"
|
echo "Basic test passed"
|
||||||
else
|
else
|
||||||
@@ -50,4 +50,14 @@ runs:
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#TODO(zzy): Test embed targets, need dispatch target dir
|
cd ../..
|
||||||
|
mkdir -p _test/emb && cd _test/emb
|
||||||
|
cat > main.go << 'EOL'
|
||||||
|
package main
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
}
|
||||||
|
EOL
|
||||||
|
llgo build -v -target esp32-coreboard-v2 -o demo.out .
|
||||||
|
test -f demo.out.elf && echo "ESP32 cross-compilation test passed: demo.out.elf generated"
|
||||||
|
exit $?
|
||||||
|
|||||||
67
.github/workflows/download_esp_clang.sh
vendored
Executable file
67
.github/workflows/download_esp_clang.sh
vendored
Executable file
@@ -0,0 +1,67 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
ESP_CLANG_VERSION="19.1.2_20250905-3"
|
||||||
|
BASE_URL="https://github.com/goplus/espressif-llvm-project-prebuilt/releases/download/${ESP_CLANG_VERSION}"
|
||||||
|
|
||||||
|
get_esp_clang_platform() {
|
||||||
|
local platform="$1"
|
||||||
|
local os="${platform%-*}"
|
||||||
|
local arch="${platform##*-}"
|
||||||
|
|
||||||
|
case "${os}" in
|
||||||
|
"darwin")
|
||||||
|
case "${arch}" in
|
||||||
|
"amd64") echo "x86_64-apple-darwin" ;;
|
||||||
|
"arm64") echo "aarch64-apple-darwin" ;;
|
||||||
|
*) echo "Error: Unsupported darwin architecture: ${arch}" >&2; exit 1 ;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
"linux")
|
||||||
|
case "${arch}" in
|
||||||
|
"amd64") echo "x86_64-linux-gnu" ;;
|
||||||
|
"arm64") echo "aarch64-linux-gnu" ;;
|
||||||
|
*) echo "Error: Unsupported linux architecture: ${arch}" >&2; exit 1 ;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Error: Unsupported OS: ${os}" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
get_filename() {
|
||||||
|
local platform="$1"
|
||||||
|
local platform_suffix=$(get_esp_clang_platform "${platform}")
|
||||||
|
echo "clang-esp-${ESP_CLANG_VERSION}-${platform_suffix}.tar.xz"
|
||||||
|
}
|
||||||
|
|
||||||
|
download_and_extract() {
|
||||||
|
local platform="$1"
|
||||||
|
local os="${platform%-*}"
|
||||||
|
local arch="${platform##*-}"
|
||||||
|
local filename=$(get_filename "${platform}")
|
||||||
|
local download_url="${BASE_URL}/${filename}"
|
||||||
|
|
||||||
|
echo "Downloading ESP Clang for ${platform}..."
|
||||||
|
echo " URL: ${download_url}"
|
||||||
|
|
||||||
|
mkdir -p ".sysroot/${os}/${arch}/crosscompile/clang"
|
||||||
|
curl -fsSL "${download_url}" | tar -xJ -C ".sysroot/${os}/${arch}/crosscompile/clang" --strip-components=1
|
||||||
|
|
||||||
|
if [[ ! -f ".sysroot/${os}/${arch}/crosscompile/clang/bin/clang++" ]]; then
|
||||||
|
echo "Error: clang++ not found in ${platform} toolchain"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "${platform} ESP Clang ready in .sysroot/${os}/${arch}/crosscompile/clang"
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "Downloading ESP Clang toolchain version ${ESP_CLANG_VERSION}..."
|
||||||
|
|
||||||
|
for platform in "darwin-amd64" "darwin-arm64" "linux-amd64" "linux-arm64"; do
|
||||||
|
download_and_extract "${platform}"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "ESP Clang toolchain completed successfully!"
|
||||||
10
.github/workflows/release-build.yml
vendored
10
.github/workflows/release-build.yml
vendored
@@ -27,7 +27,6 @@ jobs:
|
|||||||
LINUX_KEY="linux-sysroot-${{ hashFiles('.github/workflows/populate_linux_sysroot.sh', '.github/workflows/release-build.yml') }}-v1.0.0"
|
LINUX_KEY="linux-sysroot-${{ hashFiles('.github/workflows/populate_linux_sysroot.sh', '.github/workflows/release-build.yml') }}-v1.0.0"
|
||||||
echo "darwin-key=$DARWIN_KEY" >> $GITHUB_OUTPUT
|
echo "darwin-key=$DARWIN_KEY" >> $GITHUB_OUTPUT
|
||||||
echo "linux-key=$LINUX_KEY" >> $GITHUB_OUTPUT
|
echo "linux-key=$LINUX_KEY" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
populate-darwin-sysroot:
|
populate-darwin-sysroot:
|
||||||
runs-on: macos-latest
|
runs-on: macos-latest
|
||||||
timeout-minutes: 30
|
timeout-minutes: 30
|
||||||
@@ -107,7 +106,7 @@ jobs:
|
|||||||
-v $(pwd):/go/src/llgo \
|
-v $(pwd):/go/src/llgo \
|
||||||
-w /go/src/llgo \
|
-w /go/src/llgo \
|
||||||
ghcr.io/goreleaser/goreleaser-cross:v1.22 \
|
ghcr.io/goreleaser/goreleaser-cross:v1.22 \
|
||||||
release --skip=publish,nfpm,snapcraft --snapshot --clean
|
release --verbose --skip=publish,nfpm,snapcraft --snapshot --clean
|
||||||
|
|
||||||
- name: Upload Darwin AMD64 Artifacts
|
- name: Upload Darwin AMD64 Artifacts
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
@@ -179,6 +178,8 @@ jobs:
|
|||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v5
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
uses: ./.github/actions/setup-deps
|
uses: ./.github/actions/setup-deps
|
||||||
|
with:
|
||||||
|
install-llvm: false
|
||||||
- name: Set up Go
|
- name: Set up Go
|
||||||
uses: actions/setup-go@v6
|
uses: actions/setup-go@v6
|
||||||
with:
|
with:
|
||||||
@@ -205,7 +206,8 @@ jobs:
|
|||||||
mod-version: ${{ matrix.go-mod-version }}
|
mod-version: ${{ matrix.go-mod-version }}
|
||||||
|
|
||||||
release:
|
release:
|
||||||
needs: [setup, build, test-artifacts]
|
needs:
|
||||||
|
[setup, test-artifacts, populate-darwin-sysroot, populate-linux-sysroot]
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: startsWith(github.ref, 'refs/tags/')
|
if: startsWith(github.ref, 'refs/tags/')
|
||||||
steps:
|
steps:
|
||||||
@@ -231,4 +233,4 @@ jobs:
|
|||||||
-v $(pwd):/go/src/llgo \
|
-v $(pwd):/go/src/llgo \
|
||||||
-w /go/src/llgo \
|
-w /go/src/llgo \
|
||||||
ghcr.io/goreleaser/goreleaser-cross:v1.22 \
|
ghcr.io/goreleaser/goreleaser-cross:v1.22 \
|
||||||
release --clean --skip nfpm,snapcraft
|
release --clean --verbose --skip nfpm,snapcraft
|
||||||
|
|||||||
@@ -23,12 +23,11 @@ builds:
|
|||||||
ldflags:
|
ldflags:
|
||||||
- -X github.com/goplus/llgo/internal/env.buildVersion=v{{.Version}}
|
- -X github.com/goplus/llgo/internal/env.buildVersion=v{{.Version}}
|
||||||
- -X github.com/goplus/llgo/internal/env.buildTime={{.Date}}
|
- -X github.com/goplus/llgo/internal/env.buildTime={{.Date}}
|
||||||
- -X github.com/goplus/llgo/xtool/env/llvm.ldLLVMConfigBin=/usr/local/opt/llvm@19/bin/llvm-config
|
|
||||||
env:
|
env:
|
||||||
- CC=o64-clang
|
- CC=o64-clang
|
||||||
- CXX=o64-clang++
|
- CXX=o64-clang++
|
||||||
- CGO_CPPFLAGS=-I{{.Env.SYSROOT_DARWIN_AMD64}}/usr/local/opt/llvm@19/include -mmacosx-version-min=10.13 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
|
- CGO_CPPFLAGS=-I{{.Env.SYSROOT_DARWIN_AMD64}}/crosscompile/clang/include -mmacosx-version-min=10.13 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
|
||||||
- CGO_LDFLAGS=-L{{.Env.SYSROOT_DARWIN_AMD64}}/usr/local/opt/llvm@19/lib -mmacosx-version-min=10.13 -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM-19 -lz -lm
|
- CGO_LDFLAGS=-L{{.Env.SYSROOT_DARWIN_AMD64}}/crosscompile/clang/lib -mmacosx-version-min=10.13 -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM-19 -lz -lm -Wl,-rpath,@executable_path/../crosscompile/clang/lib
|
||||||
targets:
|
targets:
|
||||||
- darwin_amd64
|
- darwin_amd64
|
||||||
mod_timestamp: "{{.CommitTimestamp}}"
|
mod_timestamp: "{{.CommitTimestamp}}"
|
||||||
@@ -40,12 +39,11 @@ builds:
|
|||||||
ldflags:
|
ldflags:
|
||||||
- -X github.com/goplus/llgo/internal/env.buildVersion=v{{.Version}}
|
- -X github.com/goplus/llgo/internal/env.buildVersion=v{{.Version}}
|
||||||
- -X github.com/goplus/llgo/internal/env.buildTime={{.Date}}
|
- -X github.com/goplus/llgo/internal/env.buildTime={{.Date}}
|
||||||
- -X github.com/goplus/llgo/xtool/env/llvm.ldLLVMConfigBin=/opt/homebrew/opt/llvm@19/bin/llvm-config
|
|
||||||
env:
|
env:
|
||||||
- CC=oa64-clang
|
- CC=oa64-clang
|
||||||
- CXX=oa64-clang++
|
- CXX=oa64-clang++
|
||||||
- CGO_CPPFLAGS=-I{{.Env.SYSROOT_DARWIN_ARM64}}/opt/homebrew/opt/llvm@19/include -mmacosx-version-min=10.13 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
|
- CGO_CPPFLAGS=-I{{.Env.SYSROOT_DARWIN_ARM64}}/crosscompile/clang/include -mmacosx-version-min=10.13 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
|
||||||
- CGO_LDFLAGS=-L{{.Env.SYSROOT_DARWIN_ARM64}}/opt/homebrew/opt/llvm@19/lib -mmacosx-version-min=10.13 -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM-19 -lz -lm
|
- CGO_LDFLAGS=-L{{.Env.SYSROOT_DARWIN_ARM64}}/crosscompile/clang/lib -mmacosx-version-min=10.13 -Wl,-search_paths_first -Wl,-headerpad_max_install_names -lLLVM-19 -lz -lm -Wl,-rpath,@executable_path/../crosscompile/clang/lib
|
||||||
targets:
|
targets:
|
||||||
- darwin_arm64
|
- darwin_arm64
|
||||||
mod_timestamp: "{{.CommitTimestamp}}"
|
mod_timestamp: "{{.CommitTimestamp}}"
|
||||||
@@ -57,12 +55,13 @@ builds:
|
|||||||
ldflags:
|
ldflags:
|
||||||
- -X github.com/goplus/llgo/internal/env.buildVersion=v{{.Version}}
|
- -X github.com/goplus/llgo/internal/env.buildVersion=v{{.Version}}
|
||||||
- -X github.com/goplus/llgo/internal/env.buildTime={{.Date}}
|
- -X github.com/goplus/llgo/internal/env.buildTime={{.Date}}
|
||||||
- -X github.com/goplus/llgo/xtool/env/llvm.ldLLVMConfigBin=/usr/lib/llvm-19/bin/llvm-config
|
- '-extldflags=-Wl,-rpath,$ORIGIN/../crosscompile/clang/lib'
|
||||||
env:
|
env:
|
||||||
- CC=x86_64-linux-gnu-gcc
|
- CC=x86_64-linux-gnu-gcc
|
||||||
- CXX=x86_64-linux-gnu-g++
|
- CXX=x86_64-linux-gnu-g++
|
||||||
- CGO_CPPFLAGS=--sysroot={{.Env.SYSROOT_LINUX_AMD64}} -I{{.Env.SYSROOT_LINUX_AMD64}}/usr/include/llvm-19 -I{{.Env.SYSROOT_LINUX_AMD64}}/usr/include/llvm-c-19 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
|
- CGO_CPPFLAGS=--sysroot={{.Env.SYSROOT_LINUX_AMD64}} -I{{.Env.SYSROOT_LINUX_AMD64}}/crosscompile/clang/include -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
|
||||||
- CGO_LDFLAGS=--sysroot={{.Env.SYSROOT_LINUX_AMD64}} -L{{.Env.SYSROOT_LINUX_AMD64}}/usr/lib/llvm-19/lib -lLLVM-19
|
- CGO_LDFLAGS=--sysroot={{.Env.SYSROOT_LINUX_AMD64}} -L{{.Env.SYSROOT_LINUX_AMD64}}/crosscompile/clang/lib -lLLVM-19
|
||||||
|
- CGO_LDFLAGS_ALLOW=--sysroot.*
|
||||||
targets:
|
targets:
|
||||||
- linux_amd64
|
- linux_amd64
|
||||||
mod_timestamp: "{{.CommitTimestamp}}"
|
mod_timestamp: "{{.CommitTimestamp}}"
|
||||||
@@ -74,12 +73,13 @@ builds:
|
|||||||
ldflags:
|
ldflags:
|
||||||
- -X github.com/goplus/llgo/internal/env.buildVersion=v{{.Version}}
|
- -X github.com/goplus/llgo/internal/env.buildVersion=v{{.Version}}
|
||||||
- -X github.com/goplus/llgo/internal/env.buildTime={{.Date}}
|
- -X github.com/goplus/llgo/internal/env.buildTime={{.Date}}
|
||||||
- -X github.com/goplus/llgo/xtool/env/llvm.ldLLVMConfigBin=/usr/lib/llvm-19/bin/llvm-config
|
- '-extldflags=-Wl,-rpath,$ORIGIN/../crosscompile/clang/lib'
|
||||||
env:
|
env:
|
||||||
- CC=aarch64-linux-gnu-gcc
|
- CC=aarch64-linux-gnu-gcc
|
||||||
- CXX=aarch64-linux-gnu-g++
|
- CXX=aarch64-linux-gnu-g++
|
||||||
- CGO_CPPFLAGS=--sysroot={{.Env.SYSROOT_LINUX_ARM64}} -I{{.Env.SYSROOT_LINUX_ARM64}}/usr/include/llvm-19 -I{{.Env.SYSROOT_LINUX_ARM64}}/usr/include/llvm-c-19 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
|
- CGO_CPPFLAGS=--sysroot={{.Env.SYSROOT_LINUX_ARM64}} -I{{.Env.SYSROOT_LINUX_ARM64}}/crosscompile/clang/include -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
|
||||||
- CGO_LDFLAGS=--sysroot={{.Env.SYSROOT_LINUX_ARM64}} -L{{.Env.SYSROOT_LINUX_ARM64}}/usr/lib/llvm-19/lib -lLLVM-19
|
- CGO_LDFLAGS=--sysroot={{.Env.SYSROOT_LINUX_ARM64}} -L{{.Env.SYSROOT_LINUX_ARM64}}/crosscompile/clang/lib -lLLVM-19
|
||||||
|
- CGO_LDFLAGS_ALLOW=--sysroot.*
|
||||||
targets:
|
targets:
|
||||||
- linux_arm64
|
- linux_arm64
|
||||||
mod_timestamp: "{{.CommitTimestamp}}"
|
mod_timestamp: "{{.CommitTimestamp}}"
|
||||||
@@ -93,7 +93,11 @@ archives:
|
|||||||
- LICENSE
|
- LICENSE
|
||||||
- README.md
|
- README.md
|
||||||
- runtime
|
- runtime
|
||||||
|
- targets
|
||||||
|
- src: ".sysroot/{{.Os}}/{{.Arch}}/crosscompile/clang"
|
||||||
|
dst: crosscompile/clang
|
||||||
|
info:
|
||||||
|
mode: 0755
|
||||||
checksum:
|
checksum:
|
||||||
name_template: "{{.ProjectName}}{{.Version}}.checksums.txt"
|
name_template: "{{.ProjectName}}{{.Version}}.checksums.txt"
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import (
|
|||||||
"github.com/goplus/llgo/internal/flash"
|
"github.com/goplus/llgo/internal/flash"
|
||||||
"github.com/goplus/llgo/internal/targets"
|
"github.com/goplus/llgo/internal/targets"
|
||||||
"github.com/goplus/llgo/internal/xtool/llvm"
|
"github.com/goplus/llgo/internal/xtool/llvm"
|
||||||
|
envllvm "github.com/goplus/llgo/xtool/env/llvm"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Export struct {
|
type Export struct {
|
||||||
@@ -108,7 +109,7 @@ func getESPClangRoot(forceEspClang bool) (clangRoot string, err error) {
|
|||||||
llgoRoot := env.LLGoROOT()
|
llgoRoot := env.LLGoROOT()
|
||||||
|
|
||||||
// First check if clang exists in LLGoROOT
|
// First check if clang exists in LLGoROOT
|
||||||
espClangRoot := filepath.Join(llgoRoot, "crosscompile", "clang")
|
espClangRoot := filepath.Join(llgoRoot, envllvm.CrosscompileClangPath)
|
||||||
if _, err = os.Stat(espClangRoot); err == nil {
|
if _, err = os.Stat(espClangRoot); err == nil {
|
||||||
clangRoot = espClangRoot
|
clangRoot = espClangRoot
|
||||||
return
|
return
|
||||||
|
|||||||
15
xtool/env/llvm/llvm.go
vendored
15
xtool/env/llvm/llvm.go
vendored
@@ -22,6 +22,7 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/goplus/llgo/internal/env"
|
||||||
"github.com/goplus/llgo/xtool/clang"
|
"github.com/goplus/llgo/xtool/clang"
|
||||||
"github.com/goplus/llgo/xtool/llvm/install_name_tool"
|
"github.com/goplus/llgo/xtool/llvm/install_name_tool"
|
||||||
"github.com/goplus/llgo/xtool/llvm/llvmlink"
|
"github.com/goplus/llgo/xtool/llvm/llvmlink"
|
||||||
@@ -30,6 +31,13 @@ import (
|
|||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
const (
|
||||||
|
// CrosscompileClangPath is the relative path from LLGO_ROOT to the clang installation
|
||||||
|
CrosscompileClangPath = "crosscompile/clang"
|
||||||
|
)
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------------------
|
||||||
|
|
||||||
// defaultLLVMConfigBin returns the default path to the llvm-config binary. It
|
// defaultLLVMConfigBin returns the default path to the llvm-config binary. It
|
||||||
// checks the LLVM_CONFIG environment variable first, then searches in PATH. If
|
// checks the LLVM_CONFIG environment variable first, then searches in PATH. If
|
||||||
// not found, it returns [ldLLVMConfigBin] as a last resort.
|
// not found, it returns [ldLLVMConfigBin] as a last resort.
|
||||||
@@ -42,6 +50,13 @@ func defaultLLVMConfigBin() string {
|
|||||||
if bin != "" {
|
if bin != "" {
|
||||||
return bin
|
return bin
|
||||||
}
|
}
|
||||||
|
|
||||||
|
llgoRoot := env.LLGoROOT()
|
||||||
|
// Check LLGO_ROOT/crosscompile/clang for llvm-config
|
||||||
|
crossLLVMConfigBin := filepath.Join(llgoRoot, CrosscompileClangPath, "bin", "llvm-config")
|
||||||
|
if _, err := os.Stat(crossLLVMConfigBin); err == nil {
|
||||||
|
return crossLLVMConfigBin
|
||||||
|
}
|
||||||
return ldLLVMConfigBin
|
return ldLLVMConfigBin
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user