# Gitlab CI template for building MicroPython for RPi Pico

# use image: https://hub.docker.com/r/micropython/build-micropython-arm for x86 runners
# the image below is based on micropython/Dockerfile and is intended for ARM runners
image: opencube-micropython-build:latest

variables:
  GIT_STRATEGY: clone # always do a clean build
  GIT_DEPTH: 10
  GIT_SUBMODULE_STRATEGY: normal
  GIT_SUBMODULE_DEPTH: 1

build micropython firmware:
  stage: build
  script:
    - make -C micropython/mpy/ports/rp2 submodules
    # HACK: patch a bug in Pico SDK (https://github.com/raspberrypi/pico-sdk/issues/737)
    - patch -p1 --forward -i micropython/timer-bug.patch
    # HACK: add a separate OpenCube board with slower flash clocks
    - patch -p1 --forward -i micropython/opencube-board.patch
    - make -C micropython/mpy/mpy-cross -j $(nproc)
    - make -C micropython/mpy/ports/rp2 BOARD=OPENCUBE clean
    - make -C micropython/mpy/ports/rp2 BOARD=OPENCUBE USER_C_MODULES=$(pwd)/micropython/modules/micropython.cmake -j $(nproc)
    - cp micropython/mpy/ports/rp2/build-OPENCUBE/firmware.uf2 opencube_micropython_without_pylibs.uf2
    - make -C micropython/mpy/ports/rp2 BOARD=OPENCUBE clean
    - make -C micropython/mpy/ports/rp2 BOARD=OPENCUBE USER_C_MODULES=$(pwd)/micropython/modules/micropython.cmake FROZEN_MANIFEST=$(pwd)/micropython/frozen_manifest.py -j $(nproc)
    - cp micropython/mpy/ports/rp2/build-OPENCUBE/firmware.uf2 opencube_micropython_with_pylibs.uf2
  artifacts:
    paths:
      - opencube_micropython_without_pylibs.uf2
      - opencube_micropython_with_pylibs.uf2

build sensor firmwares:
  stage: build
  script:
    - make -f makefile.ci -C oc_sensors -j $(nproc)
  artifacts:
    paths:
      - oc_sensors/*.elf
      - oc_sensors/*.bin