[Cmake-commits] CMake branch, next, updated. v2.8.9-206-gc14e5d7

Rolf Eike Beer eike at sf-mail.de
Tue Aug 21 02:32:39 EDT 2012


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  c14e5d7e54bb5310a09c8d3da63d955c5dc9764c (commit)
       via  9926f68a9acaf1b4a861ef1cdb05e16e4e0176c0 (commit)
       via  2d68b033393ef99b5201b9f436544197a3cbe588 (commit)
      from  30205a9493e114c67551bac29fcf559bbc9a94a1 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c14e5d7e54bb5310a09c8d3da63d955c5dc9764c
commit c14e5d7e54bb5310a09c8d3da63d955c5dc9764c
Merge: 30205a9 9926f68
Author:     Rolf Eike Beer <eike at sf-mail.de>
AuthorDate: Tue Aug 21 02:32:37 2012 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Tue Aug 21 02:32:37 2012 -0400

    Merge topic 'CheckTypeSize-doc-10579' into next
    
    9926f68 CheckTypeSize: add a test for size of struct members
    2d68b03 CheckTypeSize: show in documentation how to get struct member size (#10579)


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9926f68a9acaf1b4a861ef1cdb05e16e4e0176c0
commit 9926f68a9acaf1b4a861ef1cdb05e16e4e0176c0
Author:     Rolf Eike Beer <eike at sf-mail.de>
AuthorDate: Mon Aug 13 19:27:44 2012 +0200
Commit:     Rolf Eike Beer <eike at sf-mail.de>
CommitDate: Tue Aug 21 08:31:11 2012 +0200

    CheckTypeSize: add a test for size of struct members

diff --git a/Tests/Module/CheckTypeSize/CMakeLists.txt b/Tests/Module/CheckTypeSize/CMakeLists.txt
index 45e9f67..abe617a 100644
--- a/Tests/Module/CheckTypeSize/CMakeLists.txt
+++ b/Tests/Module/CheckTypeSize/CMakeLists.txt
@@ -12,7 +12,13 @@ check_type_size(__int64     SIZEOF___INT64)
 check_type_size(size_t      SIZEOF_SIZE_T)
 check_type_size(ssize_t     SIZEOF_SSIZE_T)
 
+set(CMAKE_REQUIRED_INCLUDES "${CMAKE_CURRENT_SOURCE_DIR}")
+set(CMAKE_EXTRA_INCLUDE_FILES somestruct.h)
+check_type_size("((struct somestruct*)0)->someint" SIZEOF_STRUCTMEMBER_INT)
+check_type_size("((struct somestruct*)0)->someptr" SIZEOF_STRUCTMEMBER_PTR)
+check_type_size("((struct somestruct*)0)->somechar" SIZEOF_STRUCTMEMBER_CHAR)
+
 configure_file(config.h.in config.h)
-include_directories(${CheckTypeSize_BINARY_DIR})
+include_directories("${CheckTypeSize_BINARY_DIR}")
 
 add_executable(CheckTypeSize CheckTypeSize.c)
diff --git a/Tests/Module/CheckTypeSize/CheckTypeSize.c b/Tests/Module/CheckTypeSize/CheckTypeSize.c
index 602c834..32e395c 100644
--- a/Tests/Module/CheckTypeSize/CheckTypeSize.c
+++ b/Tests/Module/CheckTypeSize/CheckTypeSize.c
@@ -1,4 +1,5 @@
 #include "config.h"
+#include "somestruct.h"
 
 #ifdef HAVE_SYS_TYPES_H
 # include <sys/types.h>
@@ -29,6 +30,7 @@
 int main()
 {
   int result = 0;
+  struct somestruct x;
 
   /* void* */
 #if !defined(HAVE_SIZEOF_DATA_PTR)
@@ -118,5 +120,41 @@ int main()
   NODEF(SIZEOF_SSIZE_T);
 #endif
 
-  return result;
+  /* struct somestruct::someint */
+#if defined(SIZEOF_STRUCTMEMBER_INT)
+  CHECK(x.someint, SIZEOF_STRUCTMEMBER_INT);
+  CHECK(x.someint, SIZEOF_INT);
+# if !defined(HAVE_SIZEOF_STRUCTMEMBER_INT)
+  NODEF(HAVE_SIZEOF_STRUCTMEMBER_INT);
+# endif
+#elif defined(HAVE_SIZEOF_STRUCTMEMBER_INT)
+  NODEF(SIZEOF_STRUCTMEMBER_INT);
+#endif
+
+  /* struct somestruct::someptr */
+#if defined(SIZEOF_STRUCTMEMBER_PTR)
+  CHECK(x.someptr, SIZEOF_STRUCTMEMBER_PTR);
+  CHECK(x.someptr, SIZEOF_DATA_PTR);
+# if !defined(HAVE_SIZEOF_STRUCTMEMBER_PTR)
+  NODEF(HAVE_SIZEOF_STRUCTMEMBER_PTR);
+# endif
+#elif defined(HAVE_SIZEOF_STRUCTMEMBER_PTR)
+  NODEF(SIZEOF_STRUCTMEMBER_PTR);
+#endif
+
+  /* struct somestruct::someint */
+#if defined(SIZEOF_STRUCTMEMBER_CHAR)
+  CHECK(x.somechar, SIZEOF_STRUCTMEMBER_CHAR);
+  CHECK(x.somechar, SIZEOF_CHAR);
+# if !defined(HAVE_SIZEOF_STRUCTMEMBER_CHAR)
+  NODEF(HAVE_SIZEOF_STRUCTMEMBER_CHAR);
+# endif
+#elif defined(HAVE_SIZEOF_STRUCTMEMBER_CHAR)
+  NODEF(SIZEOF_STRUCTMEMBER_CHAR);
+#endif
+
+  /* to avoid possible warnings about unused or write-only variable */
+  x.someint = result;
+
+  return x.someint;
 }
diff --git a/Tests/Module/CheckTypeSize/config.h.in b/Tests/Module/CheckTypeSize/config.h.in
index b5bfbf6..c601075 100644
--- a/Tests/Module/CheckTypeSize/config.h.in
+++ b/Tests/Module/CheckTypeSize/config.h.in
@@ -37,3 +37,15 @@
 /* ssize_t */
 #cmakedefine HAVE_SIZEOF_SSIZE_T
 @SIZEOF_SSIZE_T_CODE@
+
+/* struct somestruct::someint */
+#cmakedefine HAVE_SIZEOF_STRUCTMEMBER_INT
+ at SIZEOF_STRUCTMEMBER_INT_CODE@
+
+/* struct somestruct::someptr */
+#cmakedefine HAVE_SIZEOF_STRUCTMEMBER_PTR
+ at SIZEOF_STRUCTMEMBER_PTR_CODE@
+
+/* struct somestruct::somechar */
+#cmakedefine HAVE_SIZEOF_STRUCTMEMBER_CHAR
+ at SIZEOF_STRUCTMEMBER_CHAR_CODE@
diff --git a/Tests/Module/CheckTypeSize/somestruct.h b/Tests/Module/CheckTypeSize/somestruct.h
new file mode 100644
index 0000000..e08efc4
--- /dev/null
+++ b/Tests/Module/CheckTypeSize/somestruct.h
@@ -0,0 +1,10 @@
+#ifndef _CMAKE_SOMESTRUCT_H
+#define _CMAKE_SOMESTRUCT_H
+
+struct somestruct {
+    int someint;
+    void *someptr;
+    char somechar;
+};
+
+#endif

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2d68b033393ef99b5201b9f436544197a3cbe588
commit 2d68b033393ef99b5201b9f436544197a3cbe588
Author:     Rolf Eike Beer <eike at sf-mail.de>
AuthorDate: Mon Aug 13 18:58:30 2012 +0200
Commit:     Rolf Eike Beer <eike at sf-mail.de>
CommitDate: Tue Aug 21 08:31:11 2012 +0200

    CheckTypeSize: show in documentation how to get struct member size (#10579)

diff --git a/Modules/CheckTypeSize.cmake b/Modules/CheckTypeSize.cmake
index 1b9dc9f..7285b8a 100644
--- a/Modules/CheckTypeSize.cmake
+++ b/Modules/CheckTypeSize.cmake
@@ -24,6 +24,11 @@
 # size check automatically includes the available headers, thus
 # supporting checks of types defined in the headers.
 #
+# Despite the name of the macro you may use it to check the size of
+# more complex expressions, too. To check e.g. for the size of a struct
+# member you can do something like this:
+#  check_type_size("((struct something*)0)->member" SIZEOF_MEMBER)
+#
 # The following variables may be set before calling this macro to
 # modify the way the check is run:
 #

-----------------------------------------------------------------------

Summary of changes:


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list