comparison 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
comparison
equal deleted inserted replaced
170:e712ff3eede3 172:8c7bb94adff7
1 macro(CHECK_TYPE_ALIGNMENT TYPE NAME)
2 if(NOT ${NAME})
3 message(STATUS "Check alignment of ${TYPE}")
4
5 set(INCLUDE_HEADERS "#include <stddef.h>
6 #include <stdio.h>
7 #include <stdlib.h>")
8
9 if(HAVE_STDINT_H)
10 set(INCLUDE_HEADERS "${INCLUDE_HEADERS}\n#include <stdint.h>\n")
11 endif(HAVE_STDINT_H)
12
13 file(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/check_${NAME}_alignment.c"
14 "${INCLUDE_HEADERS}
15 int main(){
16 char diff;
17 struct foo {char a; ${TYPE} b;};
18 struct foo *p = (struct foo *) malloc(sizeof(struct foo));
19 diff = ((char *)&p->b) - ((char *)&p->a);
20 return diff;}
21 ")
22
23 try_run(${NAME} COMPILE_RESULT "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/"
24 "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/check_${NAME}_alignment.c")
25
26 message(STATUS "Check alignment of ${TYPE} - ${${NAME}}")
27
28 endif(NOT ${NAME})
29 endmacro()