@@ -2,21 +2,31 @@ macro(test_large_files VARIABLE USE_64_SUFFIX)
22 if (NOT DEFINED ${VARIABLE} )
33 message (STATUS "Checking if large (64-bit) file support is available..." )
44
5- if (${ USE_64_SUFFIX} )
5+ if (USE_64_SUFFIX)
66 set (SUFFIX_64 "64" )
7- else (${ USE_64_SUFFIX} )
7+ else (USE_64_SUFFIX)
88 set (SUFFIX_64 "" )
9- endif (${ USE_64_SUFFIX} )
9+ endif (USE_64_SUFFIX)
1010
1111 # First try without any macros defined
1212 try_compile (LARGE_FILES_SUPPORTED "${CMAKE_BINARY_DIR} "
13- "${CMAKE_MODULE_PATH} /LargeFiles${SUFFIX_64} .c" )
13+ "${CMAKE_MODULE_PATH} /LargeFiles${SUFFIX_64} .c"
14+ OUTPUT_VARIABLE TRY_LARGE_FILES_OUTPUT)
15+
16+ if (VERBOSE_LARGE_FILES)
17+ message (STATUS "Large file output (no special flags):\n ${TRY_LARGE_FILES_OUTPUT} " )
18+ endif (VERBOSE_LARGE_FILES)
1419
1520 if (NOT LARGE_FILES_SUPPORTED)
1621 # Try with C macro _FILE_OFFSET_BITS=64
1722 try_compile (LARGE_FILES_SUPPORTED "${CMAKE_BINARY_DIR} "
1823 "${CMAKE_MODULE_PATH} /LargeFiles${SUFFIX_64} .c"
19- COMPILE_DEFINITIONS "-D_FILE_OFFSET_BITS=64" )
24+ COMPILE_DEFINITIONS "-D_FILE_OFFSET_BITS=64"
25+ OUTPUT_VARIABLE TRY_LARGE_FILES_OUTPUT)
26+
27+ if (VERBOSE_LARGE_FILES)
28+ message (STATUS "Large file output (_FILE_OFFSET_BITS=64):\n ${TRY_LARGE_FILES_OUTPUT} " )
29+ endif (VERBOSE_LARGE_FILES)
2030
2131 if (LARGE_FILES_SUPPORTED)
2232 set (_FILE_OFFSET_BITS=64 CACHE INTERNAL "C macro _FILE_OFFSET_BITS=64 is required for 64-bit file support" )
@@ -28,22 +38,32 @@ macro(test_large_files VARIABLE USE_64_SUFFIX)
2838
2939 try_compile (LARGE_FILES_SUPPORTED "${CMAKE_BINARY_DIR} "
3040 "${CMAKE_MODULE_PATH} /LargeFiles${SUFFIX_64} .c"
31- COMPILE_DEFINITIONS "-D_LARGEFILE_SOURCE${SUFFIX_64} " )
41+ COMPILE_DEFINITIONS "-D_LARGEFILE_SOURCE${SUFFIX_64} "
42+ OUTPUT_VARIABLE TRY_LARGE_FILES_OUTPUT)
43+
44+ if (VERBOSE_LARGE_FILES)
45+ message (STATUS "Large file output (_LARGEFILE_SOURCE${SUFFIX_64} ):\n ${TRY_LARGE_FILES_OUTPUT} " )
46+ endif (VERBOSE_LARGE_FILES)
3247
3348 if (LARGE_FILES_SUPPORTED)
34- set (_LARGEFILE_SOURCE ${SUFFIX_64} =1 CACHE INTERNAL "C macro _LARGEFILE_SOURCE ${SUFFIX_64} is required for 64-bit file support" )
49+ set (_LARGEFILE ${SUFFIX_64} _SOURCE =1 CACHE INTERNAL "C macro _LARGEFILE ${SUFFIX_64} _SOURCE is required for 64-bit file support" )
3550 endif (LARGE_FILES_SUPPORTED)
3651 endif (NOT LARGE_FILES_SUPPORTED)
3752
3853 if (NOT LARGE_FILES_SUPPORTED)
3954 # Try with both C macro _FILE_OFFSET_BITS=64 and _LARGEFILE_SOURCE
4055 try_compile (LARGE_FILES_SUPPORTED "${CMAKE_BINARY_DIR} "
4156 "${CMAKE_MODULE_PATH} /LargeFiles${SUFFIX_64} .c"
42- COMPILE_DEFINITIONS "-D_FILE_OFFSET_BITS=64" "-D_LARGEFILE_SOURCE${SUFFIX_64} " )
57+ COMPILE_DEFINITIONS "-D_FILE_OFFSET_BITS=64" "-D_LARGEFILE${SUFFIX_64} _SOURCE"
58+ OUTPUT_VARIABLE TRY_LARGE_FILES_OUTPUT)
59+
60+ if (VERBOSE_LARGE_FILES)
61+ message (STATUS "Large file output (_FILE_OFFSET_BITS=64 and _LARGEFILE_SOURCE${SUFFIX_64} ):\n ${TRY_LARGE_FILES_OUTPUT} " )
62+ endif (VERBOSE_LARGE_FILES)
4363
4464 if (LARGE_FILES_SUPPORTED)
4565 set (_FILE_OFFSET_BITS=64 CACHE INTERNAL "C macro _FILE_OFFSET_BITS=64 is required for 64-bit file support" )
46- set (_LARGEFILE_SOURCE ${SUFFIX_64} =1 CACHE INTERNAL "C macro _LARGEFILE_SOURCE ${SUFFIX_64} is required for 64-bit file support" )
66+ set (_LARGEFILE ${SUFFIX_64} _SOURCE =1 CACHE INTERNAL "C macro _LARGEFILE ${SUFFIX_64} _SOURCE is required for 64-bit file support" )
4767 endif (LARGE_FILES_SUPPORTED)
4868 endif (NOT LARGE_FILES_SUPPORTED)
4969
@@ -77,10 +97,10 @@ macro(use_large_files TARGET USE_64_SUFFIX)
7797 APPEND PROPERTY COMPILE_DEFINITIONS "-D_LARGEFILE_SOURCE" )
7898 endif (DEFINED _LARGEFILE_SOURCE)
7999
80- if (DEFINED _LARGEFILE_SOURCE64 )
100+ if (DEFINED _LARGEFILE64_SOURCE )
81101 set_property (TARGET ${TARGET}
82- APPEND PROPERTY COMPILE_DEFINITIONS "-D_LARGEFILE_SOURCE64 " )
83- endif (DEFINED _LARGEFILE_SOURCE64 )
102+ APPEND PROPERTY COMPILE_DEFINITIONS "-D_LARGEFILE64_SOURCE " )
103+ endif (DEFINED _LARGEFILE64_SOURCE )
84104 else (USING_LARGE_FILES)
85105 message (FATAL_ERROR "Large file support not available" )
86106 endif (USING_LARGE_FILES)
0 commit comments