diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index a92545fc1..1f3db0d88 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -41,8 +41,7 @@ jobs: run: > cmake -S . -B build -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache - -G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON - -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON + -G Ninja -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON -D CMAKE_BUILD_TYPE=RELEASE env: CC: gcc-14 diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7e0151860..f24e3157b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -57,8 +57,7 @@ jobs: run: > cmake -S . -B build -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache - -G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON - -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON + -G Ninja -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON -D CMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=install env: CC: gcc-14 @@ -211,8 +210,7 @@ jobs: run: > cmake -S . -B build -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache - -G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON - -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON + -G Ninja -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON -D CMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=install env: CC: clang-20 @@ -363,8 +361,7 @@ jobs: run: > cmake -S . -B build -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache - -G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON - -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON + -G Ninja -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON -D CMAKE_BUILD_TYPE=RELEASE -D ENABLE_ADDRESS_SANITIZER=ON -D ENABLE_UB_SANITIZER=ON -D CMAKE_INSTALL_PREFIX=install env: @@ -399,7 +396,8 @@ jobs: - name: Setup environment run: | sudo apt-get update - sudo apt-get install --no-install-recommends -y ninja-build libmpich-dev python3-pip valgrind + sudo apt-get install --no-install-recommends -y ninja-build python3-pip valgrind \ + openmpi-bin openmpi-common libopenmpi-dev wget https://apt.llvm.org/llvm.sh chmod u+x llvm.sh sudo ./llvm.sh 20 all @@ -459,7 +457,8 @@ jobs: - name: Setup environment run: | sudo apt-get update - sudo apt-get install --no-install-recommends -y ninja-build libmpich-dev python3-pip valgrind + sudo apt-get install --no-install-recommends -y ninja-build python3-pip valgrind \ + openmpi-bin openmpi-common libopenmpi-dev wget https://apt.llvm.org/llvm.sh chmod u+x llvm.sh sudo ./llvm.sh 20 all @@ -518,8 +517,7 @@ jobs: run: > cmake -S . -B build -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache - -G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON - -DCMAKE_C_FLAGS="-I$(brew --prefix)/opt/libomp/include" + -G Ninja -DCMAKE_C_FLAGS="-I$(brew --prefix)/opt/libomp/include" -DCMAKE_CXX_FLAGS="-I$(brew --prefix)/opt/libomp/include" -D CMAKE_BUILD_TYPE=RELEASE -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON -DCMAKE_INSTALL_PREFIX=install @@ -666,7 +664,6 @@ jobs: run: > cmake -S . -B build -G Ninja -D CMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache - -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON -D CMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=install - name: Build project @@ -816,7 +813,6 @@ jobs: run: > cmake -S . -B build -G Ninja -D CMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache - -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON -D CMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=install env: @@ -944,11 +940,8 @@ jobs: run: > cmake -S . -B build -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache - -G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON - -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON - -D CMAKE_BUILD_TYPE=RELEASE - -D CMAKE_VERBOSE_MAKEFILE=ON - -D USE_COVERAGE=ON + -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON -D CMAKE_BUILD_TYPE=RELEASE + -D CMAKE_VERBOSE_MAKEFILE=ON -D USE_COVERAGE=ON - name: Build project run: | cmake --build build --parallel diff --git a/.github/workflows/static-analysis-pr.yml b/.github/workflows/static-analysis-pr.yml index 251431684..acc1a1372 100644 --- a/.github/workflows/static-analysis-pr.yml +++ b/.github/workflows/static-analysis-pr.yml @@ -26,10 +26,7 @@ jobs: cmake -S . -B build -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON - -G Ninja - -D USE_SEQ=ON -D USE_MPI=ON - -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON - -D CMAKE_BUILD_TYPE=RELEASE -DCMAKE_EXPORT_COMPILE_COMMANDS=ON + -G Ninja -D CMAKE_BUILD_TYPE=RELEASE -DCMAKE_EXPORT_COMPILE_COMMANDS=ON config_file: .clang-tidy exclude: 3rdparty split_workflow: true @@ -62,10 +59,7 @@ jobs: cmake_command: > cmake -S . -B build -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache - -G Ninja - -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON - -D USE_SEQ=ON -D USE_MPI=ON - -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON + -G Ninja -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON -D CMAKE_BUILD_TYPE=RELEASE -DCMAKE_EXPORT_COMPILE_COMMANDS=ON config_file: .clang-tidy exclude: 3rdparty diff --git a/CMakeLists.txt b/CMakeLists.txt index 3ac7c3976..4bf136dfb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,6 +3,22 @@ cmake_minimum_required( VERSION 3.25 ) message( STATUS "Parallel Programming Course (PPC)" ) project(parallel_programming_course) +############################ Scoreboard ############################# + +message( STATUS "PPC step: Setup scoreboard generator" ) +include(cmake/scoreboard.cmake) +add_subdirectory(scoreboard) + +########################### Documentation ########################### + +message( STATUS "PPC step: Setup documentation generation" ) +include(cmake/sphinx.cmake) +add_subdirectory(docs) + +if( USE_SCOREBOARD OR USE_DOCS ) + return() +endif() + ############################ Configures ############################# message( STATUS "PPC step: First configures" ) @@ -15,7 +31,6 @@ include(cmake/sanitizers.cmake) message( STATUS "PPC step: Setup parallel programming technologies" ) include(cmake/mpi.cmake) include(cmake/openmp.cmake) -include(cmake/threads.cmake) include(cmake/onetbb.cmake) ######################### External projects ######################### @@ -23,18 +38,6 @@ include(cmake/onetbb.cmake) message( STATUS "PPC step: Setup external projects" ) include(cmake/gtest.cmake) -########################### Documentation ########################### - -message( STATUS "PPC step: Setup documentation generation" ) -include(cmake/sphinx.cmake) -add_subdirectory(docs) - -############################ Scoreboard ############################# - -message( STATUS "PPC step: Setup scoreboard generator" ) -include(cmake/scoreboard.cmake) -add_subdirectory(scoreboard) - ############################## Headers ############################## message( STATUS "PPC step: Setup headers" ) diff --git a/cmake/configure.cmake b/cmake/configure.cmake index 5f5a73b01..c548b8e77 100644 --- a/cmake/configure.cmake +++ b/cmake/configure.cmake @@ -83,3 +83,5 @@ if( MSVC ) set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${COMMON_FLAGS}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMMON_FLAGS}" ) endif( MSVC ) + +find_package( Threads ) diff --git a/cmake/gtest.cmake b/cmake/gtest.cmake index dced69310..d20e815b7 100644 --- a/cmake/gtest.cmake +++ b/cmake/gtest.cmake @@ -1,8 +1,3 @@ -# Build googletest components -if(NOT USE_SEQ AND NOT USE_MPI AND NOT USE_OMP AND NOT USE_TBB AND NOT USE_STL) - return() -endif() - include_directories(${CMAKE_SOURCE_DIR}/3rdparty/googletest/googletest/include) include(ExternalProject) ExternalProject_Add(ppc_googletest diff --git a/cmake/mpi.cmake b/cmake/mpi.cmake index 3a26e000e..b38727cf3 100644 --- a/cmake/mpi.cmake +++ b/cmake/mpi.cmake @@ -1,9 +1,6 @@ -option(USE_MPI OFF) -if( USE_MPI ) - find_package( MPI ) - if( MPI_FOUND ) - include_directories( ${MPI_INCLUDE_PATH} ) - else( MPI_FOUND ) - set( USE_MPI OFF ) - endif( MPI_FOUND ) -endif( USE_MPI ) +find_package( MPI ) +if( MPI_FOUND ) + include_directories( ${MPI_INCLUDE_PATH} ) +else( MPI_FOUND ) + message(FATAL_ERROR "MPI NOT FOUND") +endif( MPI_FOUND ) diff --git a/cmake/onetbb.cmake b/cmake/onetbb.cmake index 84be4835e..750a42c79 100644 --- a/cmake/onetbb.cmake +++ b/cmake/onetbb.cmake @@ -1,33 +1,30 @@ -option(USE_TBB OFF) -if( USE_TBB ) - # Build Core OneTBB components - include_directories(${CMAKE_SOURCE_DIR}/3rdparty/onetbb/include) +# Build Core OneTBB components +include_directories(${CMAKE_SOURCE_DIR}/3rdparty/onetbb/include) - include(ExternalProject) - if(WIN32) - ExternalProject_Add(ppc_onetbb - SOURCE_DIR "${CMAKE_SOURCE_DIR}/3rdparty/onetbb" - PREFIX "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb" - BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build" - INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install" - CONFIGURE_COMMAND "${CMAKE_COMMAND}" -S "${CMAKE_SOURCE_DIR}/3rdparty/onetbb/" -B "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build/" -DCMAKE_CXX_FLAGS="-w" -DCMAKE_C_FLAGS="-w" - -DCMAKE_CXX_COMPILER=cl -DCMAKE_C_COMPILER=cl -D CMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER} -D CMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER} - -G${CMAKE_GENERATOR} -DTBB_TEST=OFF -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} - BUILD_COMMAND "${CMAKE_COMMAND}" --build "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build" --config ${CMAKE_BUILD_TYPE} --parallel - INSTALL_COMMAND "${CMAKE_COMMAND}" --install "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build" --prefix "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install" - TEST_COMMAND "${CMAKE_COMMAND}" -E copy_directory "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install/bin" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}") - else() - ExternalProject_Add(ppc_onetbb - SOURCE_DIR "${CMAKE_SOURCE_DIR}/3rdparty/onetbb" - PREFIX "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb" - BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build" - INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install" - CONFIGURE_COMMAND "${CMAKE_COMMAND}" -S "${CMAKE_SOURCE_DIR}/3rdparty/onetbb/" -B "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build/" -DCMAKE_CXX_FLAGS="-w" -DCMAKE_C_FLAGS="-w" - -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -D CMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER} -D CMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER} - -G${CMAKE_GENERATOR} -DTBB_TEST=OFF -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} - BUILD_COMMAND "${CMAKE_COMMAND}" --build "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build" --config ${CMAKE_BUILD_TYPE} --parallel - INSTALL_COMMAND "${CMAKE_COMMAND}" --install "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build" --prefix "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install") - endif() - install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install/" - DESTINATION "${CMAKE_INSTALL_PREFIX}") -endif( USE_TBB ) +include(ExternalProject) +if(WIN32) + ExternalProject_Add(ppc_onetbb + SOURCE_DIR "${CMAKE_SOURCE_DIR}/3rdparty/onetbb" + PREFIX "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb" + BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build" + INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install" + CONFIGURE_COMMAND "${CMAKE_COMMAND}" -S "${CMAKE_SOURCE_DIR}/3rdparty/onetbb/" -B "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build/" -DCMAKE_CXX_FLAGS="-w" -DCMAKE_C_FLAGS="-w" + -DCMAKE_CXX_COMPILER=cl -DCMAKE_C_COMPILER=cl -D CMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER} -D CMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER} + -G${CMAKE_GENERATOR} -DTBB_TEST=OFF -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + BUILD_COMMAND "${CMAKE_COMMAND}" --build "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build" --config ${CMAKE_BUILD_TYPE} --parallel + INSTALL_COMMAND "${CMAKE_COMMAND}" --install "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build" --prefix "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install" + TEST_COMMAND "${CMAKE_COMMAND}" -E copy_directory "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install/bin" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}") +else() + ExternalProject_Add(ppc_onetbb + SOURCE_DIR "${CMAKE_SOURCE_DIR}/3rdparty/onetbb" + PREFIX "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb" + BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build" + INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install" + CONFIGURE_COMMAND "${CMAKE_COMMAND}" -S "${CMAKE_SOURCE_DIR}/3rdparty/onetbb/" -B "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build/" -DCMAKE_CXX_FLAGS="-w" -DCMAKE_C_FLAGS="-w" + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -D CMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER} -D CMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER} + -G${CMAKE_GENERATOR} -DTBB_TEST=OFF -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + BUILD_COMMAND "${CMAKE_COMMAND}" --build "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build" --config ${CMAKE_BUILD_TYPE} --parallel + INSTALL_COMMAND "${CMAKE_COMMAND}" --install "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build" --prefix "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install") +endif() +install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install/" + DESTINATION "${CMAKE_INSTALL_PREFIX}") diff --git a/cmake/openmp.cmake b/cmake/openmp.cmake index e94fd3e64..e09d04312 100644 --- a/cmake/openmp.cmake +++ b/cmake/openmp.cmake @@ -1,16 +1,9 @@ -option(USE_OMP OFF) -if( USE_OMP ) - find_package( OpenMP ) - if( OpenMP_FOUND ) - include_directories( ${OpenMP_C_INCLUDE_DIRS} ${OpenMP_CXX_INCLUDE_DIRS} ) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}") - else( OpenMP_FOUND ) - if (WIN32) - message(WARNING "OpenMP NOT FOUND") - else() - message(FATAL_ERROR "OpenMP NOT FOUND") - endif() - endif( OpenMP_FOUND ) -endif( USE_OMP ) +find_package( OpenMP ) +if( OpenMP_FOUND ) + include_directories( ${OpenMP_C_INCLUDE_DIRS} ${OpenMP_CXX_INCLUDE_DIRS} ) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}") +else( OpenMP_FOUND ) + message(FATAL_ERROR "OpenMP NOT FOUND") +endif( OpenMP_FOUND ) diff --git a/cmake/threads.cmake b/cmake/threads.cmake deleted file mode 100644 index be534ffd9..000000000 --- a/cmake/threads.cmake +++ /dev/null @@ -1,4 +0,0 @@ -option(USE_STL OFF) -if( USE_STL ) - find_package( Threads ) -endif( USE_STL ) diff --git a/docs/locale/en/LC_MESSAGES/user_guide/build.po b/docs/locale/en/LC_MESSAGES/user_guide/build.po index 6a5120f5c..37e40f0f4 100644 --- a/docs/locale/en/LC_MESSAGES/user_guide/build.po +++ b/docs/locale/en/LC_MESSAGES/user_guide/build.po @@ -36,28 +36,6 @@ msgstr "" msgid "*Help on CMake keys:*" msgstr "" -#: ../../user_guide/build.rst:15 -msgid "" -"``-D USE_SEQ=ON`` enable ``Sequential`` labs (based on OpenMP's " -"CMakeLists.txt)." -msgstr "" - -#: ../../user_guide/build.rst:16 -msgid "``-D USE_MPI=ON`` enable ``MPI`` labs." -msgstr "" - -#: ../../user_guide/build.rst:17 -msgid "``-D USE_OMP=ON`` enable ``OpenMP`` labs." -msgstr "" - -#: ../../user_guide/build.rst:18 -msgid "``-D USE_TBB=ON`` enable ``TBB`` labs." -msgstr "" - -#: ../../user_guide/build.rst:19 -msgid "``-D USE_STL=ON`` enable ``std::thread`` labs." -msgstr "" - #: ../../user_guide/build.rst:20 msgid "``-D USE_FUNC_TESTS=ON`` enable functional tests." msgstr "" diff --git a/docs/locale/ru/LC_MESSAGES/user_guide/build.po b/docs/locale/ru/LC_MESSAGES/user_guide/build.po index a51a67133..13b2384c3 100644 --- a/docs/locale/ru/LC_MESSAGES/user_guide/build.po +++ b/docs/locale/ru/LC_MESSAGES/user_guide/build.po @@ -37,29 +37,6 @@ msgstr "**Конфигурация проекта**: ``Makefile``, ``.sln``, и msgid "*Help on CMake keys:*" msgstr "*Важные CMake ключи для конфигурации проекта:*" -#: ../../user_guide/build.rst:15 -msgid "" -"``-D USE_SEQ=ON`` enable ``Sequential`` labs (based on OpenMP's " -"CMakeLists.txt)." -msgstr "" -"``-D USE_SEQ=ON`` включает ``последовательные`` лабораторные работы." - -#: ../../user_guide/build.rst:16 -msgid "``-D USE_MPI=ON`` enable ``MPI`` labs." -msgstr "``-D USE_MPI=ON`` включает ``MPI`` лабораторные работы." - -#: ../../user_guide/build.rst:17 -msgid "``-D USE_OMP=ON`` enable ``OpenMP`` labs." -msgstr "``-D USE_OMP=ON`` включает ``OpenMP`` лабораторные работы." - -#: ../../user_guide/build.rst:18 -msgid "``-D USE_TBB=ON`` enable ``TBB`` labs." -msgstr "``-D USE_TBB=ON`` включает ``TBB`` лабораторные работы." - -#: ../../user_guide/build.rst:19 -msgid "``-D USE_STL=ON`` enable ``std::thread`` labs." -msgstr "``-D USE_STL=ON`` включает ``std::thread`` лабораторные работы." - #: ../../user_guide/build.rst:20 msgid "``-D USE_FUNC_TESTS=ON`` enable functional tests." msgstr "``-D USE_FUNC_TESTS=ON`` включает функциональные тесты." diff --git a/docs/user_guide/build.rst b/docs/user_guide/build.rst index 217e9af5c..29d27fc28 100644 --- a/docs/user_guide/build.rst +++ b/docs/user_guide/build.rst @@ -8,15 +8,11 @@ Navigate to a source code folder. .. code-block:: bash mkdir build && cd build - cmake -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON -D CMAKE_BUILD_TYPE=Release .. + cmake -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON -D CMAKE_BUILD_TYPE=Release .. *Help on CMake keys:* - - ``-D USE_SEQ=ON`` enable ``Sequential`` labs (based on OpenMP's CMakeLists.txt). - - ``-D USE_MPI=ON`` enable ``MPI`` labs. - - ``-D USE_OMP=ON`` enable ``OpenMP`` labs. - - ``-D USE_TBB=ON`` enable ``TBB`` labs. - - ``-D USE_STL=ON`` enable ``std::thread`` labs. + - ``-D USE_FUNC_TESTS=ON`` enable functional tests. - ``-D USE_PERF_TESTS=ON`` enable performance tests. - ``-D CMAKE_BUILD_TYPE=Release`` required parameter for stable work of repo. diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt index cf528c534..d745c11c4 100644 --- a/modules/CMakeLists.txt +++ b/modules/CMakeLists.txt @@ -1,7 +1,3 @@ -if(NOT USE_SEQ AND NOT USE_MPI AND NOT USE_OMP AND NOT USE_TBB AND NOT USE_STL) - return() -endif() - message(STATUS "Modules") SUBDIRLIST(subdirs ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/tasks/CMakeLists.txt b/tasks/CMakeLists.txt index 9175a53aa..4ae9df094 100644 --- a/tasks/CMakeLists.txt +++ b/tasks/CMakeLists.txt @@ -1,40 +1,11 @@ message(STATUS "Student's tasks") -if (USE_MPI) - list(APPEND LIST_OF_TASKS "mpi") -else () - message(WARNING "MPI tasks not build!") -endif () - -if (USE_OMP) - list(APPEND LIST_OF_TASKS "omp") -else () - message(WARNING "OpenMP tasks not build!") -endif () - -if (USE_SEQ) - list(APPEND LIST_OF_TASKS "seq") -else () - message(WARNING "Sequential tasks not build!") -endif () - -if (USE_STL) - list(APPEND LIST_OF_TASKS "stl") -else () - message(WARNING "STL tasks not build!") -endif () - -if (USE_TBB) - list(APPEND LIST_OF_TASKS "tbb") -else () - message(WARNING "TBB tasks not build!") -endif () - -if (USE_MPI AND USE_OMP AND USE_SEQ AND USE_STL AND USE_TBB) - list(APPEND LIST_OF_TASKS "all") -else () - message(WARNING "ALL tasks not build!") -endif () +list(APPEND LIST_OF_TASKS "mpi") +list(APPEND LIST_OF_TASKS "omp") +list(APPEND LIST_OF_TASKS "seq") +list(APPEND LIST_OF_TASKS "stl") +list(APPEND LIST_OF_TASKS "tbb") +list(APPEND LIST_OF_TASKS "all") add_compile_definitions(PATH_TO_PPC_PROJECT="${CMAKE_SOURCE_DIR}") @@ -93,44 +64,22 @@ foreach(TASK_TYPE ${LIST_OF_TASKS}) foreach (EXEC_FUNC ${LIST_OF_EXEC_TESTS}) target_link_libraries(${EXEC_FUNC} PUBLIC ${exec_func_lib} core_module_lib) - - if ("${MODULE_NAME}" STREQUAL "stl") - target_link_libraries(${EXEC_FUNC} PUBLIC Threads::Threads) - elseif ("${MODULE_NAME}" STREQUAL "omp") - target_link_libraries(${EXEC_FUNC} PUBLIC ${OpenMP_libomp_LIBRARY}) - elseif ("${MODULE_NAME}" STREQUAL "mpi") - if( MPI_COMPILE_FLAGS ) - set_target_properties(${EXEC_FUNC} PROPERTIES COMPILE_FLAGS "${MPI_COMPILE_FLAGS}") - endif( MPI_COMPILE_FLAGS ) - - if( MPI_LINK_FLAGS ) - set_target_properties(${EXEC_FUNC} PROPERTIES LINK_FLAGS "${MPI_LINK_FLAGS}") - endif( MPI_LINK_FLAGS ) - target_link_libraries(${EXEC_FUNC} PUBLIC ${MPI_LIBRARIES}) - elseif ("${MODULE_NAME}" STREQUAL "tbb") - add_dependencies(${EXEC_FUNC} ppc_onetbb) - target_link_directories(${EXEC_FUNC} PUBLIC ${CMAKE_BINARY_DIR}/ppc_onetbb/install/lib) - if(NOT MSVC) - target_link_libraries(${EXEC_FUNC} PUBLIC tbb) - endif() - elseif ("${MODULE_NAME}" STREQUAL "all") - target_link_libraries(${EXEC_FUNC} PUBLIC Threads::Threads) - target_link_libraries(${EXEC_FUNC} PUBLIC ${OpenMP_libomp_LIBRARY}) - if( MPI_COMPILE_FLAGS ) - set_target_properties(${EXEC_FUNC} PROPERTIES COMPILE_FLAGS "${MPI_COMPILE_FLAGS}") - endif( MPI_COMPILE_FLAGS ) - - if( MPI_LINK_FLAGS ) - set_target_properties(${EXEC_FUNC} PROPERTIES LINK_FLAGS "${MPI_LINK_FLAGS}") - endif( MPI_LINK_FLAGS ) - target_link_libraries(${EXEC_FUNC} PUBLIC ${MPI_LIBRARIES}) - - add_dependencies(${EXEC_FUNC} ppc_onetbb) - target_link_directories(${EXEC_FUNC} PUBLIC ${CMAKE_BINARY_DIR}/ppc_onetbb/install/lib) - if(NOT MSVC) - target_link_libraries(${EXEC_FUNC} PUBLIC tbb) - endif() - endif () + target_link_libraries(${EXEC_FUNC} PUBLIC Threads::Threads) + target_link_libraries(${EXEC_FUNC} PUBLIC ${OpenMP_libomp_LIBRARY}) + if( MPI_COMPILE_FLAGS ) + set_target_properties(${EXEC_FUNC} PROPERTIES COMPILE_FLAGS "${MPI_COMPILE_FLAGS}") + endif( MPI_COMPILE_FLAGS ) + + if( MPI_LINK_FLAGS ) + set_target_properties(${EXEC_FUNC} PROPERTIES LINK_FLAGS "${MPI_LINK_FLAGS}") + endif( MPI_LINK_FLAGS ) + target_link_libraries(${EXEC_FUNC} PUBLIC ${MPI_LIBRARIES}) + + add_dependencies(${EXEC_FUNC} ppc_onetbb) + target_link_directories(${EXEC_FUNC} PUBLIC ${CMAKE_BINARY_DIR}/ppc_onetbb/install/lib) + if(NOT MSVC) + target_link_libraries(${EXEC_FUNC} PUBLIC tbb) + endif() target_link_directories(stb_image INTERFACE ${CMAKE_SOURCE_DIR}/3rdparty/stb) target_link_libraries(${EXEC_FUNC} PUBLIC stb_image)