1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
# Roy cmake build
PROJECT(ROY)
SET(BUILD_SHARED_LIBS "ON" CACHE BOOL "Whether or not to build libraries as shared.")
# For some reason this is broken.
IF(WIN32)
SET(BUILD_SHARED_LIBS "OFF")
ENDIF(WIN32)
# Check size of various types..
INCLUDE(${CMAKE_ROOT}/Modules/CheckTypeSize.cmake)
CHECK_TYPE_SIZE("char" SIZEOF_CHAR)
CHECK_TYPE_SIZE("short int" SIZEOF_SHORT_INT)
CHECK_TYPE_SIZE("int" SIZEOF_INT)
CHECK_TYPE_SIZE("long int" SIZEOF_LONG_INT)
CHECK_TYPE_SIZE("long long int" SIZEOF_LONG_LONG_INT)
# Check for various functions..
INCLUDE(${CMAKE_ROOT}/Modules/CheckFunctionExists.cmake)
CHECK_FUNCTION_EXISTS(popen HAVE_POPEN)
CHECK_FUNCTION_EXISTS(vsnprintf HAVE_VSNPRINTF)
CHECK_FUNCTION_EXISTS(snprintf HAVE_SNPRINTF)
# Easy way to check for includes
INCLUDE(${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake)
CHECK_INCLUDE_FILE(sys/types.h HAVE_SYS_TYPES_H)
CHECK_INCLUDE_FILE(sys/time.h HAVE_SYS_TIME_H)
CHECK_INCLUDE_FILE(sys/socket.h HAVE_SYS_SOCKET_H)
CHECK_INCLUDE_FILE(netinet/in.h HAVE_NETINET_IN_H)
CHECK_INCLUDE_FILE(netdb.h HAVE_NETDB_H)
CHECK_INCLUDE_FILE(unistd.h HAVE_UNISTD_H)
CHECK_INCLUDE_FILE(errno.h HAVE_ERRNO_H)
CHECK_INCLUDE_FILE(sys/uio.h HAVE_SYS_UIO_H)
CHECK_INCLUDE_FILE(fcntl.h HAVE_FCNTL_H)
CHECK_INCLUDE_FILE(pthread.h HAVE_PTHREAD_H)
# find zlib
FIND_LIBRARY(ZLIB_LOCATION z PATHS /lib /usr/lib /usr/local/lib /usr/pkg/lib
DOC "Location of the gzip compression library 'libz'")
FIND_FILE(ZLIB_HEADER zlib.h /usr/include /usr/local/include /usr/pkg/include
DOC "Location of the gzip compression library header 'zlib.h'")
GET_FILENAME_COMPONENT(ZLIB_BASENAME ${ZLIB_HEADER} PATH)
INCLUDE_DIRECTORIES(${ZLIB_BASENAME})
IF(UNIX)
# find pthread
# We keep the PTHREAD_LIBS variable for roy-config.
SET(PTHREAD_LIBS "" CACHE INTERNAL "Pthread libraries")
FIND_LIBRARY(PTHREAD_LOCATION pthread PATHS /lib /usr/lib /usr/local/lib /usr/pkg/lib
DOC "Location of the pthread threading library")
FIND_FILE(PTHREAD_HEADER pthread.h /usr/include /usr/local/include /usr/pkg/include
DOC "Location of the pthread library header 'pthread.h'")
GET_FILENAME_COMPONENT(PTHREAD_BASENAME ${PTHREAD_HEADER} PATH)
INCLUDE_DIRECTORIES(${PTHREAD_BASENAME})
IF(LIBPTHREAD_LOCATION)
# This is broken.. need to get real lib name.
SET(PTHREAD_LIBS "-lpthread")
ENDIF(LIBPTHREAD_LOCATION)
# Setup the GCC BUILTIN variable
SET(GCC_BUILTIN_RETURN_WORKS OFF CACHE BOOL "If this is enabled, rmdbg will attempt to create stack traces using gcc. Only enable if you know what you are doing.")
MARK_AS_ADVANCED(GCC_BUILTIN_RETURN_WORKS)
# Link in the math library to roy.
FIND_LIBRARY(LIBM_LOCATION m PATHS /lib /usr/lib /usr/local/lib /usr/pkg/lib
DOC "Location of the standard math library.")
MARK_AS_ADVANCED(LIBM_LOCATION)
# Get socket libraries. We also keep the SOCKET_LIBS variable for
# roy-config.
SET(SOCKET_LIBS "" CACHE INTERNAL "Socket libraries")
# Socket library
FIND_LIBRARY(LIBSOCKET_LOCATION socket PATHS /lib /usr/lib /usr/local/lib /usr/pkg/lib
DOC "Location of the socket library.")
MARK_AS_ADVANCED(LIBSOCKET_LOCATION)
IF(LIBSOCKET_LOCATION)
SET(SOCKET_LIBS "-lsocket")
ENDIF(LIBSOCKET_LOCATION)
# nsl library
FIND_LIBRARY(LIBNSL_LOCATION nsl PATHS /lib /usr/lib /usr/local/lib /usr/pkg/lib
DOC "Location of the hostname lookup 'nsl' library.")
MARK_AS_ADVANCED(LIBNSL_LOCATION)
IF(LIBNSL_LOCATION)
SET(SOCKET_LIBS "${SOCKET_LIBS} -lnsl")
ENDIF(LIBNSL_LOCATION)
FIND_LIBRARY(LIBPTHREAD_LOCATION pthread PATHS /lib /usr/lib /usr/local/lib /usr/pkg/lib
DOC "Location of the pthread library.")
MARK_AS_ADVANCED(LIBPTHREAD_LOCATION)
IF(LIBPTHREAD_LOCATION)
SET(PTHREAD_LIBS "-lpthread")
ENDIF(LIBPTHREAD_LOCATION)
# Generate and install roy-config. You could do this on windows too but
# I don't there's any point
SET(prefix ${CMAKE_INSTALL_PREFIX} CACHE INTERNAL "prefix for roy-config.in")
CONFIGURE_FILE(${ROY_SOURCE_DIR}/roy-config.in
${ROY_BINARY_DIR}/roy-config
ESCAPE_QUOTES)
# Found a CMake bug! hehe, have to tell it the file twice or
# it tries to match it as a regex.
INSTALL_PROGRAMS(/bin roy-config roy-config)
ENDIF(UNIX)
IF(WIN32)
SET(WIN32 "1" CACHE INTERNAL "Set if on a win32 system")
LINK_LIBRARIES(oldnames)
ENDIF(WIN32)
# Generate and install a roy-config.h
CONFIGURE_FILE(${ROY_SOURCE_DIR}/roy/roy-config.h.cmake.in
${ROY_BINARY_DIR}/roy/roy-config.h
ESCAPE_QUOTES)
INSTALL_FILES(/include/roy/ FILES ${ROY_BINARY_DIR}/roy/roy-config.h)
# Make sure everyone can find roy.h and roy-config.h
INCLUDE_DIRECTORIES(${ROY_SOURCE_DIR}
${ROY_BINARY_DIR})
# Install main roy.h here
INSTALL_FILES(/include/ FILES roy.h)
SUBDIRS(roy tests therml tools)
|