From dfa56a33e08de755fa85184436ac8d946e928ab6 Mon Sep 17 00:00:00 2001 From: click Date: Mon, 11 Feb 2013 23:27:20 +0100 Subject: Buildsystem/CMake: Correct a few mistakes regarding WITHOUT_GIT, and add a better warning during configure-phase. --- CMakeLists.txt | 2 +- cmake/genrev.cmake | 54 ++++++++++++++++++++++--------------------------- cmake/showoptions.cmake | 24 +++++++++++++++++++--- 3 files changed, 46 insertions(+), 34 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3b04269f1fa..72d1a225f28 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -61,7 +61,7 @@ if( UNIX ) find_package(BZip2) endif() -if( NOT WITHOUT_GIT ) +if(NOT WITHOUT_GIT) find_package(Git) endif() diff --git a/cmake/genrev.cmake b/cmake/genrev.cmake index a335ed2bd56..a2341b501af 100644 --- a/cmake/genrev.cmake +++ b/cmake/genrev.cmake @@ -10,57 +10,51 @@ # User has manually chosen to ignore the git-tests, so throw them a warning. # This is done EACH compile so they can be alerted about the consequences. + +if(NOT BUILDDIR) + # Workaround for funny MSVC behaviour - this segment only run during compile + set(GIT_EXEC ${GIT_EXECUTABLE}) + set(BUILDDIR ${CMAKE_BINARY_DIR}) +endif() + if(WITHOUT_GIT) - message(STATUS " - By choosing the WITHOUT_GIT option, you waive all rights for support, and accept - that any or all requests for assistance by you to core developers will be rejected. - You, as user, take full responsibility for issues, problems etc that might arise - from using the core, as we we can not properly detect what codebase you're using. - We remind you that you need to use the repository and a proper version of git for - the revision/hash to work, and thus get our support if the need arises. - ") set(rev_date "1970-01-01 00:00:00 +0000") set(rev_hash "Archived") else() - # Workaround for funny MSVC behaviour - this segment only run during compile - if(NOT BUILDDIR) - set(BUILDDIR ${CMAKE_BINARY_DIR}) - set(_GIT_EXEC ${GIT_EXECUTABLE}) - endif() - - if(_GIT_EXEC) + if(GIT_EXEC) # Create a revision-string that we can use execute_process( - COMMAND "${_GIT_EXEC}" describe --match init --dirty=+ --abbrev=12 + COMMAND "${GIT_EXEC}" describe --match init --dirty=+ --abbrev=12 WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" OUTPUT_VARIABLE rev_info OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET ) - # And grab the commits timestamp + # And grab the commits timestamp execute_process( - COMMAND "${_GIT_EXEC}" show -s --format=%ci + COMMAND "${GIT_EXEC}" show -s --format=%ci WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" OUTPUT_VARIABLE rev_date OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET ) endif() -endif() -# Last minute check - ensure that we have a proper revision -# If everything above fails (means the user has erased the git revision control directory or removed the origin/HEAD tag) + # Last minute check - ensure that we have a proper revision + # If everything above fails (means the user has erased the git revision control directory or removed the origin/HEAD tag) -if(NOT rev_info) - # No valid ways available to find/set the revision/hash, so let's force some defaults - message(STATUS "WARNING - Missing repository tags - you may need to pull tags with git fetch -t") - message(STATUS "WARNING - Continuing anyway - note that the versionstring will be set to 0000-00-00 00:00:00 (Archived)") - set(rev_date "1970-01-01 00:00:00 +0000") - set(rev_hash "Archived") -else() - # Extract information required to build a proper versionstring - string(REGEX REPLACE init-|[0-9]+-g "" rev_hash ${rev_info}) + if(NOT rev_info) + # No valid ways available to find/set the revision/hash, so let's force some defaults + message(STATUS " + Could not find a proper repository signature (hash) - you may need to pull tags with git fetch -t + Continuing anyway - note that the versionstring will be set to 1970-01-01 00:00:00 (Archived)") + set(rev_date "1970-01-01 00:00:00 +0000") + set(rev_hash "Archived") + else() + # Extract information required to build a proper versionstring + string(REGEX REPLACE init-|[0-9]+-g "" rev_hash ${rev_info}) + endif() endif() # Create the actual revision.h file from the above params diff --git a/cmake/showoptions.cmake b/cmake/showoptions.cmake index d3415e4e204..058cce78d09 100644 --- a/cmake/showoptions.cmake +++ b/cmake/showoptions.cmake @@ -72,10 +72,28 @@ if( WIN32 ) endif() endif( WIN32 ) +if ( WITHOUT_GIT ) + message("* Use GIT revision hash : No") + message("") + message(" *** WITHOUT_GIT - WARNING!") + message(" *** By choosing the WITHOUT_GIT option you have waived all rights for support,") + message(" *** and accept that or all requests for support or assistance sent to the core") + message(" *** developers will be rejected. This due to that we will be unable to detect") + message(" *** what revision of the codebase you are using in a proper way.") + message(" *** We remind you that you need to use the repository codebase and a supported") + message(" *** version of git for the revision-hash to work, and be allowede to ask for") + message(" *** support if needed.") +else() + message("* Use GIT revision hash : Yes") +endif() + if ( NOJEM ) message("") - message("*** WARNING: jemalloc linking has been disabled!") - message("*** Please note that this is for DEBUGGING WITH VALGRIND only!") - message("*** DO NOT DISABLE IT UNLESS YOU KNOW WHAT YOU'RE DOING!") + message(" *** NOJEM - WARNING!") + message(" *** jemalloc linking has been disabled!") + message(" *** Please note that this is for DEBUGGING WITH VALGRIND only!") + message(" *** DO NOT DISABLE IT UNLESS YOU KNOW WHAT YOU'RE DOING!") endif() + message("") + -- cgit v1.2.3