name: Build

on:
  pull_request:
  push:
    branches:
      - '*'
    tags:
      - '!v*'

defaults:
  run:
    shell: bash

jobs:
  cmake-builds:
    uses: ./.github/workflows/cmake-builds.yml

  makefile:
    runs-on: ${{ matrix.os }}
    strategy:
      #-
      # The makefile builds DO NOT produce artifacts (*). Using the "-latest"
      # runner images is sufficient.
      #
      # (*) "artefact" for the rest of the Anglosphere
      #-

      matrix:
        os: [macos-latest, ubuntu-latest]

        simulators:
          # These are supposed to match ALL in makefile.
          # Each job builds ~15 simulators.
          - pdp1 pdp4 pdp6 pdp7 pdp8 pdp9 pdp10 pdp10-ka pdp10-ki pdp10-kl pdp10-ks pdp11 pdp15 vax 
          - microvax2 vax730 vax750 vax780 vax8200 vax8600 microvax2000 infoserver100 infoserver150vxt microvax3100 microvax3100e vaxstation3100m30 vaxstation3100m38 
          - microvax3100m80 vaxstation4000vlc infoserver1000 nova eclipse hp2100 hp3000 i1401 i1620 s3 altair altairz80 gri i7094 
          - id16 id32 sds lgp h316 cdc1700 swtp6800mp-a swtp6800mp-a2 tx-0 ssem b5500 sage pdq3 alpha
          - besm6 imlac tt2500 microvax3900 microvax1 rtvax1000 vaxstation3100m76 vaxstation4000m60
          - scelbi 3b2 i701 i704 i7010 i7070 i7080 i7090 sigma uc15 i650 sel32 intel-mds ibm1130
    steps:
      - uses: actions/checkout@v4
      ## Workaround for remnant symlinks in /usr/local pointing back to
      ## macOS frameworks.
      ##
      ## Future: Will have to keep an eye on SDL_ttf's Python dependency
      ## so that the correct/appropriate Python version is removed.
      - name: Remnant symlink cleanup (macOS)
        if: ${{runner.os == 'macOS'}}
        run: |
          brew unlink python@3 || true
          brew uninstall --ignore-dependencies python@3 || true
          brew unlink python@3.12 || true
          brew uninstall --ignore-dependencies python@3.12 || true
          for f in $(find /usr/local/bin -type l -print); do \
            (readlink $f | grep -q -s "/Library") && echo Removing "$f" && rm -f "$f"; \
          done || exit 0
      ## Install our regular dependencies.
      - name: Install dependencies (macOS)
        if: ${{runner.os == 'macOS'}}
        run: sh -ex .travis/deps.sh osx
      - name: Install dependencies (Linux)
        if: ${{runner.os == 'Linux'}}
        run: sh -ex .travis/deps.sh linux
      - name: makefile build
        env:
          SIM: ${{matrix.simulators}}
        run: make LTO=1 OPTIMIZE=-O3 $SIM
