diff --git a/CMake/VerStubUtil.cmake b/CMake/VerStubUtil.cmake new file mode 100644 index 0000000000..fb7f87d585 --- /dev/null +++ b/CMake/VerStubUtil.cmake @@ -0,0 +1,7 @@ +include("${CMAKE_CURRENT_LIST_DIR}/SMDefs.cmake") + +# SM_TIMESTAMP_DATE and SM_TIMESTAMP_TIME, needed for the stub, are prepared/generated as we want them in SMDefs +configure_file( + "${SM_SRC_DIR}/version_updater/verstub.cpp.in" + "${SM_SRC_DIR}/generated/verstub.cpp" +) \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2650a2a498..b0daca90e1 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,14 +1,28 @@ -# Version Updater library. -add_subdirectory(version_updater) +file(MAKE_DIRECTORY "${SM_SRC_DIR}/generated") -# This part may move to a different file: it's the SM Data project. +# Version Stub generation add_custom_command( - OUTPUT ${SM_SRC_DIR}/verstub.cpp - COMMAND VersionUpdater ${SM_SRC_DIR}/verstub.cpp - DEPENDS VersionUpdater + OUTPUT ${SM_SRC_DIR}/generated/verstub.cpp + COMMAND ${CMAKE_COMMAND} + ARGS -DSM_SRC_DIR=${SM_SRC_DIR} -P ${SM_SRC_DIR}/../CMake/VerStubUtil.cmake + WORKING_DIRECTORY "${SM_ROOT_DIR}" + DEPENDS ${SM_SRC_DIR}/generated/delete ) - -source_group("Generated Files" FILES ${SM_SRC_DIR}/verstub.cpp) +if(WIN32) +add_custom_command( + OUTPUT ${SM_SRC_DIR}/generated/delete + COMMAND del + ARGS ${SM_SRC_DIR}/generated/ver* + WORKING_DIRECTORY "${SM_ROOT_DIR}" +) +else() +add_custom_command( + OUTPUT ${SM_SRC_DIR}/generated/delete + COMMAND rm + ARGS -f ${SM_SRC_DIR}/generated/ver* + WORKING_DIRECTORY "${SM_ROOT_DIR}" +) +endif() # Main project is below. @@ -125,7 +139,7 @@ list(APPEND SMDATA_FILE_TYPES_HPP source_group("File Types" FILES ${SMDATA_FILE_TYPES_SRC} ${SMDATA_FILE_TYPES_HPP}) list(APPEND SMDATA_ALL_FILES_SRC - ${SM_SRC_DIR}/verstub.cpp + ${SM_SRC_DIR}/generated/verstub.cpp ${SMDATA_GLOBAL_FILES_SRC} ${SMDATA_GLOBAL_SINGLETON_SRC} ${SMDATA_ALL_ACTORS_SRC} diff --git a/src/version_updater/version.hpp.in b/src/version_updater/version.hpp.in deleted file mode 100644 index 161d5fa3ca..0000000000 --- a/src/version_updater/version.hpp.in +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef VERSION_UPDATER_HPP_ -#define VERSION_UPDATER_HPP_ - -int smVersionMajor = @SM_VERSION_MAJOR@; -int smVersionMinor = @SM_VERSION_MINOR@; -int smVersionPatch = @SM_VERSION_PATCH@; -char const * const smVersionGitHash = "@SM_VERSION_GIT_HASH@"; -#if defined(IS_FULL_RELEASE) -char const * const smVersionFull = "@SM_VERSION_TRADITIONAL@"; -#else -char const * const smVersionFull = "@SM_VERSION_FULL@"; -#endif -char const * const smVersionTraditional = "@SM_VERSION_TRADITIONAL@"; - -#endif diff --git a/src/version_updater/verstub.cpp.in b/src/version_updater/verstub.cpp.in new file mode 100644 index 0000000000..3db81a1f3f --- /dev/null +++ b/src/version_updater/verstub.cpp.in @@ -0,0 +1,15 @@ +extern int const sm_version_major = @SM_VERSION_MAJOR@; +extern int const sm_version_minor = @SM_VERSION_MINOR@; +extern int const sm_version_patch = @SM_VERSION_PATCH@; +extern char const * const sm_version_git_hash = "@SM_VERSION_GIT_HASH@"; +extern char const * const smVersionTraditional = "@SM_VERSION_TRADITIONAL@"; +extern char const * const smVersionFull = "@SM_VERSION_FULL@"; +extern char const * const version_date = "@SM_TIMESTAMP_DATE@"; +extern char const * const version_time = "@SM_TIMESTAMP_TIME@"; +#if defined(IS_FULL_RELEASE) +extern char const * const product_version = smVersionFull; +#else +extern char const * const product_version = smVersionTraditional; +#endif + +extern int const version_num = 0; // will change \ No newline at end of file