summaryrefslogtreecommitdiff
path: root/qpid/cpp/CMakeModules/CheckSizetDistinct.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/cpp/CMakeModules/CheckSizetDistinct.cmake')
-rwxr-xr-xqpid/cpp/CMakeModules/CheckSizetDistinct.cmake56
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)