Skip to content

Commit 8bea645

Browse files
committed
Update Dockerfiles, workflows, and documentation
- Updated Dockerfiles for arm64 and armhf architectures - Updated GitHub Actions workflows for CMake and Doxygen - Updated documentation CMakeLists.txt - Added new Doxyfile for documentation generation
1 parent 7fff5f8 commit 8bea645

File tree

7 files changed

+2855
-41
lines changed

7 files changed

+2855
-41
lines changed

.github/docker/Dockerfile.arm64

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ RUN apt-get update && \
1919
fakeroot \
2020
doxygen \
2121
doxygen-latex \
22-
graphviz
23-
22+
graphviz \
23+
&& rm -rf /var/lib/apt/lists/*
2424

2525
WORKDIR /workspace
2626
COPY . /workspace

.github/docker/Dockerfile.armhf

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ RUN apt-get update && \
1919
fakeroot \
2020
doxygen \
2121
doxygen-latex \
22-
graphviz
22+
graphviz \
23+
&& rm -rf /var/lib/apt/lists/*
2324

2425

2526
WORKDIR /workspace

.github/workflows/build_cmake_arm64.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Build CMake on arm64 (debian)
1+
name: Build arm64
22

33
on:
44
workflow_dispatch:

.github/workflows/build_cmake_armhf.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Build CMake on armhf (debian)
1+
name: Build armhf
22

33
on:
44
workflow_dispatch:

.github/workflows/doxygen-gh-pages.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,4 @@ jobs:
1515
github_token: ${{ secrets.GITHUB_TOKEN }}
1616
branch: gh-pages
1717
folder: docs
18-
config_file: Doxyfile
18+
config_file: doc/Doxyfile

doc/CMakeLists.txt

Lines changed: 33 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -29,46 +29,44 @@ if("${CMAKE_PROJECT_NAME}" STREQUAL "Project")
2929
endif()
3030

3131
if (PIDUINO_WITH_DOXYGEN_DOC)
32-
3332
find_package(Doxygen REQUIRED)
34-
set(DOXYGEN_README ${PROJECT_SOURCE_DIR}/README.md)
35-
set(DOXYGEN_FILE ${CMAKE_BINARY_DIR}/Doxyfile)
36-
set(DOXYGEN_MAINPAGE ${CMAKE_BINARY_DIR}/main_page.dox)
37-
38-
set(DOXYGEN_INPUT_LIST
39-
${PROJECT_SOURCE_DIR}/include/piduino/*.h
40-
)
41-
42-
set(DOXYGEN_INPUT "${CMAKE_BINARY_DIR}/main_page.dox")
43-
foreach(item ${DOXYGEN_INPUT_LIST})
44-
get_filename_component(item_dir ${item} DIRECTORY)
45-
string(APPEND DOXYGEN_INPUT " ${item_dir} ")
46-
endforeach(item ${DOXYGEN_INPUT_LIST})
33+
find_program(SED_EXECUTABLE sed)
4734

48-
#message("DOXYGEN_INPUT=${DOXYGEN_INPUT}")
35+
if(NOT SED_EXECUTABLE)
36+
message(FATAL_ERROR "sed is required but was not found. Please install sed.")
37+
endif()
4938

50-
configure_file(Doxyfile.in ${CMAKE_BINARY_DIR}/Doxyfile @ONLY)
51-
configure_file(build_main_page.sh.in ${CMAKE_BINARY_DIR}/build_main_page.sh @ONLY)
39+
set(DOXYFILE_IN ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile)
40+
set(DOXYFILE_BUILD ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
41+
# You must set the following variables to point to your project's files
42+
set(DOXY_README "${PROJECT_SOURCE_DIR}/README.md")
43+
set(DOXY_INPUT ${DOXY_README} ${PROJECT_SOURCE_DIR}/include/piduino)
44+
set(DOXY_IMAGE_PATH "${PROJECT_SOURCE_DIR}/doc/images")
45+
set(DOXY_PROJECT_LOGO "${PROJECT_SOURCE_DIR}/doc/images/PiduinoLogoSmall.png")
46+
set(DOXY_EXAMPLE_PATH "${PROJECT_SOURCE_DIR}/examples")
5247

53-
add_custom_target(main_page.dox
54-
COMMAND ${CMAKE_COMMAND} -E echo_append "Building API Documentation Main Page..."
55-
COMMAND sh ${CMAKE_BINARY_DIR}/build_main_page.sh > /dev/null
56-
COMMAND ${CMAKE_COMMAND} -E echo "Done."
57-
DEPENDS main_page_header.dox main_page_footer.dox ${PROJECT_SOURCE_DIR}/README.md
58-
)
48+
# replace placeholders in the Doxyfile for local generation
49+
add_custom_command(
50+
OUTPUT ${DOXYFILE_BUILD}
51+
COMMAND ${CMAKE_COMMAND} -E copy ${DOXYFILE_IN} ${DOXYFILE_BUILD}
52+
COMMAND ${SED_EXECUTABLE} -i 's|^HTML_OUTPUT[[:space:]]*=.*|HTML_OUTPUT = ${CMAKE_CURRENT_BINARY_DIR}/html|' ${DOXYFILE_BUILD}
53+
COMMAND ${SED_EXECUTABLE} -i 's|^INPUT[[:space:]]*=.*|INPUT = ${DOXY_INPUT}|' ${DOXYFILE_BUILD}
54+
COMMAND ${SED_EXECUTABLE} -i 's|^IMAGE_PATH[[:space:]]*=.*|IMAGE_PATH = ${DOXY_IMAGE_PATH}|' ${DOXYFILE_BUILD}
55+
COMMAND ${SED_EXECUTABLE} -i 's|^PROJECT_LOGO[[:space:]]*=.*|PROJECT_LOGO = ${DOXY_PROJECT_LOGO}|' ${DOXYFILE_BUILD}
56+
COMMAND ${SED_EXECUTABLE} -i 's|^EXAMPLE_PATH[[:space:]]*=.*|EXAMPLE_PATH = ${DOXY_EXAMPLE_PATH}|' ${DOXYFILE_BUILD}
57+
COMMAND ${SED_EXECUTABLE} -i 's|^USE_MDFILE_AS_MAINPAGE[[:space:]]*=.*|USE_MDFILE_AS_MAINPAGE = ${DOXY_README}|' ${DOXYFILE_BUILD}
58+
DEPENDS ${DOXYFILE_IN}
59+
COMMENT "Preparing Doxyfile for local documentation generation"
60+
)
5961

60-
add_custom_target(html
61-
COMMAND ${CMAKE_COMMAND} -E echo_append "Building API HTML Documentation..."
62-
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_FILE} > /dev/null
63-
COMMAND ${CMAKE_COMMAND} -E echo "Done."
64-
DEPENDS main_page.dox DoxygenLayout.xml Doxyfile.in ${DOXYGEN_INPUT_LIST}
65-
)
66-
67-
add_custom_target(doc)
68-
add_dependencies(doc main_page.dox html)
69-
70-
#message("PIDUINO_INSTALL_DOC_DIR=${PIDUINO_INSTALL_DOC_DIR}")
62+
add_custom_target(doc
63+
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYFILE_BUILD}
64+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
65+
DEPENDS ${DOXYFILE_BUILD}
66+
COMMENT "Generating API HTML documentation with Doxygen"
67+
VERBATIM
68+
)
7169

72-
install(DIRECTORY ${CMAKE_BINARY_DIR}/html/
70+
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html/
7371
DESTINATION ${PIDUINO_INSTALL_DOC_DIR}/api-manual COMPONENT doc)
7472
endif(PIDUINO_WITH_DOXYGEN_DOC)

0 commit comments

Comments
 (0)