diff options
| author | Alexander Neundorf <neundorf@kde.org> | 2006-04-30 21:39:02 +0000 | 
|---|---|---|
| committer | Alexander Neundorf <neundorf@kde.org> | 2006-04-30 21:39:02 +0000 | 
| commit | 4003d9108c0254fbaafb03b33f011cd63983510f (patch) | |
| tree | 2c5abb1929f70cf040256f743f559ca0952316bd | |
| parent | dc05a7733224b1fce459fc633d1a952e451803b2 (diff) | |
| download | extra-cmake-modules-4003d9108c0254fbaafb03b33f011cd63983510f.tar.gz extra-cmake-modules-4003d9108c0254fbaafb03b33f011cd63983510f.tar.bz2  | |
-two cmake modules to check whether a given struct or pointer has a specified member variable
Alex
svn path=/trunk/KDE/kdelibs/; revision=535981
| -rw-r--r-- | modules/CheckPointerMember.cmake | 36 | ||||
| -rw-r--r-- | modules/CheckStructMember.cmake | 36 | 
2 files changed, 72 insertions, 0 deletions
diff --git a/modules/CheckPointerMember.cmake b/modules/CheckPointerMember.cmake new file mode 100644 index 00000000..fc6b231d --- /dev/null +++ b/modules/CheckPointerMember.cmake @@ -0,0 +1,36 @@ +# - Check if the given struct or class has the specified member variable +# CHECK_POINTER_MEMBER (POINTER MEMBER HEADER VARIABLE) +# +#  POINTER - the name of the struct or class you are interested in +#  MEMBER - the member which existence you want to check +#  HEADER - the header(s) where the prototype should be declared +#  VARIABLE - variable to store the result +# +# The following variables may be set before calling this macro to +# modify the way the check is run: +# +#  CMAKE_REQUIRED_FLAGS = string of compile command line flags +#  CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) +#  CMAKE_REQUIRED_INCLUDES = list of include directories + +INCLUDE(CheckCXXSourceCompiles) + +MACRO (CHECK_POINTER_MEMBER _STRUCT _MEMBER _HEADER _RESULT) +   SET(_INCLUDE_FILES) +   FOREACH (it ${_HEADER}) +      SET(_INCLUDE_FILES "${_INCLUDE_FILES}#include <${it}>\n") +   ENDFOREACH (it) + +   SET(_CHECK_POINTER_MEMBER_SOURCE_CODE " +${_INCLUDE_FILES} +int main() +{ +   ${_STRUCT} tmp; +   tmp->${_MEMBER}; +  return 0; +} +") +   CHECK_CXX_SOURCE_COMPILES("${_CHECK_POINTER_MEMBER_SOURCE_CODE}" ${_RESULT}) + +ENDMACRO (CHECK_POINTER_MEMBER) + diff --git a/modules/CheckStructMember.cmake b/modules/CheckStructMember.cmake new file mode 100644 index 00000000..fd5d3461 --- /dev/null +++ b/modules/CheckStructMember.cmake @@ -0,0 +1,36 @@ +# - Check if the given struct or class has the specified member variable +# CHECK_STRUCT_MEMBER (STRUCT MEMBER HEADER VARIABLE) +# +#  STRUCT - the name of the struct or class you are interested in +#  MEMBER - the member which existence you want to check +#  HEADER - the header(s) where the prototype should be declared +#  VARIABLE - variable to store the result +# +# The following variables may be set before calling this macro to +# modify the way the check is run: +# +#  CMAKE_REQUIRED_FLAGS = string of compile command line flags +#  CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) +#  CMAKE_REQUIRED_INCLUDES = list of include directories + +INCLUDE(CheckCXXSourceCompiles) + +MACRO (CHECK_STRUCT_MEMBER _STRUCT _MEMBER _HEADER _RESULT) +   SET(_INCLUDE_FILES) +   FOREACH (it ${_HEADER}) +      SET(_INCLUDE_FILES "${_INCLUDE_FILES}#include <${it}>\n") +   ENDFOREACH (it) + +   SET(_CHECK_STRUCT_MEMBER_SOURCE_CODE " +${_INCLUDE_FILES} +int main() +{ +   ${_STRUCT}* tmp; +   tmp->${_MEMBER}; +  return 0; +} +") +   CHECK_CXX_SOURCE_COMPILES("${_CHECK_STRUCT_MEMBER_SOURCE_CODE}" ${_RESULT}) + +ENDMACRO (CHECK_STRUCT_MEMBER) +  | 
