# This file controls GitLab CI (Continuous Integration) for FLTK.
#
# It serves two purposes:
#
# (1) Continuously building FLTK with one or more build systems.
# (2) Generating current HTML documentation and putting it online.
#
# The documentation will be viewable at:
#
# https://fltk.gitlab.io/fltk/
#
# Details of this script:
#
# use the official gcc image, based on debian
# can use versions as well, like gcc:5.2
# see https://hub.docker.com/_/gcc/

image: gcc

stages:
  - build
  - deploy

# Build with autoconf/make (including Pango and Cairo)

# Disabled for regular builds after commits to save build time: "only schedules"
# Note: Build time limits on "GitLab Free" effective Oct 2020: 400 minutes per month

build-autotools:
  stage: build
  only:
    - schedules
  # install the necessary build tools
  before_script:
    - apt update && apt -y install make autoconf man
    - apt -y install freeglut3-dev libfontconfig-dev libxft-dev libglew-dev
    - apt -y install libxcursor-dev libxinerama-dev libasound2-dev
    - apt -y install libpango1.0-dev libcairo2-dev
  script:
    - make clean
    - ./configure --enable-pango --enable-cairo
    - time make -j3
    - cd examples && time make
  artifacts:
    paths:
      - lib/
      - test/cairo_test
      - test/glpuzzle
      - test/unittests
      - test/fltk-versions

# Build with CMake and Ninja (with pango, cairo, building examples)

build-cmake:
  stage: build
  only:
    - master
  # install the necessary build tools
  before_script:
    - date
    - apt update && apt -y install cmake ninja-build
    - apt -y install freeglut3-dev libfontconfig-dev libxft-dev libglew-dev
    - apt -y install libxcursor-dev libxinerama-dev libasound2-dev
    - apt -y install libpango1.0-dev libcairo2-dev
  script:
    - date
    - gcc --version
    - mkdir build && cd build
    - cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DFLTK_BUILD_EXAMPLES=ON -DOPTION_USE_PANGO=ON -DOPTION_CAIRO=ON ..
    - date
    - time ninja
    - date
  artifacts:
    paths:
      - build/lib/
      - build/bin/

# Generate and install HTML documentation

pages:
  stage: deploy
  only:
    - master
  # run this job (documentation) independent of the build jobs (empty "needs" clause)
  needs: []
  # install the necessary build tools
  before_script:
    - date
    - apt update && apt -y install make autoconf man doxygen
  script:
    - date
    - make clean
    - cd documentation
    - date
    - make && make html
    - date
    - cd ..
    - mkdir -p public/
    - mv documentation/html/* public/
    - date
  artifacts:
    paths:
      - public
