lua-src 550.1.0

Sources of Lua 5.1-5.5 and logic to build them.
Documentation
name: 'Setup various CI dependencies'
description: 'Setup Rust target and necessary dependencies for WASI compilation'
inputs:
  target:
    description: 'rust target being set up'
    required: true
  emscripten_sdk:
    description: 'emsdk version to install'
    default: latest
  wasi_sdk:
    description: 'wasi-sdk version to install'
    default: 32
  wasmtime:
    description: 'wasmtime version to install'
    default: v43.0.0

runs:
  using: composite
  steps:
    - uses: dtolnay/rust-toolchain@stable
      with:
        target: ${{ inputs.target }}
    - run: echo "CARGO_BUILD_TARGET=${{ matrix.target }}" >> $GITHUB_ENV
      shell: bash

    - name: Install GCC (x86_64-unknown-linux-musl)
      if: ${{ inputs.target == 'x86_64-unknown-linux-musl' }}
      run: |
        sudo apt-get update -y
        sudo apt-get install -y --no-install-recommends musl-dev musl-tools
      shell: bash
    - name: Install GCC (i686-unknown-linux-gnu)
      if: ${{ inputs.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: ${{ inputs.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 (arm-unknown-linux-gnueabi)
      if: ${{ inputs.target == 'arm-unknown-linux-gnueabi' }}
      run: |
        sudo apt-get update -y
        sudo apt-get install -y --no-install-recommends gcc-arm-linux-gnueabi libc6-dev-armel-cross
      shell: bash
    - name: Install GCC (x86_64-pc-windows-gnu)
      if: ${{ inputs.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 emscripten (wasm32-unknown-emscripten)
      if: ${{ inputs.target == 'wasm32-unknown-emscripten' }}
      run: |
        EM_CONFIG=$HOME/emsdk/.emscripten
        echo "EM_CONFIG=$EM_CONFIG" >> $GITHUB_ENV
        curl -L -o ~/emsdk-main.tar.gz https://github.com/emscripten-core/emsdk/archive/main.tar.gz
        tar -C ~ -xf ~/emsdk-main.tar.gz
        mv ~/emsdk-main ~/emsdk
        cd ~/emsdk
        ./emsdk install ${{ inputs.emscripten_sdk }}
        ./emsdk activate ${{ inputs.emscripten_sdk }}
        source ./emsdk_env.sh
        echo "EMSDK=$EMSDK" >> $GITHUB_ENV
        echo "EMSDK_NODE=$EMSDK_NODE" >> $GITHUB_ENV
        echo "CC_wasm32_unknown_emscripten=$EMSDK/upstream/emscripten/emcc" >> $GITHUB_ENV
        echo "CXX_wasm32_unknown_emscripten=$EMSDK/upstream/emscripten/em++" >> $GITHUB_ENV
        echo "AR_wasm32_unknown_emscripten=$EMSDK/upstream/emscripten/emar" >> $GITHUB_ENV
        echo "CARGO_TARGET_WASM32_UNKNOWN_EMSCRIPTEN_LINKER=$EMSDK/upstream/emscripten/emcc" >> $GITHUB_ENV
        echo "CARGO_TARGET_WASM32_UNKNOWN_EMSCRIPTEN_RUNNER=$EMSDK_NODE" >> $GITHUB_ENV
      shell: bash

    - name: Install wasi-sdk/Wasmtime (wasm32-wasip2)
      if: ${{ inputs.target == 'wasm32-wasip2' }}
      working-directory: ${{ runner.tool_cache }}
      run: |
        curl -LO https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${{ inputs.wasi_sdk }}/wasi-sdk-${{ inputs.wasi_sdk }}.0-x86_64-linux.tar.gz
        tar xf wasi-sdk-${{ inputs.wasi_sdk }}.0-x86_64-linux.tar.gz
        WASI_SDK_PATH=`pwd`/wasi-sdk-${{ inputs.wasi_sdk }}.0-x86_64-linux
        echo "WASI_SDK_PATH=$WASI_SDK_PATH" >> $GITHUB_ENV
        echo "CC_wasm32_wasip2=$WASI_SDK_PATH/bin/clang" >> $GITHUB_ENV
        echo "CARGO_TARGET_WASM32_WASIP2_LINKER=$WASI_SDK_PATH/bin/clang" >> $GITHUB_ENV
        echo "CARGO_TARGET_WASM32_WASIP2_RUSTFLAGS=-Clink-arg=-Wl,--export=cabi_realloc" >> $GITHUB_ENV

        curl -LO https://github.com/bytecodealliance/wasmtime/releases/download/${{ inputs.wasmtime }}/wasmtime-${{ inputs.wasmtime }}-x86_64-linux.tar.xz
        tar xf wasmtime-${{ inputs.wasmtime }}-x86_64-linux.tar.xz
        echo "CARGO_TARGET_WASM32_WASIP2_RUNNER=`pwd`/wasmtime-${{ inputs.wasmtime }}-x86_64-linux/wasmtime -W exceptions" >> $GITHUB_ENV
      shell: bash