Remove unnecessary RET instruction #1205
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Test | |
| on: [push, pull_request] | |
| jobs: | |
| test: | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest, ubuntu-24.04-arm, macos-latest, windows-latest] | |
| go: ['1.18.x', '1.19.x', '1.20.x', '1.21.x', '1.22.x', '1.23.x', '1.24.x', '1.25.x'] | |
| name: Test with Go ${{ matrix.go }} on ${{ matrix.os }} | |
| runs-on: ${{ matrix.os }} | |
| defaults: | |
| run: | |
| shell: bash | |
| steps: | |
| - name: Git | |
| run: | | |
| # See actions/checkout#135 | |
| git config --global core.autocrlf false | |
| git config --global core.eol lf | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| - name: Setup Go | |
| uses: actions/setup-go@v6 | |
| with: | |
| go-version: ${{ matrix.go }} | |
| - name: Set up the prerequisites | |
| if: runner.os == 'Windows' | |
| uses: msys2/setup-msys2@v2 | |
| - name: go vet | |
| run: | | |
| env CGO_ENABLED=0 go vet -v ./... | |
| - name: go build | |
| run: | | |
| go build -v ./... | |
| # Compile without optimization to check potential stack overflow. | |
| # The option '-gcflags=all=-N -l' is often used at Visual Studio Code. | |
| # See also https://go.googlesource.com/vscode-go/+/HEAD/docs/debugging.md#launch and the issue hajimehoshi/ebiten#2120. | |
| go build "-gcflags=all=-N -l" -v ./... | |
| # Check cross-compiling Windows binaries. | |
| env GOOS=windows GOARCH=386 go build -v ./... | |
| env GOOS=windows GOARCH=amd64 go build -v ./... | |
| env GOOS=windows GOARCH=arm go build -v ./... | |
| env GOOS=windows GOARCH=arm64 go build -v ./... | |
| # Check cross-compiling macOS binaries. | |
| env GOOS=darwin GOARCH=amd64 go build -v ./... | |
| env GOOS=darwin GOARCH=arm64 go build -v ./... | |
| # Check cross-compiling Linux binaries. | |
| env GOOS=linux GOARCH=amd64 go build -v ./... | |
| env GOOS=linux GOARCH=arm64 go build -v ./... | |
| # Check cross-compiling FreeBSD binaries. | |
| # gcflags -std is necessary to make fakecgo the Cgo for | |
| # FreeBSD to add the symbols that libc.so depends on. | |
| env GOOS=freebsd GOARCH=amd64 go build -gcflags="github.com/ebitengine/purego/internal/fakecgo=-std" -v ./... | |
| env GOOS=freebsd GOARCH=arm64 go build -gcflags="github.com/ebitengine/purego/internal/fakecgo=-std" -v ./... | |
| # Check cross-compiling NetBSD binaries. | |
| env GOOS=netbsd GOARCH=amd64 go build -v ./... | |
| env GOOS=netbsd GOARCH=arm64 go build -v ./... | |
| - name: go build (Linux loong64) | |
| if: ${{ !startsWith(matrix.go, '1.18.') && !startsWith(matrix.go, '1.19.') && !startsWith(matrix.go, '1.20.') && !startsWith(matrix.go, '1.21.') && !startsWith(matrix.go, '1.22.') && !startsWith(matrix.go, '1.23.') && !startsWith(matrix.go, '1.24.') }} | |
| run: | | |
| # Check cross-compiling Linux binaries for loong64. | |
| # Loong64 support internal linking from go1.25. | |
| env GOOS=linux GOARCH=loong64 go build -v ./... | |
| - name: go build (plugin) | |
| if: runner.os == 'Linux' || runner.os == 'macOS' | |
| run: | |
| # Make sure that plugin buildmode works since we save the R15 register (#254) | |
| go build -buildmode=plugin ./examples/libc | |
| - name: go mod vendor | |
| if: runner.os != 'Linux' | |
| run: | | |
| mkdir /tmp/vendoring | |
| cd /tmp/vendoring | |
| go mod init foo | |
| echo 'package main' > main.go | |
| echo 'import (' >> main.go | |
| echo ' _ "github.com/ebitengine/purego"' >> main.go | |
| echo ')' >> main.go | |
| echo 'func main() {}' >> main.go | |
| go mod edit -replace github.com/ebitengine/purego=$GITHUB_WORKSPACE | |
| go mod tidy | |
| go mod vendor | |
| go build -v . | |
| - name: go test | |
| run: | | |
| env CGO_ENABLED=0 go test -shuffle=on -v -count=10 ./... | |
| env CGO_ENABLED=1 go test -shuffle=on -v -count=10 ./... | |
| # Compile without optimization to check potential stack overflow. | |
| # The option '-gcflags=all=-N -l' is often used at Visual Studio Code. | |
| # See also https://go.googlesource.com/vscode-go/+/HEAD/docs/debugging.md#launch. | |
| env CGO_ENABLED=0 go test "-gcflags=all=-N -l" -v ./... | |
| env CGO_ENABLED=1 go test "-gcflags=all=-N -l" -v ./... | |
| - name: go test (Windows 386) | |
| if: runner.os == 'Windows' | |
| run: | | |
| env CGO_ENABLED=0 GOARCH=386 go test -shuffle=on -v -count=10 ./... | |
| env CGO_ENABLED=1 GOARCH=386 go test -shuffle=on -v -count=10 ./... | |
| - name: go test (Linux 386) | |
| if: ${{ runner.os == 'Linux' && runner.arch != 'ARM64' }} | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install gcc-multilib | |
| sudo apt-get install g++-multilib | |
| env CGO_ENABLED=1 GOARCH=386 go test -shuffle=on -v -count=10 ./... | |
| - name: go test race (no Cgo) | |
| if: ${{ runner.os == 'macOS' && !startsWith(matrix.go, '1.18.') && !startsWith(matrix.go, '1.19.') }} | |
| run: | | |
| # -race usually requires Cgo, but macOS is an exception. See https://go.dev/doc/articles/race_detector#Requirements | |
| env CGO_ENABLED=0 go test -race -shuffle=on -v -count=10 ./... | |
| - name: go test race (Cgo) | |
| if: ${{ !startsWith(matrix.go, '1.18.') && !startsWith(matrix.go, '1.19.') }} | |
| run: | | |
| env CGO_ENABLED=1 go test -race -shuffle=on -v -count=10 ./... | |
| loong: | |
| strategy: | |
| matrix: | |
| # Loong64 support internal linking from go1.25. | |
| go: ['1.25.x'] | |
| name: Test with Go ${{ matrix.go }} on Linux loong64 | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| shell: bash | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Setup Go | |
| uses: actions/setup-go@v6 | |
| with: | |
| go-version: ${{ matrix.go }} | |
| - name: Set up the prerequisites | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y gcc-14-loongarch64-linux-gnu g++-14-loongarch64-linux-gnu qemu-user | |
| - name: go test (Linux loong64) | |
| run: | | |
| go env -w CC=loongarch64-linux-gnu-gcc-14 | |
| go env -w CXX=loongarch64-linux-gnu-g++-14 | |
| env GOOS=linux GOARCH=loong64 CGO_ENABLED=0 go test -c -o=purego-test-nocgo . | |
| env QEMU_LD_PREFIX=/usr/loongarch64-linux-gnu qemu-loongarch64 ./purego-test-nocgo -test.shuffle=on -test.v -test.count=10 | |
| env GOOS=linux GOARCH=loong64 CGO_ENABLED=1 go test -c -o=purego-test-cgo . | |
| env QEMU_LD_PREFIX=/usr/loongarch64-linux-gnu qemu-loongarch64 ./purego-test-cgo -test.shuffle=on -test.v -test.count=10 | |
| go env -u CC | |
| go env -u CXX | |
| bsd: | |
| strategy: | |
| matrix: | |
| os: ['FreeBSD'] # TODO: Add 'NetBSD' again (#304) | |
| go: ['1.18.10', '1.19.13', '1.20.14', '1.21.13', '1.22.12', '1.23.12', '1.24.8', '1.25.2'] | |
| exclude: | |
| # there are no prebuilt download links for these versions of Go for NetBSD | |
| - os: NetBSD | |
| go: '1.18.10' | |
| - os: NetBSD | |
| go: '1.19.13' | |
| - os: NetBSD | |
| go: '1.20.14' | |
| name: Test with Go ${{ matrix.go }} on ${{ matrix.os }} | |
| runs-on: ubuntu-22.04 | |
| defaults: | |
| run: | |
| shell: bash | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Run in FreeBSD | |
| if: matrix.os == 'FreeBSD' | |
| uses: vmactions/freebsd-vm@v1 | |
| with: | |
| usesh: true | |
| prepare: | | |
| fetch https://go.dev/dl/go${{matrix.go}}.freebsd-amd64.tar.gz | |
| rm -fr /usr/local/go && tar -C /usr/local -xf go${{matrix.go}}.freebsd-amd64.tar.gz | |
| chmod +x $GITHUB_WORKSPACE/.github/scripts/bsd_tests.sh | |
| run: $GITHUB_WORKSPACE/.github/scripts/bsd_tests.sh | |
| - name: Run in NetBSD | |
| if: matrix.os == 'NetBSD' | |
| uses: vmactions/netbsd-vm@v1 | |
| with: | |
| usesh: true | |
| prepare: | | |
| ftp https://go.dev/dl/go${{matrix.go}}.netbsd-amd64.tar.gz | |
| mkdir /usr/local | |
| rm -fr /usr/local/go && tar -C /usr/local -xf go${{matrix.go}}.netbsd-amd64.tar.gz | |
| chmod +x $GITHUB_WORKSPACE/.github/scripts/bsd_tests.sh | |
| run: $GITHUB_WORKSPACE/.github/scripts/bsd_tests.sh |