File: CMakeLists.txt

package info (click to toggle)
roy 1.0.8-1
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 3,316 kB
  • ctags: 1,564
  • sloc: ansic: 14,459; sh: 8,259; makefile: 322
file content (141 lines) | stat: -rw-r--r-- 5,039 bytes parent folder | download
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)