luajit-src 210.7.0+fbb36bb

Sources of LuaJIT 2.1 and logic to build it.
Documentation
name: CI
on: [push, pull_request]

jobs:
  build:
    name: Build
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        target:
          - x86_64-unknown-linux-gnu
          - i686-unknown-linux-gnu
          - aarch64-unknown-linux-gnu
          - x86_64-apple-darwin
          - aarch64-apple-darwin
          - x86_64-pc-windows-gnu
          - i686-pc-windows-gnu
          - x86_64-pc-windows-msvc
        include:
          - target: x86_64-unknown-linux-gnu
            os: ubuntu-latest
          - target: i686-unknown-linux-gnu
            os: ubuntu-latest
          - target: aarch64-unknown-linux-gnu
            os: ubuntu-latest
          - target: x86_64-apple-darwin
            os: macos-latest
          - target: aarch64-apple-darwin
            os: macos-latest
          - target: x86_64-pc-windows-gnu
            os: ubuntu-latest
          - target: i686-pc-windows-gnu
            os: ubuntu-latest
          - target: x86_64-pc-windows-msvc
            os: windows-latest
    steps:
      - uses: actions/checkout@main
        with:
          submodules: true
      - uses: dtolnay/rust-toolchain@stable
        with:
          target: ${{ matrix.target }}
      - name: Install GCC (i686-unknown-linux-gnu)
        if: ${{ matrix.target == 'i686-unknown-linux-gnu' }}
        run: |
          sudo apt-get update -y
          sudo apt-get install -y --no-install-recommends gcc-multilib
        shell: bash
      - name: Install GCC (aarch64-unknown-linux-gnu)
        if: ${{ matrix.target == 'aarch64-unknown-linux-gnu' }}
        run: |
          sudo apt-get update -y
          sudo apt-get install -y --no-install-recommends gcc-aarch64-linux-gnu libc6-dev-arm64-cross
        shell: bash
      - name: Install GCC (x86_64-pc-windows-gnu)
        if: ${{ matrix.target == 'x86_64-pc-windows-gnu' }}
        run: |
          sudo apt-get update -y
          sudo apt-get install -y --no-install-recommends gcc-mingw-w64-x86-64
        shell: bash
      - name: Install GCC (i686-pc-windows-gnu)
        if: ${{ matrix.target == 'i686-pc-windows-gnu' }}
        run: |
          sudo apt-get update -y
          sudo apt-get install -y --no-install-recommends gcc-mingw-w64-i686 gcc-multilib
        shell: bash
      - name: Build for ${{ matrix.target }}
        run: |
          cargo build --tests --manifest-path testcrate/Cargo.toml --target ${{ matrix.target }} --release
        shell: bash

  test:
    name: Test
    runs-on: ${{ matrix.os }}
    needs: build
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        include:
          - os: ubuntu-latest
            target: x86_64-unknown-linux-gnu
          - os: macos-latest
            target: x86_64-apple-darwin
          - os: windows-latest
            target: x86_64-pc-windows-msvc
    steps:
      - uses: actions/checkout@main
        with:
          submodules: true
      - uses: dtolnay/rust-toolchain@stable
        with:
          target: ${{ matrix.target }}
      - name: Run tests
        run: |
          cargo test --manifest-path testcrate/Cargo.toml --release
          cargo test --manifest-path testcrate/Cargo.toml --release --features lua52compat
        shell: bash

  rustfmt:
    name: Rustfmt
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@main
        with:
          submodules: true
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt
      - run: cargo fmt -- --check