Mercurial > hg > orthanc-databases
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()