From ce26743b4ef81c9b839553bd7a98619700aafc72 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Fri, 31 Mar 2023 18:11:27 +0000 Subject: [PATCH] cmake: dedupe and merge config detection Before this patch CMake did feature detections in three files: `src/CMakefiles.txt`, `examples/CMakefiles.txt` and `tests/CMakefiles.txt`. Merge and move them to the root `CMakefiles.txt`. After this patch we end up with a single `src/libssh2_config.h`. This brings CMake in sync with autotools builds, which already worked with a single config header. This also prevents mistakes where feature detection went out of sync between `src` & `tests` (see ae90a35d15d97154ac0c8554bce99ebfb18ee825). `tests` do compile sources from `src` directly, so these should always be in sync. It also allows to better integrate hand-crafted, platform-specific config headers into the builds, like the one currently residing in the `win32` directory (and also in `vms` and `os400`). Subject to an upcoming PR. Also fix a warning revealed after this patch made CMake correctly enable `HAVE_GETTIMEOFDAY` for `example` programs. Closes #906 --- CMakeLists.txt | 88 +++++++++++++++++++++++++++++++ example/CMakeLists.txt | 24 ++------- example/Makefile.am | 2 +- example/libssh2_config_cmake.h.in | 46 ---------------- example/scp_nonblock.c | 3 +- example/sftp_nonblock.c | 3 +- src/CMakeLists.txt | 87 ++---------------------------- src/libssh2_config_cmake.h.in | 5 ++ tests/CMakeLists.txt | 26 +++------ tests/Makefile.am | 1 - tests/libssh2_config_cmake.h.in | 47 ----------------- 11 files changed, 112 insertions(+), 220 deletions(-) delete mode 100644 example/libssh2_config_cmake.h.in delete mode 100644 tests/libssh2_config_cmake.h.in diff --git a/CMakeLists.txt b/CMakeLists.txt index a23d2efb..40b7563b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,10 +33,16 @@ # USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY # OF SUCH DAMAGE. +include(CheckFunctionExists) +include(CheckSymbolExists) include(CheckIncludeFiles) +include(CheckTypeSize) +include(CheckSymbolExists) +include(CMakePushCheckState) set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake;${CMAKE_MODULE_PATH}") include(CheckFunctionExistsMayNeedLibrary) +include(CheckNonblockingSocketSupport) cmake_minimum_required(VERSION 3.1) @@ -111,6 +117,88 @@ endif() set(LIB_STATIC "libssh2_static") set(LIB_SHARED "libssh2_shared") # Must match libssh2_shared_EXPORTS macro in include/libssh2.h +# Auto-detection + +## Platform checks +check_include_files(unistd.h HAVE_UNISTD_H) +check_include_files(inttypes.h HAVE_INTTYPES_H) +check_include_files(stdlib.h HAVE_STDLIB_H) +check_include_files(sys/select.h HAVE_SYS_SELECT_H) + +check_include_files(sys/uio.h HAVE_SYS_UIO_H) +check_include_files(sys/socket.h HAVE_SYS_SOCKET_H) +check_include_files(sys/ioctl.h HAVE_SYS_IOCTL_H) +check_include_files(sys/time.h HAVE_SYS_TIME_H) +check_include_files(sys/un.h HAVE_SYS_UN_H) +check_include_files(ws2tcpip.h HAVE_WS2TCPIP_H) +check_include_files(winsock2.h HAVE_WINSOCK2_H) + +# for example and tests +check_include_files(sys/param.h HAVE_SYS_PARAM_H) +check_include_files(arpa/inet.h HAVE_ARPA_INET_H) +check_include_files(netinet/in.h HAVE_NETINET_IN_H) + +check_type_size("long long" LONGLONG) + +# CMake uses C syntax in check_symbol_exists() that generates a warning with +# MSVC. To not break detection with ENABLE_WERRROR, we disable it for the +# duration of these tests. +if(MSVC AND ENABLE_WERROR) + cmake_push_check_state() + set(CMAKE_REQUIRED_FLAGS "/WX-") +endif() + +if(HAVE_SYS_TIME_H) + check_symbol_exists(gettimeofday sys/time.h HAVE_GETTIMEOFDAY) +else() + check_function_exists(gettimeofday HAVE_GETTIMEOFDAY) +endif() +if(HAVE_STDLIB_H) + check_symbol_exists(strtoll stdlib.h HAVE_STRTOLL) +else() + check_function_exists(strtoll HAVE_STRTOLL) +endif() +if (NOT HAVE_STRTOLL) + # Try _strtoi64 if strtoll isn't available + check_symbol_exists(_strtoi64 stdlib.h HAVE_STRTOI64) +endif() +check_symbol_exists(snprintf stdio.h HAVE_SNPRINTF) +if(NOT WIN32) + check_symbol_exists(explicit_bzero string.h HAVE_EXPLICIT_BZERO) + check_symbol_exists(explicit_memset string.h HAVE_EXPLICIT_MEMSET) + check_symbol_exists(memset_s string.h HAVE_MEMSET_S) +endif() + +if(MSVC AND ENABLE_WERROR) + cmake_pop_check_state() +endif() + +if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin" OR + ${CMAKE_SYSTEM_NAME} STREQUAL "Interix") + # poll() does not work on these platforms + # + # Interix: "does provide poll(), but the implementing developer must + # have been in a bad mood, because poll() only works on the /proc + # filesystem here" + # + # Mac OS X's poll has funny behaviors, like: + # not being able to do poll on no filedescriptors (10.3?) + # not being able to poll on some files (like anything in /dev) + # not having reliable timeout support + # inconsistent return of POLLHUP where other implementations give POLLIN + message("poll use is disabled on this platform") +else() + check_function_exists(poll HAVE_POLL) +endif() + +# Non-blocking socket support tests. Use a separate, yet unset variable +# for the socket libraries to not link against the other configured +# dependencies which might not have been built yet. +cmake_push_check_state() +set(CMAKE_REQUIRED_LIBRARIES ${SOCKET_LIBRARIES}) +check_nonblocking_socket_support() +cmake_pop_check_state() + ## Cryptography backend choice set(CRYPTO_BACKEND diff --git a/example/CMakeLists.txt b/example/CMakeLists.txt index 41dfa511..c20d37ce 100644 --- a/example/CMakeLists.txt +++ b/example/CMakeLists.txt @@ -33,9 +33,12 @@ # USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY # OF SUCH DAMAGE. -include(CheckIncludeFiles) include(CopyRuntimeDependencies) +list(APPEND LIBRARIES ${SOCKET_LIBRARIES}) + +add_definitions(-DHAVE_CONFIG_H) + set(EXAMPLES direct_tcpip ssh2 @@ -61,31 +64,14 @@ set(EXAMPLES subsystem_netconf tcpip-forward) -list(APPEND LIBRARIES ${SOCKET_LIBRARIES}) - foreach(example ${EXAMPLES}) add_executable(example-${example} ${example}.c) list(APPEND EXAMPLE_TARGETS example-${example}) # to find generated header - target_include_directories(example-${example} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) + target_include_directories(example-${example} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/../src) target_link_libraries(example-${example} ${LIB_STATIC} ${LIBRARIES}) endforeach() add_target_to_copy_dependencies( TARGET copy_example_dependencies DEPENDENCIES ${RUNTIME_DEPENDENCIES} BEFORE_TARGETS ${EXAMPLE_TARGETS}) - -## Platform checks -check_include_files(inttypes.h HAVE_INTTYPES_H) -check_include_files(unistd.h HAVE_UNISTD_H) -check_include_files(stdlib.h HAVE_STDLIB_H) -check_include_files(sys/select.h HAVE_SYS_SELECT_H) -check_include_files(sys/socket.h HAVE_SYS_SOCKET_H) -check_include_files(sys/time.h HAVE_SYS_TIME_H) -check_include_files(arpa/inet.h HAVE_ARPA_INET_H) -check_include_files(netinet/in.h HAVE_NETINET_IN_H) -check_include_files(winsock2.h HAVE_WINSOCK2_H) - -configure_file( - ${CMAKE_CURRENT_SOURCE_DIR}/libssh2_config_cmake.h.in - ${CMAKE_CURRENT_BINARY_DIR}/libssh2_config.h) diff --git a/example/Makefile.am b/example/Makefile.am index 2bd08c7c..1fa4c257 100644 --- a/example/Makefile.am +++ b/example/Makefile.am @@ -1,6 +1,6 @@ AUTOMAKE_OPTIONS = foreign nostdinc -EXTRA_DIST = libssh2_config_cmake.h.in CMakeLists.txt +EXTRA_DIST = CMakeLists.txt # examples noinst_PROGRAMS = \ diff --git a/example/libssh2_config_cmake.h.in b/example/libssh2_config_cmake.h.in deleted file mode 100644 index 9985d74f..00000000 --- a/example/libssh2_config_cmake.h.in +++ /dev/null @@ -1,46 +0,0 @@ -/* Copyright (c) 2014 Alexander Lamaison - * - * Redistribution and use in source and binary forms, - * with or without modification, are permitted provided - * that the following conditions are met: - * - * Redistributions of source code must retain the above - * copyright notice, this list of conditions and the - * following disclaimer. - * - * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * Neither the name of the copyright holder nor the names - * of any other contributors may be used to endorse or - * promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE - * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - */ - -/* Headers */ -#cmakedefine HAVE_UNISTD_H -#cmakedefine HAVE_INTTYPES_H -#cmakedefine HAVE_STDLIB_H -#cmakedefine HAVE_SYS_SELECT_H -#cmakedefine HAVE_SYS_SOCKET_H -#cmakedefine HAVE_SYS_TIME_H -#cmakedefine HAVE_ARPA_INET_H -#cmakedefine HAVE_NETINET_IN_H -#cmakedefine HAVE_WINSOCK2_H diff --git a/example/scp_nonblock.c b/example/scp_nonblock.c index 56ecfe2d..0b4a8ec8 100644 --- a/example/scp_nonblock.c +++ b/example/scp_nonblock.c @@ -276,7 +276,8 @@ int main(int argc, char *argv[]) time_ms = tvdiff(end, start); fprintf(stderr, "Got %ld bytes in %ld ms = %.1f bytes/sec spin: %d\n", - (long)total, time_ms, (double)total/(time_ms/1000.0), spin); + (long)total, time_ms, + (double)total/((double)time_ms/1000.0), spin); #else fprintf(stderr, "Got %ld bytes spin: %d\n", (long)total, spin); #endif diff --git a/example/sftp_nonblock.c b/example/sftp_nonblock.c index 8b339867..279cc8e4 100644 --- a/example/sftp_nonblock.c +++ b/example/sftp_nonblock.c @@ -283,7 +283,8 @@ int main(int argc, char *argv[]) gettimeofday(&end, NULL); time_ms = tvdiff(end, start); fprintf(stderr, "Got %ld bytes in %ld ms = %.1f bytes/sec spin: %d\n", - (long)total, time_ms, (double)total/(time_ms/1000.0), spin); + (long)total, time_ms, + (double)total/((double)time_ms/1000.0), spin); #else fprintf(stderr, "Got %ld bytes spin: %d\n", (long)total, spin); #endif diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 44e03d7a..b1f6c7e3 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -33,14 +33,6 @@ # USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY # OF SUCH DAMAGE. -include(CheckFunctionExists) -include(CheckSymbolExists) -include(CheckIncludeFiles) -include(CheckTypeSize) -include(CheckSymbolExists) -include(CheckNonblockingSocketSupport) -include(CMakePushCheckState) - if(CRYPTO_BACKEND) list(APPEND PRIVATE_COMPILE_DEFINITIONS ${CRYPTO_BACKEND_DEFINE}) list(APPEND PRIVATE_INCLUDE_DIRECTORIES ${CRYPTO_BACKEND_INCLUDE_DIR}) @@ -89,73 +81,6 @@ if(ENABLE_DEBUG_LOGGING) list(APPEND libssh2_DEFINITIONS LIBSSH2DEBUG) endif() -## Platform checks -check_include_files(unistd.h HAVE_UNISTD_H) -check_include_files(inttypes.h HAVE_INTTYPES_H) -check_include_files(stdlib.h HAVE_STDLIB_H) -check_include_files(sys/select.h HAVE_SYS_SELECT_H) - -check_include_files(sys/uio.h HAVE_SYS_UIO_H) -check_include_files(sys/socket.h HAVE_SYS_SOCKET_H) -check_include_files(sys/ioctl.h HAVE_SYS_IOCTL_H) -check_include_files(sys/time.h HAVE_SYS_TIME_H) -check_include_files(sys/un.h HAVE_SYS_UN_H) -check_include_files(ws2tcpip.h HAVE_WS2TCPIP_H) -check_include_files(winsock2.h HAVE_WINSOCK2_H) - -check_type_size("long long" LONGLONG) - -# CMake uses C syntax in check_symbol_exists() that generates a warning with -# MSVC. To not break detection with ENABLE_WERRROR, we disable it for the -# duration of these tests. -if(MSVC AND ENABLE_WERROR) - cmake_push_check_state() - set(CMAKE_REQUIRED_FLAGS "/WX-") -endif() - -if(HAVE_SYS_TIME_H) - check_symbol_exists(gettimeofday sys/time.h HAVE_GETTIMEOFDAY) -else() - check_function_exists(gettimeofday HAVE_GETTIMEOFDAY) -endif() -if(HAVE_STDLIB_H) - check_symbol_exists(strtoll stdlib.h HAVE_STRTOLL) -else() - check_function_exists(strtoll HAVE_STRTOLL) -endif() -if (NOT HAVE_STRTOLL) - # Try _strtoi64 if strtoll isn't available - check_symbol_exists(_strtoi64 stdlib.h HAVE_STRTOI64) -endif() -check_symbol_exists(snprintf stdio.h HAVE_SNPRINTF) -if(NOT WIN32) - check_symbol_exists(explicit_bzero string.h HAVE_EXPLICIT_BZERO) - check_symbol_exists(explicit_memset string.h HAVE_EXPLICIT_MEMSET) - check_symbol_exists(memset_s string.h HAVE_MEMSET_S) -endif() - -if(MSVC AND ENABLE_WERROR) - cmake_pop_check_state() -endif() - -if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin" OR - ${CMAKE_SYSTEM_NAME} STREQUAL "Interix") - # poll() does not work on these platforms - # - # Interix: "does provide poll(), but the implementing developer must - # have been in a bad mood, because poll() only works on the /proc - # filesystem here" - # - # Mac OS X's poll has funny behaviors, like: - # not being able to do poll on no filedescriptors (10.3?) - # not being able to poll on some files (like anything in /dev) - # not having reliable timeout support - # inconsistent return of POLLHUP where other implementations give POLLIN - message("poll use is disabled on this platform") -else() - check_function_exists(poll HAVE_POLL) -endif() - list(APPEND LIBRARIES ${SOCKET_LIBRARIES}) if(WIN32) @@ -163,17 +88,11 @@ if(WIN32) list(APPEND PC_LIBS -lws2_32) endif() -# Non-blocking socket support tests. Use a separate, yet unset variable -# for the socket libraries to not link against the other configured -# dependencies which might not have been built yet. -cmake_push_check_state() -set(CMAKE_REQUIRED_LIBRARIES ${SOCKET_LIBRARIES}) -check_nonblocking_socket_support() -cmake_pop_check_state() +add_definitions(-DHAVE_CONFIG_H) -configure_file( - ${CMAKE_CURRENT_SOURCE_DIR}/libssh2_config_cmake.h.in +configure_file(libssh2_config_cmake.h.in ${CMAKE_CURRENT_BINARY_DIR}/libssh2_config.h) + # to find generated header list(APPEND libssh2_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}) diff --git a/src/libssh2_config_cmake.h.in b/src/libssh2_config_cmake.h.in index f8f3baa2..712e869d 100644 --- a/src/libssh2_config_cmake.h.in +++ b/src/libssh2_config_cmake.h.in @@ -48,6 +48,11 @@ #cmakedefine HAVE_WS2TCPIP_H #cmakedefine HAVE_WINSOCK2_H +/* for example and tests */ +#cmakedefine HAVE_SYS_PARAM_H +#cmakedefine HAVE_ARPA_INET_H +#cmakedefine HAVE_NETINET_IN_H + /* Libraries */ #cmakedefine HAVE_LIBCRYPT32 diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 3bba01e6..53f6fa61 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -33,26 +33,12 @@ # USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY # OF SUCH DAMAGE. -include(CheckIncludeFiles) -include(CheckFunctionExists) -include(CheckSymbolExists) include(CopyRuntimeDependencies) -## Platform checks -check_include_files(inttypes.h HAVE_INTTYPES_H) -check_include_files(unistd.h HAVE_UNISTD_H) -check_include_files(sys/param.h HAVE_SYS_PARAM_H) -check_include_files(sys/socket.h HAVE_SYS_SOCKET_H) -check_include_files(arpa/inet.h HAVE_ARPA_INET_H) -check_include_files(winsock2.h HAVE_WINSOCK2_H) -check_include_files(netinet/in.h HAVE_NETINET_IN_H) -check_symbol_exists(snprintf stdio.h HAVE_SNPRINTF) -configure_file( - "${CMAKE_CURRENT_SOURCE_DIR}/libssh2_config_cmake.h.in" - "${CMAKE_CURRENT_BINARY_DIR}/libssh2_config.h") - list(APPEND LIBRARIES ${SOCKET_LIBRARIES}) +add_definitions(-DHAVE_CONFIG_H) + set(TESTS warmup hostkey @@ -92,21 +78,21 @@ if(NOT CRYPTO_BACKEND STREQUAL "mbedTLS") endif() add_library(runner STATIC runner.h runner.c openssh_fixture.h openssh_fixture.c session_fixture.h session_fixture.c) -target_include_directories(runner PRIVATE "${CMAKE_CURRENT_BINARY_DIR}" ../include) +target_include_directories(runner PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/../src" ../include) target_compile_definitions(runner PRIVATE FIXTURE_WORKDIR="${CMAKE_CURRENT_SOURCE_DIR}") # test building against shared libssh2 lib if(BUILD_SHARED_LIBS) set(test warmup) # any test will do add_executable(test_${test}_shared test_${test}.c) - target_include_directories(test_${test}_shared PRIVATE "${CMAKE_CURRENT_BINARY_DIR}") + target_include_directories(test_${test}_shared PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/../src") target_link_libraries(test_${test}_shared runner ${LIB_SHARED} ${LIBRARIES}) endif() foreach(test ${TESTS}) add_executable(test_${test} test_${test}.c) list(APPEND TEST_TARGETS test_${test}) - target_include_directories(test_${test} PRIVATE "${CMAKE_CURRENT_BINARY_DIR}") + target_include_directories(test_${test} PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/../src") target_link_libraries(test_${test} runner ${LIB_STATIC} ${LIBRARIES}) add_test( @@ -152,7 +138,7 @@ endforeach() add_executable(test_keyboard_interactive_auth_info_request test_keyboard_interactive_auth_info_request.c ../src/userauth_kbd_packet.c) target_compile_definitions(test_keyboard_interactive_auth_info_request PRIVATE "${CRYPTO_BACKEND_DEFINE}") -target_include_directories(test_keyboard_interactive_auth_info_request PRIVATE "${CMAKE_CURRENT_BINARY_DIR}" "../src/" "${CRYPTO_BACKEND_INCLUDE_DIR}") +target_include_directories(test_keyboard_interactive_auth_info_request PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/../src" "../src/" "${CRYPTO_BACKEND_INCLUDE_DIR}") find_program(GCOV_PATH gcov) set(TGT_OPTIONS -g --coverage -fprofile-abs-path) if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.0) diff --git a/tests/Makefile.am b/tests/Makefile.am index b27fb279..f0ada7d3 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -85,7 +85,6 @@ EXTRA_DIST = \ key_rsa_encrypted.pub \ key_rsa_openssh \ key_rsa_openssh.pub \ - libssh2_config_cmake.h.in \ mansyntax.sh \ openssh_server/Dockerfile \ openssh_server/authorized_keys \ diff --git a/tests/libssh2_config_cmake.h.in b/tests/libssh2_config_cmake.h.in deleted file mode 100644 index 4cf1d099..00000000 --- a/tests/libssh2_config_cmake.h.in +++ /dev/null @@ -1,47 +0,0 @@ -/* Copyright (c) 2014 Alexander Lamaison - * - * Redistribution and use in source and binary forms, - * with or without modification, are permitted provided - * that the following conditions are met: - * - * Redistributions of source code must retain the above - * copyright notice, this list of conditions and the - * following disclaimer. - * - * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * Neither the name of the copyright holder nor the names - * of any other contributors may be used to endorse or - * promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE - * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - */ - -/* Headers */ -#cmakedefine HAVE_UNISTD_H -#cmakedefine HAVE_INTTYPES_H -#cmakedefine HAVE_SYS_PARAM_H -#cmakedefine HAVE_SYS_SOCKET_H -#cmakedefine HAVE_ARPA_INET_H -#cmakedefine HAVE_NETINET_IN_H -#cmakedefine HAVE_WINSOCK2_H - -/* Functions */ -#cmakedefine HAVE_SNPRINTF