summarylogtreecommitdiffstats
path: root/PreprocessorUtils.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'PreprocessorUtils.cmake')
-rw-r--r--PreprocessorUtils.cmake60
1 files changed, 60 insertions, 0 deletions
diff --git a/PreprocessorUtils.cmake b/PreprocessorUtils.cmake
new file mode 100644
index 000000000000..38462a98d42c
--- /dev/null
+++ b/PreprocessorUtils.cmake
@@ -0,0 +1,60 @@
+#-------------------------------------------------------------------
+# This file is part of the CMake build system for OGRE
+# (Object-oriented Graphics Rendering Engine)
+# For the latest info, see http://www.ogre3d.org/
+#
+# The contents of this file are placed in the public domain. Feel
+# free to make use of it in any way you like.
+#-------------------------------------------------------------------
+
+macro(get_preprocessor_entry CONTENTS KEYWORD VARIABLE)
+ string(REGEX MATCH
+ "# *define +${KEYWORD} +((\"([^\n]*)\")|([^ \n]*))"
+ PREPROC_TEMP_VAR
+ ${${CONTENTS}}
+ )
+ if (CMAKE_MATCH_3)
+ set(${VARIABLE} ${CMAKE_MATCH_3})
+ else ()
+ set(${VARIABLE} ${CMAKE_MATCH_4})
+ endif ()
+endmacro()
+
+macro(has_preprocessor_entry CONTENTS KEYWORD VARIABLE)
+ string(REGEX MATCH
+ "\n *# *define +(${KEYWORD})"
+ PREPROC_TEMP_VAR
+ ${${CONTENTS}}
+ )
+ if (CMAKE_MATCH_1)
+ set(${VARIABLE} TRUE)
+ else ()
+ set(${VARIABLE} FALSE)
+ endif ()
+endmacro()
+
+macro(replace_preprocessor_entry VARIABLE KEYWORD NEW_VALUE)
+ string(REGEX REPLACE
+ "(// *)?# *define +${KEYWORD} +[^ \n]*"
+ "#define ${KEYWORD} ${NEW_VALUE}"
+ ${VARIABLE}_TEMP
+ ${${VARIABLE}}
+ )
+ set(${VARIABLE} ${${VARIABLE}_TEMP})
+endmacro()
+
+macro(set_preprocessor_entry VARIABLE KEYWORD ENABLE)
+ if (${ENABLE})
+ set(TMP_REPLACE_STR "#define ${KEYWORD}")
+ else ()
+ set(TMP_REPLACE_STR "// #define ${KEYWORD}")
+ endif ()
+ string(REGEX REPLACE
+ "(// *)?# *define +${KEYWORD} *\n"
+ ${TMP_REPLACE_STR}
+ ${VARIABLE}_TEMP
+ ${${VARIABLE}}
+ )
+ set(${VARIABLE} ${${VARIABLE}_TEMP})
+endmacro()
+