From 12e4991c6bfadfe497d46f6eeac8bd116382966a Mon Sep 17 00:00:00 2001 From: Philip Rinn Date: Sun, 27 Mar 2011 17:13:41 +0200 Subject: [PATCH] Cleanup generation of AboutThisBuild.txt and fix wrong path assumtions for the splash screen (closes issue #591) (branch_3.0) --- About-Apple.cmake | 25 ++++++++++++++----------- About-Linux.cmake | 27 +++++++++++++++------------ About-Windows.cmake | 18 ++++++++++++------ CMakeLists.txt | 2 +- rtgui/config.h.in | 3 +++ rtgui/splash.cc | 14 +++++++++++--- rtgui/version.h.in | 11 +++++++++++ 7 files changed, 67 insertions(+), 33 deletions(-) create mode 100644 rtgui/version.h.in diff --git a/About-Apple.cmake b/About-Apple.cmake index 8f4ed6f55..87ae0a616 100644 --- a/About-Apple.cmake +++ b/About-Apple.cmake @@ -3,7 +3,7 @@ string (TOUPPER ${CMAKE_BUILD_TYPE} UPPER_CMAKE_BUILD_TYPE) -# wee look for the hg command in this paths by order of preference +# we look for the hg command in this paths by order of preference find_file(HG_CMD hg PATHS "/opt/local/bin" "/usr/local/bin" "/usr/bin") find_file(HG_CMD hg) @@ -14,25 +14,28 @@ else (HG_CMD STREQUAL HG_CMD-NOTFOUND) endif (HG_CMD STREQUAL HG_CMD-NOTFOUND) set (OUT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/AboutThisBuild.txt") -set (VERSION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/rtgui/version.h") set (SHELL "/bin/bash") +execute_process(COMMAND ${HG_CMD} parents --template={latesttag}.{latesttagdistance} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE HG_VERSION) +execute_process(COMMAND ${HG_CMD} parents --template={node|short} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE HG_CHANGESET) +execute_process(COMMAND ${HG_CMD} parents --template={latesttagdistance} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE HG_TAGDISTANCE) + +# build version.h from template +configure_file (${CMAKE_CURRENT_SOURCE_DIR}/rtgui/version.h.in ${CMAKE_CURRENT_BINARY_DIR}/rtgui/version.h) -# if AboutThisBuild.txt has to be deleted, i guess that it's also the case for version.txt... add_custom_target (AboutFile ALL COMMAND rm -f ${OUT_FILE} - COMMAND rm -f ${VERSION_FILE} - COMMAND for i in \$\( ${HG_CMD} -R \"${CMAKE_CURRENT_SOURCE_DIR}\" branch \)\; do echo Branch: $i >${OUT_FILE}\; done - COMMAND ${HG_CMD} -R \"${CMAKE_CURRENT_SOURCE_DIR}\" parents --template=\"Version: {latesttag}.{latesttagdistance}\\nChangset: {node|short}\\n\" >>${OUT_FILE} - COMMAND for i in \$\( gcc -dumpversion \) \;do echo Compiler: GCC $i >>${OUT_FILE} \; done + COMMAND echo Branch: `${HG_CMD} -R ${CMAKE_CURRENT_SOURCE_DIR} branch` >>${OUT_FILE} + COMMAND echo Version: ${HG_VERSION} >>${OUT_FILE} + COMMAND echo Changset: ${HG_CHANGESET} >>${OUT_FILE} + COMMAND echo Compiler: GCC `gcc -dumpversion` >>${OUT_FILE} COMMAND echo Processor: ${PROC_LABEL} >>${OUT_FILE} COMMAND echo Bit depth: ${PROC_BIT_DEPTH} >>${OUT_FILE} COMMAND echo Gtkmm: V${GTKMM_VERSION} >>${OUT_FILE} COMMAND echo Build type: ${CMAKE_BUILD_TYPE} >>${OUT_FILE} COMMAND echo Build flags: ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${UPPER_CMAKE_BUILD_TYPE}} >>${OUT_FILE} COMMAND echo Link flags: ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_${UPPER_CMAKE_BUILD_TYPE}} >>${OUT_FILE} - COMMAND if [ \"${OPTION_OMP}\" = \"ON\" ] \; then echo OpenMP support: Yes >>${OUT_FILE} \;else echo OpenMP support: No >>${OUT_FILE} \;fi - COMMAND if [ \"${WITH_MYFILE_MMAP}\" = \"ON\" ] \; then echo MMAP support: Yes >>${OUT_FILE} \; else echo MMAP support: No >>${OUT_FILE} \;fi - COMMAND if [ \"${WITH_RAWZOR}\" = \"ON\" ] \; then echo Rawzor support: Yes >>${OUT_FILE} \;else echo Rawzor support: No >>${OUT_FILE} \;fi - COMMAND ${HG_CMD} -R \"${CMAKE_CURRENT_SOURCE_DIR}\" parents --template=\"// This file is automatically generated by the Makefile \; DO NOT EDIT!\\n// You can \(should\) also tell mercurial to ignore it.\\n\\n\#ifndef _VERSION_\\n\#define _VERSION_\\n\\n\#define VERSION \\"{latesttag}.{latesttagdistance}\\"\\n\#define TAGDISTANCE {latesttagdistance}\\n\\n\#endif\\n\" >${VERSION_FILE} + COMMAND echo OpenMP support: ${OPTION_OMP} >>${OUT_FILE} + COMMAND echo MMAP support: ${WITH_MYFILE_MMAP} >>${OUT_FILE} + COMMAND echo Rawzor support: ${WITH_RAWZOR} >>${OUT_FILE} COMMENT "Creating the about file" ) diff --git a/About-Linux.cmake b/About-Linux.cmake index 5761a785f..e73e298aa 100644 --- a/About-Linux.cmake +++ b/About-Linux.cmake @@ -3,7 +3,7 @@ string (TOUPPER ${CMAKE_BUILD_TYPE} UPPER_CMAKE_BUILD_TYPE) -# wee look for the hg command in this paths by order of preference +# we look for the hg command in this paths by order of preference find_file(HG_CMD hg) if (HG_CMD STREQUAL HG_CMD-NOTFOUND) @@ -13,25 +13,28 @@ else (HG_CMD STREQUAL HG_CMD-NOTFOUND) endif (HG_CMD STREQUAL HG_CMD-NOTFOUND) set (OUT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/AboutThisBuild.txt") -set (VERSION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/rtgui/version.h") set (SHELL "/bin/bash") +execute_process(COMMAND ${HG_CMD} parents --template={latesttag}.{latesttagdistance} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE HG_VERSION) +execute_process(COMMAND ${HG_CMD} parents --template={node|short} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE HG_CHANGESET) +execute_process(COMMAND ${HG_CMD} parents --template={latesttagdistance} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE HG_TAGDISTANCE) + +# build version.h from template +configure_file (${CMAKE_CURRENT_SOURCE_DIR}/rtgui/version.h.in ${CMAKE_CURRENT_BINARY_DIR}/rtgui/version.h) -# if AboutThisBuild.txt has to be deleted, i guess that it's also the case for version.txt... add_custom_target (AboutFile ALL COMMAND rm -f ${OUT_FILE} - COMMAND rm -f ${VERSION_FILE} - COMMAND for i in \$\( ${HG_CMD} -R \"${CMAKE_CURRENT_SOURCE_DIR}\" branch \)\; do echo Branch: $i >${OUT_FILE}\; done - COMMAND ${HG_CMD} -R \"${CMAKE_CURRENT_SOURCE_DIR}\" parents --template=\"Version: {latesttag}.{latesttagdistance}\\nChangset: {node|short}\\n\" >>${OUT_FILE} - COMMAND for i in \$\( gcc -dumpversion \) \;do echo Compiler: GCC $i >>${OUT_FILE} \; done + COMMAND echo Branch: `${HG_CMD} -R ${CMAKE_CURRENT_SOURCE_DIR} branch` >>${OUT_FILE} + COMMAND echo Version: ${HG_VERSION} >>${OUT_FILE} + COMMAND echo Changset: ${HG_CHANGESET} >>${OUT_FILE} + COMMAND echo Compiler: GCC `gcc -dumpversion` >>${OUT_FILE} COMMAND echo Processor: ${PROC_LABEL} >>${OUT_FILE} COMMAND echo Bit depth: ${PROC_BIT_DEPTH} >>${OUT_FILE} COMMAND echo Gtkmm: V${GTKMM_VERSION} >>${OUT_FILE} COMMAND echo Build type: ${CMAKE_BUILD_TYPE} >>${OUT_FILE} COMMAND echo Build flags: ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${UPPER_CMAKE_BUILD_TYPE}} >>${OUT_FILE} - COMMAND echo Link flags: ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_${UPPER_CMAKE_BUILD_TYPE}} >>${OUT_FILE} - COMMAND if [ \"${OPTION_OMP}\" = \"ON\" ] \; then echo OpenMP support: Yes >>${OUT_FILE} \;else echo OpenMP support: No >>${OUT_FILE} \;fi - COMMAND if [ \"${WITH_MYFILE_MMAP}\" = \"ON\" ] \; then echo MMAP support: Yes >>${OUT_FILE} \; else echo MMAP support: No >>${OUT_FILE} \;fi - COMMAND if [ \"${WITH_RAWZOR}\" = \"ON\" ] \; then echo Rawzor support: Yes >>${OUT_FILE} \;else echo Rawzor support: No >>${OUT_FILE} \;fi - COMMAND ${HG_CMD} -R \"${CMAKE_CURRENT_SOURCE_DIR}\" parents --template=\"// This file is automatically generated by the Makefile \; DO NOT EDIT!\\n// You can \(should\) also tell mercurial to ignore it.\\n\\n\#ifndef _VERSION_\\n\#define _VERSION_\\n\\n\#define VERSION \\"{latesttag}.{latesttagdistance}\\"\\n\#define TAGDISTANCE {latesttagdistance}\\n\\n\#endif\\n\" >${VERSION_FILE} + COMMAND echo Link flags: ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_${UPPER_CMAKE_BUILD_TYPE}} >>${OUT_FILE} + COMMAND echo OpenMP support: ${OPTION_OMP} >>${OUT_FILE} + COMMAND echo MMAP support: ${WITH_MYFILE_MMAP} >>${OUT_FILE} + COMMAND echo Rawzor support: ${WITH_RAWZOR} >>${OUT_FILE} COMMENT "Creating the about file" ) diff --git a/About-Windows.cmake b/About-Windows.cmake index 398a9ed36..6b9ac62bd 100644 --- a/About-Windows.cmake +++ b/About-Windows.cmake @@ -4,11 +4,18 @@ string (TOUPPER ${CMAKE_BUILD_TYPE} UPPER_CMAKE_BUILD_TYPE) set (OUT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/AboutThisBuild.txt") -set (VERSION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/rtgui/version.h") + +execute_process(COMMAND ${HG_CMD} parents --template={latesttag}.{latesttagdistance} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE HG_VERSION) +execute_process(COMMAND ${HG_CMD} parents --template={node|short} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE HG_CHANGESET) +execute_process(COMMAND ${HG_CMD} parents --template={latesttagdistance} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE HG_TAGDISTANCE) + +# build version.h from template +configure_file (${CMAKE_CURRENT_SOURCE_DIR}/rtgui/version.h.in ${CMAKE_CURRENT_BINARY_DIR}/rtgui/version.h) add_custom_target (AboutFile ALL COMMAND for /F \"tokens=*\" %%i in \('hg -R \"${CMAKE_CURRENT_SOURCE_DIR}\" branch'\) do echo Branch: %%i >${OUT_FILE} - COMMAND hg -R \"${CMAKE_CURRENT_SOURCE_DIR}\" parents --template=\"Version: {latesttag}.{latesttagdistance}\\nChangset: {node|short}\\n\" >>${OUT_FILE} + COMMAND echo Version: ${HG_VERSION} >>${OUT_FILE} + COMMAND echo Changset: ${HG_CHANGESET} >>${OUT_FILE} COMMAND for /F \"tokens=*\" %%i in \('gcc -dumpversion'\) do echo Compiler: GCC%%i >>${OUT_FILE} COMMAND \(echo Processor: ${PROC_LABEL}\) >>${OUT_FILE} COMMAND \(echo Bit depth: ${PROC_BIT_DEPTH}\) >>${OUT_FILE} @@ -16,9 +23,8 @@ add_custom_target (AboutFile ALL COMMAND \(echo Build type: ${CMAKE_BUILD_TYPE}\) >>${OUT_FILE} COMMAND \(echo Build flags: ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${UPPER_CMAKE_BUILD_TYPE}} \) >>${OUT_FILE} COMMAND \(echo Link flags: ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_${UPPER_CMAKE_BUILD_TYPE}} \) >>${OUT_FILE} - COMMAND (if ${OPTION_OMP}==ON \(echo OpenMP support: Yes\) else \(echo OpenMP support: No\)) >>${OUT_FILE} - COMMAND (if ${WITH_MYFILE_MMAP}==ON \(echo MMAP support: Yes\) else \(echo MMAP support: No\)) >>${OUT_FILE} - COMMAND (if ${WITH_RAWZOR}==ON \(echo Rawzor support: Yes\) else \(echo Rawzor support: No\)) >>${OUT_FILE} - COMMAND hg -R \"${CMAKE_CURRENT_SOURCE_DIR}\" parents --template=\"// This file is automatically generated by the Makefile \; DO NOT EDIT!\\n// You can \(should\) also tell mercurial to ignore it.\\n\\n\#ifndef _VERSION_\\n\#define _VERSION_\\n\\n\#define VERSION \\"{latesttag}.{latesttagdistance}\\"\\n\#define TAGDISTANCE {latesttagdistance}\\n\\n\#endif\\n\" >${VERSION_FILE} + COMMAND \(echo OpenMP support: ${OPTION_OMP}\) >>${OUT_FILE} + COMMAND \(echo MMAP support: ${WITH_MYFILE_MMAP}\) >>${OUT_FILE} + COMMAND \(echo Rawzor support: ${WITH_RAWZOR}\) >>${OUT_FILE} COMMENT "Creating the about file" ) diff --git a/CMakeLists.txt b/CMakeLists.txt index 37ba0cf80..49afd821f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -242,7 +242,7 @@ endif (UNIX) install (FILES AUTHORS.txt DESTINATION ${CREDITSDIR}) install (FILES LICENSE.txt DESTINATION ${LICENCEDIR}) -install (FILES AboutThisBuild.txt DESTINATION ${BINDIR}) +install (FILES AboutThisBuild.txt DESTINATION ${CREDITSDIR}) add_subdirectory (rtexif) add_subdirectory (rtengine) diff --git a/rtgui/config.h.in b/rtgui/config.h.in index 19638a24a..d5f46316c 100644 --- a/rtgui/config.h.in +++ b/rtgui/config.h.in @@ -21,5 +21,8 @@ #define __CONFIG_H__ #define DATA_SEARCH_PATH "${DATADIR}" +#define DOC_SEARCH_PATH "${DOCDIR}" +#define CREDITS_SEARCH_PATH "${CREDITSDIR}" +#define LICENCE_SEARCH_PATH "${LICENCEDIR}" #endif diff --git a/rtgui/splash.cc b/rtgui/splash.cc index f6bdf2214..2a7b3e4fb 100644 --- a/rtgui/splash.cc +++ b/rtgui/splash.cc @@ -21,6 +21,10 @@ #include #include +#ifndef WIN32 +#include +#endif + extern Glib::ustring argv0; extern Glib::ustring versionString; @@ -82,7 +86,11 @@ Splash::Splash () { splashImage->show (); // Tab 2: the informations about the current version - std::string buildFileName = Glib::build_filename (argv0, "AboutThisBuild.txt"); +#if defined _WIN32 || defined __APPLE__ + std::string buildFileName = Glib::build_filename (argv0, "AboutThisBuild.txt"); +#else + std::string buildFileName = Glib::build_filename (CREDITS_SEARCH_PATH, "AboutThisBuild.txt"); +#endif if ( Glib::file_test(buildFileName, (Glib::FILE_TEST_EXISTS)) ) { FILE *f = g_fopen (buildFileName.c_str(), "rt"); if (f != NULL) { @@ -108,7 +116,7 @@ Splash::Splash () { #if defined _WIN32 || defined __APPLE__ std::string creditsFileName = Glib::build_filename (argv0, "AUTHORS.txt"); #else - std::string creditsFileName = Glib::build_filename (argv0, "share/doc/AUTHORS.txt"); + std::string creditsFileName = Glib::build_filename (CREDITS_SEARCH_PATH, "AUTHORS.txt"); #endif if ( Glib::file_test(creditsFileName, (Glib::FILE_TEST_EXISTS)) ) { FILE *f = g_fopen (creditsFileName.c_str(), "rt"); @@ -135,7 +143,7 @@ Splash::Splash () { #if defined _WIN32 || defined __APPLE__ std::string licenseFileName = Glib::build_filename (argv0, "LICENSE.txt"); #else - std::string licenseFileName = Glib::build_filename (argv0, "share/doc/LICENSE.txt"); + std::string licenseFileName = Glib::build_filename (LICENCE_SEARCH_PATH, "LICENSE.txt"); #endif if ( Glib::file_test(licenseFileName, (Glib::FILE_TEST_EXISTS)) ) { FILE *f = g_fopen (licenseFileName.c_str(), "rt"); diff --git a/rtgui/version.h.in b/rtgui/version.h.in new file mode 100644 index 000000000..6b76766da --- /dev/null +++ b/rtgui/version.h.in @@ -0,0 +1,11 @@ +// This file is automatically generated by the Makefile - DO NOT EDIT! +// You can (should) also tell mercurial to ignore it. + +#ifndef _VERSION_ +#define _VERSION_ + +#define VERSION "${HG_VERSION}" +#define TAGDISTANCE ${HG_TAGDISTANCE} + +#endif +