Browse Source
			
			
			Moved generated file `storm-version.cpp` to build folder. Moved version information to new library `storm-version-info` (addressing Github issue #78)
			
			
				main
			
			
		
		Moved generated file `storm-version.cpp` to build folder. Moved version information to new library `storm-version-info` (addressing Github issue #78)
	
		
	
			
			
				main
			
			
		
				 10 changed files with 177 additions and 142 deletions
			
			
		- 
					8CMakeLists.txt
- 
					1src/CMakeLists.txt
- 
					6src/storm-cli-utilities/CMakeLists.txt
- 
					8src/storm-cli-utilities/cli.cpp
- 
					1src/storm-cli-utilities/model-handling.h
- 
					47src/storm-version-info/CMakeLists.txt
- 
					24src/storm-version-info/storm-version.cpp.in
- 
					98src/storm-version-info/storm-version.h
- 
					100src/storm/utility/storm-version.h
- 
					26storm-version.cpp.in
| @ -0,0 +1,47 @@ | |||
| 
 | |||
| file(GLOB_RECURSE ALL_FILES ${PROJECT_SOURCE_DIR}/src/storm-version-info/*.h ${PROJECT_SOURCE_DIR}/src/storm-version-info/*.cpp) | |||
| register_source_groups_from_filestructure("${ALL_FILES}" storm-version-info) | |||
| 
 | |||
| file(GLOB_RECURSE STORM_VERSION_INFO_SOURCES ${PROJECT_SOURCE_DIR}/src/storm-version-info/*.cpp) | |||
| file(GLOB_RECURSE STORM_VERSION_INFO_HEADERS ${PROJECT_SOURCE_DIR}/src/storm-version-info/*.h) | |||
| 
 | |||
| # Configure a source file to pass the Storm version to the source code | |||
| configure_file ( | |||
| 	"${PROJECT_SOURCE_DIR}/src/storm-version-info/storm-version.cpp.in" | |||
| 	"${PROJECT_BINARY_DIR}/storm-version.cpp" | |||
| ) | |||
| 
 | |||
| # Add the generated source file | |||
| list(APPEND STORM_VERSION_INFO_SOURCES "${PROJECT_BINARY_DIR}/storm-version.cpp") | |||
| 
 | |||
| 
 | |||
| # Create storm-version-info lib | |||
| add_library(storm-version-info SHARED ${STORM_VERSION_INFO_SOURCES} ${STORM_VERSION_INFO_HEADERS}) | |||
| 
 | |||
| # Remove define symbol for shared libstorm. | |||
| set_target_properties(storm-version-info PROPERTIES DEFINE_SYMBOL "") | |||
| 
 | |||
| # Add dependency to core storm libary. We are not going to link against it to avoid unnecessary linking steps, but we still want to build storm-version-info as often as possible. | |||
| add_dependencies(storm storm-version-info) | |||
| list(APPEND STORM_TARGETS storm-version-info) | |||
| set(STORM_TARGETS ${STORM_TARGETS} PARENT_SCOPE) | |||
| 
 | |||
| # Install storm headers to include directory. | |||
| foreach(HEADER ${STORM_VERSION_INFO_HEADERS}) | |||
|     string(REGEX REPLACE "${PROJECT_SOURCE_DIR}/src/?" "" RELATIVE_HEADER_PATH ${HEADER}) | |||
|     string(REGEX MATCH "(.*)[/\\]" RELATIVE_DIRECTORY ${RELATIVE_HEADER_PATH}) | |||
|     string(REGEX REPLACE "${RELATIVE_DIRECTORY}/?" "" HEADER_FILENAME ${RELATIVE_HEADER_PATH}) | |||
|     add_custom_command( | |||
|             OUTPUT ${CMAKE_BINARY_DIR}/include/${RELATIVE_DIRECTORY}${HEADER_FILENAME} | |||
|             COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/include/${RELATIVE_DIRECTORY} | |||
|             COMMAND ${CMAKE_COMMAND} -E copy ${HEADER} ${CMAKE_BINARY_DIR}/include/${RELATIVE_DIRECTORY}${HEADER_FILENAME} | |||
|             DEPENDS ${HEADER} | |||
|     ) | |||
|     list(APPEND STORM_VERSION_INFO_OUTPUT_HEADERS "${CMAKE_BINARY_DIR}/include/${RELATIVE_DIRECTORY}${HEADER_FILENAME}") | |||
| endforeach() | |||
| add_custom_target(copy_storm_version_info_headers DEPENDS ${STORM_VERSION_INFO_OUTPUT_HEADERS} ${STORM_VERSION_INFO_HEADERS}) | |||
| add_dependencies(storm-version-info copy_storm_version_info_headers) | |||
| 
 | |||
| # installation | |||
| install(TARGETS storm-version-info EXPORT storm_Targets RUNTIME DESTINATION bin LIBRARY DESTINATION lib OPTIONAL) | |||
| 
 | |||
| @ -0,0 +1,24 @@ | |||
| // AUTO GENERATED -- DO NOT CHANGE | |||
| #include "storm-version-info/storm-version.h" | |||
| 
 | |||
| namespace storm { | |||
| 
 | |||
|     const unsigned StormVersion::versionMajor = @STORM_VERSION_MAJOR@; | |||
|     const unsigned StormVersion::versionMinor = @STORM_VERSION_MINOR@; | |||
|     const unsigned StormVersion::versionPatch = @STORM_VERSION_DEV_PATCH@; | |||
|     const std::string StormVersion::versionLabel = "@STORM_VERSION_LABEL@"; | |||
|     const bool StormVersion::versionDev = @STORM_VERSION_DEV@; | |||
|     const StormVersion::VersionSource StormVersion::versionSource = @STORM_VERSION_SOURCE@; | |||
|     const std::string StormVersion::gitRevisionHash = "@STORM_VERSION_GIT_HASH@"; | |||
|     const unsigned StormVersion::commitsAhead = @STORM_VERSION_COMMITS_AHEAD@; | |||
|     const boost::optional<bool> StormVersion::dirty = @STORM_VERSION_DIRTY@; | |||
|     const std::string StormVersion::systemName = "@CMAKE_SYSTEM_NAME@"; | |||
|     const std::string StormVersion::systemVersion = "@CMAKE_SYSTEM_VERSION@"; | |||
|     const std::string StormVersion::cxxCompiler = "@STORM_COMPILER_ID@ @CMAKE_CXX_COMPILER_VERSION@"; | |||
| #ifdef NDEBUG | |||
|     const std::string StormVersion::cxxFlags = "@CMAKE_CXX_FLAGS@" " " "@CMAKE_CXX_FLAGS_RELEASE@"; | |||
| #else | |||
|     const std::string StormVersion::cxxFlags = "@CMAKE_CXX_FLAGS@" " " "@CMAKE_CXX_FLAGS_DEBUG@"; | |||
| #endif | |||
| 
 | |||
| } | |||
| @ -0,0 +1,98 @@ | |||
| #pragma once | |||
| 
 | |||
| #include <string> | |||
| #include <sstream> | |||
| 
 | |||
| #include <boost/optional.hpp> | |||
| 
 | |||
| namespace storm { | |||
| 
 | |||
|     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 label version of Storm (might be empty). | |||
|         const static std::string versionLabel; | |||
| 
 | |||
|         /// Flag indicating if the version of Storm is a development version. | |||
|         const static bool versionDev; | |||
| 
 | |||
|         enum class VersionSource { | |||
|             Git, Static | |||
|         }; | |||
| 
 | |||
|         /// The source of the versioning information. | |||
|         const static VersionSource versionSource; | |||
| 
 | |||
|         /// The short hash of the git commit this build is based 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 otherwise. If none, no information about dirtyness is given. | |||
|         const static boost::optional<bool> 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 compiler version that was used to build Storm. | |||
|         const static std::string cxxCompiler; | |||
| 
 | |||
|         /// The flags that were used to build Storm. | |||
|         const static std::string cxxFlags; | |||
| 
 | |||
|         static std::string shortVersionString() { | |||
|             std::stringstream sstream; | |||
|             sstream << versionMajor << "." << versionMinor << "." << versionPatch; | |||
|             if (!versionLabel.empty()) { | |||
|                 sstream << "-" << versionLabel; | |||
|             } | |||
|             if (versionDev) { | |||
|                 sstream << " (dev)"; | |||
|             } | |||
|             return sstream.str(); | |||
|         } | |||
| 
 | |||
|         static std::string longVersionString() { | |||
|             std::stringstream sstream; | |||
|             sstream << "Version " << shortVersionString(); | |||
|             if (versionSource == VersionSource::Static) { | |||
|                 sstream << " (derived statically)"; | |||
|             } | |||
|             if (commitsAhead > 0) { | |||
|                 sstream << " (+ " << commitsAhead << " commits)"; | |||
|             } | |||
|             if (!gitRevisionHash.empty()) { | |||
|                 sstream << " build from revision " << gitRevisionHash; | |||
|             } else { | |||
|                 sstream << " built from archive"; | |||
|             } | |||
|             if (dirty) { | |||
|                 if (dirty.get()) { | |||
|                     sstream << " (dirty)"; | |||
|                 } else { | |||
|                     sstream << " (clean)"; | |||
|                 } | |||
|             } else { | |||
|                 sstream << " (potentially dirty)"; | |||
|             } | |||
|             return sstream.str(); | |||
|         } | |||
| 
 | |||
|         static std::string buildInfo() { | |||
|             std::stringstream sstream; | |||
|             sstream << "Compiled on " << systemName << " " << systemVersion << " using " << cxxCompiler << " with flags '" << cxxFlags << "'"; | |||
|             return sstream.str(); | |||
|         } | |||
|     }; | |||
| } | |||
| @ -1,100 +0,0 @@ | |||
| #pragma once | |||
| 
 | |||
| #include <string> | |||
| #include <sstream> | |||
| 
 | |||
| #include <boost/optional.hpp> | |||
| 
 | |||
| 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 label version of Storm (might be empty). | |||
|             const static std::string versionLabel; | |||
| 
 | |||
|             /// Flag indicating if the version of Storm is a development version. | |||
|             const static bool versionDev; | |||
| 
 | |||
|             enum class VersionSource { | |||
|                 Git, Static | |||
|             }; | |||
| 
 | |||
|             /// The source of the versioning information. | |||
|             const static VersionSource versionSource; | |||
| 
 | |||
|             /// The short hash of the git commit this build is based 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 otherwise. If none, no information about dirtyness is given. | |||
|             const static boost::optional<bool> 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 compiler version that was used to build Storm. | |||
|             const static std::string cxxCompiler; | |||
| 
 | |||
|             /// The flags that were used to build Storm. | |||
|             const static std::string cxxFlags; | |||
| 
 | |||
|             static std::string shortVersionString() { | |||
|                 std::stringstream sstream; | |||
|                 sstream << versionMajor << "." << versionMinor << "." << versionPatch; | |||
|                 if (!versionLabel.empty()) { | |||
|                     sstream << "-" << versionLabel; | |||
|                 } | |||
|                 if (versionDev) { | |||
|                     sstream << " (dev)"; | |||
|                 } | |||
|                 return sstream.str(); | |||
|             } | |||
| 
 | |||
|             static std::string longVersionString() { | |||
|                 std::stringstream sstream; | |||
|                 sstream << "Version " << shortVersionString(); | |||
|                 if (versionSource == VersionSource::Static) { | |||
|                     sstream << " (derived statically)"; | |||
|                 } | |||
|                 if (commitsAhead > 0) { | |||
|                     sstream << " (+ " << commitsAhead << " commits)"; | |||
|                 } | |||
|                 if (!gitRevisionHash.empty()) { | |||
|                     sstream << " build from revision " << gitRevisionHash; | |||
|                 } else { | |||
|                     sstream << " built from archive"; | |||
|                 } | |||
|                 if (dirty) { | |||
|                     if (dirty.get()) { | |||
|                         sstream << " (dirty)"; | |||
|                     } else { | |||
|                         sstream << " (clean)"; | |||
|                     } | |||
|                 } else { | |||
|                     sstream << " (potentially dirty)"; | |||
|                 } | |||
|                 return sstream.str(); | |||
|             } | |||
| 
 | |||
|             static std::string buildInfo() { | |||
|                 std::stringstream sstream; | |||
|                 sstream << "Compiled on " << systemName << " " << systemVersion << " using " << cxxCompiler << " with flags '" << cxxFlags << "'"; | |||
|                 return sstream.str(); | |||
|             } | |||
|         }; | |||
|     } | |||
| } | |||
| @ -1,26 +0,0 @@ | |||
| // AUTO GENERATED -- DO NOT CHANGE | |||
| #include "storm/utility/storm-version.h" | |||
| 
 | |||
| namespace storm { | |||
|     namespace utility { | |||
| 
 | |||
|         const unsigned StormVersion::versionMajor = @STORM_VERSION_MAJOR@; | |||
|         const unsigned StormVersion::versionMinor = @STORM_VERSION_MINOR@; | |||
|         const unsigned StormVersion::versionPatch = @STORM_VERSION_DEV_PATCH@; | |||
|         const std::string StormVersion::versionLabel = "@STORM_VERSION_LABEL@"; | |||
|         const bool StormVersion::versionDev = @STORM_VERSION_DEV@; | |||
|         const StormVersion::VersionSource StormVersion::versionSource = @STORM_VERSION_SOURCE@; | |||
|         const std::string StormVersion::gitRevisionHash = "@STORM_VERSION_GIT_HASH@"; | |||
|         const unsigned StormVersion::commitsAhead = @STORM_VERSION_COMMITS_AHEAD@; | |||
|         const boost::optional<bool> StormVersion::dirty = @STORM_VERSION_DIRTY@; | |||
|         const std::string StormVersion::systemName = "@CMAKE_SYSTEM_NAME@"; | |||
|         const std::string StormVersion::systemVersion = "@CMAKE_SYSTEM_VERSION@"; | |||
|         const std::string StormVersion::cxxCompiler = "@STORM_COMPILER_ID@ @CMAKE_CXX_COMPILER_VERSION@"; | |||
| #ifdef NDEBUG | |||
|         const std::string StormVersion::cxxFlags = "@CMAKE_CXX_FLAGS@" " " "@CMAKE_CXX_FLAGS_RELEASE@"; | |||
| #else | |||
|         const std::string StormVersion::cxxFlags = "@CMAKE_CXX_FLAGS@" " " "@CMAKE_CXX_FLAGS_DEBUG@"; | |||
| #endif | |||
| 
 | |||
|     } | |||
| } | |||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue