diff options
author | Brad King <brad.king@kitware.com> | 2009-11-20 13:37:33 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2009-11-20 13:37:33 (GMT) |
commit | 2d80c9e31a3aab40589795d769602821afcb4030 (patch) | |
tree | 2e26d36bb993e574498583ed3a3a7adabf311b90 /Source/kwsys | |
parent | 2a789187fc2154c3c3850933f30d45580d9b8076 (diff) | |
download | CMake-2d80c9e31a3aab40589795d769602821afcb4030.zip CMake-2d80c9e31a3aab40589795d769602821afcb4030.tar.gz CMake-2d80c9e31a3aab40589795d769602821afcb4030.tar.bz2 |
Check for 'long long' without computing size
In KWSys IOStream we need to detect whether 'long long' exists but we do
not need its size. We avoid using CHECK_TYPE_SIZE because it does not
work for types whose size varies across architectuers in Mac OS X
universal binaries. See issue #9913.
Diffstat (limited to 'Source/kwsys')
-rw-r--r-- | Source/kwsys/CMakeLists.txt | 9 | ||||
-rw-r--r-- | Source/kwsys/kwsysPlatformTestsCXX.cxx | 9 |
2 files changed, 14 insertions, 4 deletions
diff --git a/Source/kwsys/CMakeLists.txt b/Source/kwsys/CMakeLists.txt index 09e3e20..b8e4d6d 100644 --- a/Source/kwsys/CMakeLists.txt +++ b/Source/kwsys/CMakeLists.txt @@ -534,8 +534,9 @@ ENDIF(KWSYS_USE_FundamentalType) IF(KWSYS_USE_IOStream) # Determine whether iostreams support long long. - CHECK_TYPE_SIZE("long long" KWSYS_SIZEOF_LONG_LONG) - IF(KWSYS_SIZEOF_LONG_LONG) + KWSYS_PLATFORM_CXX_TEST(KWSYS_CXX_HAS_LONG_LONG + "Checking whether C++ compiler has 'long long'" DIRECT) + IF(KWSYS_CXX_HAS_LONG_LONG) SET(KWSYS_PLATFORM_CXX_TEST_DEFINES -DKWSYS_IOS_USE_ANSI=${KWSYS_IOS_USE_ANSI} -DKWSYS_IOS_HAVE_STD=${KWSYS_IOS_HAVE_STD}) @@ -544,10 +545,10 @@ IF(KWSYS_USE_IOStream) KWSYS_PLATFORM_CXX_TEST(KWSYS_IOS_HAS_OSTREAM_LONG_LONG "Checking if ostream supports long long" DIRECT) SET(KWSYS_PLATFORM_CXX_TEST_DEFINES) - ELSE(KWSYS_SIZEOF_LONG_LONG) + ELSE() SET(KWSYS_IOS_HAS_ISTREAM_LONG_LONG 0) SET(KWSYS_IOS_HAS_OSTREAM_LONG_LONG 0) - ENDIF(KWSYS_SIZEOF_LONG_LONG) + ENDIF() ENDIF(KWSYS_USE_IOStream) IF(KWSYS_NAMESPACE MATCHES "^kwsys$") diff --git a/Source/kwsys/kwsysPlatformTestsCXX.cxx b/Source/kwsys/kwsysPlatformTestsCXX.cxx index 4a19ef8..903be9b 100644 --- a/Source/kwsys/kwsysPlatformTestsCXX.cxx +++ b/Source/kwsys/kwsysPlatformTestsCXX.cxx @@ -113,6 +113,15 @@ void f(size_t) {} int main() { return 0; } #endif +#ifdef TEST_KWSYS_CXX_HAS_LONG_LONG +long long f(long long n) { return n; } +int main() +{ + long long n = 0; + return static_cast<int>(f(n)); +} +#endif + #ifdef TEST_KWSYS_CXX_HAS_NULL_TEMPLATE_ARGS template <class T> class A; template <class T> int f(A<T>&); |