From fc24ffdec2123e5069debf023d0f215775464f36 Mon Sep 17 00:00:00 2001 From: Fabio Bas Date: Sat, 28 Jun 2014 19:39:26 +0200 Subject: [PATCH] Cmake reorganization MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Move all cmake-related files in a new “cmake” folder * move nsis files in there, too, since they are templates parsed by cake * retrieve git version once when cmake is run, and use it for both creating version_string.h/cpp and for package naming --- CMakeLists.txt | 29 ++++++++++----------- {servatrice => cmake}/FindLibgcrypt.cmake | 0 {cockatrice => cmake}/FindQtMobility.cmake | 0 {nsis => cmake}/NSIS.definitions.nsh.in | 0 {nsis => cmake}/NSIS.template.in | 8 +++--- cmake/createversionfile.cmake | 17 ++++++++++++ {common => cmake}/getversion.cmake | 14 ++-------- {nsis => cmake}/headerimage.bmp | Bin {nsis => cmake}/leftimage.bmp | Bin cockatrice/CMakeLists.txt | 10 ++----- servatrice/CMakeLists.txt | 10 +------ 11 files changed, 40 insertions(+), 48 deletions(-) rename {servatrice => cmake}/FindLibgcrypt.cmake (100%) rename {cockatrice => cmake}/FindQtMobility.cmake (100%) rename {nsis => cmake}/NSIS.definitions.nsh.in (100%) rename {nsis => cmake}/NSIS.template.in (92%) create mode 100644 cmake/createversionfile.cmake rename {common => cmake}/getversion.cmake (52%) rename {nsis => cmake}/headerimage.bmp (100%) rename {nsis => cmake}/leftimage.bmp (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index b8bba102..4f95201a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,12 +20,8 @@ if(POLICY CMP0048) endif() set(PROJECT_NAME "Cockatrice") -set(PROJECT_VERSION_MAJOR 0) -set(PROJECT_VERSION_MINOR 0) -set(PROJECT_VERSION_PATCH 1) -set(PROJECT_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH} ) -# Defualt to "Release" build type +# Default to "Release" build type # User-provided value for CMAKE_BUILD_TYPE must be checked before the PROJECT() call IF(DEFINED CMAKE_BUILD_TYPE) SET(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "Type of build") @@ -36,9 +32,19 @@ ENDIF() # A project name is needed for CPack PROJECT("${PROJECT_NAME}") + # Set conventional loops set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true) +# Search path for cmake modules +SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) + +# Retrieve git version hash +include(getversion) + +# Create a header and a cpp file containing the version hash +include(createversionfile) + # Define a proper install path if(UNIX) if(APPLE) @@ -109,8 +115,8 @@ FIND_PACKAGE(Protobuf REQUIRED) set(CPACK_PACKAGE_CONTACT "Daenyth+github@gmail.com") set(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJECT_NAME}) set(CPACK_PACKAGE_VENDOR "Cockatrice Development Team") -set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.md") -set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING") +set(CPACK_PACKAGE_DESCRIPTION_FILE "${PROJECT_SOURCE_DIR}/README.md") +set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/COPYING") set(CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}") set(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}") set(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}") @@ -133,17 +139,10 @@ if(UNIX) endif() elseif(WIN32) set(CPACK_GENERATOR NSIS ${CPACK_GENERATOR}) - set(CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME}\\\\${PROJECT_VERSION}") - set(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\${PROJECT_NAME}.exe") - set(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} ${PROJECT_NAME}") - set(CPACK_NSIS_HELP_LINK "https://github.com/Daenyth/Cockatrice") - set(CPACK_NSIS_URL_INFO_ABOUT "https://github.com/Daenyth/Cockatrice") - set(CPACK_NSIS_CONTACT "Daenyth+github@gmail.com") - set(CPACK_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/nsis") # Configure file with custom definitions for NSIS. configure_file( - ${PROJECT_SOURCE_DIR}/nsis/NSIS.definitions.nsh.in + ${CMAKE_MODULE_PATH}/NSIS.definitions.nsh.in ${PROJECT_BINARY_DIR}/NSIS.definitions.nsh ) endif() diff --git a/servatrice/FindLibgcrypt.cmake b/cmake/FindLibgcrypt.cmake similarity index 100% rename from servatrice/FindLibgcrypt.cmake rename to cmake/FindLibgcrypt.cmake diff --git a/cockatrice/FindQtMobility.cmake b/cmake/FindQtMobility.cmake similarity index 100% rename from cockatrice/FindQtMobility.cmake rename to cmake/FindQtMobility.cmake diff --git a/nsis/NSIS.definitions.nsh.in b/cmake/NSIS.definitions.nsh.in similarity index 100% rename from nsis/NSIS.definitions.nsh.in rename to cmake/NSIS.definitions.nsh.in diff --git a/nsis/NSIS.template.in b/cmake/NSIS.template.in similarity index 92% rename from nsis/NSIS.template.in rename to cmake/NSIS.template.in index 8deb40ea..ed28a165 100644 --- a/nsis/NSIS.template.in +++ b/cmake/NSIS.template.in @@ -11,11 +11,11 @@ SetCompressor /SOLID lzma InstallDir "$PROGRAMFILES\Cockatrice" !define MUI_ABORTWARNING -!define MUI_WELCOMEFINISHPAGE_BITMAP "${NSIS_SOURCE_PATH}\nsis\leftimage.bmp" -!define MUI_UNWELCOMEFINISHPAGE_BITMAP "${NSIS_SOURCE_PATH}\nsis\leftimage.bmp" +!define MUI_WELCOMEFINISHPAGE_BITMAP "${NSIS_SOURCE_PATH}\cmake\leftimage.bmp" +!define MUI_UNWELCOMEFINISHPAGE_BITMAP "${NSIS_SOURCE_PATH}\cmake\leftimage.bmp" !define MUI_HEADERIMAGE -!define MUI_HEADERIMAGE_BITMAP "${NSIS_SOURCE_PATH}\nsis\headerimage.bmp" -!define MUI_HEADERIMAGE_UNBITMAP "${NSIS_SOURCE_PATH}\nsis\headerimage.bmp" +!define MUI_HEADERIMAGE_BITMAP "${NSIS_SOURCE_PATH}\cmake\headerimage.bmp" +!define MUI_HEADERIMAGE_UNBITMAP "${NSIS_SOURCE_PATH}\cmake\headerimage.bmp" !define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation of Cockatrice.$\r$\n$\r$\nClick Next to continue." !define MUI_FINISHPAGE_RUN "$INSTDIR/oracle.exe" !define MUI_FINISHPAGE_RUN_TEXT "Run card database downloader now" diff --git a/cmake/createversionfile.cmake b/cmake/createversionfile.cmake new file mode 100644 index 00000000..b71aa8ad --- /dev/null +++ b/cmake/createversionfile.cmake @@ -0,0 +1,17 @@ +set(VERSION_STRING_CPP "${PROJECT_BINARY_DIR}/version_string.cpp") +set(VERSION_STRING_H "${PROJECT_BINARY_DIR}/version_string.h") +INCLUDE_DIRECTORIES(${PROJECT_BINARY_DIR}) + +set( hstring "extern const char *VERSION_STRING\;\n" ) +set( cppstring "const char * VERSION_STRING = \"${PROJECT_VERSION}\"\;\n") + +file(WRITE ${PROJECT_BINARY_DIR}/version_string.cpp.txt ${cppstring} ) +file(WRITE ${PROJECT_BINARY_DIR}/version_string.h.txt ${hstring} ) + +execute_process( + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PROJECT_BINARY_DIR}/version_string.h.txt ${VERSION_STRING_H} +) +execute_process( + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PROJECT_BINARY_DIR}/version_string.cpp.txt ${VERSION_STRING_CPP} +) + diff --git a/common/getversion.cmake b/cmake/getversion.cmake similarity index 52% rename from common/getversion.cmake rename to cmake/getversion.cmake index ec5fe753..9db61040 100644 --- a/common/getversion.cmake +++ b/cmake/getversion.cmake @@ -15,15 +15,5 @@ else() 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 -) +set(PROJECT_VERSION_MAJOR ${GIT_COMMIT_ID}) +set(PROJECT_VERSION ${GIT_COMMIT_ID} ) \ No newline at end of file diff --git a/nsis/headerimage.bmp b/cmake/headerimage.bmp similarity index 100% rename from nsis/headerimage.bmp rename to cmake/headerimage.bmp diff --git a/nsis/leftimage.bmp b/cmake/leftimage.bmp similarity index 100% rename from nsis/leftimage.bmp rename to cmake/leftimage.bmp diff --git a/cockatrice/CMakeLists.txt b/cockatrice/CMakeLists.txt index 53313151..f785b1fd 100644 --- a/cockatrice/CMakeLists.txt +++ b/cockatrice/CMakeLists.txt @@ -90,7 +90,7 @@ SET(cockatrice_SOURCES src/qt-json/json.cpp src/soundengine.cpp src/pending_command.cpp - ${CMAKE_CURRENT_BINARY_DIR}/version_string.cpp + ${VERSION_STRING_CPP} ) if (UNIX AND NOT APPLE) @@ -130,9 +130,8 @@ set(COCKATRICE_LIBS) # Qt4 stuff if(Qt4_FOUND) if (NOT QT_QTMULTIMEDIA_FOUND) - SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}) FIND_PACKAGE(QtMobility REQUIRED) - endif (NOT QT_QTMULTIMEDIA_FOUND) + endif() SET(QT_USE_QTNETWORK TRUE) SET(QT_USE_QTMULTIMEDIA TRUE) @@ -257,11 +256,6 @@ elseif(WIN32) INSTALL(FILES ${cockatrice_QM} DESTINATION ./translations) endif() -add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/version_string.cpp ${CMAKE_CURRENT_BINARY_DIR}/version_string.h - COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/../common/getversion.cmake -) - if(APPLE) # these needs to be relative to CMAKE_INSTALL_PREFIX set(plugin_dest_dir cockatrice.app/Contents/Plugins) diff --git a/servatrice/CMakeLists.txt b/servatrice/CMakeLists.txt index 1f5383b4..42e2bb74 100644 --- a/servatrice/CMakeLists.txt +++ b/servatrice/CMakeLists.txt @@ -4,8 +4,6 @@ PROJECT(servatrice) -# cmake module for libgcrypt is included in current directory -SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}) FIND_PACKAGE(Libgcrypt REQUIRED) SET(servatrice_SOURCES @@ -17,7 +15,7 @@ SET(servatrice_SOURCES src/server_logger.cpp src/serversocketinterface.cpp src/isl_interface.cpp - ${CMAKE_CURRENT_BINARY_DIR}/version_string.cpp + ${VERSION_STRING_CPP} ) set(SERVATRICE_LIBS) @@ -85,12 +83,6 @@ if(Qt5Widgets_FOUND) qt5_use_modules(servatrice ${SERVATRICE_LIBS}) endif() -#add_custom_target(versionheader ALL DEPENDS version_header) -add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/version_string.h ${CMAKE_CURRENT_BINARY_DIR}/version_string.cpp - COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/../common/getversion.cmake -) - # install rules if(UNIX) if(APPLE)