From 4b245d6cdd00235b98241bda7eb89ab6e9b3cf9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Del=20Pino?= <stephane.delpino44@gmail.com> Date: Mon, 12 Mar 2018 01:01:19 +0100 Subject: [PATCH] Add utils subdir (builds PastisUtils lib) git revision info is now computed in utils --- CMakeLists.txt | 19 ++++--------------- git_revision.hpp.in | 3 --- main.cpp | 8 +++++--- utils/CMakeLists.txt | 19 +++++++++++++++++++ utils/RevisionInfo.cpp | 22 ++++++++++++++++++++++ utils/RevisionInfo.hpp | 14 ++++++++++++++ utils/pastis_git_revision.hpp.in | 9 +++++++++ 7 files changed, 73 insertions(+), 21 deletions(-) delete mode 100644 git_revision.hpp.in create mode 100644 utils/CMakeLists.txt create mode 100644 utils/RevisionInfo.cpp create mode 100644 utils/RevisionInfo.hpp create mode 100644 utils/pastis_git_revision.hpp.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 66de4f3b1..977985700 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,21 +29,10 @@ project (Pastis) list(APPEND CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -O3) add_subdirectory(${CMAKE_SOURCE_DIR}/packages/kokkos) -include_directories(${Kokkos_INCLUDE_DIRS_RET}) - -list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake-modules") -include(GetGitRevisionDescription) - -get_git_head_revision(GITREV GITHASH) -git_local_changes(GITHASLOCALCHANGES) +add_subdirectory(utils) -add_custom_target(git_revision ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/git_revision.hpp) -set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/git_revision.hpp PROPERTIES GENERATED TRUE HEADER_FILE_ONLY TRUE) - -configure_file("${CMAKE_CURRENT_SOURCE_DIR}/git_revision.hpp.in" "${CMAKE_CURRENT_BINARY_DIR}/git_revision.hpp" @ONLY) - -list(APPEND SOURCES git_revision.hpp) -include_directories(${CMAKE_BINARY_DIR}) +include_directories(${Kokkos_INCLUDE_DIRS_RET}) +include_directories(utils) add_executable(pastis main.cpp) -target_link_libraries(pastis kokkos) +target_link_libraries(pastis kokkos PastisUtils) diff --git a/git_revision.hpp.in b/git_revision.hpp.in deleted file mode 100644 index 86b65c4ad..000000000 --- a/git_revision.hpp.in +++ /dev/null @@ -1,3 +0,0 @@ -#define GITREV "@GITREV@" -#define GITHASH "@GITHASH@" -#define GITHASLOCALCHANGES "@GITHASLOCALCHANGES@" diff --git a/main.cpp b/main.cpp index 4675d52d5..affb12fd5 100644 --- a/main.cpp +++ b/main.cpp @@ -1,13 +1,15 @@ #include <iostream> #include <Kokkos_Core.hpp> -#include <git_revision.hpp> +#include <RevisionInfo.hpp> int main(int argc, char *argv[]) { std::cout << "It's pastis time!\n"; + std::cout << "--------------------- git info --------------------------\n"; - std::cout << "* branch: " << GITREV << '\n'; - std::cout << "* hash: " << GITHASH << '(' << GITHASLOCALCHANGES << ")\n"; + std::cout << "* version: " << RevisionInfo::version() << '\n'; + std::cout << "* head: " << RevisionInfo::head() << '\n'; + std::cout << "* hash: " << RevisionInfo::hash() << " (" << RevisionInfo::isClean() << ")\n"; std::cout << "---------------------------------------------------------\n"; Kokkos::initialize(argc, argv); diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt new file mode 100644 index 000000000..e08c25820 --- /dev/null +++ b/utils/CMakeLists.txt @@ -0,0 +1,19 @@ +include_directories(${CMAKE_CURRENT_SOURCE_DIR}) +include_directories(${CMAKE_CURRENT_BINARY_DIR}) + +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake/cmake-modules") +include(GetGitRevisionDescription) + +git_describe(PASTISVERSION "--abbrev=0") +get_git_head_revision(PASTISHEAD PASTISHASH) +git_local_changes(PASTISHASLOCALCHANGES) + +add_custom_target(git_revision ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision.hpp) +set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision.hpp PROPERTIES GENERATED TRUE HEADER_FILE_ONLY TRUE) + +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/pastis_git_revision.hpp.in" "${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision.hpp" @ONLY) + +list(APPEND SOURCES pastis_git_revision.hpp) +include_directories(${CMAKE_CURRENT_BINARY_DIR}) + +add_library(PastisUtils RevisionInfo.cpp) diff --git a/utils/RevisionInfo.cpp b/utils/RevisionInfo.cpp new file mode 100644 index 000000000..712aa5152 --- /dev/null +++ b/utils/RevisionInfo.cpp @@ -0,0 +1,22 @@ +#include <RevisionInfo.hpp> +#include <pastis_git_revision.hpp> + +std::string RevisionInfo::version() +{ + return PASTISVERSION; +} + +std::string RevisionInfo::head() +{ + return PASTISHEAD; +} + +std::string RevisionInfo::hash() +{ + return PASTISHASH; +} + +std::string RevisionInfo::isClean() +{ + return PASTISHASLOCALCHANGES; +} diff --git a/utils/RevisionInfo.hpp b/utils/RevisionInfo.hpp new file mode 100644 index 000000000..57219226b --- /dev/null +++ b/utils/RevisionInfo.hpp @@ -0,0 +1,14 @@ +#ifndef REVISION_INFO_HPP +#define REVISION_INFO_HPP + +#include <string> + +struct RevisionInfo +{ + static std::string version(); + static std::string head(); + static std::string hash(); + static std::string isClean(); +}; + +#endif // REVISION_INFO_HPP diff --git a/utils/pastis_git_revision.hpp.in b/utils/pastis_git_revision.hpp.in new file mode 100644 index 000000000..0398abebe --- /dev/null +++ b/utils/pastis_git_revision.hpp.in @@ -0,0 +1,9 @@ +#ifndef GIT_REVISION_HPP +#define GIT_REVISION_HPP + +#define PASTISVERSION "@PASTISVERSION@" +#define PASTISHEAD "@PASTISHEAD@" +#define PASTISHASH "@PASTISHASH@" +#define PASTISHASLOCALCHANGES "@PASTISHASLOCALCHANGES@" + +#endif // GIT_REVISION_HPP -- GitLab