2 # @Author Ralf Habacker
4 # extracts version information from autoconf config file
5 # and set related cmake variables
9 # ${prefix}_VERSION_STRING
10 # ${prefix}_MAJOR_VERSION
11 # ${prefix}_MINOR_VERSION
12 # ${prefix}_MICRO_VERSION
14 macro(autoversion config prefix)
15 file (READ ${config} _configure_ac)
16 string(TOUPPER ${prefix} prefix_upper)
17 string (REGEX REPLACE ".*${prefix}_major_version], .([0-9]+).*" "\\1" ${prefix_upper}_MAJOR_VERSION ${_configure_ac})
18 string (REGEX REPLACE ".*${prefix}_minor_version], .([0-9]+).*" "\\1" ${prefix_upper}_MINOR_VERSION ${_configure_ac})
19 string (REGEX REPLACE ".*${prefix}_micro_version], .([0-9]+).*" "\\1" ${prefix_upper}_MICRO_VERSION ${_configure_ac})
20 set (${prefix_upper}_VERSION ${${prefix_upper}_MAJOR_VERSION}.${${prefix_upper}_MINOR_VERSION}.${${prefix_upper}_MICRO_VERSION})
21 set (${prefix_upper}_VERSION_STRING "${${prefix_upper}_VERSION}")
26 # parses config.h template and create cmake equivalent
29 macro(autoconfig template output)
30 file(READ ${template} contents)
31 # Convert file contents into a CMake list (where each element in the list
32 # is one line of the file)
33 STRING(REGEX REPLACE ";" "\\\\;" contents "${contents}")
34 STRING(REGEX REPLACE "\n" ";" contents "${contents}")
35 foreach(line contents)
36 message(STATUS ${line})
38 # append to config.h #define <variable-name> <variable-content>