Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Doxygen updates from develop #76

Merged
merged 17 commits into from
Nov 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions .github/scripts/build-gh-pages.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
#!/bin/bash


set -e

#Run with sudo if not root user
SUDO=""
if [ $(id -u) -ne 0 ]; then
SUDO="sudo"
fi

echo "Installing apt packages"
$SUDO apt-get update >/dev/null
$SUDO apt-get install -y wget git cmake graphviz >/dev/null

echo "Installing Doxygen"
wget -q https://www.doxygen.nl/files/doxygen-1.12.0.linux.bin.tar.gz
tar -xzf doxygen-1.12.0.linux.bin.tar.gz >/dev/null
export PATH="$PWD/doxygen-1.12.0/bin:$PATH"

#List of branches to build docs for
#TODO: Remove doxygen branch once tested
BRANCHES="master develop"

build-docs() (
git checkout $1

#The CMake Doxygen stuff is weird, and doesn't
#properly clean up and/or overwrite old outputs.
#So to make sure we get the correct doc configs,
#we need to delete everything
#We put the docs themselves into a hidden directory
#so they don't get included in this glob
rm -rf ./*

cmake ../ -DBUILD_DOCS=ON -DDOCS_ONLY=ON \
-DFENIX_DOCS_MAN=OFF -DFENIX_BRANCH=$1 \
-DFENIX_DOCS_OUTPUT=$PWD/.docs
make docs
)

git clone https://www.github.com/sandialabs/Fenix.git
mkdir Fenix/build
cd Fenix/build

for branch in $BRANCHES; do
echo "Building docs for $branch"

#TODO: Fail if any branch fails to build,
# once the develop and master branches have doxygen
# merged in
build-docs $branch || true

echo
echo
done

if [ -n "$GITHUB_ENV" ]; then
echo "DOCS_DIR=$PWD/.docs" >> $GITHUB_ENV
fi
39 changes: 39 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Publish GH Pages

on:
push:
branches:
- master
- develop

#Only one of this workflow runs at a time
concurrency:
group: docs
cancel-in-progress: true

jobs:
build-pages:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Build pages
run: /bin/bash .github/scripts/build-gh-pages.sh

- name: Upload documentation artifact
uses: actions/upload-pages-artifact@v3
with:
path: ${{ env.DOCS_DIR }}

deploy-docs:
needs: build-pages
runs-on: ubuntu-latest
permissions:
pages: write
id-token: write

steps:
- name: Deploy documentation to GH Pages
uses: actions/deploy-pages@v4

35 changes: 20 additions & 15 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,37 +16,42 @@ set(FENIX_VERSION_MAJOR 1)
set(FENIX_VERSION_MINOR 0)

option(BUILD_EXAMPLES "Builds example programs from the examples directory" OFF)
option(BUILD_TESTING "Builds tests and test modes of files" ON)

option(BUILD_TESTING "Builds tests and test modes of files" ON)
option(BUILD_DOCS "Builds documentation if is doxygen found" ON)
option(DOCS_ONLY "Only build documentation" OFF)

#Solves an issue with some system environments putting their MPI headers before
#the headers CMake includes. Forces non-system MPI headers when incorrect headers
#detected in include path.
option(FENIX_SYSTEM_INC_FIX "Attempts to force overriding any system MPI headers" ON)
option(FENIX_PROPAGATE_INC_FIX "Attempt overriding system MPI headers in linking projects" ON)

find_package(MPI REQUIRED)

if(${FENIX_SYSTEM_INC_FIX})
include(cmake/systemMPIOverride.cmake)
endif()
if(NOT DOCS_ONLY)
find_package(MPI REQUIRED)

if(${FENIX_SYSTEM_INC_FIX})
include(cmake/systemMPIOverride.cmake)
endif()

add_subdirectory(src)
add_subdirectory(src)

include(CTest)
list(APPEND MPIEXEC_PREFLAGS "--with-ft;mpi")

include(CTest)
list(APPEND MPIEXEC_PREFLAGS "--with-ft;mpi")
if(BUILD_EXAMPLES)
add_subdirectory(examples)
endif()

if(BUILD_EXAMPLES)
add_subdirectory(examples)
endif()
if(BUILD_TESTING)
add_subdirectory(test)
endif()


if(BUILD_TESTING)
add_subdirectory(test)
endif()

if(BUILD_DOCS)
add_subdirectory(doc)
endif()

configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/include/fenix-config.h.in
Expand Down
39 changes: 39 additions & 0 deletions doc/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
find_package(Doxygen)

set(FENIX_DOCS_OUTPUT ${CMAKE_CURRENT_BINARY_DIR} CACHE PATH "Documentation output directory")
set(FENIX_DOCS_MAN "YES" CACHE BOOL "Option to disable man page generation for CI builds")
set(FENIX_BRANCH "local" CACHE BOOL "Git branch being documented, or local if not building for Github Pages")

if(NOT DOXYGEN_FOUND)
message(STATUS "Doxygen not found, `make docs` disabled")
return()
endif()

list(APPEND DOXYGEN_EXAMPLE_PATH markdown)
list(APPEND DOXYGEN_IMAGE_PATH images)

set(DOXYGEN_USE_MDFILE_AS_MAINPAGE markdown/Introduction.md)
set(DOXYGEN_LAYOUT_FILE DoxygenLayout.xml)
set(DOXYGEN_OUTPUT_DIRECTORY ${FENIX_DOCS_OUTPUT})

set(DOXYGEN_GENERATE_MAN ${FENIX_DOCS_MAN})

set(DOXYGEN_QUIET YES)
set(DOXYGEN_WARN_IF_UNDOCUMENTED NO)
set(DOXYGEN_WARN_IF_DOC_ERROR YES)
set(DOXYGEN_WARN_NO_PARAMDOC YES)
set(DOXYGEN_SHOW_INCLUDE_FILES NO)
set(DOXYGEN_WARN_IF_UNDOC_ENUM_VAL NO)

list(APPEND DOXYGEN_ALIASES "returnstatus=@return FENIX_SUCCESS if successful, any [return code](@ref ReturnCodes) otherwise.")
list(APPEND DOXYGEN_ALIASES "unimplemented=@qualifier UNIMPLEMENTED @brief @htmlonly <span class=\\\"mlabel\\\"> @endhtmlonly UNIMPLEMENTED @htmlonly </span> @endhtmlonly")

add_subdirectory(html)

doxygen_add_docs(docs
markdown/Introduction.md fake_init.h ../include ../src
ALL
COMMENT "Generate Fenix documentation")
message(STATUS "Run `make docs` to build documentation")

install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/man DESTINATION ${CMAKE_INSTALL_PREFIX})
Loading
Loading