summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2020-05-26 17:42:03 -0400
committerBrad King <brad.king@kitware.com>2020-05-27 14:09:20 -0400
commitbc681fc3724857ee2def37e8fadd47e2916a7e55 (patch)
treef01bbdbd42fd794d81a19dba0fc5ea6815af0c7f
parent7a40d87036afa10b9ebcefa3ec971072eb456e71 (diff)
downloadcmake-bc681fc3724857ee2def37e8fadd47e2916a7e55.tar.gz
Hard-code some try_compile results for third-party libraries
Our bundled third-party libraries perform many `try_compile` checks for compatibility with their upstream build systems. For many of the checks we already know the result for compilers we support for building CMake itself, especially on Windows. Hard-code known results to avoid running the checks.
-rw-r--r--CMakeLists.txt3
-rw-r--r--Utilities/cmThirdPartyChecks.cmake300
2 files changed, 303 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 35531c6dca..15dbcd3306 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -337,6 +337,9 @@ endmacro()
macro (CMAKE_BUILD_UTILITIES)
find_package(Threads)
+ # Suppress unnecessary checks in third-party code.
+ include(Utilities/cmThirdPartyChecks.cmake)
+
#---------------------------------------------------------------------
# Create the kwsys library for CMake.
set(KWSYS_NAMESPACE cmsys)
diff --git a/Utilities/cmThirdPartyChecks.cmake b/Utilities/cmThirdPartyChecks.cmake
new file mode 100644
index 0000000000..e3ce4693c1
--- /dev/null
+++ b/Utilities/cmThirdPartyChecks.cmake
@@ -0,0 +1,300 @@
+# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+# Hard-code third-party try_compile checks where we know the answer.
+
+# Results for builds targeting all supported platforms.
+set(HAVE_ASSERT_H 1)
+set(HAVE__CrtSetReportMode 0) # unused anyway
+set(HAVE_CTYPE_H 1)
+set(HAVE_LOCALE_H 1)
+set(HAVE_MEMMOVE 1)
+set(HAVE_SETLOCALE 1)
+set(HAVE_STDDEF_H 1)
+set(HAVE_STDIO_H 1)
+set(HAVE_STDLIB_H 1)
+set(HAVE_STRCHR 1)
+set(HAVE_STRDUP 1)
+set(HAVE_STRFTIME 1)
+set(HAVE_STRING_H 1)
+set(HAVE_STRRCHR 1)
+set(HAVE_WCHAR_H 1)
+set(SIZEOF_INT 4)
+set(SIZEOF_LONG_LONG 8)
+set(SIZEOF_SHORT 2)
+
+if(WIN32)
+ # Results for builds targeting Windows platforms.
+ # This covers both MSVC-ABI and GNU-ABI toolchains.
+
+ set(HAVE_ALARM 0)
+ set(HAVE_ARC4RANDOM 0)
+ set(HAVE_ARC4RANDOM_BUF 0)
+ set(HAVE_ARPA_TFTP_H 0)
+ set(HAVE_BSWAP_16 0)
+ set(HAVE_BSWAP_32 0)
+ set(HAVE_BSWAP_64 0)
+ set(HAVE_BUILTIN_AVAILABLE 0)
+ set(HAVE_BYTESWAP_H 0)
+ set(HAVE_CHFLAGS 0)
+ set(HAVE_CHOWN 0)
+ set(HAVE_CHROOT 0)
+ set(HAVE_COPYFILE_H 0)
+ set(HAVE_CRYPTO_H 0)
+ set(HAVE__CTIME64_S 1)
+ set(HAVE_CTIME_R 0)
+ set(HAVE_CYGWIN_CONV_PATH 0)
+ set(HAVE_DES_H 0)
+ set(HAVE_DIRECT_H 1)
+ set(HAVE_DIRFD 0)
+ set(HAVE_DLFCN_H 0)
+ set(HAVE_D_MD_ORDER 0)
+ set(HAVE_EFTYPE 0)
+ set(HAVE_EILSEQ 1)
+ set(HAVE_ERR_H 0)
+ set(HAVE_ERRNO_H 1)
+ set(HAVE_EXT2FS_EXT2_FS_H 0)
+ set(HAVE_FCHDIR 0)
+ set(HAVE_FCHFLAGS 0)
+ set(HAVE_FCHMOD 0)
+ set(HAVE_FCHOWN 0)
+ set(HAVE_FCNTL 0)
+ set(HAVE_FCNTL_H 1)
+ set(HAVE_FCNTL_O_NONBLOCK 0)
+ set(HAVE_FDOPENDIR 0)
+ set(HAVE_FORK 0)
+ set(HAVE_FREEADDRINFO 1)
+ set(HAVE_FREEIFADDRS 0)
+ set(HAVE__FSEEKI64 1)
+ set(HAVE_FSETXATTR 0)
+ set(HAVE_FSTAT 1)
+ set(HAVE_FSTATAT 0)
+ set(HAVE_FSTATFS 0)
+ set(HAVE_FSTATVFS 0)
+ set(HAVE_FTRUNCATE 0)
+ set(HAVE_FUTIMENS 0)
+ set(HAVE_FUTIMES 0)
+ set(HAVE_FUTIMESAT 0)
+ set(HAVE_GETEUID 0)
+ set(HAVE_GETGRGID_R 0)
+ set(HAVE_GETGRNAM_R 0)
+ set(HAVE_GETHOSTBYNAME 1)
+ set(HAVE_GETPAGESIZE 0)
+ set(HAVE_GETPEERNAME 1)
+ set(HAVE_GETPID 1)
+ set(HAVE_GETPROTOBYNAME 1)
+ set(HAVE_GETPWNAM_R 0)
+ set(HAVE_GETPWUID_R 0)
+ set(HAVE_GETRANDOM 0)
+ set(HAVE_GETRLIMIT 0)
+ set(HAVE_GETSOCKNAME 1)
+ set(HAVE_GETVFSBYNAME 0)
+ set(HAVE_GLIBC_STRERROR_R 0)
+ set(HAVE__GMTIME64_S 1)
+ set(HAVE_GMTIME_R 0)
+ set(HAVE_GRP_H 0)
+ set(HAVE_IDN2_H 0)
+ set(HAVE_IFADDRS_H 0)
+ set(HAVE_IF_NAMETOINDEX 0)
+ set(HAVE_INTTYPES_H 1)
+ set(HAVE_IOCTL 0)
+ set(HAVE_IOCTL_FIONBIO 0)
+ set(HAVE_IOCTL_SIOCGIFADDR 0)
+ set(HAVE_IOCTLSOCKET 1)
+ set(HAVE_IOCTLSOCKET_CAMEL 0)
+ set(HAVE_IOCTLSOCKET_CAMEL_FIONBIO 1)
+ set(HAVE_IOCTLSOCKET_FIONBIO 1)
+ set(HAVE_IO_H 1)
+ set(HAVE_KRB_H 0)
+ set(HAVE_LANGINFO_H 0)
+ set(HAVE_LCHFLAGS 0)
+ set(HAVE_LCHMOD 0)
+ set(HAVE_LCHOWN 0)
+ set(HAVE_LIBIDN2 0)
+ set(HAVE_LIBNETWORK 0)
+ set(HAVE_LIBWINMM 1)
+ set(HAVE_LIBWS2_32 1)
+ set(HAVE_LIMITS_H 1)
+ set(HAVE_LINK 0)
+ set(HAVE_LINUX_FIEMAP_H 0)
+ set(HAVE_LINUX_FS_H 0)
+ set(HAVE_LINUX_MAGIC_H 0)
+ set(HAVE_LINUX_TYPES_H 0)
+ set(HAVE__LOCALTIME64_S 1)
+ set(HAVE_LOCALTIME_R 0)
+ set(HAVE_LSTAT 0)
+ set(HAVE_LUTIMES 0)
+ set(HAVE_MACH_ABSOLUTE_TIME 0)
+ set(HAVE_MBRTOWC 1)
+ set(HAVE_MEMBERSHIP_H 0)
+ set(HAVE_MEMORY_H 1)
+ set(HAVE_MKDIR 1)
+ set(HAVE_MKFIFO 0)
+ set(HAVE__MKGMTIME64 1)
+ set(HAVE_MKNOD 0)
+ set(HAVE_MMAP 0)
+ set(HAVE_MSG_NOSIGNAL 0)
+ set(HAVE_NETINET_TCP_H 0)
+ set(HAVE_NL_LANGINFO 0)
+ set(HAVE_OPENAT 0)
+ set(HAVE_PATHS_H 0)
+ set(HAVE_PEM_H 0)
+ set(HAVE_PIPE 0)
+ set(HAVE_POLL 0)
+ set(HAVE_POLL_FINE 0)
+ set(HAVE_POLL_H 0)
+ set(HAVE_POSIX_SPAWNP 0)
+ set(HAVE_POSIX_STRERROR_R 0)
+ set(HAVE_PROCESS_H 1)
+ set(HAVE_PWD_H 0)
+ set(HAVE_READDIR_R 0)
+ set(HAVE_READLINK 0)
+ set(HAVE_READLINKAT 0)
+ set(HAVE_READPASSPHRASE 0)
+ set(HAVE_READPASSPHRASE 0)
+ set(HAVE_REGEX_H 0)
+ set(HAVE_RSA_H 0)
+ set(HAVE_SELECT 0)
+ set(HAVE_SETENV 0)
+ set(HAVE_SETMODE 1)
+ set(HAVE_SETRLIMIT 0)
+ set(HAVE_SETSOCKOPT 1)
+ set(HAVE_SETSOCKOPT_SO_NONBLOCK 0)
+ set(HAVE_SIGACTION 0)
+ set(HAVE_SIG_ATOMIC_T_NOT_VOLATILE 1)
+ set(HAVE_SIGINTERRUPT 0)
+ set(HAVE_SIGNAL_H 1)
+ set(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 0)
+ set(HAVE_SPAWN_H 0)
+ set(HAVE_SSL_H 0)
+ set(HAVE_STATFS 0)
+ set(HAVE_STATVFS 0)
+ set(HAVE_STDARG_H 1)
+ set(HAVE_STDBOOL_H 1)
+ set(HAVE_STDINT_H 1)
+ set(HAVE_STRERROR 1)
+ set(HAVE_STRERROR_R 0)
+ set(HAVE_STRNCMPI 0)
+ set(HAVE_STRNCPY_S 1)
+ set(HAVE_STROPTS_H 0)
+ set(HAVE__STRTOI64 1)
+ set(HAVE_STRTOLL 1)
+ set(HAVE_STRUCT_STATFS_F_NAMEMAX 0)
+ set(HAVE_STRUCT_STAT_ST_BIRTHTIME 0)
+ set(HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC 0)
+ set(HAVE_STRUCT_STAT_ST_BLKSIZE 0)
+ set(HAVE_STRUCT_STAT_ST_FLAGS 0)
+ set(HAVE_STRUCT_STAT_ST_MTIME_N 0)
+ set(HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC 0)
+ set(HAVE_STRUCT_STAT_ST_MTIME_USEC 0)
+ set(HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 0)
+ set(HAVE_STRUCT_STAT_ST_UMTIME 0)
+ set(HAVE_STRUCT_TIMEVAL 1)
+ set(HAVE_STRUCT_TM___TM_GMTOFF 0)
+ set(HAVE_STRUCT_TM_TM_GMTOFF 0)
+ set(HAVE_STRUCT_VFSCONF 0)
+ set(HAVE_STRUCT_XVFSCONF 0)
+ set(HAVE_SYMLINK 0)
+ set(HAVE_SYS_ACL_H 0)
+ set(HAVE_SYSCALL_GETRANDOM 0)
+ set(HAVE_SYS_EXTATTR_H 0)
+ set(HAVE_SYS_FILIO_H 0)
+ set(HAVE_SYS_IOCTL_H 0)
+ set(HAVE_SYS_MKDEV_H 0)
+ set(HAVE_SYS_MOUNT_H 0)
+ set(HAVE_SYS_POLL_H 0)
+ set(HAVE_SYS_RESOURCE_H 0)
+ set(HAVE_SYS_RICHACL_H 0)
+ set(HAVE_SYS_SELECT_H 0)
+ set(HAVE_SYS_STATFS_H 0)
+ set(HAVE_SYS_STAT_H 1)
+ set(HAVE_SYS_STATVFS_H 0)
+ set(HAVE_SYS_SYSCTL_H 0)
+ set(HAVE_SYS_SYSMACROS_H 0)
+ set(HAVE_SYS_UIO_H 0)
+ set(HAVE_SYS_UN_H 0)
+ set(HAVE_SYS_UTSNAME_H 0)
+ set(HAVE_SYS_VFS_H 0)
+ set(HAVE_SYS_WAIT_H 0)
+ set(HAVE_SYS_XATTR_H 0)
+ set(HAVE_TIMEGM 0)
+ set(HAVE_TZSET 1)
+ set(HAVE_UNLINKAT 0)
+ set(HAVE_USLEEP 0)
+ set(HAVE_UTIMENSAT 0)
+ set(HAVE_UTIMES 0)
+ set(HAVE_VFORK 0)
+ set(HAVE_WORKING_EXT2_IOC_GETFLAGS 0)
+ set(HAVE_WORKING_FS_IOC_GETFLAGS 0)
+
+ # Some POSIX headers are available on Windows.
+ set(HAVE_SYS_TYPES_H 1)
+ set(HAVE_SYS_UTIME_H 1)
+ set(HAVE_TIME_H 1)
+ set(HAVE_UTIME 1)
+
+ # Wide character APIs are available on Windows.
+ set(HAVE_WCRTOMB 1)
+ set(HAVE_WCSCMP 1)
+ set(HAVE_WCSCPY 1)
+ set(HAVE_WCSLEN 1)
+ set(HAVE_WCTOMB 1)
+ set(HAVE_WCTYPE_H 1)
+
+ # Windows APIs are available on Windows.
+ set(HAVE_WINCRYPT_H 1)
+ set(HAVE_WINDOWS_H 1)
+ set(HAVE_WINIOCTL_H 1)
+ set(HAVE_WINSOCK2_H 1)
+ set(HAVE_WINSOCK_H 1)
+ set(HAVE_WS2TCPIP_H 1)
+
+ # UNIX integer id types do not exist on Windows.
+ set(HAVE_ID_T 0)
+ set(HAVE_GID_T 0)
+ set(HAVE_UID_T 0)
+ set(ID_T "")
+ set(GID_T "")
+ set(UID_T "")
+
+ # curl and expat: stdlib.h, stdarg.h, string.h, float.h
+ set(STDC_HEADERS 1)
+
+ # FIXME: Teach libarchive to use #if instead of configure-time checks.
+ set(HAVE_DECL_INT32_MAX 1)
+ set(HAVE_DECL_INT32_MIN 1)
+ set(HAVE_DECL_INT64_MAX 1)
+ set(HAVE_DECL_INT64_MIN 1)
+ set(HAVE_DECL_INTMAX_MAX 1)
+ set(HAVE_DECL_INTMAX_MIN 1)
+ set(HAVE_DECL_SIZE_MAX 1)
+ set(HAVE_DECL_UINT32_MAX 1)
+ set(HAVE_DECL_UINT64_MAX 1)
+ set(HAVE_DECL_UINTMAX_MAX 1)
+
+ # libarchive looks for external hash implementations.
+ set(ARCHIVE_CRYPTO_MD5_LIBC 0)
+ set(ARCHIVE_CRYPTO_MD5_LIBMD 0)
+ set(ARCHIVE_CRYPTO_MD5_LIBSYSTEM 0)
+ set(ARCHIVE_CRYPTO_MD5_WIN 1)
+ set(ARCHIVE_CRYPTO_RMD160_LIBC 0)
+ set(ARCHIVE_CRYPTO_RMD160_LIBMD 0)
+ set(ARCHIVE_CRYPTO_SHA1_LIBC 0)
+ set(ARCHIVE_CRYPTO_SHA1_LIBMD 0)
+ set(ARCHIVE_CRYPTO_SHA1_LIBSYSTEM 0)
+ set(ARCHIVE_CRYPTO_SHA1_WIN 1)
+ set(ARCHIVE_CRYPTO_SHA256_LIBC 0)
+ set(ARCHIVE_CRYPTO_SHA256_LIBC2 0)
+ set(ARCHIVE_CRYPTO_SHA256_LIBC3 0)
+ set(ARCHIVE_CRYPTO_SHA256_LIBMD 0)
+ set(ARCHIVE_CRYPTO_SHA256_LIBSYSTEM 0)
+ set(ARCHIVE_CRYPTO_SHA384_LIBC 0)
+ set(ARCHIVE_CRYPTO_SHA384_LIBC2 0)
+ set(ARCHIVE_CRYPTO_SHA384_LIBC3 0)
+ set(ARCHIVE_CRYPTO_SHA384_LIBSYSTEM 0)
+ set(ARCHIVE_CRYPTO_SHA512_LIBC 0)
+ set(ARCHIVE_CRYPTO_SHA512_LIBC2 0)
+ set(ARCHIVE_CRYPTO_SHA512_LIBC3 0)
+ set(ARCHIVE_CRYPTO_SHA512_LIBMD 0)
+ set(ARCHIVE_CRYPTO_SHA512_LIBSYSTEM 0)
+endif()