You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by cm...@apache.org on 2023/09/25 14:03:19 UTC

[trafficserver] branch master updated: cmake: Update gaps in config checks (#10489)

This is an automated email from the ASF dual-hosted git repository.

cmcfarlen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/master by this push:
     new 8bcc93f7ae cmake: Update gaps in config checks (#10489)
8bcc93f7ae is described below

commit 8bcc93f7ae392677408c225796100d809e758cf2
Author: Chris McFarlen <ch...@mcfarlen.us>
AuthorDate: Mon Sep 25 09:03:12 2023 -0500

    cmake: Update gaps in config checks (#10489)
    
    * Update gaps in config checks
    
    * fix a few more issues
    
    * test build fixes
    
    * fixup more tls autests
    
    ---------
    
    Co-authored-by: Chris McFarlen <cm...@apple.com>
---
 CMakeLists.txt                                   | 80 ++++++++++++++++++++++++
 include/tscore/ink_config.h.cmake.in             | 60 ++++++++++++++++++
 plugins/experimental/cookie_remap/CMakeLists.txt |  1 +
 tests/gold_tests/chunked_encoding/CMakeLists.txt |  2 +-
 tests/gold_tests/timeout/CMakeLists.txt          |  2 +-
 tests/gold_tests/tls/CMakeLists.txt              |  5 --
 6 files changed, 143 insertions(+), 7 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index c871c59903..928accafe3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -146,29 +146,49 @@ include(CheckIncludeFile)
 include(CheckIncludeFiles)
 include(CheckIncludeFileCXX)
 include(CheckSymbolExists)
+include(CheckTypeSize)
+include(CheckSourceCompiles)
+include(CheckStructHasMember)
 
+CHECK_INCLUDE_FILE(alloca.h HAVE_ALLOCA_H)
+CHECK_INCLUDE_FILE(cpio.h HAVE_CPIO_H)
 CHECK_INCLUDE_FILE(dlfcn.h HAVE_DLFCN_H)
 CHECK_INCLUDE_FILE(float.h HAVE_FLOAT_H)
 CHECK_INCLUDE_FILE(stdlib.h HAVE_STDLIB_H)
 CHECK_INCLUDE_FILE(stdint.h HAVE_STDINT_H)
+CHECK_INCLUDE_FILE(ifaddrs.h HAVE_IFADDRS_H)
 CHECK_INCLUDE_FILE(inttypes.h HAVE_INTTYPES_H)
 CHECK_INCLUDE_FILE(string.h HAVE_STRING_H)
 CHECK_INCLUDE_FILE(linux/major.h HAVE_LINUX_MAJOR_H)
+CHECK_INCLUDE_FILE(malloc.h HAVE_MALLOC_H)
+CHECK_INCLUDE_FILE(mcheck.h HAVE_MCHECK_H)
+CHECK_INCLUDE_FILE(machine/endian.h HAVE_MACHINE_ENDIAN_H)
+CHECK_INCLUDE_FILE(sys/byteorder.h HAVE_SYS_BYTEORDER_H)
 CHECK_INCLUDE_FILE(sys/disk.h HAVE_SYS_DISK_H)
 CHECK_INCLUDE_FILE(sys/disklabel.h HAVE_SYS_DISKLABEL_H)
+CHECK_INCLUDE_FILE(sys/endian.h HAVE_SYS_ENDIAN_H)
 CHECK_INCLUDE_FILE(sys/ioctl.h HAVE_SYS_IOCTL_H)
 CHECK_INCLUDE_FILE(sys/types.h HAVE_SYS_TYPES_H)
+CHECK_INCLUDE_FILE(sys/sockio.h HAVE_SYS_SOCKIO_H)
 CHECK_INCLUDE_FILE(sys/stat.h HAVE_SYS_STAT_H)
+CHECK_INCLUDE_FILE(sys/statfs.h HAVE_SYS_STATFS_H)
 CHECK_INCLUDE_FILE(sys/statvfs.h HAVE_SYS_STATVFS_H)
 CHECK_INCLUDE_FILE(sys/uio.h HAVE_SYS_UIO_H)
+CHECK_INCLUDE_FILE(sys/sysinfo.h HAVE_SYS_SYSINFO_H)
 CHECK_INCLUDE_FILE(sys/sysmacros.h HAVE_SYS_SYSMACROS_H)
+CHECK_INCLUDE_FILE(sys/systeminfo.h HAVE_SYS_SYSTEMINFO_H)
+CHECK_INCLUDE_FILE(sys/sysctl.h HAVE_SYS_SYSCTL_H)
 CHECK_INCLUDE_FILE(sys/mman.h HAVE_SYS_MMAN_H)
 CHECK_INCLUDE_FILE(sys/mount.h HAVE_SYS_MOUNT_H)
 CHECK_INCLUDE_FILE(sys/param.h HAVE_SYS_PARAM_H)
+CHECK_INCLUDE_FILE(sysexits.h HAVE_SYSEXITS_H)
+CHECK_INCLUDE_FILE(stropts.h HAVE_STROPTS_H)
 CHECK_INCLUDE_FILE(unistd.h HAVE_UNISTD_H)
+CHECK_INCLUDE_FILE(values.h HAVE_VALUES_H)
 CHECK_INCLUDE_FILE(netinet/in.h HAVE_NETINET_IN_H)
 CHECK_INCLUDE_FILE(netinet/in_systm.h HAVE_NETINET_IN_SYSTM_H)
 CHECK_INCLUDE_FILE(netinet/tcp.h HAVE_NETINET_TCP_H)
+CHECK_INCLUDE_FILE(netinet/ip.h HAVE_NETINET_IP_H)
 CHECK_INCLUDE_FILE(netinet/ip_icmp.h HAVE_NETINET_IP_ICMP_H)
 CHECK_INCLUDE_FILE(netdb.h HAVE_NETDB_H)
 CHECK_INCLUDE_FILE(arpa/inet.h HAVE_ARPA_INET_H)
@@ -267,6 +287,10 @@ set(HAVE_NCURSES_H ${CURSES_HAVE_NCURSES_H})
 set(HAVE_NCURSES_CURSES_H ${CURSES_HAVE_NCURSES_CURSES_H})
 set(HAVE_NCURSES_NCURSES_H ${CURSES_HAVE_NCURSES_NCURSES_H})
 
+# curl is used in traffic_top
+find_package(CURL)
+set(HAVE_CURL ${CURL_FOUND})
+
 include(Check128BitCas)
 include(ConfigureTransparentProxy)
 
@@ -287,10 +311,29 @@ check_symbol_exists(kqueue "sys/event.h" TS_USE_KQUEUE)
 set(CMAKE_REQUIRED_LIBRARIES uring)
 check_symbol_exists(io_uring_queue_init "liburing.h" HAVE_IOURING)
 unset(CMAKE_REQUIRED_LIBRARIES)
+check_symbol_exists(getpagesize unistd.h HAVE_GETPAGESIZE)
+check_symbol_exists(getpeereid unistd.h HAVE_GETPEEREID)
+check_symbol_exists(getpeerucred unistd.h HAVE_GETPEERUCRED)
 check_symbol_exists(getresuid unistd.h HAVE_GETRESUID)
 check_symbol_exists(getresgid unistd.h HAVE_GETRESGID)
+check_symbol_exists(malloc_usable_size malloc.h HAVE_MALLOC_USABLE_SIZE)
+check_symbol_exists(mcheck_pedantic mcheck.h HAVE_MCHECK_PEDANTIC)
+check_symbol_exists(posix_fadvise fcntl.h HAVE_POSIX_FADVISE)
+check_symbol_exists(posix_fallocate fcntl.h HAVE_POSIX_FALLOCATE)
+check_symbol_exists(posix_madvise sys/mman.h HAVE_POSIX_MADVISE)
 check_symbol_exists(accept4 sys/socket.h HAVE_ACCEPT4)
 check_symbol_exists(eventfd sys/eventfd.h HAVE_EVENTFD)
+check_symbol_exists(sysconf unistd.h HAVE_SYSCONF)
+check_symbol_exists(recvmmsg sys/socket.h HAVE_RECVMMSG)
+check_symbol_exists(sendmmsg sys/socket.h HAVE_SENDMMSG)
+check_symbol_exists(strlcat string.h HAVE_STRLCAT)
+check_symbol_exists(strlcpy string.h HAVE_STRLCPY)
+check_symbol_exists(strsignal string.h HAVE_STRSIGNAL)
+if(TS_USE_HWLOC)
+  check_source_compiles(C
+    "#include <hwloc.h>
+    int main() { return HWLOC_OBJ_PU; }" HAVE_HWLOC_OBJ_PU)
+endif()
 
 option(USE_IOURING "Use experimental io_uring (linux only)" 0)
 if (HAVE_IOURING AND USE_IOURING)
@@ -298,6 +341,22 @@ if (HAVE_IOURING AND USE_IOURING)
     set(TS_USE_LINUX_IO_URING 1)
 endif(HAVE_IOURING AND USE_IOURING)
 
+check_symbol_exists(pthread_getname_np pthread.h HAVE_PTHREAD_GETNAME_NP)
+check_symbol_exists(pthread_get_name_np pthread.h HAVE_PTHREAD_GET_NAME_NP)
+
+check_source_compiles(C
+  "#include <pthread.h>
+  void main() { pthread_setname_np(\"name\"); }" HAVE_PTHREAD_SETNAME_NP_1)
+check_source_compiles(C
+  "#include <pthread.h>
+  void main() { pthread_setname_np(0, \"name\"); }" HAVE_PTHREAD_SETNAME_NP_2)
+check_source_compiles(C
+  "#include <pthread.h>
+  void main() { pthread_set_name_np(\"name\"); }" HAVE_PTHREAD_SET_NAME_NP_1)
+check_source_compiles(C
+  "#include <pthread.h>
+  void main() { pthread_set_name_np(0, \"name\"); }" HAVE_PTHREAD_SET_NAME_NP_2)
+
 # Check ssl functionality
 list(APPEND CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR})
 list(APPEND CMAKE_REQUIRED_LIBRARIES
@@ -315,6 +374,11 @@ check_symbol_exists(HMAC_CTX_new "openssl/hmac.h" HAVE_HMAC_CTX_NEW)
 check_symbol_exists(DH_get_2048_256 "openssl/dh.h" TS_USE_GET_DH_2048_256)
 check_symbol_exists(OPENSSL_NO_TLS_3 "openssl/ssl.h" TS_NO_USE_TLS12)
 check_symbol_exists(SSL_CTX_set_client_hello_cb "openssl/ssl.h" TS_USE_HELLO_CB)
+check_symbol_exists(SSL_set1_verify_cert_store "openssl/ssl.h" TS_HAS_VERIFY_CERT_STORE)
+check_symbol_exists(SSL_CTX_set_tlsext_ticket_key_evp_cb "openssl/ssl.h" TS_HAS_TLS_SESSION_TICKET)
+check_symbol_exists(SSL_read_early_data "openssl/ssl.h" TS_HAS_TLS_EARLY_DATA)
+check_symbol_exists(SSL_set_max_early_data "openssl/ssl.h" HAVE_SSL_SET_MAX_EARLY_DATA)
+check_symbol_exists(SSL_CTX_set_ciphersuites "openssl/ssl.h" TS_USE_TLS_SET_CIPHERSUITES)
 check_symbol_exists(
     SSL_CTX_set_keylog_callback
     "openssl/ssl.h"
@@ -325,7 +389,23 @@ check_symbol_exists(
     "openssl/ssl.h"
     HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_CB
 )
+check_symbol_exists(SSL_get_all_async_fds openssl/ssl.h TS_USE_TLS_ASYNC)
 check_symbol_exists(TLS1_3_VERSION "openssl/ssl.h" TS_USE_TLS13)
+check_symbol_exists(MD5_Init "openssl/md5.h" HAVE_MD5_INIT)
+check_symbol_exists(sysctlbyname "sys/sysctl.h" HAVE_SYSCTLBYNAME)
+
+set(HAVE_SSL_READ_EARLY_DATA ${TS_HAS_TLS_EARLY_DATA})
+
+set(CMAKE_REQUIRED_INCLUDES netinet/in.h netinet/tcp.h)
+check_type_size("struct tcp_info" STRUCT_TCP_INFO)
+unset(CMAKE_REQUIRED_INCLUDES)
+
+check_struct_has_member("struct tcp_info" tcpi_data_segs_out "linux/tcp.h" HAVE_STRUCT_LINUX_TCP_INFO)
+check_struct_has_member("struct sockaddr" sa_len "netinet/in.h" HAVE_STRUCT_SOCKADDR_SA_LEN)
+check_struct_has_member("struct sockaddr_in" sin_len "netinet/in.h" HAVE_STRUCT_SOCKADDR_IN_SIN_LEN)
+check_struct_has_member("struct sockaddr_in6" sin6_len "netinet/in.h" HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN)
+check_struct_has_member("struct stat" st_mtimespec "sys/stat.h" HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC)
+check_struct_has_member("struct stat" st_mtim "sys/stat.h" HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC)
 
 if(ENABLE_DOCS OR ENABLE_AUTEST)
     find_package(Python3 REQUIRED)
diff --git a/include/tscore/ink_config.h.cmake.in b/include/tscore/ink_config.h.cmake.in
index 7a0a300f0c..7ab4ce20b9 100644
--- a/include/tscore/ink_config.h.cmake.in
+++ b/include/tscore/ink_config.h.cmake.in
@@ -32,9 +32,12 @@
 #cmakedefine BUILD_GROUP "@BUILD_GROUP@"
 #define BUILD_NUMBER "@BUILD_NUMBER@"
 
+#cmakedefine HAVE_ALLOCA_H 1
 #cmakedefine HAVE_BROTLI_ENCODE_H 1
 #cmakedefine HAVE_CLOCK_GETTIME 1
 #cmakedefine HAVE_CURSES_H 1
+#cmakedefine HAVE_CURL 1
+#cmakedefine HAVE_CPIO_H 1
 #cmakedefine HAVE_NCURSES_H 1
 #cmakedefine HAVE_NCURSES_CURSES_H 1
 #cmakedefine HAVE_NCURSES_NCURSES_H 1
@@ -43,39 +46,77 @@
 #cmakedefine HAVE_LZMA_H 1
 #cmakedefine HAVE_STDLIB_H 1
 #cmakedefine HAVE_STDINT_H 1
+#cmakedefine HAVE_IFADDRS_H 1
 #cmakedefine HAVE_INTTYPES_H 1
 #cmakedefine HAVE_STRING_H 1
 #cmakedefine HAVE_LINUX_HDREG_H 1
 #cmakedefine HAVE_LINUX_MAJOR_H 1
+#cmakedefine HAVE_MALLOC_H 1
+#cmakedefine HAVE_MCHECK_H 1
+#cmakedefine HAVE_MACHINE_ENDIAN_H 1
+#cmakedefine HAVE_SYS_BYTEORDER_H 1
 #cmakedefine HAVE_SYS_DISK_H 1
 #cmakedefine HAVE_SYS_DISKLABEL_H 1
+#cmakedefine HAVE_SYS_ENDIAN_H 1
 #cmakedefine HAVE_SYS_CAPABILITY_H 1
 #cmakedefine HAVE_SYS_IOCTL_H 1
 #cmakedefine HAVE_SYS_PRCTL_H 1
 #cmakedefine HAVE_SYS_TYPES_H 1
+#cmakedefine HAVE_SYS_SOCKIO_H 1
 #cmakedefine HAVE_SYS_STAT_H 1
+#cmakedefine HAVE_SYS_STATFS_H 1
 #cmakedefine HAVE_SYS_STATVFS_H 1
 #cmakedefine HAVE_SYS_UIO_H 1
+#cmakedefine HAVE_SYS_SYSINFO_H 1
 #cmakedefine HAVE_SYS_SYSMACROS_H 1
+#cmakedefine HAVE_SYS_SYSTEMINFO_H 1
+#cmakedefine HAVE_SYS_SYSCTL_H 1
 #cmakedefine HAVE_SYS_MMAN_H 1
 #cmakedefine HAVE_SYS_MOUNT_H 1
 #cmakedefine HAVE_SYS_PARAM_H 1
+#cmakedefine HAVE_SYSEXITS_H 1
+#cmakedefine HAVE_STROPTS_H 1
 #cmakedefine HAVE_UNISTD_H 1
+#cmakedefine HAVE_VALUES_H 1
 #cmakedefine HAVE_NETINET_IN_H 1
 #cmakedefine HAVE_NETINET_IN_SYSTM_H 1
 #cmakedefine HAVE_NETINET_TCP_H 1
 #cmakedefine HAVE_NETINET_IP_ICMP_H 1
+#cmakedefine HAVE_NETINET_IP_H 1
 #cmakedefine HAVE_NETDB_H 1
 #cmakedefine HAVE_ARPA_INET_H 1
 #cmakedefine HAVE_ARPA_NAMESER_H 1
 #cmakedefine HAVE_ARPA_NAMESER_COMPAT_H 1
 #cmakedefine HAVE_SIGINFO_H 1
 #cmakedefine HAVE_ENDIAN_H 1
+#cmakedefine HAVE_MALLOC_USABLE_SIZE 1
+#cmakedefine HAVE_MCHECK_PEDANTIC 1
+#cmakedefine HAVE_POSIX_FADVISE 1
+#cmakedefine HAVE_POSIX_FALLOCATE 1
+#cmakedefine HAVE_POSIX_MADVISE 1
+
+#cmakedefine HAVE_PTHREAD_GETNAME_NP 1
+#cmakedefine HAVE_PTHREAD_GET_NAME_NP 1
+#cmakedefine HAVE_PTHREAD_SETNAME_NP_1 1
+#cmakedefine HAVE_PTHREAD_SETNAME_NP_2 1
+#cmakedefine HAVE_PTHREAD_SET_NAME_NP_1 1
+#cmakedefine HAVE_PTHREAD_SET_NAME_NP_2 1
 
 #cmakedefine01 HAVE_GETRESUID
 #cmakedefine01 HAVE_GETRESGID
+#cmakedefine01 HAVE_GETPAGESIZE
+#cmakedefine01 HAVE_GETPEEREID
+#cmakedefine01 HAVE_GETPEERUCRED
 #cmakedefine01 HAVE_ACCEPT4
 #cmakedefine01 HAVE_EVENTFD
+#cmakedefine01 HAVE_SYSCONF
+#cmakedefine HAVE_RECVMMSG 1
+#cmakedefine HAVE_SENDMMSG 1
+#cmakedefine01 HAVE_STRLCAT
+#cmakedefine01 HAVE_STRLCPY
+#cmakedefine01 HAVE_STRSIGNAL
+
+#cmakedefine01 HAVE_HWLOC_OBJ_PU
 
 #cmakedefine01 HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_CB
 #cmakedefine01 TS_HAS_TLS_KEYLOGGING
@@ -88,6 +129,16 @@
 #cmakedefine HAVE_BIO_METH_GET_CREATE 1
 #cmakedefine HAVE_BIO_METH_GET_DESTROY 1
 #cmakedefine HAVE_HMAC_CTX_NEW 1
+#cmakedefine HAVE_MD5_INIT 1
+
+#cmakedefine HAVE_STRUCT_TCP_INFO 1
+#cmakedefine HAVE_STRUCT_LINUX_TCP_INFO 1
+#cmakedefine HAVE_STRUCT_SOCKADDR_SA_LEN 1
+#cmakedefine HAVE_STRUCT_SOCKADDR_IN_SIN_LEN 1
+#cmakedefine HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN 1
+#cmakedefine HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC 1
+#cmakedefine HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1
+#cmakedefine HAVE_SYSCTLBYNAME 1
 
 #define SIZEOF_VOIDP @CMAKE_SIZEOF_VOID_P@
 
@@ -144,8 +195,17 @@ const int DEFAULT_STACKSIZE = @DEFAULT_STACK_SIZE@;
 #cmakedefine01 TS_USE_REMOTE_UNWINDING
 #cmakedefine01 TS_USE_SET_RBIO
 #cmakedefine01 TS_USE_TLS13
+#cmakedefine01 TS_USE_TLS_ASYNC
 #cmakedefine01 TS_USE_TPROXY
 
+#cmakedefine01 TS_HAS_VERIFY_CERT_STORE
+#cmakedefine01 TS_HAS_TLS_SESSION_TICKET
+#cmakedefine01 TS_HAS_TLS_EARLY_DATA
+// TODO(cmcfarlen): Verify use of below in iocore/net/SSLNetVConnection (redunant)
+#cmakedefine01 HAVE_SSL_READ_EARLY_DATA
+#cmakedefine HAVE_SSL_SET_MAX_EARLY_DATA
+#cmakedefine01 TS_USE_TLS_SET_CIPHERSUITES
+
 #define TS_BUILD_CANONICAL_HOST "@CMAKE_HOST@"
 
 #cmakedefine YAMLCPP_LIB_VERSION "@YAMLCPP_LIB_VERSION@"
diff --git a/plugins/experimental/cookie_remap/CMakeLists.txt b/plugins/experimental/cookie_remap/CMakeLists.txt
index 73a01e400d..eb3ac90dc5 100644
--- a/plugins/experimental/cookie_remap/CMakeLists.txt
+++ b/plugins/experimental/cookie_remap/CMakeLists.txt
@@ -21,6 +21,7 @@ add_atsplugin(cookie_remap
     cookie_remap.cc
     cookiejar.cc
     strip.cc
+    hash.cc
 )
 
 target_link_libraries(cookie_remap
diff --git a/tests/gold_tests/chunked_encoding/CMakeLists.txt b/tests/gold_tests/chunked_encoding/CMakeLists.txt
index 1fc853ff6f..2cb5e75090 100644
--- a/tests/gold_tests/chunked_encoding/CMakeLists.txt
+++ b/tests/gold_tests/chunked_encoding/CMakeLists.txt
@@ -15,6 +15,6 @@
 #
 #######################
 
-add_autest_plugin(smuggle-client smuggle-client.c)
+add_executable(smuggle-client smuggle-client.c)
 
 target_link_libraries(smuggle-client PRIVATE OpenSSL::SSL)
diff --git a/tests/gold_tests/timeout/CMakeLists.txt b/tests/gold_tests/timeout/CMakeLists.txt
index ad6678a37e..68232a4a29 100644
--- a/tests/gold_tests/timeout/CMakeLists.txt
+++ b/tests/gold_tests/timeout/CMakeLists.txt
@@ -15,5 +15,5 @@
 #
 #######################
 
-add_autest_plugin(ssl-delay-server ssl-delay-server.cc)
+add_executable(ssl-delay-server ssl-delay-server.cc)
 target_link_libraries(ssl-delay-server PRIVATE OpenSSL::SSL)
diff --git a/tests/gold_tests/tls/CMakeLists.txt b/tests/gold_tests/tls/CMakeLists.txt
index 3b50cdf9e7..d1174dcbc1 100644
--- a/tests/gold_tests/tls/CMakeLists.txt
+++ b/tests/gold_tests/tls/CMakeLists.txt
@@ -20,8 +20,3 @@ find_package(Threads)
 add_executable(ssl-post ssl-post.c)
 
 target_link_libraries(ssl-post PRIVATE OpenSSL::SSL Threads::Threads)
-
-set_target_properties(ssl-post
-    PROPERTIES
-        RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-)