Version handling was broken (solving issue #635)

This commit is contained in:
natureh 2011-04-16 16:07:13 +02:00
parent e0e21e01e6
commit 9aba287be0
6 changed files with 124 additions and 80 deletions

View File

@ -1,41 +1,26 @@
# this will generate a target that will never exist, so it will (should) be executed on each build # cmakefile executed within a makefile target
#WARNING: Actually, only Gcc is supported
string (TOUPPER ${CMAKE_BUILD_TYPE} UPPER_CMAKE_BUILD_TYPE)
# we 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 PATHS "/opt/local/bin" "/usr/local/bin" "/usr/bin")
find_file(HG_CMD hg) find_file(HG_CMD hg)
# the hg command is looked for again, at build time
if (HG_CMD STREQUAL HG_CMD-NOTFOUND) if (HG_CMD STREQUAL HG_CMD-NOTFOUND)
message(FATAL_ERROR "hg command not found!") message(FATAL_ERROR "hg command not found!")
else (HG_CMD STREQUAL HG_CMD-NOTFOUND) else (HG_CMD STREQUAL HG_CMD-NOTFOUND)
message(STATUS "hg command found: ${HG_CMD}") message(STATUS "hg command found: ${HG_CMD}")
endif (HG_CMD STREQUAL HG_CMD-NOTFOUND) endif (HG_CMD STREQUAL HG_CMD-NOTFOUND)
set (OUT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/AboutThisBuild.txt") set (OUT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/AboutThisBuild.txt")
set (SHELL "/bin/bash") set (SHELL "/bin/bash")
execute_process(COMMAND ${HG_CMD} parents --template={latesttag}.{latesttagdistance} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE HG_VERSION) # there should be a better way of getting the compiler + compiler version, not restrained to Gcc
execute_process(COMMAND ${HG_CMD} parents --template={node|short} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE HG_CHANGESET) execute_process(COMMAND gcc -dumpversion OUTPUT_VARIABLE GCC_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${HG_CMD} parents --template={latesttagdistance} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE HG_TAGDISTANCE) execute_process(COMMAND ${HG_CMD} -R ${CMAKE_CURRENT_SOURCE_DIR} branch OUTPUT_VARIABLE HG_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${HG_CMD} parents --template={latesttag}.{latesttagdistance} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE HG_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${HG_CMD} parents --template={node|short} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE HG_CHANGESET OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${HG_CMD} parents --template={latesttagdistance} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE HG_TAGDISTANCE OUTPUT_STRIP_TRAILING_WHITESPACE)
# build version.h from template # build version.h from template
configure_file (${CMAKE_CURRENT_SOURCE_DIR}/rtgui/version.h.in ${CMAKE_CURRENT_SOURCE_DIR}/rtgui/version.h) configure_file (${CMAKE_CURRENT_SOURCE_DIR}/rtgui/version.h.in ${CMAKE_CURRENT_SOURCE_DIR}/rtgui/version.h)
# build AboutThisBuild.txt from template
add_custom_target (AboutFile ALL configure_file (${CMAKE_CURRENT_SOURCE_DIR}/AboutThisBuild.txt.in ${CMAKE_CURRENT_SOURCE_DIR}/AboutThisBuild.txt)
COMMAND rm -f ${OUT_FILE}
COMMAND echo Branch: `${HG_CMD} -R ${CMAKE_CURRENT_SOURCE_DIR} branch` >>${OUT_FILE}
COMMAND echo Version: ${HG_VERSION} >>${OUT_FILE}
COMMAND echo Changeset: ${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 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"
)

View File

@ -1,40 +1,26 @@
# this will generate a target that will never exist, so it will (should) be executed on each build # cmakefile executed within a makefile target
#WARNING: Actually, only Gcc is supported
string (TOUPPER ${CMAKE_BUILD_TYPE} UPPER_CMAKE_BUILD_TYPE)
# we 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) find_file(HG_CMD hg)
# the hg command is looked for again, at build time
if (HG_CMD STREQUAL HG_CMD-NOTFOUND) if (HG_CMD STREQUAL HG_CMD-NOTFOUND)
message(FATAL_ERROR "hg command not found!") message(FATAL_ERROR "hg command not found!")
else (HG_CMD STREQUAL HG_CMD-NOTFOUND) else (HG_CMD STREQUAL HG_CMD-NOTFOUND)
message(STATUS "hg command found: ${HG_CMD}") message(STATUS "hg command found: ${HG_CMD}")
endif (HG_CMD STREQUAL HG_CMD-NOTFOUND) endif (HG_CMD STREQUAL HG_CMD-NOTFOUND)
set (OUT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/AboutThisBuild.txt") set (OUT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/AboutThisBuild.txt")
set (SHELL "/bin/bash") set (SHELL "/bin/bash")
execute_process(COMMAND ${HG_CMD} parents --template={latesttag}.{latesttagdistance} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE HG_VERSION) # there should be a better way of getting the compiler + compiler version, not restrained to Gcc
execute_process(COMMAND ${HG_CMD} parents --template={node|short} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE HG_CHANGESET) execute_process(COMMAND gcc -dumpversion OUTPUT_VARIABLE GCC_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${HG_CMD} parents --template={latesttagdistance} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE HG_TAGDISTANCE) execute_process(COMMAND ${HG_CMD} -R ${CMAKE_CURRENT_SOURCE_DIR} branch OUTPUT_VARIABLE HG_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${HG_CMD} parents --template={latesttag}.{latesttagdistance} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE HG_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${HG_CMD} parents --template={node|short} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE HG_CHANGESET OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${HG_CMD} parents --template={latesttagdistance} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE HG_TAGDISTANCE OUTPUT_STRIP_TRAILING_WHITESPACE)
# build version.h from template # build version.h from template
configure_file (${CMAKE_CURRENT_SOURCE_DIR}/rtgui/version.h.in ${CMAKE_CURRENT_SOURCE_DIR}/rtgui/version.h) configure_file (${CMAKE_CURRENT_SOURCE_DIR}/rtgui/version.h.in ${CMAKE_CURRENT_SOURCE_DIR}/rtgui/version.h)
# build AboutThisBuild.txt from template
add_custom_target (AboutFile ALL configure_file (${CMAKE_CURRENT_SOURCE_DIR}/AboutThisBuild.txt.in ${CMAKE_CURRENT_SOURCE_DIR}/AboutThisBuild.txt)
COMMAND rm -f ${OUT_FILE}
COMMAND echo Branch: `${HG_CMD} -R ${CMAKE_CURRENT_SOURCE_DIR} branch` >>${OUT_FILE}
COMMAND echo Version: ${HG_VERSION} >>${OUT_FILE}
COMMAND echo Changeset: ${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 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"
)

View File

@ -1,30 +1,26 @@
# this will generate a target that will never exist, so it will (should) be executed on each build # cmakefile executed within a makefile target
#WARNING: Actually, only Gcc is supported
string (TOUPPER ${CMAKE_BUILD_TYPE} UPPER_CMAKE_BUILD_TYPE) # we look for the hg command in this paths by order of preference
find_file(HG_CMD hg.exe HINTS ENV Path PATH_SUFFIXES ../)
# the hg command is looked for again, at build time
if (HG_CMD STREQUAL HG_CMD-NOTFOUND)
message(FATAL_ERROR "hg command not found!")
else (HG_CMD STREQUAL HG_CMD-NOTFOUND)
message(STATUS "hg command found: ${HG_CMD}")
endif (HG_CMD STREQUAL HG_CMD-NOTFOUND)
set (OUT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/AboutThisBuild.txt") set (OUT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/AboutThisBuild.txt")
execute_process(COMMAND hg parents --template={latesttag}.{latesttagdistance} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE HG_VERSION) # there should be a better way of getting the compiler + compiler version, not restrained to Gcc
execute_process(COMMAND hg parents --template={node|short} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE HG_CHANGESET) execute_process(COMMAND gcc -dumpversion OUTPUT_VARIABLE GCC_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND hg parents --template={latesttagdistance} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE HG_TAGDISTANCE) execute_process(COMMAND ${HG_CMD} -R ${CMAKE_CURRENT_SOURCE_DIR} branch OUTPUT_VARIABLE HG_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${HG_CMD} parents --template={latesttag}.{latesttagdistance} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE HG_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${HG_CMD} parents --template={node|short} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE HG_CHANGESET OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${HG_CMD} parents --template={latesttagdistance} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_VARIABLE HG_TAGDISTANCE OUTPUT_STRIP_TRAILING_WHITESPACE)
# build version.h from template # build version.h from template
configure_file (${CMAKE_CURRENT_SOURCE_DIR}/rtgui/version.h.in ${CMAKE_CURRENT_SOURCE_DIR}/rtgui/version.h) configure_file (${CMAKE_CURRENT_SOURCE_DIR}/rtgui/version.h.in ${CMAKE_CURRENT_SOURCE_DIR}/rtgui/version.h)
# build AboutThisBuild.txt from template
add_custom_target (AboutFile ALL configure_file (${CMAKE_CURRENT_SOURCE_DIR}/AboutThisBuild.txt.in ${CMAKE_CURRENT_SOURCE_DIR}/AboutThisBuild.txt)
COMMAND for /F \"tokens=*\" %%i in \('hg -R \"${CMAKE_CURRENT_SOURCE_DIR}\" branch'\) do echo Branch: %%i >${OUT_FILE}
COMMAND echo Version: ${HG_VERSION} >>${OUT_FILE}
COMMAND echo Changeset: ${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}
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 \(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"
)

14
AboutThisBuild.txt.in Normal file
View File

@ -0,0 +1,14 @@
Branch: ${HG_BRANCH}
Version: ${HG_VERSION}
Changeset: ${HG_CHANGESET}
Compiler: GCC ${GCC_VERSION}
Processor: ${PROC_LABEL}
System: ${SYSTEM}
Bit depth: ${PROC_BIT_DEPTH}
Gtkmm: V${GTKMM_VERSION}
Build type: ${BUILD_TYPE}
Build flags: ${CXX_FLAGS}
Link flags: ${LFLAGS}
OpenMP support: ${OPTION_OMP}
MMAP support: ${WITH_MYFILE_MMAP}
Rawzor support: ${WITH_RAWZOR}

View File

@ -168,16 +168,77 @@ else (AUTOMATED_BUILD_SYSTEM)
set(PROC_BIT_DEPTH 64 bits) set(PROC_BIT_DEPTH 64 bits)
endif (CMAKE_SIZEOF_VOID_P EQUAL 4) endif (CMAKE_SIZEOF_VOID_P EQUAL 4)
string (TOUPPER ${CMAKE_BUILD_TYPE} UPPER_CMAKE_BUILD_TYPE)
#generating AboutThisBuild.txt #generating AboutThisBuild.txt
if (WIN32) if (WIN32)
include (About-Windows.cmake)
add_custom_target (AboutFile ALL
COMMAND ${CMAKE_COMMAND}
-DSYSTEM:STRING=Windows
-DPROC_LABEL:STRING=\"${PROC_LABEL}\"
-DPROC_BIT_DEPTH:STRING=\"${PROC_BIT_DEPTH}\"
-DBUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
-DGTKMM_VERSION:STRING=${GTKMM_VERSION}
-DCXX_FLAGS:STRING=\"${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${UPPER_CMAKE_BUILD_TYPE}}\"
-DLFLAGS:STRING=\"${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_${UPPER_CMAKE_BUILD_TYPE}}\"
-DOPTION_OMP:STRING=${OPTION_OMP}
-DWITH_MYFILE_MMAP:STRING=${WITH_MYFILE_MMAP}
-DWITH_RAWZOR:STRING=${WITH_RAWZOR}
-P ${CMAKE_CURRENT_SOURCE_DIR}/About-Windows.cmake
COMMENT "Creating the about file"
)
find_file(HG_CMD hg.exe HINTS ENV Path PATH_SUFFIXES ../)
elseif (APPLE) elseif (APPLE)
include (About-Apple.cmake)
add_custom_target (AboutFile ALL
COMMAND ${CMAKE_COMMAND}
-DSYSTEM:STRING=Apple
-DPROC_LABEL:STRING=\"${PROC_LABEL}\"
-DPROC_BIT_DEPTH:STRING=\"${PROC_BIT_DEPTH}\"
-DBUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
-DGTKMM_VERSION:STRING=${GTKMM_VERSION}
-DCXX_FLAGS:STRING=${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${UPPER_CMAKE_BUILD_TYPE}}
-DLFLAGS:STRING=${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_${UPPER_CMAKE_BUILD_TYPE}}
-DOPTION_OMP:STRING=${OPTION_OMP}
-DWITH_MYFILE_MMAP:STRING=${WITH_MYFILE_MMAP}
-DWITH_RAWZOR:STRING=${WITH_RAWZOR}
-P ${CMAKE_CURRENT_SOURCE_DIR}/About-Apple.cmake
COMMENT "Creating the about file"
)
find_file(HG_CMD hg PATHS "/opt/local/bin" "/usr/local/bin" "/usr/bin")
find_file(HG_CMD hg)
else (WIN32) else (WIN32)
include (About-Linux.cmake)
add_custom_target (AboutFile ALL
COMMAND ${CMAKE_COMMAND}
-DSYSTEM:STRING=Linux
-DPROC_LABEL:STRING=\"${PROC_LABEL}\"
-DPROC_BIT_DEPTH:STRING=\"${PROC_BIT_DEPTH}\"
-DBUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
-DGTKMM_VERSION:STRING=${GTKMM_VERSION}
-DCXX_FLAGS:STRING=${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${UPPER_CMAKE_BUILD_TYPE}}
-DLFLAGS:STRING=${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_${UPPER_CMAKE_BUILD_TYPE}}
-DOPTION_OMP:STRING=${OPTION_OMP}
-DWITH_MYFILE_MMAP:STRING=${WITH_MYFILE_MMAP}
-DWITH_RAWZOR:STRING=${WITH_RAWZOR}
-P ${CMAKE_CURRENT_SOURCE_DIR}/About-Linux.cmake
COMMENT "Creating the about file"
)
find_file(HG_CMD hg)
endif (WIN32) endif (WIN32)
add_dependencies(AboutFile Debug Release MinSizeRel RelWithDebInfo) add_dependencies(AboutFile Debug Release MinSizeRel RelWithDebInfo)
if (HG_CMD STREQUAL HG_CMD-NOTFOUND)
message(FATAL_ERROR "hg command not found!")
else (HG_CMD STREQUAL HG_CMD-NOTFOUND)
message(STATUS "hg command found: ${HG_CMD}")
endif (HG_CMD STREQUAL HG_CMD-NOTFOUND)
endif (AUTOMATED_BUILD_SYSTEM) endif (AUTOMATED_BUILD_SYSTEM)
# link rawzor # link rawzor

View File

@ -24,6 +24,8 @@ set (PROC_TARGET_NUMBER 0 CACHE STRING "Target Processor")
# If you want to force the target processor name, uncomment the next line, and replace labelWithoutQuotes by its value # If you want to force the target processor name, uncomment the next line, and replace labelWithoutQuotes by its value
#set (PROC_FORCED_LABEL labelWithoutQuotes CACHE STRING "Target Processor label") #set (PROC_FORCED_LABEL labelWithoutQuotes CACHE STRING "Target Processor label")
# Important: MinGW-w64 user may need to specify the -m32 or -m64 flag in CMAKE_CXX_FLAGS,
# CMAKE_C_FLAGS and CMAKE_EXE_LINKER_FLAGS to selectect between 32/64bit build
set(CMAKE_CXX_FLAGS "-mwin32 -mthreads" CACHE STRING "Compiler options for C++ source files") set(CMAKE_CXX_FLAGS "-mwin32 -mthreads" CACHE STRING "Compiler options for C++ source files")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g2" CACHE STRING "Compiler options for C++ source files and Debug target") set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g2" CACHE STRING "Compiler options for C++ source files and Debug target")
set(CMAKE_CXX_FLAGS_RELEASE "-mwindows -DNDEBUG -O2" CACHE STRING "Compiler options for C++ source files and Release target") set(CMAKE_CXX_FLAGS_RELEASE "-mwindows -DNDEBUG -O2" CACHE STRING "Compiler options for C++ source files and Release target")