diff Resources/PostgreSQL/CheckTypeAlignment.cmake @ 172:8c7bb94adff7

trying upgrade from libpq 9.6.1 to 13.1
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 11 Dec 2020 12:49:33 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Resources/PostgreSQL/CheckTypeAlignment.cmake	Fri Dec 11 12:49:33 2020 +0100
@@ -0,0 +1,29 @@
+macro(CHECK_TYPE_ALIGNMENT TYPE NAME)
+  if(NOT ${NAME})
+    message(STATUS "Check alignment of ${TYPE}")
+    
+    set(INCLUDE_HEADERS "#include <stddef.h>
+      #include <stdio.h>
+      #include <stdlib.h>")
+
+    if(HAVE_STDINT_H)
+      set(INCLUDE_HEADERS "${INCLUDE_HEADERS}\n#include <stdint.h>\n")
+    endif(HAVE_STDINT_H)
+
+    file(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/check_${NAME}_alignment.c"
+      "${INCLUDE_HEADERS}
+      int main(){
+        char diff;
+        struct foo {char a; ${TYPE} b;};
+        struct foo *p = (struct foo *) malloc(sizeof(struct foo));
+        diff = ((char *)&p->b) - ((char *)&p->a);
+        return diff;}
+    ")
+
+    try_run(${NAME} COMPILE_RESULT "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/"
+      "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/check_${NAME}_alignment.c")
+
+    message(STATUS "Check alignment of ${TYPE} - ${${NAME}}")
+
+  endif(NOT ${NAME})
+endmacro()