name: GDB & gdbserver
on:
  workflow_dispatch
jobs:

  build-x86:
    name: Build GDB & gdbserver x86
    runs-on: ubuntu-latest
    container: muslcc/x86_64:i686-linux-musl
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Install dependencies
        run: sudo apk update && sudo apk add bash && sudo bash build/install_deps_alpine.sh

      - name: Install build compiler
        run: /bin/sh -c "cd / && curl -so ${ARCH}-cross.tgz ${HOST}/${ARCH}-cross.tgz && tar -xf ${ARCH}-cross.tgz && rm ${ARCH}-cross.tgz && cd ${ARCH}-cross"
        env:
            ARCH: x86_64-linux-musl
            HOST: http://musl.cc/
            TEMP: /tmp
            USER: 0

      - name: Install dependencies workaround
        run: /bin/sh -c "cd / && curl -so ${ARCH}-cross.tgz ${HOST}/${ARCH}-cross.tgz && tar -xf ${ARCH}-cross.tgz && rm ${ARCH}-cross.tgz && cd ${ARCH}-cross"
        env:
            ARCH: i686-linux-musl
            HOST: http://musl.cc/
            TEMP: /tmp
            USER: 0

      - name: Build GDB
        id: build_gdb
        run: |
          export PATH="$PATH:/i686-linux-musl-cross/bin"
          $GITHUB_WORKSPACE/build/targets/build_gdb.sh x86
        
      - name: Upload artifacts
        uses: actions/upload-artifact@v2
        with:
            name: ${{ steps.build_gdb.outputs.PACKAGED_NAME }}
            path: ${{ steps.build_gdb.outputs.PACKAGED_NAME_PATH }}

  build-x86_64:
    name: Build GDB & gdbserver x86_64
    runs-on: ubuntu-latest
    container: muslcc/x86_64:x86_64-linux-musl
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Install dependencies
        run: sudo apk update && sudo apk add bash && sudo bash build/install_deps_alpine.sh

      - name: Install build compiler
        run: /bin/sh -c "cd / && curl -so ${ARCH}-cross.tgz ${HOST}/${ARCH}-cross.tgz && tar -xf ${ARCH}-cross.tgz && rm ${ARCH}-cross.tgz && cd ${ARCH}-cross"
        env:
            ARCH: x86_64-linux-musl
            HOST: http://musl.cc/
            TEMP: /tmp
            USER: 0

      - name: Install dependencies workaround
        run: /bin/sh -c "cd / && curl -so ${ARCH}-cross.tgz ${HOST}/${ARCH}-cross.tgz && tar -xf ${ARCH}-cross.tgz && rm ${ARCH}-cross.tgz && cd ${ARCH}-cross"
        env:
            ARCH: x86_64-linux-musl
            HOST: http://musl.cc/
            TEMP: /tmp
            USER: 0

      - name: Build GDB
        id: build_gdb
        run: |
          export PATH="$PATH:/x86_64-linux-musl-cross/bin"
          $GITHUB_WORKSPACE/build/targets/build_gdb.sh x86_64
        
      - name: Upload artifacts
        uses: actions/upload-artifact@v2
        with:
            name: ${{ steps.build_gdb.outputs.PACKAGED_NAME }}
            path: ${{ steps.build_gdb.outputs.PACKAGED_NAME_PATH }}


  build-armhf:
    name: Build GDB & gdbserver ARMHF
    runs-on: ubuntu-latest
    container: muslcc/x86_64:arm-linux-musleabihf
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Install dependencies
        run: sudo apk update && sudo apk add bash && sudo bash build/install_deps_alpine.sh

      - name: Install build compiler
        run: /bin/sh -c "cd / && curl -so ${ARCH}-cross.tgz ${HOST}/${ARCH}-cross.tgz && tar -xf ${ARCH}-cross.tgz && rm ${ARCH}-cross.tgz && cd ${ARCH}-cross"
        env:
            ARCH: x86_64-linux-musl
            HOST: http://musl.cc/
            TEMP: /tmp
            USER: 0

      - name: Install dependencies workaround
        run: /bin/sh -c "cd / && curl -so ${ARCH}-cross.tgz ${HOST}/${ARCH}-cross.tgz && tar -xf ${ARCH}-cross.tgz && rm ${ARCH}-cross.tgz && cd ${ARCH}-cross"
        env:
            ARCH: arm-linux-musleabihf
            HOST: http://musl.cc/
            TEMP: /tmp
            USER: 0

      - name: Build gdb
        id: build_gdb
        run: |
          export PATH="$PATH:/arm-linux-musleabihf-cross/bin"
          $GITHUB_WORKSPACE/build/targets/build_gdb.sh armhf
        
      - name: Upload artifacts
        uses: actions/upload-artifact@v2
        with:
            name: ${{ steps.build_gdb.outputs.PACKAGED_NAME }}
            path: ${{ steps.build_gdb.outputs.PACKAGED_NAME_PATH }}


  build-aarch64:
    name: Build GDB & gdbserver AARCH64
    runs-on: ubuntu-latest
    container: muslcc/x86_64:aarch64-linux-musl
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Install dependencies
        run: sudo apk update && sudo apk add bash && sudo bash build/install_deps_alpine.sh

      - name: Install build compiler
        run: /bin/sh -c "cd / && curl -so ${ARCH}-cross.tgz ${HOST}/${ARCH}-cross.tgz && tar -xf ${ARCH}-cross.tgz && rm ${ARCH}-cross.tgz && cd ${ARCH}-cross"
        env:
            ARCH: x86_64-linux-musl
            HOST: http://musl.cc/
            TEMP: /tmp
            USER: 0

      - name: Install dependencies workaround
        run: /bin/sh -c "cd / && curl -so ${ARCH}-cross.tgz ${HOST}/${ARCH}-cross.tgz && tar -xf ${ARCH}-cross.tgz && rm ${ARCH}-cross.tgz && cd ${ARCH}-cross"
        env:
            ARCH: aarch64-linux-musl
            HOST: http://musl.cc/
            TEMP: /tmp
            USER: 0

      - name: Patch headers
        run: |
          patch /aarch64-linux-musl-cross/aarch64-linux-musl/include/asm/sigcontext.h < $GITHUB_WORKSPACE/patches/gdb/gdb-aarch64-header-sigcontext-fix.patch

      - name: Build GDB
        id: build_gdb
        run: |
          export PATH="$PATH:/aarch64-linux-musl-cross/bin"
          $GITHUB_WORKSPACE/build/targets/build_gdb.sh aarch64
        
      - name: Upload artifacts
        uses: actions/upload-artifact@v2
        with:
            name: ${{ steps.build_gdb.outputs.PACKAGED_NAME }}
            path: ${{ steps.build_gdb.outputs.PACKAGED_NAME_PATH }}