Browse Source

version info extended and moved to cpp, added options flag (although unclear what exactly should be displayed then)

Former-commit-id: 3c82455d24
tempestpy_adaptions
sjunges 10 years ago
parent
commit
cafcb3f238
  1. 15
      CMakeLists.txt
  2. 6
      src/settings/SettingsManager.cpp
  3. 5
      src/settings/SettingsManager.h
  4. 6
      src/settings/modules/GeneralSettings.cpp
  5. 9
      src/settings/modules/GeneralSettings.h
  6. 22
      src/utility/cli.h
  7. 66
      src/utility/storm-version.h
  8. 28
      storm-version.cpp.in
  9. 12
      storm-version.h.in

15
CMakeLists.txt

@ -93,7 +93,7 @@ message(STATUS "StoRM - CMAKE_BUILD_TYPE (ENV): $ENV{CMAKE_BUILD_TYPE}")
set(CONVERSIONHELPER_TARGET "${PROJECT_SOURCE_DIR}/src/utility/ConversionHelper.cpp")
if(CMAKE_COMPILER_IS_GNUCC)
message(STATUS "StoRM - Using Compiler Configuration: GCC")
set(STORM_COMPILED_BY "GCC")
# Set standard flags for GCC
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -funroll-loops")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -pedantic -DBOOST_RESULT_OF_USE_TR1")
@ -109,7 +109,7 @@ if(CMAKE_COMPILER_IS_GNUCC)
# Set the no-strict-aliasing target for GCC
set_source_files_properties(${CONVERSIONHELPER_TARGET} PROPERTIES COMPILE_FLAGS " -fno-strict-aliasing ")
elseif(MSVC)
message(STATUS "StoRM - Using Compiler Configuration: MSVC")
set(STORM_COMPILED_BY "MSVC")
# required for GMM to compile, ugly error directive in their code
add_definitions(/D_SCL_SECURE_NO_DEPRECATE /D_CRT_SECURE_NO_WARNINGS)
# required as the PRCTL Parser bloats object files (COFF) beyond their maximum size (see http://msdn.microsoft.com/en-us/library/8578y171(v=vs.110).aspx)
@ -128,7 +128,7 @@ elseif(MSVC)
# MSVC does not do strict-aliasing, so no option needed
else(CLANG)
message(STATUS "StoRM - Using Compiler Configuration: Clang (LLVM)")
set(STORM_COMPILED_BY "Clang (LLVM)")
# As CLANG is not set as a variable, we need to set it in case we have not matched another compiler.
set (CLANG ON)
# Set standard flags for clang
@ -159,6 +159,8 @@ else(CLANG)
set_source_files_properties(${CONVERSIONHELPER_TARGET} PROPERTIES COMPILE_FLAGS " -fno-strict-aliasing ")
endif()
message(STATUS "StoRM - Using Compiler Configuration: ${STORM_COMPILED_BY}")
#############################################################
##
## CMake-generated Config File for StoRM
@ -219,8 +221,8 @@ configure_file (
# Configure a header file to pass the storm version to the source code
configure_file (
"${PROJECT_SOURCE_DIR}/storm-version.h.in"
"${PROJECT_BINARY_DIR}/include/storm-version.h"
"${PROJECT_SOURCE_DIR}/storm-version.cpp.in"
"${PROJECT_SOURCE_DIR}/src/utility/storm-version.cpp"
)
# Add the binary dir include directory for storm-config.h
@ -266,6 +268,7 @@ file(GLOB_RECURSE STORM_PERFORMANCE_TEST_FILES ${STORM_CPP_TESTS_BASE_PATH}/perf
# Additional include files like the storm-config.h
file(GLOB_RECURSE STORM_BUILD_HEADERS ${PROJECT_BINARY_DIR}/include/*.h)
# Group the headers and sources
source_group(main FILES ${STORM_MAIN_FILE})
source_group(adapters FILES ${STORM_ADAPTERS_FILES})
@ -275,7 +278,7 @@ source_group(properties\\csl FILES ${STORM_PROPERTIES_CSL_FILES})
source_group(properties\\ltl FILES ${STORM_PROPERTIES_LTL_FILES})
source_group(properties\\prctl FILES ${STORM_PROPERTIES_PRCTL_FILES})
source_group(properties\\actions FILES ${STORM_PROPERTIES_ACTIONS_FILES})
source_group(generated FILES ${STORM_BUILD_HEADERS})
source_group(generated FILES ${STORM_BUILD_HEADERS} ${STORM_BUILD_SOURCES})
source_group(modelchecker FILES ${STORM_MODELCHECKER_FILES})
source_group(counterexamples FILES ${STORM_COUNTEREXAMPLES_FILES})
source_group(models FILES ${STORM_MODELS_FILES})

6
src/settings/SettingsManager.cpp

@ -11,6 +11,7 @@
#include "src/exceptions/IllegalFunctionCallException.h"
#include "src/exceptions/OptionParserException.h"
#include "src/utility/storm-version.h"
namespace storm {
namespace settings {
@ -229,6 +230,11 @@ namespace storm {
STORM_PRINT(std::endl);
}
void SettingsManager::printVersion() const {
STORM_PRINT(storm::utility::StormVersion::shortVersionString());
STORM_PRINT(std::endl);
}
uint_fast64_t SettingsManager::getPrintLengthOfLongestOption() const {
uint_fast64_t length = 0;
for (auto const& moduleName : this->moduleNames) {

5
src/settings/SettingsManager.h

@ -91,6 +91,11 @@ namespace storm {
*/
void printHelpForModule(std::string const& moduleName, uint_fast64_t maxLength = 30) const;
/*!
* This function prints the version string to the command line.
*/
void printVersion() const;
/*!
* Retrieves the only existing instance of a settings manager.
*

6
src/settings/modules/GeneralSettings.cpp

@ -11,6 +11,7 @@ namespace storm {
const std::string GeneralSettings::moduleName = "general";
const std::string GeneralSettings::helpOptionName = "help";
const std::string GeneralSettings::helpOptionShortName = "h";
const std::string GeneralSettings::versionOptionName = "version";
const std::string GeneralSettings::verboseOptionName = "verbose";
const std::string GeneralSettings::verboseOptionShortName = "v";
const std::string GeneralSettings::precisionOptionName = "precision";
@ -46,6 +47,7 @@ namespace storm {
GeneralSettings::GeneralSettings(storm::settings::SettingsManager& settingsManager) : ModuleSettings(settingsManager, moduleName) {
this->addOption(storm::settings::OptionBuilder(moduleName, helpOptionName, false, "Shows all available options, arguments and descriptions.").setShortName(helpOptionShortName)
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("hint", "A regular expression to show help for all matching entities or 'all' for the complete help.").setDefaultValueString("all").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName, versionOptionName, false, "Prints the version information.").build());
this->addOption(storm::settings::OptionBuilder(moduleName, verboseOptionName, false, "Enables more verbose output.").setShortName(verboseOptionShortName).build());
this->addOption(storm::settings::OptionBuilder(moduleName, precisionOptionName, false, "The internally used precision.").setShortName(precisionOptionShortName)
.addArgument(storm::settings::ArgumentBuilder::createDoubleArgument("value", "The precision to use.").setDefaultValueDouble(1e-06).addValidationFunctionDouble(storm::settings::ArgumentValidators::doubleRangeValidatorExcluding(0.0, 1.0)).build()).build());
@ -98,6 +100,10 @@ namespace storm {
return this->getOption(helpOptionName).getHasOptionBeenSet();
}
bool GeneralSettings::isVersionSet() const {
return this->getOption(versionOptionName).getHasOptionBeenSet();
}
std::string GeneralSettings::getHelpModuleName() const {
return this->getOption(helpOptionName).getArgumentByName("hint").getValueAsString();
}

9
src/settings/modules/GeneralSettings.h

@ -32,6 +32,14 @@ namespace storm {
*/
bool isHelpSet() const;
/*!
* Retrieves whether the version option was set.
*
* @return True if the version option was set.
*/
bool isVersionSet() const;
/*!
* Retrieves the name of the module for which to show the help or "all" to indicate that the full help
* needs to be shown.
@ -323,6 +331,7 @@ namespace storm {
// Define the string names of the options as constants.
static const std::string helpOptionName;
static const std::string helpOptionShortName;
static const std::string versionOptionName;
static const std::string verboseOptionName;
static const std::string verboseOptionShortName;
static const std::string precisionOptionName;

22
src/utility/cli.h

@ -29,6 +29,7 @@
log4cplus::Logger logger;
// Headers that provide auxiliary functionality.
#include "src/utility/storm-version.h"
#include "src/utility/OsDetection.h"
#include "src/settings/SettingsManager.h"
@ -49,6 +50,7 @@ log4cplus::Logger logger;
// Headers related to exception handling.
#include "src/exceptions/InvalidSettingsException.h"
#include "src/exceptions/InvalidTypeException.h"
namespace storm {
namespace utility {
@ -108,17 +110,9 @@ namespace storm {
void printHeader(const int argc, const char* argv[]) {
std::cout << "StoRM" << std::endl;
std::cout << "-----" << std::endl << std::endl;
std::cout << "Version: " << STORM_CPP_VERSION_MAJOR << "." << STORM_CPP_VERSION_MINOR << "." << STORM_CPP_VERSION_PATCH;
if (STORM_CPP_VERSION_COMMITS_AHEAD != 0) {
std::cout << " (+" << STORM_CPP_VERSION_COMMITS_AHEAD << " commits)";
}
std::cout << " build from revision " << STORM_CPP_VERSION_HASH;
if (STORM_CPP_VERSION_DIRTY == 1) {
std::cout << " (DIRTY)";
}
std::cout << "." << std::endl;
std::cout << storm::utility::StormVersion::longVersionString() << std::endl;
#ifdef STORM_HAVE_INTELTBB
std::cout << "Linked with Intel Threading Building Blocks v" << TBB_VERSION_MAJOR << "." << TBB_VERSION_MINOR << " (Interface version " << TBB_INTERFACE_VERSION << ")." << std::endl;
#endif
@ -208,6 +202,12 @@ namespace storm {
storm::settings::manager().printHelp(storm::settings::generalSettings().getHelpModuleName());
return false;
}
if (storm::settings::generalSettings().isVersionSet()) {
storm::settings::manager().printVersion();
return false;
}
if (storm::settings::generalSettings().isVerboseSet()) {
logger.getAppender("mainConsoleAppender")->setThreshold(log4cplus::INFO_LOG_LEVEL);

66
src/utility/storm-version.h

@ -0,0 +1,66 @@
/**
* @file: storm-version.h
* @author: Sebastian Junges
*
* @since October 7, 2014
*/
#pragma once
#include <string>
#include <sstream>
namespace storm
{
namespace utility {
struct StormVersion
{
/// The major version of StoRM
const static unsigned versionMajor;
/// The minor version of StoRM
const static unsigned versionMinor;
/// The patch version of StoRM
const static unsigned versionPatch;
/// The short hash of the git commit this build is bases on
const static std::string gitRevisionHash;
/// How many commits passed since the tag was last set
const static unsigned commitsAhead;
/// 0 iff there no files were modified in the checkout, 1 else
const static unsigned dirty;
/// The system which has compiled storm
const static std::string systemName;
/// The system version which has compiled storm
const static std::string systemVersion;
/// The build type that was used to build storm
const static std::string buildType;
/// The compiler version that was used to build storm
const static std::string cxxCompiler;
static std::string shortVersionString() {
std::stringstream sstream;
sstream << "StoRM " << versionMajor << "." << versionMinor << "." << versionPatch;
return sstream.str();
}
static std::string longVersionString() {
std::stringstream sstream;
sstream << "Version: " << versionMajor << "." << versionMinor << "." << versionPatch;
if (commitsAhead != 0) {
sstream << " (+" << commitsAhead << " commits)";
}
sstream << " build from revision " << gitRevisionHash;
if (dirty == 1) {
sstream << " (DIRTY)";
}
sstream << "." << std::endl;
return sstream.str();
}
static std::string buildInfo() {
std::stringstream sstream;
sstream << "Compiled on " << systemName << " " << systemVersion << ",";
sstream << "using " << cxxCompiler << " with " << buildType << " flags.";
return sstream.str();
}
};
}
}

28
storm-version.cpp.in

@ -0,0 +1,28 @@
#include "src/utility/storm-version.h"
namespace storm
{
namespace utility
{
// The major version of StoRM
const unsigned StormVersion::versionMajor = @STORM_CPP_VERSION_MAJOR@;
// The minor version of StoRM
const unsigned StormVersion::versionMinor = @STORM_CPP_VERSION_MINOR@;
// The patch version of StoRM
const unsigned StormVersion::versionPatch = @STORM_CPP_VERSION_PATCH@;
// The short hash of the git commit this build is bases on
const std::string StormVersion::gitRevisionHash = "@STORM_CPP_VERSION_HASH@";
// How many commits passed since the tag was last set
const unsigned StormVersion::commitsAhead = @STORM_CPP_VERSION_COMMITS_AHEAD@;
// 0 iff there no files were modified in the checkout, 1 else
const unsigned StormVersion::dirty = @STORM_CPP_VERSION_DIRTY@;
// The system which has compiled storm
const std::string StormVersion::systemName = "@CMAKE_SYSTEM_NAME@";
// The system version which has compiled storm
const std::string StormVersion::systemVersion = "@CMAKE_SYSTEM_VERSION@";
// The build type that was used to build storm
const std::string StormVersion::buildType = "@CMAKE_BUILD_TYPE@";
// The compiler version that was used to build storm
const std::string StormVersion::cxxCompiler = "@STORM_COMPILED_BY@ @CMAKE_CXX_COMPILER_VERSION@";
}
}

12
storm-version.h.in

@ -1,12 +0,0 @@
#ifndef STORM_GENERATED_VERSION_H_
#define STORM_GENERATED_VERSION_H_
// Version Information
#define STORM_CPP_VERSION_MAJOR @STORM_CPP_VERSION_MAJOR@ // The major version of StoRM
#define STORM_CPP_VERSION_MINOR @STORM_CPP_VERSION_MINOR@ // The minor version of StoRM
#define STORM_CPP_VERSION_PATCH @STORM_CPP_VERSION_PATCH@ // The patch version of StoRM
#define STORM_CPP_VERSION_COMMITS_AHEAD @STORM_CPP_VERSION_COMMITS_AHEAD@ // How many commits passed since the tag was last set
#define STORM_CPP_VERSION_HASH "@STORM_CPP_VERSION_HASH@" // The short hash of the git commit this build is bases on
#define STORM_CPP_VERSION_DIRTY @STORM_CPP_VERSION_DIRTY@ // 0 iff there no files were modified in the checkout, 1 else
#endif
Loading…
Cancel
Save