* Sync with recent trunk (r52637).
[reactos.git] / include / reactos / version.cmake
1 macro(today RESULT)
2 if(CMAKE_HOST_WIN32)
3 execute_process(COMMAND "${REACTOS_SOURCE_DIR}/tools/getdate.exe" OUTPUT_VARIABLE ${RESULT})
4 string(STRIP ${${RESULT}} ${RESULT})
5 elseif(CMAKE_HOST_UNIX)
6 execute_process(COMMAND "date" "+%Y%m%d" OUTPUT_VARIABLE ${RESULT})
7 string(STRIP ${${RESULT}} ${RESULT})
8 else()
9 message(SEND_ERROR "date not implemented")
10 set(${RESULT} 00000000)
11 endif()
12 endmacro()
13
14 macro(inttohex INTVALUE OUTPUT_VARIABLE)
15 list(APPEND HEXLIST 0 1 2 3 4 5 6 7 8 9 a b c d e f)
16 list(GET HEXLIST ${INTVALUE} ${OUTPUT_VARIABLE})
17 endmacro()
18
19 macro(converttohex INTVALUE OUTPUT_VARIABLE)
20 set(REMAINING ${INTVALUE})
21 while(REMAINING)
22 math(EXPR REMAINDER "${REMAINING}%16")
23 inttohex(${REMAINDER} HEXCHAR)
24 math(EXPR REMAINING "${REMAINING}/16")
25 set(${OUTPUT_VARIABLE} "${HEXCHAR}${${OUTPUT_VARIABLE}}")
26 endwhile()
27 endmacro()
28
29 today(KERNEL_VERSION_BUILD)
30
31 set(KERNEL_VERSION_MAJOR "0")
32 set(KERNEL_VERSION_MINOR "4")
33 set(KERNEL_VERSION_PATCH_LEVEL "0")
34 set(COPYRIGHT_YEAR "2011")
35 # KERNEL_VERSION_BUILD_TYPE is "SVN", "RC1", "RC2" or "" (for the release)
36 set(KERNEL_VERSION_BUILD_TYPE "SVN")
37
38
39 set(KERNEL_VERSION "${KERNEL_VERSION_MAJOR}.${KERNEL_VERSION_MINOR}")
40 if(KERNEL_VERSION_PATCH_LEVEL)
41 set(KERNEL_VERSION "${KERNEL_VERSION}.${KERNEL_VERSION_PATCH_LEVEL}-${KERNEL_VERSION_BUILD_TYPE}")
42 else()
43 set(KERNEL_VERSION "${KERNEL_VERSION}-${KERNEL_VERSION_BUILD_TYPE}")
44 endif()
45
46 math(EXPR REACTOS_DLL_VERSION_MAJOR "${KERNEL_VERSION_MAJOR}+42")
47 set(DLL_VERSION_STR "${REACTOS_DLL_VERSION_MAJOR}.${KERNEL_VERSION_MINOR}-${KERNEL_VERSION_BUILD_TYPE}")
48
49 # get svn revision number
50 set(REVISION "-rUNKNOWN")
51 set(KERNEL_VERSION_BUILD_HEX "0")
52 if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.svn")
53 find_package(Subversion)
54 if(Subversion_FOUND)
55 subversion_wc_info(${CMAKE_CURRENT_SOURCE_DIR} SVNINFO)
56 if(SVNINFO_WC_REVISION)
57 set(REVISION "-r${SVNINFO_WC_REVISION}")
58 converttohex(${SVNINFO_WC_REVISION} KERNEL_VERSION_BUILD_HEX)
59 endif()
60 endif()
61 endif()
62
63 configure_file(include/reactos/version.h.cmake ${REACTOS_BINARY_DIR}/include/reactos/version.h)
64 configure_file(include/reactos/buildno.h.cmake ${REACTOS_BINARY_DIR}/include/reactos/buildno.h)