#
# This script builds the FLUID User Handbook as html directory and pdf
# document on a Linux machine.
#

name: 'Build FLUID User Manual.'

# This job must be called explicitly form the 'Actions' tab in GitHub
on: [workflow_dispatch]

permissions:
  contents: read

jobs:
  build-html:
    runs-on: ubuntu-latest

## This can also run on macOS, but BasicTeX will not generate the pdf document
#    runs-on: macos-latest

    steps:
    - uses: actions/checkout@v4

    - name: Install prerequisites
      run: |
        sudo apt-get update -y
        sudo apt-get install -y libwayland-dev wayland-protocols libdbus-1-dev libxkbcommon-dev libpango1.0-dev libgtk-3-dev
        sudo apt-get install -y doxygen
        sudo apt-get install -y doxygen-latex
        sudo apt-get install -y xvfb
        sudo apt-get install -y x11-xkb-utils xfonts-100dpi xfonts-75dpi xfonts-scalable xfonts-cyrillic x11-apps

## Use the following line when 1.10.0 becomes available on Ubuntu. On 4/14/24 it's 1.9.2
#        sudo apt-get install -y doxygen=1.10.0

## xvfb creates a headless X server for us, so we can render snapshot with FLUID

## We need at least Doxygen on macOS. BasicTeX is not enough though.
#        brew install doxygen
#        brew install --cask basictex
#        eval "$(/usr/libexec/path_helper)"

    - name: Create Build Environment
      run: cmake -E make_directory ${{github.workspace}}/build

    - name: Configure CMake
      shell: bash
      working-directory: ${{github.workspace}}/build
      run: |
        cmake $GITHUB_WORKSPACE \
          -D CMAKE_BUILD_TYPE=Debug \
          -D CMAKE_CXX_STANDARD=11 \
          -D CMAKE_CXX_EXTENSIONS=OFF \
          -D CMAKE_C_FLAGS_INIT="-Wall -Wunused" \
          -D CMAKE_CXX_FLAGS_INIT="-Wall -Wunused -Wsuggest-override" \
          -D FLTK_BUILD_FLTK_OPTIONS=OFF \
          -D FLTK_BUILD_FLUID=ON \
          -D FLTK_BUILD_GL=OFF \
          -D FLTK_BUILD_TEST=OFF \
          -D FLTK_BUILD_FLUID_DOCS=ON

    - name: Build
      working-directory: ${{github.workspace}}/build
      shell: bash
      run: |
        Xvfb :19 -screen 0 1024x768x16 &
        export DISPLAY=:19
        cmake --build . --config Debug --target fluid_docs
        cmake --build . --config Debug --target fluid_pdf
    - name: Store html docs as an artifact
      uses: actions/upload-artifact@v4
      with:
        name: fluid-html
        path: build/fluid/documentation/html
        retention-days: 3
        overwrite: true
    - name: Store pdf docs as an artifact
      uses: actions/upload-artifact@v4
      with:
        name: fluid-pdf
        path: build/fluid/documentation/fluid.pdf
        retention-days: 3
        overwrite: true

