~ubuntu-branches/ubuntu/hardy/fltk1.1/hardy

« back to all changes in this revision

Viewing changes to CMakeLists.txt

  • Committer: Bazaar Package Importer
  • Author(s): Aaron M. Ucko
  • Date: 2004-12-04 12:59:54 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20041204125954-0bnefh426a67cjgl
Tags: 1.1.6-2
test/*.cxx: Apply patch from Andreas Jochens <aj@andaco.de> to fix
bogus pointer->int casts, which GCC 4.0 rightly treats as errors on
64-bit systems.  (Closes: #284168.)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Main CMakeLists.txt to build the FLTK project using CMake (www.cmake.org)
 
2
# Written by Andy Cedilnik and Julien Jomier
 
3
 
 
4
PROJECT(FLTK)
 
5
 
 
6
SET(EXECUTABLE_OUTPUT_PATH ${FLTK_BINARY_DIR}/bin CACHE INTERNAL 
 
7
  "Where to put the executables for FLTK"
 
8
  )
 
9
SET(LIBRARY_OUTPUT_PATH "${FLTK_BINARY_DIR}/lib" CACHE INTERNAL 
 
10
  "Where to put the libraries for FLTK"
 
11
  )
 
12
 
 
13
#-----------------------------------------------------------------------------
 
14
# Test for some required system information.
 
15
INCLUDE (${CMAKE_ROOT}/Modules/FindThreads.cmake)
 
16
SET (CMAKE_USE_PTHREADS       "${CMAKE_USE_PTHREADS_INIT}" CACHE BOOL "Use the pthreads library.")
 
17
 
 
18
 
 
19
SET(FLTK_DATADIR "${CMAKE_INSTALL_PREFIX}/share/FLTK")
 
20
SET(FLTK_DOCDIR  "${CMAKE_INSTALL_PREFIX}/share/doc/FLTK")
 
21
 
 
22
CONFIGURE_FILE(${FLTK_SOURCE_DIR}/configh.cmake.in
 
23
  ${FLTK_BINARY_DIR}/config.h)
 
24
 
 
25
IF(WIN32)
 
26
  IF(NOT CYGWIN)
 
27
    IF(BORLAND)
 
28
      SET( FLTK_PLATFORM_DEPENDENT_LIBS import32 )
 
29
    ELSE(BORLAND)
 
30
      SET( FLTK_PLATFORM_DEPENDENT_LIBS wsock32 comctl32 )
 
31
    ENDIF(BORLAND)
 
32
  ENDIF(NOT CYGWIN)
 
33
ENDIF(WIN32)
 
34
 
 
35
SET(FLTK_X11 1)
 
36
SET(FLTK_APPLE 0)
 
37
IF(APPLE)
 
38
  OPTION(FLTK_APPLE_X11 "Use X11 on Mac instead of Carbon" OFF)
 
39
  MARK_AS_ADVANCED(FLTK_APPLE_X11)
 
40
  IF(NOT FLTK_APPLE_X11)
 
41
    SET(FLTK_APPLE 1)
 
42
    SET(FLTK_X11 0)
 
43
    OPTION(FLTK_QUARTZ "Use Quartz instead of Quickdraw" OFF)
 
44
  ENDIF(NOT FLTK_APPLE_X11)
 
45
ENDIF(APPLE)
 
46
 
 
47
IF(UNIX)
 
48
  INCLUDE(${CMAKE_ROOT}/Modules/FindX11.cmake)
 
49
  SET( FLTK_PLATFORM_DEPENDENT_LIBS ${X11_LIBRARIES} -lm)
 
50
ENDIF(UNIX)
 
51
 
 
52
IF(APPLE)
 
53
  SET( FLTK_PLATFORM_DEPENDENT_LIBS  "-framework Carbon -framework Cocoa -framework ApplicationServices -lz")
 
54
ENDIF(APPLE)
 
55
 
 
56
IF(CYGWIN)
 
57
  ADD_DEFINITIONS(-DWIN32)  
 
58
  SET( FLTK_PLATFORM_DEPENDENT_LIBS ole32 uuid comctl32 wsock32 supc++ -lm -lgdi32)
 
59
ENDIF(CYGWIN)
 
60
 
 
61
 
 
62
INCLUDE_DIRECTORIES(
 
63
  ${FLTK_BINARY_DIR}
 
64
  ${FLTK_SOURCE_DIR}
 
65
  )
 
66
 
 
67
INCLUDE (${CMAKE_ROOT}/Modules/CheckIncludeFiles.cmake)
 
68
# Check if header file exists and add it to the list.
 
69
MACRO(CHECK_INCLUDE_FILE_CONCAT FILE VARIABLE)
 
70
  CHECK_INCLUDE_FILES("${PROJECT_INCLUDES};${FILE}" ${VARIABLE})
 
71
  IF(${VARIABLE})
 
72
    SET(PROJECT_INCLUDES ${PROJECT_INCLUDES} ${FILE})
 
73
  ENDIF(${VARIABLE})
 
74
ENDMACRO(CHECK_INCLUDE_FILE_CONCAT)
 
75
CHECK_INCLUDE_FILE_CONCAT("GL/glu.h"       HAVE_GL_GLU_H)
 
76
CHECK_INCLUDE_FILE_CONCAT("OpenGL/glu.h"   HAVE_OPENGL_GLU_H)
 
77
CHECK_INCLUDE_FILE_CONCAT("dirent.h"       HAVE_DIRENT_H)
 
78
CHECK_INCLUDE_FILE_CONCAT("stdio.h"        HAVE_STDIO_H)
 
79
CHECK_INCLUDE_FILE_CONCAT("strings.h"      HAVE_STRINGS_H)
 
80
CHECK_INCLUDE_FILE_CONCAT("sys/dir.h"      HAVE_SYS_DIR_H)
 
81
CHECK_INCLUDE_FILE_CONCAT("sys/ndir.h"     HAVE_SYS_NDIR_H)
 
82
CHECK_INCLUDE_FILE_CONCAT("sys/select.h"   HAVE_SYS_SELECT_H)
 
83
CHECK_INCLUDE_FILE_CONCAT("sys/stdtypes.h" HAVE_SYS_STDTYPES_H)
 
84
CHECK_INCLUDE_FILE("pthread.h"      CMAKE_HAVE_PTHREAD_H)
 
85
 
 
86
INCLUDE(${CMAKE_ROOT}/Modules/FindZLIB.cmake)
 
87
INCLUDE(${CMAKE_ROOT}/Modules/FindPNG.cmake)
 
88
INCLUDE(${CMAKE_ROOT}/Modules/FindJPEG.cmake)
 
89
 
 
90
INCLUDE(${CMAKE_ROOT}/Modules/CheckSymbolExists.cmake)
 
91
INCLUDE(${FLTK_SOURCE_DIR}/CMake/CheckFunctionWithHeaderExists.cmake)
 
92
 
 
93
CHECK_FUNCTIONWITHHEADER_EXISTS("int strcasecmp()"  "${PROJECT_INCLUDES}" HAVE_STRCASECMP)
 
94
 
 
95
CHECK_SYMBOL_EXISTS(strlcat       "${PROJECT_INCLUDES}" HAVE_STRLCAT)
 
96
CHECK_SYMBOL_EXISTS(strlcpy       "${PROJECT_INCLUDES}" HAVE_STRLCPY)
 
97
CHECK_SYMBOL_EXISTS(vsnprintf     "${PROJECT_INCLUDES}" HAVE_VSNPRINTF)
 
98
CHECK_SYMBOL_EXISTS(snprintf      "${PROJECT_INCLUDES}" HAVE_SNPRINTF)
 
99
CHECK_SYMBOL_EXISTS(scandir       "${PROJECT_INCLUDES}" HAVE_SCANDIR)
 
100
 
 
101
INCLUDE(${CMAKE_ROOT}/Modules/CheckTypeSize.cmake)
 
102
 
 
103
CHECK_TYPE_SIZE(short SIZEOF_SHORT)
 
104
CHECK_TYPE_SIZE(int   SIZEOF_INT)
 
105
CHECK_TYPE_SIZE(long  SIZEOF_LONG)
 
106
 
 
107
IF(${SIZEOF_SHORT} MATCHES "^2$")
 
108
  SET(U16 "unsigned short")
 
109
ENDIF(${SIZEOF_SHORT} MATCHES "^2$")
 
110
 
 
111
IF(${SIZEOF_INT} MATCHES "^4$")
 
112
  SET(U32 "unsigned")
 
113
ELSE(${SIZEOF_INT} MATCHES "^4$")
 
114
  IF(${SIZEOF_LONG} MATCHES "^4$")
 
115
    SET(U32 "unsigned long")
 
116
  ENDIF(${SIZEOF_LONG} MATCHES "^4$")
 
117
ENDIF(${SIZEOF_INT} MATCHES "^4$")
 
118
 
 
119
IF(${SIZEOF_INT} MATCHES "^8$")
 
120
  SET(U64 "unsigned")
 
121
ELSE(${SIZEOF_INT} MATCHES "^8$")
 
122
  INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR})
 
123
  IF(${SIZEOF_LONG} MATCHES "^8$")
 
124
    SET(U64 "unsigned long")
 
125
  ENDIF(${SIZEOF_LONG} MATCHES "^8$")
 
126
ENDIF(${SIZEOF_INT} MATCHES "^8$")
 
127
 
 
128
SET(HAVE_GL 0)
 
129
 
 
130
# Set an option to build FLTK with OpenGL support
 
131
OPTION(USE_OPENGL "OpenGL Support" ON)
 
132
IF(USE_OPENGL)
 
133
  INCLUDE(${CMAKE_ROOT}/Modules/FindOpenGL.cmake)
 
134
  IF(OPENGL_FOUND)
 
135
    SET(HAVE_GL 1)
 
136
  ENDIF(OPENGL_FOUND)
 
137
ENDIF(USE_OPENGL)
 
138
 
 
139
#
 
140
# Perform the FLTK specific test with status output
 
141
#
 
142
MACRO(PERFORM_CMAKE_TEST FILE TEST)
 
143
  IF("${TEST}" MATCHES "^${TEST}$")
 
144
    # Perform test
 
145
    SET(MACRO_CHECK_FUNCTION_DEFINITIONS 
 
146
      "-D${TEST} ${CMAKE_REQUIRED_FLAGS}")
 
147
    IF(CMAKE_REQUIRED_LIBRARIES)
 
148
      SET(TEST_ADD_LIBRARIES
 
149
        "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
 
150
    ENDIF(CMAKE_REQUIRED_LIBRARIES)
 
151
    MESSAGE(STATUS "Performing Test ${TEST}")
 
152
 
 
153
    TRY_COMPILE(${TEST}
 
154
      ${CMAKE_BINARY_DIR}
 
155
      ${CMAKE_CURRENT_SOURCE_DIR}/${FILE}
 
156
      CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
 
157
      -DLINK_LIBRARIES:STRING=${CMAKE_TEST_SPECIAL_LIBRARIES}
 
158
      "${TEST_ADD_LIBRARIES}"
 
159
      OUTPUT_VARIABLE OUTPUT)
 
160
    IF(${TEST})
 
161
      SET(${TEST} 1 CACHE INTERNAL "CMake test ${FUNCTION}")
 
162
      MESSAGE(STATUS "Performing Test ${TEST} - Success")
 
163
    ELSE(${TEST})
 
164
      MESSAGE(STATUS "Performing Test ${TEST} - Failed")
 
165
      SET(${TEST} 0 CACHE INTERNAL "Test ${FUNCTION}")
 
166
      WRITE_FILE(${CMAKE_BINARY_DIR}/CMakeError.log 
 
167
        "Performing Test ${TEST} failed with the following output:\n"
 
168
        "${OUTPUT}\n" APPEND)
 
169
    ENDIF(${TEST})
 
170
  ELSE("${TEST}" MATCHES "^${TEST}$")
 
171
    # Have result
 
172
    #FOREACH(tst ${TEST})
 
173
    #  MESSAGE("Test ${TEST} resulted in ${${tst}}")
 
174
    #ENDFOREACH(tst ${TEST})
 
175
  ENDIF("${TEST}" MATCHES "^${TEST}$")
 
176
ENDMACRO(PERFORM_CMAKE_TEST FILE TEST)
 
177
 
 
178
# Set an option to build the zlib library or not
 
179
OPTION(FLTK_USE_SYSTEM_ZLIB "Use's system zlib" ON)
 
180
IF(FLTK_USE_SYSTEM_ZLIB)
 
181
  IF(ZLIB_FOUND)
 
182
    SET(CMAKE_TEST_SPECIAL_LIBRARIES ${ZLIB_LIBRARIES})
 
183
    PERFORM_CMAKE_TEST(CMake/PlatformTests.cxx HAVE_LIBZ)
 
184
  ENDIF(ZLIB_FOUND)
 
185
  # We build the fltk zlib
 
186
ELSE(FLTK_USE_SYSTEM_ZLIB)
 
187
  MARK_AS_ADVANCED(ZLIB_INCLUDE_DIR)
 
188
  MARK_AS_ADVANCED(ZLIB_LIBRARY)
 
189
  SUBDIRS(zlib)
 
190
ENDIF(FLTK_USE_SYSTEM_ZLIB)
 
191
 
 
192
# Set an option to build the jpeg library or not
 
193
OPTION(FLTK_USE_SYSTEM_JPEG "Use's system jpeg" ON)
 
194
IF(FLTK_USE_SYSTEM_JPEG)
 
195
  IF(JPEG_FOUND)
 
196
    SET(CMAKE_TEST_SPECIAL_LIBRARIES ${JPEG_LIBRARIES})
 
197
    PERFORM_CMAKE_TEST(CMake/PlatformTests.cxx HAVE_LIBJPEG)
 
198
  ENDIF(JPEG_FOUND)
 
199
  # We build the fltk png
 
200
ELSE(FLTK_USE_SYSTEM_JPEG)
 
201
  MARK_AS_ADVANCED(JPEG_INCLUDE_DIR)
 
202
  MARK_AS_ADVANCED(JPEG_LIBRARY)
 
203
  SUBDIRS(jpeg)
 
204
ENDIF(FLTK_USE_SYSTEM_JPEG)
 
205
 
 
206
# Set an option to build the png library or not
 
207
OPTION(FLTK_USE_SYSTEM_PNG "Use's system png" ON)
 
208
IF(FLTK_USE_SYSTEM_PNG)
 
209
  IF(PNG_FOUND)
 
210
    SET(CMAKE_TEST_SPECIAL_LIBRARIES ${PNG_LIBRARIES})
 
211
    PERFORM_CMAKE_TEST(CMake/PlatformTests.cxx HAVE_LIBPNG)
 
212
    PERFORM_CMAKE_TEST(CMake/PlatformTests.cxx HAVE_PNG_GET_VALID)
 
213
    PERFORM_CMAKE_TEST(CMake/PlatformTests.cxx HAVE_PNG_SET_TRNS_TO_ALPHA)
 
214
    SET(HAVE_PNG_H 1)
 
215
  ENDIF(PNG_FOUND)
 
216
  # We build the fltk png
 
217
ELSE(FLTK_USE_SYSTEM_PNG)
 
218
  MARK_AS_ADVANCED(PNG_INCLUDE_DIR)
 
219
  MARK_AS_ADVANCED(PNG_LIBRARY)
 
220
  SUBDIRS(png)
 
221
ENDIF(FLTK_USE_SYSTEM_PNG)
 
222
 
 
223
SUBDIRS(src)
 
224
SUBDIRS(fluid)
 
225
 
 
226
SET(FLTK_CREATE_SYMLINKS 1)
 
227
IF(WIN32)
 
228
  IF(NOT UNIX)
 
229
    SET(FLTK_CREATE_SYMLINKS 0)
 
230
  ENDIF(NOT UNIX)
 
231
ENDIF(WIN32)
 
232
 
 
233
MACRO(SAFE_CREATE_SYMLINK SOURCE DESTINATION)
 
234
  IF(EXISTS "${DESTINATION}")
 
235
  ELSE(EXISTS "${DESTINATION}")
 
236
    EXEC_PROGRAM(ln ARGS -s
 
237
      "${SOURCE}"
 
238
      "${DESTINATION}" OUTPUT_VARIABLE ln_output
 
239
      RETURN_VALUE ln_retval)
 
240
    IF("${ln_retval}" GREATER 0)
 
241
      MESSAGE(FATAL_ERROR "Problem creatin symlink from \"${SOURCE}\" to \"${DESTINATION}\":\n${ln_output}")
 
242
    ENDIF("${ln_retval}" GREATER 0)
 
243
  ENDIF(EXISTS "${DESTINATION}")
 
244
ENDMACRO(SAFE_CREATE_SYMLINK SOURCE DESTINATION)
 
245
 
 
246
# If this is out-of-source build, then copy FL directory
 
247
FILE(GLOB FLTK_HEADER_FILES "${FLTK_SOURCE_DIR}/FL/*")
 
248
FOREACH(file ${FLTK_HEADER_FILES})
 
249
  GET_FILENAME_COMPONENT(ext "${file}" EXT)
 
250
  GET_FILENAME_COMPONENT(namewe "${file}" NAME_WE)
 
251
  GET_FILENAME_COMPONENT(name "${file}" NAME)
 
252
  STRING(COMPARE EQUAL "${ext}" ".h" lower_case_h)
 
253
  STRING(COMPARE EQUAL "${ext}" ".H" upper_case_h)
 
254
  IF(lower_case_h OR upper_case_h)
 
255
    SET(outfile_h "${FLTK_BINARY_DIR}/FL/${namewe}.h")
 
256
    SET(outfile_H "${FLTK_BINARY_DIR}/FL/${namewe}.H")
 
257
    CONFIGURE_FILE("${file}" "${outfile_H}" COPYONLY IMMEDIATE)
 
258
#    IF(FLTK_CREATE_SYMLINKS)
 
259
#      SAFE_CREATE_SYMLINK("${outfile_H}" "${outfile_h}")
 
260
#    ENDIF(FLTK_CREATE_SYMLINKS)
 
261
  ELSE(lower_case_h OR upper_case_h)
 
262
    STRING(COMPARE EQUAL "${ext}" ".r" mac_resource_file)
 
263
    IF(mac_resource_file)
 
264
      SET(outfile "${FLTK_BINARY_DIR}/FL/${name}")
 
265
      CONFIGURE_FILE("${file}" "${outfile}" COPYONLY IMMEDIATE)
 
266
    ENDIF(mac_resource_file)
 
267
  ENDIF(lower_case_h OR upper_case_h)
 
268
ENDFOREACH(file)
 
269
 
 
270
IF(FLTK_CREATE_SYMLINKS)
 
271
  SAFE_CREATE_SYMLINK(
 
272
    "${FLTK_BINARY_DIR}/FL"
 
273
    "${FLTK_BINARY_DIR}/Fl")
 
274
 
 
275
  SAFE_CREATE_SYMLINK(
 
276
    "${FLTK_BINARY_DIR}/FL/gl.H"
 
277
    "${FLTK_BINARY_DIR}/FL/gl.h")
 
278
 
 
279
  # Create the symlinks
 
280
  FILE(READ ${FLTK_SOURCE_DIR}/fltk.list.in SYMLINKSFILE)
 
281
  STRING(REGEX MATCHALL "(l 0000 root sys .includedir/)([^(\n)])+"
 
282
  SYMLINKS ${SYMLINKSFILE})
 
283
  FOREACH(var ${SYMLINKS} )
 
284
    IF("${var}" MATCHES ".H")
 
285
      STRING(REGEX MATCH "(/F)([^(\n)])+" tmp ${var})
 
286
      STRING(REGEX MATCH "(/F)([^( )])+" in ${tmp})
 
287
      STRING(REGEX MATCH "( )([^(\n)])+" out ${tmp}) 
 
288
      STRING(REGEX REPLACE "( )" "" out ${out})
 
289
      SAFE_CREATE_SYMLINK("${FLTK_BINARY_DIR}/FL/${out}" "${FLTK_BINARY_DIR}/${in}")
 
290
    ENDIF("${var}" MATCHES ".H")
 
291
  ENDFOREACH(var)
 
292
ENDIF(FLTK_CREATE_SYMLINKS)
 
293
 
 
294
 
 
295
# Set the fluid executable path
 
296
SET(FLUID_COMMAND ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/fluid)
 
297
 
 
298
# Set an option to build the tests
 
299
OPTION(BUILD_TESTS "Build the tests" ON)
 
300
IF(BUILD_TESTS)
 
301
  SUBDIRS(test)
 
302
  ENABLE_TESTING()
 
303
  INCLUDE(${CMAKE_ROOT}/Modules/Dart.cmake)
 
304
ENDIF(BUILD_TESTS )
 
305
 
 
306
#Genereate the configuration file
 
307
SET(FLTK_EXECUTABLE_DIRS ${EXECUTABLE_OUTPUT_PATH})
 
308
SET(FLTK_LIBRARY_DIRS ${LIBRARY_OUTPUT_PATH})
 
309
 
 
310
CONFIGURE_FILE(${FLTK_SOURCE_DIR}/CMake/FLTKConfig.cmake.in
 
311
  ${FLTK_BINARY_DIR}/FLTKConfig.cmake)