1#
2# @Author Ralf Habacker
3# 
4# extracts version information from autoconf config file
5# and set related cmake variables
6# 
7# returns  
8#   ${prefix}_VERSION
9#   ${prefix}_VERSION_STRING
10#   ${prefix}_MAJOR_VERSION
11#   ${prefix}_MINOR_VERSION
12#   ${prefix}_MICRO_VERSION
13# 
14macro(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}")
22
23endmacro()
24
25#
26# parses config.h template and create cmake equivalent 
27# not implemented yet
28# 
29macro(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})
37		# find #undef lines
38		# append to config.h #define <variable-name> <variable-content>
39	endforeach()
40endmacro()
41