diff --git a/CMake/AddHpcCodingConvSubmodule.cmake b/CMake/AddHpcCodingConvSubmodule.cmake new file mode 100644 index 000000000..35b31fd8d --- /dev/null +++ b/CMake/AddHpcCodingConvSubmodule.cmake @@ -0,0 +1,28 @@ +# ============================================================================= +# Copyright (C) 2016-2020 Blue Brain Project +# +# See top-level LICENSE file for details. +# ============================================================================= + +include(FindPackageHandleStandardArgs) +find_package(FindPkgConfig QUIET) + +find_path( + HpcCodingConv_PROJ + NAMES setup.cfg + PATHS "${CORENEURON_PROJECT_SOURCE_DIR}/CMake/hpc-coding-conventions/") + +find_package_handle_standard_args(HpcCodingConv REQUIRED_VARS HpcCodingConv_PROJ) + +if(NOT HpcCodingConv_FOUND) + find_package(Git 1.8.3 QUIET) + if(NOT ${GIT_FOUND}) + message(FATAL_ERROR "git not found, clone repository with --recursive") + endif() + message(STATUS "Sub-module CMake/hpc-coding-conventions missing: running git submodule update --init") + execute_process( + COMMAND + ${GIT_EXECUTABLE} submodule update --init -- + ${CORENEURON_PROJECT_SOURCE_DIR}/CMake/hpc-coding-conventions + WORKING_DIRECTORY ${CORENEURON_PROJECT_SOURCE_DIR}) +endif() diff --git a/CMake/ClangFormatHelper.cmake b/CMake/ClangFormatHelper.cmake deleted file mode 100644 index 692fc3e6b..000000000 --- a/CMake/ClangFormatHelper.cmake +++ /dev/null @@ -1,42 +0,0 @@ -# ============================================================================= -# Copyright (C) 2016-2020 Blue Brain Project -# -# See top-level LICENSE file for details. -# ============================================================================= - -set(CLANG_FORMAT_MIN_VERSION "4.0") -set(CLANG_FORMAT_MAX_VERSION "4.9") - -find_package(ClangFormat) - -if(CLANG_FORMAT_FOUND) - message(INFO "clang-format ${CLANG_FORMAT_EXECUTABLE} (${CLANG_FORMAT_VERSION}) found") -endif() - -if(CLANG_FORMAT_FOUND) - file(COPY ${CORENEURON_PROJECT_SOURCE_DIR}/.clang-format DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) - - # all source files under coreneuron directory - file( - GLOB_RECURSE - SRC_FILES_FOR_CLANG_FORMAT - ${CORENEURON_PROJECT_SOURCE_DIR}/coreneuron/*.c - ${CORENEURON_PROJECT_SOURCE_DIR}/coreneuron/*.cpp - ${CORENEURON_PROJECT_SOURCE_DIR}/coreneuron/*.h* - ${CORENEURON_PROJECT_SOURCE_DIR}/coreneuron/*.ipp*) - - # exclude random123 - file(GLOB_RECURSE RANDOM123_FILES - ${CORENEURON_PROJECT_SOURCE_DIR}/coreneuron/utils/randoms/Random123/*.cpp - ${CORENEURON_PROJECT_SOURCE_DIR}/coreneuron/utils/randoms/Random123/*.h) - - foreach(R123_PATH ${RANDOM123_FILES}) - list(REMOVE_ITEM SRC_FILES_FOR_CLANG_FORMAT ${R123_PATH}) - endforeach(R123_PATH) - - add_custom_target( - clang-format - COMMAND ${CMAKE_COMMAND} -DSOURCE_FILES:STRING="${SRC_FILES_FOR_CLANG_FORMAT}" - -DCLANG_FORMAT_EXECUTABLE=${CLANG_FORMAT_EXECUTABLE} -P - "${CORENEURON_PROJECT_SOURCE_DIR}/CMake/ClangFormatUtils.cmake") -endif() diff --git a/CMake/ClangFormatUtils.cmake b/CMake/ClangFormatUtils.cmake deleted file mode 100644 index f6061ed5f..000000000 --- a/CMake/ClangFormatUtils.cmake +++ /dev/null @@ -1,12 +0,0 @@ -# ============================================================================= -# Copyright (C) 2016-2020 Blue Brain Project -# -# See top-level LICENSE file for details. -# ============================================================================= - -string(REPLACE " " ";" FILES_TO_FORMAT ${SOURCE_FILES}) - -foreach(SRC_FILE ${FILES_TO_FORMAT}) - execute_process(COMMAND ${CLANG_FORMAT_EXECUTABLE} -i -style=file -fallback-style=none - ${SRC_FILE}) -endforeach() diff --git a/CMake/packages/FindClangFormat.cmake b/CMake/packages/FindClangFormat.cmake deleted file mode 100644 index 4600cb92d..000000000 --- a/CMake/packages/FindClangFormat.cmake +++ /dev/null @@ -1,34 +0,0 @@ -# ============================================================================= -# Copyright (C) 2016-2019 Blue Brain Project -# -# See top-level LICENSE file for details. -# ============================================================================= - -string(REPLACE ":" ";" _PATH $ENV{PATH}) -set(CLANG_FORMAT_FOUND OFF) -foreach(p ${_PATH}) - file(GLOB cand ${p}/clang-format ${p}/clang-format-[0-9].[0-9]) - foreach(candidate ${cand}) - set(CLANG_FORMAT_EXECUTABLE ${candidate}) - execute_process(COMMAND ${CLANG_FORMAT_EXECUTABLE} -version OUTPUT_VARIABLE clang_out ) - string(REGEX MATCH "version \([0-9]+\\.[0-9]\)" VERSION_OUTPUT ${clang_out}) - set(CLANG_FORMAT_VERSION ${CMAKE_MATCH_1}) - if ((${CLANG_FORMAT_VERSION} VERSION_GREATER ${CLANG_FORMAT_MIN_VERSION}) OR (${CLANG_FORMAT_VERSION} VERSION_EQUAL ${CLANG_FORMAT_MIN_VERSION})) - set (FIT_MIN_REQUIRED true) - else () - set (FIT_MIN_REQUIRED false) - endif() - if ((${CLANG_FORMAT_VERSION} VERSION_LESS ${CLANG_FORMAT_MAX_VERSION}) OR (${CLANG_FORMAT_VERSION} VERSION_EQUAL ${CLANG_FORMAT_MAX_VERSION})) - set (FIT_MAX_REQUIRED true) - else () - set (FIT_MAX_REQUIRED false) - endif() - if ( ${FIT_MIN_REQUIRED} AND ${FIT_MAX_REQUIRED}) - set(CLANG_FORMAT_FOUND ON) - break() - endif() - endforeach() - if (${CLANG_FORMAT_FOUND}) - break() - endif() -endforeach() diff --git a/CMakeLists.txt b/CMakeLists.txt index 20f41b964..3422e3185 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,6 +33,13 @@ if(NOT CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) set(CORENEURON_AS_SUBPROJECT ON) endif() +# ============================================================================= +# Include cmake modules path +# ============================================================================= +list(APPEND CMAKE_MODULE_PATH ${CORENEURON_PROJECT_SOURCE_DIR}/CMake + ${CORENEURON_PROJECT_SOURCE_DIR}/CMake/packages + ${CORENEURON_PROJECT_SOURCE_DIR}/CMake/config) + # ============================================================================= # HPC Coding Conventions # ============================================================================= @@ -43,15 +50,9 @@ set(CORENRN_ClangFormat_EXCLUDES_RE set(CORENRN_CMakeFormat_EXCLUDES_RE ".*/external/.*$$" ".*/CMake/packages/.*$$" CACHE STRING "list of regular expressions to exclude CMake files from formatting" FORCE) +include(AddHpcCodingConvSubmodule) add_subdirectory(CMake/hpc-coding-conventions/cpp) -# ============================================================================= -# Include cmake modules path -# ============================================================================= -list(APPEND CMAKE_MODULE_PATH ${CORENEURON_PROJECT_SOURCE_DIR}/CMake - ${CORENEURON_PROJECT_SOURCE_DIR}/CMake/packages - ${CORENEURON_PROJECT_SOURCE_DIR}/CMake/config) - # ============================================================================= # Include common cmake modules # ============================================================================= @@ -62,6 +63,7 @@ include(SetRpath) include(CTest) include(AddRandom123Submodule) include(AddCLI11Submodule) + add_subdirectory(${CORENEURON_PROJECT_SOURCE_DIR}/external/CLI11) # ============================================================================= @@ -106,7 +108,6 @@ endif() # Include cmake modules after cmake options # ============================================================================= include(OpenAccHelper) -include(ClangFormatHelper) # ============================================================================= # Common dependencies