summaryrefslogtreecommitdiff
path: root/Modules/CheckTypeSize.c.in
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2009-12-17 15:14:47 -0500
committerBrad King <brad.king@kitware.com>2009-12-17 15:14:47 -0500
commitc9b726c314c9c399975fbea3c673852310ee45e6 (patch)
tree7b2b02c917d8bcb846f179b1a05043c3c017a1e5 /Modules/CheckTypeSize.c.in
parent6c9f678098ff40a994529d81ab81936bff891ee1 (diff)
downloadcmake-c9b726c314c9c399975fbea3c673852310ee45e6.tar.gz
New CheckTypeSize for OS X Universal Binaries
We re-implement this module to support architecture-dependent type sizes. In the mixed-size case we generate C preprocessor code to select the detected type size for each architecture.
Diffstat (limited to 'Modules/CheckTypeSize.c.in')
-rw-r--r--Modules/CheckTypeSize.c.in37
1 files changed, 37 insertions, 0 deletions
diff --git a/Modules/CheckTypeSize.c.in b/Modules/CheckTypeSize.c.in
new file mode 100644
index 0000000000..b6c3688011
--- /dev/null
+++ b/Modules/CheckTypeSize.c.in
@@ -0,0 +1,37 @@
+@headers@
+
+#undef KEY
+#if defined(__i386)
+# define KEY '_','_','i','3','8','6'
+#elif defined(__x86_64)
+# define KEY '_','_','x','8','6','_','6','4'
+#elif defined(__ppc__)
+# define KEY '_','_','p','p','c','_','_'
+#elif defined(__ppc64__)
+# define KEY '_','_','p','p','c','6','4','_','_'
+#endif
+
+#define SIZE (sizeof(@type@))
+char info_size[] = {'I', 'N', 'F', 'O', ':', 's','i','z','e','[',
+ ('0' + ((SIZE / 10000)%10)),
+ ('0' + ((SIZE / 1000)%10)),
+ ('0' + ((SIZE / 100)%10)),
+ ('0' + ((SIZE / 10)%10)),
+ ('0' + (SIZE % 10)),
+ ']',
+#ifdef KEY
+ ' ','k','e','y','[', KEY, ']',
+#endif
+ '\0'};
+
+#ifdef __CLASSIC_C__
+int main(argc, argv) int argc; char *argv[];
+#else
+int main(int argc, char *argv[])
+#endif
+{
+ int require = 0;
+ require += info_size[argc];
+ (void)argv;
+ return require;
+}