1macro(get_preprocessor_entry CONTENTS KEYWORD VARIABLE)
2  string(REGEX MATCH
3    "# *define +${KEYWORD} +((\"([^\n]*)\")|([^ \n]*))"
4    PREPROC_TEMP_VAR
5    ${${CONTENTS}}
6  )
7  if (CMAKE_MATCH_3)
8    set(${VARIABLE} ${CMAKE_MATCH_3})
9  else ()
10    set(${VARIABLE} ${CMAKE_MATCH_4})
11  endif ()
12endmacro()
13
14macro(has_preprocessor_entry CONTENTS KEYWORD VARIABLE)
15  string(REGEX MATCH
16    "\n *# *define +(${KEYWORD})"
17    PREPROC_TEMP_VAR
18    ${${CONTENTS}}
19  )
20  if (CMAKE_MATCH_1)
21    set(${VARIABLE} TRUE)
22  else ()
23    set(${VARIABLE} FALSE)
24  endif ()
25endmacro()
26
27macro(replace_preprocessor_entry VARIABLE KEYWORD NEW_VALUE)
28  string(REGEX REPLACE
29    "(// *)?# *define +${KEYWORD} +[^ \n]*"
30	"#define ${KEYWORD} ${NEW_VALUE}"
31	${VARIABLE}_TEMP
32	${${VARIABLE}}
33  )
34  set(${VARIABLE} ${${VARIABLE}_TEMP})
35endmacro()
36
37macro(set_preprocessor_entry VARIABLE KEYWORD ENABLE)
38  if (${ENABLE})
39    set(TMP_REPLACE_STR "#define ${KEYWORD}")
40  else ()
41    set(TMP_REPLACE_STR "// #define ${KEYWORD}")
42  endif ()
43  string(REGEX REPLACE
44    "(// *)?# *define +${KEYWORD} *\n"
45	${TMP_REPLACE_STR}
46	${VARIABLE}_TEMP
47	${${VARIABLE}}
48  )
49  set(${VARIABLE} ${${VARIABLE}_TEMP})
50endmacro()
51
52