name: build

on:
  push:
    branches: [ main ]
  pull_request:

env:
  GO_VERSION: "~1.23.1"

jobs:
  generate-and-test-x86_64:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repo
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
      - name: Setup Go
        uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5
        with:
          go-version: ${{ env.GO_VERSION }}
          check-latest: true
          cache-dependency-path: "**/go.sum"
      - name: Install build dependencies
        run: sudo apt-get update && sudo apt-get install -y clang llvm libbpf-dev
      - name: Architecture
        run: |
          uname -p;
          clang --version;
      - run: make test
      - run: sudo make test-ebpf
      - run: make check-clean-work-tree
  generate-and-test-arm64:
    runs-on: macos-latest
    steps:
      - name: Checkout Repo
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
      - name: Setup Go
        uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5
        with:
          go-version: ${{ env.GO_VERSION }}
          check-latest: true
          cache-dependency-path: "**/go.sum"
      - name: Install build dependencies
        run: |
          brew update && brew install llvm
          echo "PATH=/opt/homebrew/opt/llvm/bin:$PATH" >> $GITHUB_ENV;
          echo "LDFLAGS=-L/opt/homebrew/opt/llvm/lib -L/opt/homebrew/opt/llvm/lib/c++ -Wl,-rpath,/opt/homebrew/opt/llvm/lib/c++" >> $GITHUB_ENV;
          echo "CPPFLAGS=-I/opt/homebrew/opt/llvm/include" >> $GITHUB_ENV;
      - name: Architecture
        run: |
          uname -p;
          clang --version;
      - run: make test
      - run: make check-clean-work-tree
  docker-build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repo
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
      - name: Build auto-instrumentation
        run: |
          make docker-build
  offsets:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repo
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
      - name: Setup Go
        uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5
        with:
          go-version: ${{ env.GO_VERSION }}
          check-latest: true
          cache-dependency-path: "**/go.sum"
      - name: Update offsets
        run: make offsets
      - name: Check diff
        run: make check-clean-work-tree
