diff options
Diffstat (limited to 'qpid/cpp/CMakeModules/CheckSizetDistinct.cmake')
-rwxr-xr-x | qpid/cpp/CMakeModules/CheckSizetDistinct.cmake | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/qpid/cpp/CMakeModules/CheckSizetDistinct.cmake b/qpid/cpp/CMakeModules/CheckSizetDistinct.cmake new file mode 100755 index 0000000000..2ae4a89de9 --- /dev/null +++ b/qpid/cpp/CMakeModules/CheckSizetDistinct.cmake @@ -0,0 +1,56 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +# This module checks to see if size_t is a distinct type from the other +# integer types already set up in IntegerTypes.h. + +INCLUDE (CheckCXXSourceCompiles) + +FUNCTION (check_size_t_distinct VARIABLE) + # No need to check if we already did. If you want to re-run, clear it + # from the cache. + if ("${VARIABLE}" MATCHES "^${VARIABLE}$") + message (STATUS "Checking to see if size_t is a distinct type") + set (CMAKE_REQUIRED_QUIET ON) + set (CMAKE_REQUIRED_INCLUDES "${CMAKE_SOURCE_DIR}/include") + CHECK_CXX_SOURCE_COMPILES ( +" +#include <iostream> +#include \"qpid/sys/IntegerTypes.h\" +// Define functions that will fail to compile if size_t is the same as +// one of the int types defined in IntegerTypes.h +int foo(int16_t) { return 1; } +int foo(int32_t) { return 2; } +int foo(int64_t) { return 3; } +int foo(uint16_t) { return 4; } +int foo(uint32_t) { return 5; } +int foo(uint64_t) { return 6; } +int foo(size_t) { return 7; } +int main (int, char *[]) { + return 0; +} +" + ${VARIABLE}) + if (${VARIABLE}) + message (STATUS "Checking to see if size_t is a distinct type - yes") + else (${VARIABLE}) + message (STATUS "Checking to see if size_t is a distinct type - no") + endif (${VARIABLE}) + endif ("${VARIABLE}" MATCHES "^${VARIABLE}$") +ENDFUNCTION (check_size_t_distinct VARIABLE) |