Attempt to cleanup CMake and try to fix build on some systems

This commit is contained in:
Andy Cedilnik 2003-01-21 14:10:41 -05:00
parent 6c9d1983d7
commit c3fe9fba56

View File

@ -1,6 +1,7 @@
CMAKE_MINIMUM_REQUIRED(VERSION 1.5)
PROJECT(LIBCURL C)
# Setup package meta-data
SET(PACKAGE "curl")
SET(VERSION "7.10.3")
SET(PACKAGE_TARNAME " ")
@ -10,12 +11,16 @@ SET(PACKAGE_VERSION " ")
SET(PACKAGE_STRING " ")
SET(OPERATING_SYSTEM ${CMAKE_SYSTEM_NAME})
# We need ansi c-flags, especially on HP
SET(CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_C_FLAGS}")
SET(CMAKE_REQUIRED_FLAGS ${CMAKE_ANSI_CFLAGS})
# If we are on AIX, do the _ALL_SOURCE magic
IF(${CMAKE_SYSTEM_NAME} MATCHES AIX)
SET(_ALL_SOURCE 1)
ENDIF(${CMAKE_SYSTEM_NAME} MATCHES AIX)
# Include all the necessary files for macros
INCLUDE (${CMAKE_ROOT}/Modules/CheckFunctionExists.cmake)
INCLUDE (${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake)
INCLUDE (${CMAKE_ROOT}/Modules/CheckIncludeFiles.cmake)
@ -64,134 +69,102 @@ SET(libCurl_SRCS
content_encoding.c
)
# On windows preload settings
IF(WIN32)
INCLUDE(${LIBCURL_SOURCE_DIR}/Platforms/WindowsCache.cmake)
ENDIF(WIN32)
# This macro checks if the symbol exists in the library and if it
# does, it appends library to the list.
SET(CURL_LIBS "")
MACRO(CHECK_LIBRARY_EXISTS_CONCAT LIBRARY SYMBOL VARIABLE)
CHECK_LIBRARY_EXISTS("${LIBRARY};${CURL_LIBS}" ${SYMBOL} ""
${VARIABLE})
IF(${VARIABLE})
SET(CURL_LIBS ${CURL_LIBS} ${LIBRARY})
ENDIF(${VARIABLE})
ENDMACRO(CHECK_LIBRARY_EXISTS_CONCAT)
CHECK_LIBRARY_EXISTS("nsl;${CURL_LIBS}" gethostname "" HAVE_LIBNSL)
IF(HAVE_LIBNSL)
SET(CURL_LIBS ${CURL_LIBS} nsl)
ENDIF(HAVE_LIBNSL)
CHECK_LIBRARY_EXISTS("dl;${CURL_LIBS}" dlopen "" HAVE_LIBDL)
IF(HAVE_LIBDL)
SET(CURL_LIBS ${CURL_LIBS} dl)
ENDIF(HAVE_LIBDL)
CHECK_LIBRARY_EXISTS("ucb;${CURL_LIBS}" gethostname "" HAVE_LIBUCB)
IF(HAVE_LIBUCB)
SET(CURL_LIBS ${CURL_LIBS} ucb)
ENDIF(HAVE_LIBUCB)
CHECK_LIBRARY_EXISTS("socket;${CURL_LIBS}" connect "" HAVE_LIBSOCKET)
IF(HAVE_LIBSOCKET)
SET(CURL_LIBS ${CURL_LIBS} socket)
ENDIF(HAVE_LIBSOCKET)
CHECK_LIBRARY_EXISTS("ws2_32;${CURL_LIBS}" printf "" HAVE_LIBWS2_32)
IF(HAVE_LIBWS2_32)
SET(CURL_LIBS ${CURL_LIBS} ws2_32)
ENDIF(HAVE_LIBWS2_32)
CHECK_LIBRARY_EXISTS("winmm;${CURL_LIBS}" printf "" HAVE_LIBWINMM)
IF(HAVE_LIBWINMM)
SET(CURL_LIBS ${CURL_LIBS} winmm)
ENDIF(HAVE_LIBWINMM)
CHECK_LIBRARY_EXISTS("z;${CURL_LIBS}" inflateEnd "" HAVE_LIBZ)
IF(HAVE_LIBZ)
SET(CURL_LIBS ${CURL_LIBS} z)
ENDIF(HAVE_LIBZ)
CHECK_LIBRARY_EXISTS("crypto;${CURL_LIBS}" CRYPTO_lock "" HAVE_LIBCRYPTO)
IF(HAVE_LIBCRYPTO)
SET(CURL_LIBS ${CURL_LIBS} crypto)
ENDIF(HAVE_LIBCRYPTO)
CHECK_LIBRARY_EXISTS("ssl;${CURL_LIBS}" SSL_connect "" HAVE_LIBSSL)
IF(HAVE_LIBSSL)
SET(CURL_LIBS ${CURL_LIBS} ssl)
ENDIF(HAVE_LIBSSL)
# Check for all needed libraries
CHECK_LIBRARY_EXISTS_CONCAT("nsl" gethostname HAVE_LIBNSL)
CHECK_LIBRARY_EXISTS_CONCAT("dl" dlopen HAVE_LIBDL)
CHECK_LIBRARY_EXISTS_CONCAT("ucb" gethostname HAVE_LIBUCB)
CHECK_LIBRARY_EXISTS_CONCAT("socket" connect HAVE_LIBSOCKET)
CHECK_LIBRARY_EXISTS_CONCAT("ws2_32" printf HAVE_LIBWS2_32)
CHECK_LIBRARY_EXISTS_CONCAT("winmm" printf HAVE_LIBWINMM)
CHECK_LIBRARY_EXISTS_CONCAT("z" inflateEnd HAVE_LIBZ)
CHECK_LIBRARY_EXISTS_CONCAT("crypto" CRYPTO_lock HAVE_LIBCRYPTO)
CHECK_LIBRARY_EXISTS_CONCAT("ssl" SSL_connect HAVE_LIBSSL)
# Check for symbol dlopen (same as HAVE_LIBDL)
CHECK_LIBRARY_EXISTS("${CURL_LIBS}" dlopen "" HAVE_DLOPEN)
# For other tests to use the same libraries
SET(CMAKE_REQUIRED_LIBRARIES ${CURL_LIBS})
# If we have features.h, then do the _BSD_SOURCE magic
CHECK_INCLUDE_FILE("features.h" HAVE_FEATURES_H)
IF(HAVE_FEATURES_H)
SET_SOURCE_FILES_PROPERTIES(if2ip.c COMPILE_FLAGS -D_BSD_SOURCE)
ENDIF(HAVE_FEATURES_H)
CHECK_INCLUDE_FILE("sys/types.h" HAVE_SYS_TYPES_H)
CHECK_INCLUDE_FILE("inttypes.h" HAVE_INTTYPES_H)
CHECK_INCLUDE_FILE("alloca.h" HAVE_ALLOCA_H)
CHECK_INCLUDE_FILE("arpa/inet.h" HAVE_ARPA_INET_H)
CHECK_INCLUDE_FILE("dlfcn.h" HAVE_DLFCN_H)
CHECK_INCLUDE_FILE("fcntl.h" HAVE_FCNTL_H)
CHECK_INCLUDE_FILE("malloc.h" HAVE_MALLOC_H)
CHECK_INCLUDE_FILE("memory.h" HAVE_MEMORY_H)
CHECK_INCLUDE_FILE("netdb.h" HAVE_NETDB_H)
CHECK_INCLUDE_FILE("zlib.h" HAVE_ZLIB_H)
CHECK_INCLUDE_FILE("sys/poll.h" HAVE_SYS_POLL_H)
CHECK_INCLUDE_FILE("openssl/x509.h" HAVE_OPENSSL_X509_H)
CHECK_INCLUDE_FILE("openssl/engine.h" HAVE_OPENSSL_ENGINE_H)
CHECK_INCLUDE_FILE("openssl/rsa.h" HAVE_OPENSSL_RSA_H)
CHECK_INCLUDE_FILE("openssl/crypto.h" HAVE_OPENSSL_CRYPTO_H)
CHECK_INCLUDE_FILE("openssl/pem.h" HAVE_OPENSSL_PEM_H)
CHECK_INCLUDE_FILE("openssl/ssl.h" HAVE_OPENSSL_SSL_H)
CHECK_INCLUDE_FILE("openssl/err.h" HAVE_OPENSSL_ERR_H)
# Check if header file exists and add it to the list.
MACRO(CHECK_INCLUDE_FILE_CONCAT FILE VARIABLE)
CHECK_INCLUDE_FILES("${CURL_INCLUDES};${FILE}" ${VARIABLE})
IF(${VARIABLE})
SET(CURL_INCLUDES ${CURL_INCLUDES} ${FILE})
ENDIF(${VARIABLE})
ENDMACRO(CHECK_INCLUDE_FILE_CONCAT)
IF(HAVE_SYS_TYPES_H)
SET(TEST_NETWORK_INCLUDES ${TEST_NETWORK_INCLUDES} "sys/types.h")
ENDIF(HAVE_SYS_TYPES_H)
# Check for header files
CHECK_INCLUDE_FILE_CONCAT("sys/types.h" HAVE_SYS_TYPES_H)
CHECK_INCLUDE_FILE_CONCAT("inttypes.h" HAVE_INTTYPES_H)
CHECK_INCLUDE_FILE_CONCAT("alloca.h" HAVE_ALLOCA_H)
CHECK_INCLUDE_FILE_CONCAT("arpa/inet.h" HAVE_ARPA_INET_H)
CHECK_INCLUDE_FILE_CONCAT("dlfcn.h" HAVE_DLFCN_H)
CHECK_INCLUDE_FILE_CONCAT("fcntl.h" HAVE_FCNTL_H)
CHECK_INCLUDE_FILE_CONCAT("malloc.h" HAVE_MALLOC_H)
CHECK_INCLUDE_FILE_CONCAT("memory.h" HAVE_MEMORY_H)
CHECK_INCLUDE_FILE_CONCAT("netdb.h" HAVE_NETDB_H)
CHECK_INCLUDE_FILE_CONCAT("zlib.h" HAVE_ZLIB_H)
CHECK_INCLUDE_FILE_CONCAT("sys/poll.h" HAVE_SYS_POLL_H)
CHECK_INCLUDE_FILE_CONCAT("openssl/x509.h" HAVE_OPENSSL_X509_H)
CHECK_INCLUDE_FILE_CONCAT("openssl/engine.h" HAVE_OPENSSL_ENGINE_H)
CHECK_INCLUDE_FILE_CONCAT("openssl/rsa.h" HAVE_OPENSSL_RSA_H)
CHECK_INCLUDE_FILE_CONCAT("openssl/crypto.h" HAVE_OPENSSL_CRYPTO_H)
CHECK_INCLUDE_FILE_CONCAT("openssl/pem.h" HAVE_OPENSSL_PEM_H)
CHECK_INCLUDE_FILE_CONCAT("openssl/ssl.h" HAVE_OPENSSL_SSL_H)
CHECK_INCLUDE_FILE_CONCAT("openssl/err.h" HAVE_OPENSSL_ERR_H)
CHECK_INCLUDE_FILE_CONCAT("sys/socket.h" HAVE_SYS_SOCKET_H)
CHECK_INCLUDE_FILE_CONCAT("netinet/in.h" HAVE_NETINET_IN_H)
CHECK_INCLUDE_FILE_CONCAT("net/if.h" HAVE_NET_IF_H)
CHECK_INCLUDE_FILE_CONCAT("netinet/if_ether.h"
HAVE_NETINET_IF_ETHER_H)
CHECK_INCLUDE_FILE_CONCAT("sys/select.h" HAVE_SYS_SELECT_H)
CHECK_INCLUDE_FILE_CONCAT("utime.h" HAVE_UTIME_H)
CHECK_INCLUDE_FILE_CONCAT("netinet/in.h" HAVE_NETINET_IN_H)
CHECK_INCLUDE_FILE_CONCAT("pwd.h" HAVE_PWD_H)
CHECK_INCLUDE_FILE_CONCAT("sgtty.h" HAVE_SGTTY_H)
CHECK_INCLUDE_FILE_CONCAT("stdint.h" HAVE_STDINT_H)
CHECK_INCLUDE_FILE_CONCAT("stdlib.h" HAVE_STDLIB_H)
CHECK_INCLUDE_FILE_CONCAT("string.h" HAVE_STRING_H)
CHECK_INCLUDE_FILE_CONCAT("strings.h" HAVE_STRINGS_H)
CHECK_INCLUDE_FILE_CONCAT("sys/param.h" HAVE_SYS_PARAM_H)
CHECK_INCLUDE_FILE_CONCAT("sys/stat.h" HAVE_SYS_STAT_H)
CHECK_INCLUDE_FILE_CONCAT("sys/time.h" HAVE_SYS_TIME_H)
CHECK_INCLUDE_FILE_CONCAT("termios.h" HAVE_TERMIOS_H)
CHECK_INCLUDE_FILE_CONCAT("termio.h" HAVE_TERMIO_H)
CHECK_INCLUDE_FILE_CONCAT("io.h" HAVE_IO_H)
CHECK_INCLUDE_FILE_CONCAT("time.h" HAVE_TIME_H)
CHECK_INCLUDE_FILE_CONCAT("unistd.h" HAVE_UNISTD_H)
CHECK_INCLUDE_FILE_CONCAT("sys/utime.h" HAVE_SYS_UTIME_H)
CHECK_INCLUDE_FILE_CONCAT("winsock.h" HAVE_WINSOCK_H)
CHECK_INCLUDE_FILE_CONCAT("sockio.h" HAVE_SOCKIO_H)
CHECK_INCLUDE_FILE_CONCAT("sys/sockio.h" HAVE_SYS_SOCKIO_H)
CHECK_INCLUDE_FILE_CONCAT("x509.h" HAVE_X509_H)
CHECK_INCLUDE_FILE_CONCAT("setjmp.h" HAVE_SETJMP_H)
CHECK_INCLUDE_FILE_CONCAT("signal.h" HAVE_SIGNAL_H)
CHECK_INCLUDE_FILES("${TEST_NETWORK_INCLUDES};sys/socket.h" HAVE_SYS_SOCKET_H)
IF(HAVE_SYS_SOCKET_H)
SET(TEST_NETWORK_INCLUDES ${TEST_NETWORK_INCLUDES} "sys/socket.h")
ENDIF(HAVE_SYS_SOCKET_H)
CHECK_INCLUDE_FILES("${TEST_NETWORK_INCLUDES};netinet/in.h" HAVE_NETINET_IN_H)
IF(HAVE_SYS_SOCKET_H)
SET(TEST_NETWORK_INCLUDES ${TEST_NETWORK_INCLUDES} "sys/socket.h")
ENDIF(HAVE_SYS_SOCKET_H)
CHECK_INCLUDE_FILES("${TEST_NETWORK_INCLUDES};net/if.h" HAVE_NET_IF_H)
IF(HAVE_NET_IF_H)
SET(TEST_NETWORK_INCLUDES ${TEST_NETWORK_INCLUDES} "net/if.h")
ENDIF(HAVE_NET_IF_H)
IF(HAVE_NETINET_IN_H)
SET(TEST_NETWORK_INCLUDES ${TEST_NETWORK_INCLUDES} "netinet/in.h")
ENDIF(HAVE_NETINET_IN_H)
CHECK_INCLUDE_FILES("${TEST_NETWORK_INCLUDES};netinet/if_ether.h"
HAVE_NETINET_IF_ETHER_H)
CHECK_INCLUDE_FILES("${TEST_NETWORK_INCLUDES};sys/select.h" HAVE_SYS_SELECT_H)
CHECK_INCLUDE_FILES("${TEST_NETWORK_INCLUDES};utime.h" HAVE_UTIME_H)
CHECK_INCLUDE_FILE("netinet/in.h" HAVE_NETINET_IN_H)
CHECK_INCLUDE_FILE("pwd.h" HAVE_PWD_H)
CHECK_INCLUDE_FILE("sgtty.h" HAVE_SGTTY_H)
CHECK_INCLUDE_FILE("stdint.h" HAVE_STDINT_H)
CHECK_INCLUDE_FILE("stdlib.h" HAVE_STDLIB_H)
CHECK_INCLUDE_FILE("string.h" HAVE_STRING_H)
CHECK_INCLUDE_FILE("strings.h" HAVE_STRINGS_H)
CHECK_INCLUDE_FILE("sys/param.h" HAVE_SYS_PARAM_H)
CHECK_INCLUDE_FILE("sys/stat.h" HAVE_SYS_STAT_H)
CHECK_INCLUDE_FILE("sys/time.h" HAVE_SYS_TIME_H)
CHECK_INCLUDE_FILE("termios.h" HAVE_TERMIOS_H)
CHECK_INCLUDE_FILE("termio.h" HAVE_TERMIO_H)
CHECK_INCLUDE_FILE("io.h" HAVE_IO_H)
CHECK_INCLUDE_FILE("time.h" HAVE_TIME_H)
CHECK_INCLUDE_FILE("unistd.h" HAVE_UNISTD_H)
CHECK_INCLUDE_FILE("sys/utime.h" HAVE_SYS_UTIME_H)
CHECK_INCLUDE_FILE("winsock.h" HAVE_WINSOCK_H)
CHECK_INCLUDE_FILE("sockio.h" HAVE_SOCKIO_H)
CHECK_INCLUDE_FILE("sys/sockio.h" HAVE_SYS_SOCKIO_H)
CHECK_INCLUDE_FILE("x509.h" HAVE_X509_H)
CHECK_INCLUDE_FILE("setjmp.h" HAVE_SETJMP_H)
CHECK_TYPE_SIZE(ssize_t SIZEOF_SSIZE_T)
CHECK_TYPE_SIZE("long double" SIZEOF_LONG_DOUBLE)
IF(NOT HAVE_SIZEOF_SSIZE_T)
@ -200,6 +173,7 @@ ENDIF(NOT HAVE_SIZEOF_SSIZE_T)
FIND_FILE(RANDOM_FILE urandom /dev)
# Check for some functions that are used
CHECK_FUNCTION_EXISTS(socket HAVE_SOCKET)
CHECK_FUNCTION_EXISTS(poll HAVE_POLL)
CHECK_FUNCTION_EXISTS(select HAVE_SELECT)
@ -223,10 +197,25 @@ CHECK_FUNCTION_EXISTS(closesocket HAVE_CLOSESOCKET)
CHECK_FUNCTION_EXISTS(setvbuf HAVE_SETVBUF)
CHECK_FUNCTION_EXISTS(signal HAVE_SIGNAL)
CHECK_FUNCTION_EXISTS(sigsetjmp HAVE_SIGSETJMP)
CHECK_FUNCTION_EXISTS(getpass_r HAVE_GETPASS_R)
CHECK_FUNCTION_EXISTS(strlcat HAVE_STRLCAT)
CHECK_FUNCTION_EXISTS(getpwuid HAVE_GETPWUID)
CHECK_FUNCTION_EXISTS(geteuid HAVE_GETEUID)
CHECK_FUNCTION_EXISTS(utime HAVE_UTIME)
CHECK_FUNCTION_EXISTS(RAND_status HAVE_RAND_STATUS)
CHECK_FUNCTION_EXISTS(RAND_screen HAVE_RAND_SCREEN)
CHECK_FUNCTION_EXISTS(RAND_egd HAVE_RAND_EGD)
CHECK_FUNCTION_EXISTS(gethostbyname_r HAVE_GETHOSTBYNAME_R)
CHECK_FUNCTION_EXISTS(gethostbyaddr_r HAVE_GETHOSTBYADDR_R)
CHECK_FUNCTION_EXISTS(gmtime HAVE_GMTIME_R)
CHECK_FUNCTION_EXISTS(localtime HAVE_LOCALTIME_R)
IF(HAVE_SIGNAL)
# sigaction and sigsetjmp are special. Use special mechanism for
# detecting those, but only if previous attempt failed.
IF(HAVE_SIGNAL_H)
CHECK_SYMBOL_EXISTS(sigaction "signal.h" HAVE_SIGACTION)
ENDIF(HAVE_SIGNAL)
ENDIF(HAVE_SIGNAL_H)
IF(NOT HAVE_SIGSETJMP)
IF(HAVE_SETJMP_H)
@ -237,20 +226,7 @@ IF(NOT HAVE_SIGSETJMP)
ENDIF(HAVE_SETJMP_H)
ENDIF(NOT HAVE_SIGSETJMP)
CHECK_FUNCTION_EXISTS(getpass_r HAVE_GETPASS_R)
CHECK_FUNCTION_EXISTS(strlcat HAVE_STRLCAT)
CHECK_FUNCTION_EXISTS(getpwuid HAVE_GETPWUID)
CHECK_FUNCTION_EXISTS(geteuid HAVE_GETEUID)
CHECK_FUNCTION_EXISTS(utime HAVE_UTIME)
CHECK_FUNCTION_EXISTS(RAND_status HAVE_RAND_STATUS)
CHECK_FUNCTION_EXISTS(RAND_screen HAVE_RAND_SCREEN)
CHECK_FUNCTION_EXISTS(RAND_egd HAVE_RAND_EGD)
CHECK_FUNCTION_EXISTS(gethostbyname_r HAVE_GETHOSTBYNAME_R)
CHECK_FUNCTION_EXISTS(gethostbyaddr_r HAVE_GETHOSTBYADDR_R)
CHECK_FUNCTION_EXISTS(gmtime HAVE_GMTIME_R)
CHECK_FUNCTION_EXISTS(localtime HAVE_LOCALTIME_R)
# For other curl specific tests, use this macro.
MACRO(CURL_INTERNAL_TEST CURL_TEST)
IF("${CURL_TEST}" MATCHES "^${CURL_TEST}$")
SET(MACRO_CHECK_FUNCTION_DEFINITIONS
@ -280,6 +256,7 @@ MACRO(CURL_INTERNAL_TEST CURL_TEST)
ENDIF("${CURL_TEST}" MATCHES "^${CURL_TEST}$")
ENDMACRO(CURL_INTERNAL_TEST)
# Do curl specific tests
FOREACH(CURL_TEST
TIME_WITH_SYS_TIME
HAVE_O_NONBLOCK
@ -306,6 +283,7 @@ FOREACH(CURL_TEST
CURL_INTERNAL_TEST(${CURL_TEST})
ENDFOREACH(CURL_TEST)
# Check for reentrant
FOREACH(CURL_TEST
HAVE_GETHOSTBYADDR_R_5
HAVE_GETHOSTBYADDR_R_7
@ -341,6 +319,8 @@ IF(HAVE_INET_NTOA_R_DECL_REENTRANT)
SET(NEED_REENTRANT 1)
ENDIF(HAVE_INET_NTOA_R_DECL_REENTRANT)
# Some other minor tests
IF(NOT HAVE_SOCKLEN_T)
SET(socklen_t "int")
ENDIF(NOT HAVE_SOCKLEN_T)
@ -349,6 +329,8 @@ IF(NOT HAVE_IN_ADDR_T)
SET(in_addr_t "unsigned long")
ENDIF(NOT HAVE_IN_ADDR_T)
# Fix libz / zlib.h
IF(NOT HAVE_LIBZ)
SET(HAVE_ZLIB_H 0)
ENDIF(NOT HAVE_LIBZ)
@ -357,6 +339,8 @@ IF(NOT HAVE_ZLIB_H)
SET(HAVE_LIBZ 0)
ENDIF(NOT HAVE_ZLIB_H)
# Check for nonblocking
SET(HAVE_SOME_NONBLOCK 0)
FOREACH(CURL_TEST
HAVE_FIONBIO
@ -377,6 +361,8 @@ ELSE(RETSIGTYPE_TEST)
SET(RETSIGTYPE int)
ENDIF(RETSIGTYPE_TEST)
# The rest of the build
INCLUDE_DIRECTORIES(${LIBCURL_SOURCE_DIR})
INCLUDE_DIRECTORIES(${LIBCURL_BINARY_DIR})
ADD_DEFINITIONS(-DHAVE_CONFIG_H)