Skip to content
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
6 changes: 3 additions & 3 deletions .github/workflows/pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ jobs:
python3 scripts/jobs_graph.py --out docs/_static/ci_graph --format svg
- name: Configure project
run: >
cmake -S . -B build -D USE_DOCS=ON
cmake -S . -B build -D USE_DOCS=ON -D PPC_BUILD_COMPONENTS=OFF
- name: Build i18n
run: |
cmake --build build -t docs_gettext -- --quiet
Expand Down Expand Up @@ -97,10 +97,10 @@ jobs:
fi
- name: CMake configure
run: |
cmake -S . -B build -DUSE_SCOREBOARD=ON
cmake -S . -B build -DUSE_SCOREBOARD=ON -DPPC_BUILD_COMPONENTS=OFF
- name: CMake build
run: |
cmake --build build --parallel -- --quiet
cmake --build build -t generate_scoreboard -- --quiet
- name: Upload artifact
uses: actions/upload-artifact@v7
with:
Expand Down
63 changes: 34 additions & 29 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,53 +1,58 @@
cmake_minimum_required( VERSION 3.25 )
cmake_minimum_required(VERSION 3.25)

if(DEFINED CMAKE_OSX_SYSROOT AND NOT EXISTS "${CMAKE_OSX_SYSROOT}")
unset(CMAKE_OSX_SYSROOT CACHE)
endif()

message( STATUS "Parallel Programming Course (PPC)" )
project(parallel_programming_course)
message(STATUS "Parallel Programming Course (PPC)")
project(parallel_programming_course LANGUAGES NONE)

############################ Scoreboard #############################
option(PPC_BUILD_COMPONENTS
"Build C++ modules, tasks, tests, and their dependencies" ON)

message( STATUS "PPC step: Setup scoreboard generator" )
# ########################### Scoreboard #############################

message(STATUS "PPC step: Setup scoreboard generator")
include(cmake/scoreboard.cmake)
add_subdirectory(scoreboard)

########################### Documentation ###########################
# ########################## Documentation ###########################

message( STATUS "PPC step: Setup documentation generation" )
message(STATUS "PPC step: Setup documentation generation")
include(cmake/sphinx.cmake)
add_subdirectory(docs)

if( USE_SCOREBOARD OR USE_DOCS )
return()
endif()
if(PPC_BUILD_COMPONENTS)
enable_language(C CXX)

############################ Configures #############################
# ########################### Configures #############################

message( STATUS "PPC step: First configures" )
include(cmake/configure.cmake)
include(cmake/modes.cmake)
include(cmake/sanitizers.cmake)
foreach(dep json libenvpp stb)
message(STATUS "PPC step: First configures")
include(cmake/configure.cmake)
include(cmake/modes.cmake)
include(cmake/sanitizers.cmake)
foreach(dep json libenvpp stb)
include(cmake/${dep}.cmake)
endforeach()
endforeach()

################# Parallel programming technologies #################
# ################ Parallel programming technologies #################

message( STATUS "PPC step: Setup parallel programming technologies" )
foreach(dep mpi openmp onetbb)
message(STATUS "PPC step: Setup parallel programming technologies")
foreach(dep mpi openmp onetbb)
include(cmake/${dep}.cmake)
endforeach()
endforeach()

######################### External projects #########################
# ######################## External projects #########################

message( STATUS "PPC step: Setup external projects" )
include(cmake/gtest.cmake)
include(cmake/benchmark.cmake)
message(STATUS "PPC step: Setup external projects")
include(cmake/gtest.cmake)
include(cmake/benchmark.cmake)

############################## Modules ##############################
# ############################# Modules ##############################

message( STATUS "PPC step: Setup modules" )
add_subdirectory(modules)
add_subdirectory(tasks)
message(STATUS "PPC step: Setup modules")
add_subdirectory(modules)
add_subdirectory(tasks)
else()
message(STATUS "PPC step: Skipping C++ components")
endif()
4 changes: 3 additions & 1 deletion docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,11 @@ pip install -r docs/requirements.txt
4. Configure the documentation build:

```bash
cmake -S . -B build -DUSE_DOCS=ON
cmake -S . -B build -DUSE_DOCS=ON -DPPC_BUILD_COMPONENTS=OFF
```

Note: `-DPPC_BUILD_COMPONENTS=OFF` could be used to configure documentation without C++ project dependencies

5. Generate API documentation with Doxygen:

```bash
Expand Down
2 changes: 2 additions & 0 deletions docs/user_guide/build.rst
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ Navigate to the project root.

- ``-D USE_FUNC_TESTS=ON`` enable functional tests.
- ``-D USE_PERF_TESTS=ON`` enable performance tests.
- ``-D PPC_BUILD_COMPONENTS=OFF`` skip C++ modules, tasks, tests, and
their dependencies, useful for docs-only or scoreboard-only configurations.
- ``-D PPC_TASKS=all`` builds every task (default). Pass one task or a semicolon list,
for example ``-D PPC_TASKS="example"``, to limit the build.
- ``-D PPC_IMPLEMENTATIONS="seq;omp"`` select implementation folders to
Expand Down
9 changes: 9 additions & 0 deletions scoreboard/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,15 @@ python main.py -o output_directory

Generates `output_directory/index.html` with the scoreboard.

To generate it through CMake without C++ project dependencies:

```bash
cmake -S . -B build -DUSE_SCOREBOARD=ON -DPPC_BUILD_COMPONENTS=OFF
cmake --build build -t generate_scoreboard
```

Note: `-DPPC_BUILD_COMPONENTS=OFF` could be used to configure documentation without C++ project dependencies

## Configuration

- `data/points-info.yml` - Task points, deadlines, penalties
Expand Down
Loading