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

Reply via email to