• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1## -*- mode:cmake; coding:utf-8; -*-
2# Set output:
3# CHANGELOG_LAST_LINE
4# CHANGELOG_LAST_VERSION - Last changelog version
5# CHANGELOG_LAST_VERSION_MAJOR - Last changelog major version
6# CHANGELOG_LAST_VERSION_MINOR - Last changelog minor version
7# CHANGELOG_LAST_VERSION_PATCH - Last changelog patch version
8# CHANGELOG_LAST_MESSAGE - Last changelog description
9
10if (NOT DEB_CHANGELOG)
11   set(DEB_CHANGELOG "${CMAKE_SOURCE_DIR}/Changelog")
12endif()
13
14if (NOT EXISTS ${DEB_CHANGELOG})
15    if (DEB_CHANGELOG_REQUIRED)
16        message(FATAL_ERROR "Missing required project changelog file: ${DEB_CHANGELOG}")
17    else()
18        message("Missing project changelog file: ${DEB_CHANGELOG}")
19        return()
20    endif()
21endif()
22message(STATUS "Using project changelog file: ${DEB_CHANGELOG}")
23
24file(STRINGS "${DEB_CHANGELOG}" _DEBCHANGELOGN)
25
26foreach(CLINE IN LISTS _DEBCHANGELOGN)
27    if (NOT CHANGELOG_LAST_VERSION)
28        #ejdb (1.2.6) testing; urgency=low
29        #ejdb (1.2) testing; urgency=low
30        string(REGEX MATCH "^[A-Za-z0-9_].*[ \t]+\\((([0-9]+)\\.([0-9]+)(\\.([0-9]+))?)\\)[ \t]+[A-Za-z]+;[ \t].*" _MATCHED "${CLINE}")
31        if (_MATCHED)
32            set(CHANGELOG_LAST_LINE "${_MATCHED}")
33            set(CHANGELOG_LAST_VERSION "${CMAKE_MATCH_1}")
34            set(CHANGELOG_LAST_VERSION_MAJOR "${CMAKE_MATCH_2}")
35            set(CHANGELOG_LAST_VERSION_MINOR "${CMAKE_MATCH_3}")
36            if (NOT CMAKE_MATCH5)
37              set(CHANGELOG_LAST_VERSION_PATCH "0")
38            else()
39              set(CHANGELOG_LAST_VERSION_PATCH "${CMAKE_MATCH_5}")
40            endif()
41        endif()
42    elseif(NOT CHANGELOG_LAST_MESSAGE)
43        string(REGEX MATCH "^[A-Za-z0-9_].*[ \t]+\\((([0-9]+)\\.([0-9]+)(\\.([0-9]+))?)\\)[ \t]+[A-Za-z]+;[ \t].*" _MATCHED "${CLINE}")
44        if (_MATCHED)
45            string(STRIP "${_CDESC}" CHANGELOG_LAST_MESSAGE)
46            return()
47        endif()
48        if (CLINE)
49            string(REGEX MATCH "^[ \t]*\\-\\-[ \t]+" _MATCHED "${CLINE}")
50            if (_MATCHED)
51                string(STRIP "${_CDESC}" CHANGELOG_LAST_MESSAGE)
52                return()
53            endif()
54            set(_CDESC "${_CDESC}\n${CLINE}")
55        endif()
56    endif()
57endforeach(CLINE)
58
59message(FATAL_ERROR "Invalid changelog file: ${DEB_CHANGELOG}")
60