diff --git a/cockatrice/CMakeLists.txt b/cockatrice/CMakeLists.txt index 30e15053..82486d44 100644 --- a/cockatrice/CMakeLists.txt +++ b/cockatrice/CMakeLists.txt @@ -69,7 +69,8 @@ SET(cockatrice_SOURCES src/localserverinterface.cpp src/localclient.cpp src/priceupdater.cpp - src/soundengine.cpp + src/soundengine.cpp + ${CMAKE_CURRENT_BINARY_DIR}/../common/version_string.cpp ) SET(cockatrice_HEADERS src/abstractcounter.h @@ -153,7 +154,7 @@ set(cockatrice_TS translations/cockatrice_pt.ts translations/cockatrice_ru.ts translations/cockatrice_sk.ts -) +) if(WIN32) set(cockatrice_SOURCES ${cockatrice_SOURCES} cockatrice.rc) diff --git a/cockatrice/src/main.h b/cockatrice/src/main.h index 34ee91df..8b66b716 100644 --- a/cockatrice/src/main.h +++ b/cockatrice/src/main.h @@ -9,7 +9,6 @@ extern CardDatabase *db; extern QTranslator *translator; const QString translationPrefix = "cockatrice"; -const QString versionString = "0.20111113"; void installNewTranslator(); diff --git a/cockatrice/src/window_main.cpp b/cockatrice/src/window_main.cpp index 573653d2..01d47b2d 100644 --- a/cockatrice/src/window_main.cpp +++ b/cockatrice/src/window_main.cpp @@ -40,6 +40,8 @@ #include "settingscache.h" #include "tab_game.h" +#include "version_string.h" + #include "pb/game_replay.pb.h" #include "pb/room_commands.pb.h" #include "pb/event_connection_closed.pb.h" @@ -210,7 +212,7 @@ void MainWindow::actAbout() { QMessageBox::about(this, tr("About Cockatrice"), QString( "Cockatrice
" - + tr("Version %1").arg(versionString) + + tr("Version %1").arg(VERSION_STRING) + "


" + tr("Authors:") + "
Max-Wilhelm Bruker
Marcus Schütz

" + "" + tr("Translators:") + "
" + tr("Spanish:") + " Víctor Martínez
" diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index 1b35a2e1..38490913 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -45,3 +45,10 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) add_subdirectory(pb) add_library(cockatrice_common ${common_SOURCES} ${common_HEADERS_MOC}) target_link_libraries(cockatrice_common cockatrice_protocol) + +add_custom_target(versionheader ALL DEPENDS version_header) +add_custom_command( + OUTPUT version_header ${CMAKE_CURRENT_BINARY_DIR}/versionheader.h + COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/getversion.cmake +) + diff --git a/common/getversion.cmake b/common/getversion.cmake new file mode 100644 index 00000000..ec5fe753 --- /dev/null +++ b/common/getversion.cmake @@ -0,0 +1,29 @@ +find_package(Git) +if(GIT_FOUND) + execute_process( + COMMAND ${GIT_EXECUTABLE} describe --long --always + RESULT_VARIABLE res_var + OUTPUT_VARIABLE GIT_COM_ID + ) + if( NOT ${res_var} EQUAL 0 ) + set( GIT_COMMIT_ID "git commit id unknown") + message( WARNING "Git failed (not a repo, or no tags). Build will not contain git revision info." ) + endif() + string( REPLACE "\n" "" GIT_COMMIT_ID "${GIT_COM_ID}" ) +else() + set( GIT_COMMIT_ID "unknown (git not found!)") + message( WARNING "Git not found. Build will not contain git revision info." ) +endif() + +set( hstring "extern const char *VERSION_STRING\;\n" ) +set( cppstring "const char * VERSION_STRING = \"${GIT_COMMIT_ID}\"\;\n") + +file(WRITE version_string.cpp.txt ${cppstring} ) +file(WRITE version_string.h.txt ${hstring} ) + +execute_process( + COMMAND ${CMAKE_COMMAND} -E copy_if_different version_string.h.txt ${CMAKE_CURRENT_BINARY_DIR}/version_string.h +) +execute_process( + COMMAND ${CMAKE_COMMAND} -E copy_if_different version_string.cpp.txt ${CMAKE_CURRENT_BINARY_DIR}/version_string.cpp +) diff --git a/servatrice/CMakeLists.txt b/servatrice/CMakeLists.txt index 1f50bded..a14223c0 100644 --- a/servatrice/CMakeLists.txt +++ b/servatrice/CMakeLists.txt @@ -2,8 +2,6 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.6) SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}) PROJECT(servatrice) -#add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../common ${CMAKE_CURRENT_BINARY_DIR}/common) - SET(servatrice_SOURCES src/main.cpp src/passwordhasher.cpp @@ -11,6 +9,7 @@ SET(servatrice_SOURCES src/server_logger.cpp src/serversocketinterface.cpp src/serversocketthread.cpp + ${CMAKE_CURRENT_BINARY_DIR}/../common/version_string.cpp ) SET(servatrice_HEADERS src/servatrice.h @@ -26,7 +25,8 @@ FIND_PACKAGE(Qt4 REQUIRED) FIND_PACKAGE(Protobuf REQUIRED) FIND_PACKAGE(Libgcrypt REQUIRED) -set(CMAKE_BUILD_TYPE Release) +#set(CMAKE_BUILD_TYPE Release) +set(CMAKE_CXX_FLAGS_DEBUG "-ggdb -O2") set(CMAKE_CXX_FLAGS_RELEASE "-O2") QT4_WRAP_CPP(servatrice_HEADERS_MOC ${servatrice_HEADERS}) diff --git a/servatrice/src/main.cpp b/servatrice/src/main.cpp index 02da15df..a0e1e26b 100644 --- a/servatrice/src/main.cpp +++ b/servatrice/src/main.cpp @@ -28,6 +28,7 @@ #include "servatrice.h" #include "server_logger.h" #include "rng_sfmt.h" +#include "version_string.h" #ifdef Q_OS_UNIX #include #endif @@ -137,7 +138,7 @@ int main(int argc, char *argv[]) #endif rng = new RNG_SFMT; - std::cerr << "Servatrice " << Servatrice::versionString.toStdString() << " starting." << std::endl; + std::cerr << "Servatrice " << VERSION_STRING << " starting." << std::endl; std::cerr << "-------------------------" << std::endl; if (testRandom) diff --git a/servatrice/src/servatrice.cpp b/servatrice/src/servatrice.cpp index 028bf1b3..22b2b265 100644 --- a/servatrice/src/servatrice.cpp +++ b/servatrice/src/servatrice.cpp @@ -630,5 +630,3 @@ void Servatrice::shutdownTimeout() if (!shutdownMinutes) deleteLater(); } - -const QString Servatrice::versionString = "Servatrice 0.20111113"; diff --git a/servatrice/src/servatrice.h b/servatrice/src/servatrice.h index 3904947e..08b98612 100644 --- a/servatrice/src/servatrice.h +++ b/servatrice/src/servatrice.h @@ -53,7 +53,6 @@ private slots: void shutdownTimeout(); public: mutable QMutex dbMutex; - static const QString versionString; Servatrice(QSettings *_settings, QObject *parent = 0); ~Servatrice(); bool openDatabase(); diff --git a/servatrice/src/serversocketinterface.cpp b/servatrice/src/serversocketinterface.cpp index 0cf3a52c..d14e8ca0 100644 --- a/servatrice/src/serversocketinterface.cpp +++ b/servatrice/src/serversocketinterface.cpp @@ -45,6 +45,7 @@ #include "pb/serverinfo_user.pb.h" #include "pb/serverinfo_deckstorage.pb.h" +#include "version_string.h" #include #include @@ -61,7 +62,7 @@ ServerSocketInterface::ServerSocketInterface(Servatrice *_server, QTcpSocket *_s Event_ServerIdentification identEvent; identEvent.set_server_name(servatrice->getServerName().toStdString()); - identEvent.set_server_version(Servatrice::versionString.toStdString()); + identEvent.set_server_version(VERSION_STRING); identEvent.set_protocol_version(protocolVersion); SessionEvent *identSe = prepareSessionEvent(identEvent); sendProtocolItem(*identSe);