blob: 08c95d13aef8ce412c120539bf91cc8fa9e6117c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
#
# @Author Ralf Habacker
#
# extracts version information from autoconf config file
# and set related cmake variables
#
# returns
# ${prefix}_VERSION
# ${prefix}_VERSION_STRING
# ${prefix}_MAJOR_VERSION
# ${prefix}_MINOR_VERSION
# ${prefix}_MICRO_VERSION
#
macro(autoversion config prefix)
file (READ ${config} _configure_ac)
string(TOUPPER ${prefix} prefix_upper)
string (REGEX REPLACE ".*${prefix}_major_version[]]*,[ ]*([0-9]+).*" "\\1" ${prefix_upper}_MAJOR_VERSION ${_configure_ac})
string (REGEX REPLACE ".*${prefix}_minor_version[]]*,[ ]*([0-9]+).*" "\\1" ${prefix_upper}_MINOR_VERSION ${_configure_ac})
string (REGEX REPLACE ".*${prefix}_micro_version[]]*,[ ]*([0-9]+).*" "\\1" ${prefix_upper}_MICRO_VERSION ${_configure_ac})
set (${prefix_upper}_VERSION ${${prefix_upper}_MAJOR_VERSION}.${${prefix_upper}_MINOR_VERSION}.${${prefix_upper}_MICRO_VERSION})
set (${prefix_upper}_VERSION_STRING "${${prefix_upper}_VERSION}")
endmacro()
#
# parses config.h template and create cmake equivalent
# not implemented yet
#
macro(autoconfig template output)
file(READ ${template} contents)
# Convert file contents into a CMake list (where each element in the list
# is one line of the file)
STRING(REGEX REPLACE ";" "\\\\;" contents "${contents}")
STRING(REGEX REPLACE "\n" ";" contents "${contents}")
#message(STATUS ${contents})
foreach(line ${contents})
if(line MATCHES "#undef HAVE")
STRING(REGEX REPLACE "#undef (.*)$" "#cmakedefine \\1 @\\1@" line "${line}")
elseif(line MATCHES "#undef")
STRING(REGEX REPLACE "#undef (.*)$" "#cmakedefine \\1 \"@\\1@\"" line "${line}")
endif()
#message(STATUS ${line})
# append to config.h #define <variable-name> <variable-content>
set(outlines "${outlines}\n${line}")
endforeach()
file(WRITE ${output} ${outlines})
endmacro()
|