summaryrefslogtreecommitdiff
path: root/cmake/TestLargeFiles.c.cmakein
diff options
context:
space:
mode:
authorJörg Mayer <jmayer@loplof.de>2013-07-23 09:40:21 +0000
committerJörg Mayer <jmayer@loplof.de>2013-07-23 09:40:21 +0000
commit1cbd49e61b022970dc7a24fefd6a6f8fba69eac5 (patch)
treef82678ef6135d90c2b0aa0fee55f6925f4798fa4 /cmake/TestLargeFiles.c.cmakein
parentd937adcc9ee07dde8c96f17b9c54fbba37fb45ba (diff)
downloadwireshark-1cbd49e61b022970dc7a24fefd6a6f8fba69eac5.tar.gz
Copy over cmake largfile detection from the gromacs project.
svn path=/trunk/; revision=50824
Diffstat (limited to 'cmake/TestLargeFiles.c.cmakein')
-rw-r--r--cmake/TestLargeFiles.c.cmakein31
1 files changed, 31 insertions, 0 deletions
diff --git a/cmake/TestLargeFiles.c.cmakein b/cmake/TestLargeFiles.c.cmakein
new file mode 100644
index 0000000000..53a1f614e6
--- /dev/null
+++ b/cmake/TestLargeFiles.c.cmakein
@@ -0,0 +1,31 @@
+/* This code was copied from http://www.gromacs.org/
+ * and its toplevel COPYING file starts with:
+ *
+ * GROMACS is free software, distributed under the GNU General Public License
+ * (GPL) Version 2.
+ */
+
+#cmakedefine _LARGEFILE_SOURCE
+#cmakedefine _LARGEFILE64_SOURCE
+#cmakedefine _LARGE_FILES
+#cmakedefine _FILE_OFFSET_BITS @_FILE_OFFSET_BITS@
+
+#include <sys/types.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char **argv)
+{
+ /* Cause a compile-time error if off_t is smaller than 64 bits,
+ * and make sure we have ftello / fseeko.
+ */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[ (LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1 ];
+ FILE *fp = fopen(argv[0],"r");
+ off_t offset = ftello( fp );
+
+ fseeko( fp, offset, SEEK_CUR );
+ fclose(fp);
+ return 0;
+}
+