diff --git a/CMakeLists.txt b/CMakeLists.txt index 7e4a21d1b7632aadfe565cd1642b4cb7bf72d26a..4f3667a5f0bbfea6e53267b1c4bce1ca85011f40 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,9 +11,11 @@ endif(COMMAND cmake_policy) project(MOOSE) +set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules") include(CheckCXXCompiler.cmake) include(CheckIncludeFileCXX) include(FindPkgConfig) +include(GetRevision) # If from command line, version info is not passed, use the git to generate a # version file. If GIT fails, use the previous known version. @@ -27,19 +29,14 @@ if( (NOT MOOSE_VERSION) AND GIT_EXEC) OUTPUT_VARIABLE MOOSE_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE ) - message(STATUS "+ Writing ${MOOSE_VERSION} to ${VERSION_FILE}" ) - file(WRITE ${VERSION_FILE} ${MOOSE_VERSION}) -elseif( (NOT MOOSE_VERSION) AND (NOT GIT_EXEC) ) - message(STATUS "+ Reading ${VERSION_FILE}" ) - if(EXISTS ${VERSION_FILE} ) - file(READ ${VERSION_FILE} MOOSE_VERSION ) - else() - string(TIMESTAMP MOOSE_VERSION "nightly-%Y%m%d" ) - set(GIT_VERSION_OUTPUT "nightly" ) - endif( ) +endif( ) + +# Default to current date. +if( (NOT MOOSE_VERSION) ) + NOW(TIMESTAMP) + set(MOOSE_VERSION "nightly-${TIMESTAMP}" ) elseif(MOOSE_VERSION) message(STATUS "+ Using user specified VERSION = ${MOOSE_VERSION}" ) - file(WRITE ${VERSION_FILE} ${MOOSE_VERSION}) else() message(FATAL_ERROR "Could not determine MOOSE_VERSION" ) endif( ) @@ -47,6 +44,9 @@ endif( ) add_definitions( -DMOOSE_VERSION="${MOOSE_VERSION}") message( STATUS "MOOSE Version ${MOOSE_VERSION}" ) +# Write VERSION to a file VERSION so that setup.py can use it. +file(WRITE ${VERSION_FILE} ${MOOSE_VERSION} ) + # This snippet is from LLVM project. # Sanity check our source directory to make sure that we are not trying to # generate an in-tree build (unless on MSVC_IDE, where it is ok), and to make @@ -103,9 +103,6 @@ option(WITH_MPI "Enable Openmpi support" OFF) option(WITH_BOOST "Use boost library instead of GSL" OFF) option(WITH_GSL "Use gsl-library. Alternative is WITH_BOOST" ON) -################################# CMKAE MACROS ################################# - -set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules") ############################ BUILD CONFIGURATION ################################# diff --git a/cmake_modules/GetRevision.cmake b/cmake_modules/GetRevision.cmake new file mode 100644 index 0000000000000000000000000000000000000000..41c991cb8a6e06d71b82eb08b0705ab085b37366 --- /dev/null +++ b/cmake_modules/GetRevision.cmake @@ -0,0 +1,20 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.6.3) + +MACRO(NOW RESULT) + IF(CMAKE_VERSION VERSION_GREATER "2.8.10") + STRING(TIMESTAMP ${RESULT} "%Y%m%d") + ELSE() + IF(WIN32) + EXECUTE_PROCESS(COMMAND "wmic" "os" "get" "localdatetime" OUTPUT_VARIABLE DATETIME) + IF(NOT DATETIME MATCHES "ERROR") + STRING(REGEX REPLACE ".*\n([0-9][0-9][0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9]).*" "\\1-\\2-\\3 \\4:\\5:\\6" ${RESULT} "${DATETIME}") + ENDIF() + ELSEIF(UNIX) + EXECUTE_PROCESS(COMMAND "date" "+%Y%m%d" OUTPUT_VARIABLE DATETIME) + STRING(REGEX REPLACE "([0-9: -]+).*" "\\1" ${RESULT} "${DATETIME}") + ELSE() + MESSAGE(SEND_ERROR "date not implemented") + SET(${RESULT} "00000000") + ENDIF() + ENDIF() +ENDMACRO()