Changeset: 2d6202baf6fb for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2d6202baf6fb Added Files: ctest/cmake/detect-getaddrinfo.cmake ctest/cmake/detect-unixgetaddrinfo.cmake ctest/cmake/detect-wingetaddrinfo.cmake ctest/cmake/test_detect_getaddrinfo.c.in ctest/cmake/test_detect_unixgetaddrinfo.c.in ctest/cmake/test_detect_wingetaddrinfo.c.in Modified Files: cmake/monetdb-defines.cmake ctest/cmake/CMakeLists.txt ctest/cmake/detect-lzma.cmake ctest/cmake/detect-readline.cmake Branch: mbedded Log Message:
improve getaddrinfo detection, fix bug and add tests diffs (truncated from 361 to 300 lines): diff --git a/cmake/monetdb-defines.cmake b/cmake/monetdb-defines.cmake --- a/cmake/monetdb-defines.cmake +++ b/cmake/monetdb-defines.cmake @@ -6,6 +6,10 @@ # Copyright 1997 - July 2008 CWI, August 2008 - 2020 MonetDB B.V. #]] +# This function should only run find functions. The resulting +# variables will have the correct scope. If you need to set +# additional variables, for example for legacy defines, do this +# in the "monetdb_macro_variables" macro. function(monetdb_configure_defines) find_path(HAVE_DISPATCH_DISPATCH_H "dispatch/dispatch.h") find_path(HAVE_DLFCN_H "dlfcn.h") @@ -54,13 +58,6 @@ function(monetdb_configure_defines) check_symbol_exists("S_ISREG" "sys/stat.h" HAVE_SYS_STAT_H) check_symbol_exists("getaddrinfo" "netdb.h" UNIX_GETADDRINFO) check_symbol_exists("getaddrinfo" "ws2tcpip.h" WIN_GETADDRINFO) - if(UNIX_GETADDRINF) - set(HAVE_GETADDRINFO 1 PARENT_SCOPE) - endif() - if(WIN_GETADDRINF) - set(HAVE_GETADDRINFO 1 PARENT_SCOPE) - endif() - #check_symbol_exists("WSADATA" "winsock2.h" HAVE_WINSOCK_H) check_symbol_exists("fdatasync" "unistd.h" HAVE_FDATASYNC) # Some libc versions on Linux distributions don't have it @@ -152,6 +149,13 @@ macro(monetdb_macro_variables) set(SOCKET_LIBRARIES "ws2_32") endif() + if(UNIX_GETADDRINFO) + set(HAVE_GETADDRINFO 1) + endif() + if(WIN_GETADDRINFO) + set(HAVE_GETADDRINFO 1) + endif() + set(DIR_SEP "/") set(PATH_SEP ":") set(DIR_SEP_STR "/") diff --git a/ctest/cmake/CMakeLists.txt b/ctest/cmake/CMakeLists.txt --- a/ctest/cmake/CMakeLists.txt +++ b/ctest/cmake/CMakeLists.txt @@ -61,5 +61,8 @@ add_test(testDetectProj test_detect_proj include(${CMAKE_CURRENT_SOURCE_DIR}/detect-netcdf.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/detect-lzma.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/detect-readline.cmake) +include(${CMAKE_CURRENT_SOURCE_DIR}/detect-unixgetaddrinfo.cmake) +include(${CMAKE_CURRENT_SOURCE_DIR}/detect-wingetaddrinfo.cmake) +include(${CMAKE_CURRENT_SOURCE_DIR}/detect-getaddrinfo.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/set-dir-vars.cmake) diff --git a/ctest/cmake/detect-getaddrinfo.cmake b/ctest/cmake/detect-getaddrinfo.cmake new file mode 100644 --- /dev/null +++ b/ctest/cmake/detect-getaddrinfo.cmake @@ -0,0 +1,64 @@ +#[[ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# Copyright 1997 - July 2008 CWI, August 2008 - 2020 MonetDB B.V. +#]] + +if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + get_os_release_info(LINUX_DISTRO LINUX_DISTRO_VERSION) +endif() + +if (${LINUX_DISTRO} STREQUAL "debian") + if(${LINUX_DISTRO_VERSION} STREQUAL "9") + set(DETECT "0") + set(UNDETECT "1") + endif() + if(${LINUX_DISTRO_VERSION} STREQUAL "10") + set(DETECT "0") + set(UNDETECT "1") + endif() +elseif (${LINUX_DISTRO} STREQUAL "ubuntu") + if(${LINUX_DISTRO_VERSION} STREQUAL "18") + set(DETECT "0") + set(UNDETECT "1") + endif() + if(${LINUX_DISTRO_VERSION} STREQUAL "19") + set(DETECT "0") + set(UNDETECT "1") + endif() + if(${LINUX_DISTRO_VERSION} STREQUAL "20") + set(DETECT "0") + set(UNDETECT "1") + endif() +elseif(${LINUX_DISTRO} STREQUAL "fedora") + if(${LINUX_DISTRO_VERSION} STREQUAL "30") + set(DETECT "0") + set(UNDETECT "1") + endif() + if(${LINUX_DISTRO_VERSION} STREQUAL "31") + set(DETECT "0") + set(UNDETECT "1") + endif() + if(${LINUX_DISTRO_VERSION} STREQUAL "32") + set(DETECT "0") + set(UNDETECT "1") + endif() +else() + message(ERROR "Linux distro: ${LINUX_DISTRO} not known") + message(ERROR "Linux distro version: ${LINUX_DISTRO_VERSION} not known") +endif() + +configure_file(test_detect_getaddrinfo.c.in + ${CMAKE_CURRENT_BINARY_DIR}/test_detect_getaddrinfo.c + @ONLY) + +add_executable(test_detect_getaddrinfo) +target_sources(test_detect_getaddrinfo + PRIVATE + ${CMAKE_CURRENT_BINARY_DIR}/test_detect_getaddrinfo.c) +target_link_libraries(test_detect_getaddrinfo + PRIVATE + monetdb_config_header) +add_test(testDetectGetaddrinfo test_detect_getaddrinfo) diff --git a/ctest/cmake/detect-lzma.cmake b/ctest/cmake/detect-lzma.cmake --- a/ctest/cmake/detect-lzma.cmake +++ b/ctest/cmake/detect-lzma.cmake @@ -1,3 +1,11 @@ +#[[ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# Copyright 1997 - July 2008 CWI, August 2008 - 2020 MonetDB B.V. +#]] + if (${LINUX_DISTRO} STREQUAL "debian") if(${LINUX_DISTRO_VERSION} STREQUAL "9") set(DETECT "1") @@ -50,4 +58,3 @@ target_link_libraries(test_detect_lzma PRIVATE monetdb_config_header) add_test(testDetectLzma test_detect_lzma) - diff --git a/ctest/cmake/detect-readline.cmake b/ctest/cmake/detect-readline.cmake --- a/ctest/cmake/detect-readline.cmake +++ b/ctest/cmake/detect-readline.cmake @@ -16,8 +16,8 @@ if (${LINUX_DISTRO} STREQUAL "debian") set(UNDETECT "0") endif() if(${LINUX_DISTRO_VERSION} STREQUAL "10") - set(DETECT "1") - set(UNDETECT "0") + set(DETECT "0") + set(UNDETECT "1") endif() elseif (${LINUX_DISTRO} STREQUAL "ubuntu") if(${LINUX_DISTRO_VERSION} STREQUAL "18") diff --git a/ctest/cmake/detect-unixgetaddrinfo.cmake b/ctest/cmake/detect-unixgetaddrinfo.cmake new file mode 100644 --- /dev/null +++ b/ctest/cmake/detect-unixgetaddrinfo.cmake @@ -0,0 +1,61 @@ +#[[ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# Copyright 1997 - July 2008 CWI, August 2008 - 2020 MonetDB B.V. +#]] + +if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + get_os_release_info(LINUX_DISTRO LINUX_DISTRO_VERSION) +endif() + +if (${LINUX_DISTRO} STREQUAL "debian") + if(${LINUX_DISTRO_VERSION} STREQUAL "9") + set(DETECT "0") + set(UNDETECT "1") + endif() + if(${LINUX_DISTRO_VERSION} STREQUAL "10") + set(DETECT "0") + set(UNDETECT "1") + endif() +elseif (${LINUX_DISTRO} STREQUAL "ubuntu") + if(${LINUX_DISTRO_VERSION} STREQUAL "18") + set(DETECT "0") + set(UNDETECT "1") + endif() + if(${LINUX_DISTRO_VERSION} STREQUAL "19") + set(DETECT "0") + set(UNDETECT "1") + endif() + if(${LINUX_DISTRO_VERSION} STREQUAL "20") + set(DETECT "0") + set(UNDETECT "1") + endif() +elseif(${LINUX_DISTRO} STREQUAL "fedora") + if(${LINUX_DISTRO_VERSION} STREQUAL "30") + set(DETECT "0") + set(UNDETECT "1") + endif() + if(${LINUX_DISTRO_VERSION} STREQUAL "31") + set(DETECT "0") + set(UNDETECT "1") + endif() + if(${LINUX_DISTRO_VERSION} STREQUAL "32") + set(DETECT "0") + set(UNDETECT "1") + endif() +else() + message(ERROR "Linux distro: ${LINUX_DISTRO} not known") + message(ERROR "Linux distro version: ${LINUX_DISTRO_VERSION} not known") +endif() + +configure_file(test_detect_unixgetaddrinfo.c.in + ${CMAKE_CURRENT_BINARY_DIR}/test_detect_unixgetaddrinfo.c + @ONLY) + +add_executable(test_detect_unixgetaddrinfo) +target_sources(test_detect_unixgetaddrinfo + PRIVATE + ${CMAKE_CURRENT_BINARY_DIR}/test_detect_unixgetaddrinfo.c) +add_test(testDetectUnixgetaddrinfo test_detect_unixgetaddrinfo) diff --git a/ctest/cmake/detect-wingetaddrinfo.cmake b/ctest/cmake/detect-wingetaddrinfo.cmake new file mode 100644 --- /dev/null +++ b/ctest/cmake/detect-wingetaddrinfo.cmake @@ -0,0 +1,61 @@ +#[[ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# Copyright 1997 - July 2008 CWI, August 2008 - 2020 MonetDB B.V. +#]] + +if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + get_os_release_info(LINUX_DISTRO LINUX_DISTRO_VERSION) +endif() + +if (${LINUX_DISTRO} STREQUAL "debian") + if(${LINUX_DISTRO_VERSION} STREQUAL "9") + set(DETECT "1") + set(UNDETECT "0") + endif() + if(${LINUX_DISTRO_VERSION} STREQUAL "10") + set(DETECT "1") + set(UNDETECT "0") + endif() +elseif (${LINUX_DISTRO} STREQUAL "ubuntu") + if(${LINUX_DISTRO_VERSION} STREQUAL "18") + set(DETECT "1") + set(UNDETECT "0") + endif() + if(${LINUX_DISTRO_VERSION} STREQUAL "19") + set(DETECT "1") + set(UNDETECT "0") + endif() + if(${LINUX_DISTRO_VERSION} STREQUAL "20") + set(DETECT "1") + set(UNDETECT "0") + endif() +elseif(${LINUX_DISTRO} STREQUAL "fedora") + if(${LINUX_DISTRO_VERSION} STREQUAL "30") + set(DETECT "1") + set(UNDETECT "0") + endif() + if(${LINUX_DISTRO_VERSION} STREQUAL "31") + set(DETECT "1") + set(UNDETECT "0") + endif() + if(${LINUX_DISTRO_VERSION} STREQUAL "32") + set(DETECT "1") + set(UNDETECT "0") + endif() +else() + message(ERROR "Linux distro: ${LINUX_DISTRO} not known") + message(ERROR "Linux distro version: ${LINUX_DISTRO_VERSION} not known") +endif() + +configure_file(test_detect_wingetaddrinfo.c.in + ${CMAKE_CURRENT_BINARY_DIR}/test_detect_wingetaddrinfo.c + @ONLY) + +add_executable(test_detect_wingetaddrinfo) +target_sources(test_detect_wingetaddrinfo + PRIVATE + ${CMAKE_CURRENT_BINARY_DIR}/test_detect_wingetaddrinfo.c) +add_test(testDetectWingetaddrinfo test_detect_wingetaddrinfo) diff --git a/ctest/cmake/test_detect_getaddrinfo.c.in b/ctest/cmake/test_detect_getaddrinfo.c.in new file mode 100644 --- /dev/null +++ b/ctest/cmake/test_detect_getaddrinfo.c.in @@ -0,0 +1,19 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2020 MonetDB B.V. _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list