fltk/.github/workflows/build_fluid_docs.yml

85 lines
2.6 KiB
YAML

#
# 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