Code

cmake: add CheckStructMember.cmake from KDE. enable struct checks (does this struct...
authorjohanengelen <johanengelen@users.sourceforge.net>
Mon, 7 Apr 2008 21:05:39 +0000 (21:05 +0000)
committerjohanengelen <johanengelen@users.sourceforge.net>
Mon, 7 Apr 2008 21:05:39 +0000 (21:05 +0000)
CMakeScripts/CheckStructMember.cmake [new file with mode: 0644]
CMakeScripts/ConfigInkscapeDepends.cmake

diff --git a/CMakeScripts/CheckStructMember.cmake b/CMakeScripts/CheckStructMember.cmake
new file mode 100644 (file)
index 0000000..e71eb90
--- /dev/null
@@ -0,0 +1,62 @@
+# - 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
+
+# Copyright (c) 2006, Alexander Neundorf, <neundorf@kde.org>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products 
+#    derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+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)
\ No newline at end of file
index a7a8d5df2d3c7c9ec29debbe95a1b2831d62eea9..0fc6931542f40ae0aba80c99280bdd5f9f024c5b 100644 (file)
@@ -82,7 +82,7 @@ SET(CMAKE_MAKE_PROGRAM "${CMAKE_MAKE_PROGRAM} -j2")
 \r
 INCLUDE (CheckIncludeFiles)\r
 INCLUDE (CheckFunctionExists)\r
-#INCLUDE (CheckStructMember)\r
+INCLUDE (CheckStructMember)\r
 # usage: CHECK_INCLUDE_FILES (<header> <RESULT_VARIABLE> )\r
 # usage: CHECK_FUNCTION_EXISTS (<function name> <RESULT_VARIABLE> )\r
 # usage: CHECK_STRUCT_MEMBER (<struct> <member> <header> <RESULT_VARIABLE>)\r
@@ -123,11 +123,11 @@ CHECK_FUNCTION_EXISTS(strrchr HAVE_STRRCHR)
 CHECK_FUNCTION_EXISTS(strspn HAVE_STRSPN)\r
 CHECK_FUNCTION_EXISTS(strstr HAVE_STRSTR)\r
 CHECK_FUNCTION_EXISTS(strtoul HAVE_STRTOUL)\r
-#CHECK_STRUCT_MEMBER(fordblks mallinfo malloc.h HAVE_STRUCT_MALLINFO_FORDBLKS)\r
-#CHECK_STRUCT_MEMBER(fsmblks mallinfo malloc.h HAVE_STRUCT_MALLINFO_FSMBLKS)\r
-#CHECK_STRUCT_MEMBER(hblkhd mallinfo malloc.h HAVE_STRUCT_MALLINFO_HBLKHD)\r
-#CHECK_STRUCT_MEMBER(uordblks mallinfo malloc.h HAVE_STRUCT_MALLINFO_UORDBLKS)\r
-#CHECK_STRUCT_MEMBER(usmblks mallinfo malloc.h HAVE_STRUCT_MALLINFO_USMBLKS)\r
+CHECK_STRUCT_MEMBER(fordblks mallinfo malloc.h HAVE_STRUCT_MALLINFO_FORDBLKS)\r
+CHECK_STRUCT_MEMBER(fsmblks mallinfo malloc.h HAVE_STRUCT_MALLINFO_FSMBLKS)\r
+CHECK_STRUCT_MEMBER(hblkhd mallinfo malloc.h HAVE_STRUCT_MALLINFO_HBLKHD)\r
+CHECK_STRUCT_MEMBER(uordblks mallinfo malloc.h HAVE_STRUCT_MALLINFO_UORDBLKS)\r
+CHECK_STRUCT_MEMBER(usmblks mallinfo malloc.h HAVE_STRUCT_MALLINFO_USMBLKS)\r
 CHECK_INCLUDE_FILES (sys/filio.h HAVE_SYS_FILIO_H)\r
 CHECK_INCLUDE_FILES (sys/stat.h HAVE_SYS_STAT_H)\r
 CHECK_INCLUDE_FILES (sys/time.h HAVE_SYS_TIME_H)\r