stages:
  - Generate Stub and Versions
  - Generate Version Files
  - Compile Sources
  - Link
  - Generate ISO
  - Generate Sources List
  - Generate Documentation

compile_stub:
  stage: Generate Stub and Versions
  script: 
    - chmod +x ./compile_stub.sh
    - ./compile_stub.sh
  artifacts:
    paths:
      - lib/stub.o

vergen:
  stage: Generate Stub and Versions
  script: 
    - chmod +x ./compile_vergen.sh
    - ./compile_vergen.sh
  artifacts:
    paths:
      - release/*.svg
      - src/include/asuro.pas

compile_sources:
  stage: Compile Sources
  script:
    - chmod +x ./compile_sources.sh
    - ./compile_sources.sh
  artifacts:
    paths:
      - lib/*.o
  dependencies:
    - compile_stub
    - vergen
  needs:
    - vergen
    - compile_stub

link:
  stage: Link
  script:
    - chmod +x ./compile_link.sh
    - ./compile_link.sh
  artifacts:
    paths:
      - bin/kernel.bin
  dependencies:
    - compile_sources
  needs:
    - compile_sources

isogen:
  stage: Generate ISO
  script:
    - chmod +x ./compile_isogen.sh
    - ./compile_isogen.sh
    - chmod +x ./compile_sumgen.sh
    - ./compile_sumgen.sh
  artifacts:
    paths:
      - ./Asuro.iso
      - ./release/checksum.svg
  dependencies:
    - link
  needs:
    - link

sourcelist:
  stage: Generate Sources List
  script:
    - chmod +x ./compile_sourcelist.sh
    - ./compile_sourcelist.sh
  artifacts:
    paths:
      - ./sources.list
  dependencies:
    - vergen
  needs:
    - vergen

docgen:
  stage: Generate Documentation
  script:
    - chmod +x ./compile_docs.sh
    - ./compile_docs.sh
  artifacts:
    paths:
      - ./doc/*
  dependencies:
    - vergen
    - sourcelist
  needs:
    - vergen
    - sourcelist