BUG: Enable large files only if <cstdio> works
Some AIX/gcc version combinations the <cstdio> header breaks when large file support is enabled. See this GCC issue for details: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20366 We work around the problem by enhancing the configuration check for large file support to include <cstdio> when available. This will cause LFS to be disabled when the above problem occurs.
This commit is contained in:
parent
40850e7f1f
commit
cf1225b9af
|
@ -337,14 +337,19 @@ ENDIF(NOT CMAKE_COMPILER_IS_GNUCXX)
|
|||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Configure Large File Support.
|
||||
KWSYS_PLATFORM_CXX_TEST(KWSYS_CXX_HAS_CSTDIO
|
||||
"Checking whether header cstdio is available" DIRECT)
|
||||
SET(KWSYS_LFS_AVAILABLE 0)
|
||||
IF(KWSYS_LFS_REQUESTED)
|
||||
# Large File Support is requested.
|
||||
SET(KWSYS_LFS_REQUESTED 1)
|
||||
|
||||
# Check for large file support.
|
||||
SET(KWSYS_PLATFORM_CXX_TEST_DEFINES
|
||||
-DKWSYS_CXX_HAS_CSTDIO=${KWSYS_CXX_HAS_CSTDIO})
|
||||
KWSYS_PLATFORM_CXX_TEST_RUN(KWSYS_LFS_WORKS
|
||||
"Checking for Large File Support" DIRECT)
|
||||
SET(KWSYS_PLATFORM_CXX_TEST_DEFINES)
|
||||
|
||||
IF(KWSYS_LFS_WORKS)
|
||||
SET(KWSYS_LFS_AVAILABLE 1)
|
||||
|
|
|
@ -91,6 +91,11 @@ bool f(const kwsys_stl::string& s) { return s != ""; }
|
|||
int main() { return 0; }
|
||||
#endif
|
||||
|
||||
#ifdef TEST_KWSYS_CXX_HAS_CSTDIO
|
||||
#include <cstdio>
|
||||
int main() { return 0; }
|
||||
#endif
|
||||
|
||||
#ifdef TEST_KWSYS_CXX_HAS_CSTDDEF
|
||||
#include <cstddef>
|
||||
void f(size_t) {}
|
||||
|
@ -331,6 +336,9 @@ int main()
|
|||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <assert.h>
|
||||
#if KWSYS_CXX_HAS_CSTDIO
|
||||
# include <cstdio>
|
||||
#endif
|
||||
#include <stdio.h>
|
||||
|
||||
int main(int, char **argv)
|
||||
|
|
Loading…
Reference in New Issue