source: rtems-graphics-toolkit/fltk-1.3.0/CMakeLists.txt @ b0e772a

Last change on this file since b0e772a was f5c9e9c, checked in by Alexandru-Sever Horin <alex.sever.h@…>, on 07/05/12 at 09:33:03

Aded FLTK 1.3.0

  • Property mode set to 100644
File size: 21.0 KB
Line 
1#
2# "$Id: CMakeLists.txt 8198 2011-01-06 10:24:58Z manolo $"
3#
4# Main CMakeLists.txt to build the FLTK project using CMake (www.cmake.org)
5# Written by Andy Cedilnik and Julien Jomier
6#
7# Copyright 1998-2010 by Bill Spitzak and others.
8#
9# This library is free software; you can redistribute it and/or
10# modify it under the terms of the GNU Library General Public
11# License as published by the Free Software Foundation; either
12# version 2 of the License, or (at your option) any later version.
13#
14# This library is distributed in the hope that it will be useful,
15# but WITHOUT ANY WARRANTY; without even the implied warranty of
16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17# Library General Public License for more details.
18#
19# You should have received a copy of the GNU Library General Public
20# License along with this library; if not, write to the Free Software
21# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
22# USA.
23#
24# Please report all bugs and problems on the following page:
25#
26#     http:#www.fltk.org/str.php
27#
28
29#######################################################################
30# basic setup
31#######################################################################
32project(FLTK)
33cmake_minimum_required(VERSION 2.6)
34
35# The FLTK version
36set(FLTK_VERSION_MAJOR "1")
37set(FLTK_VERSION_MINOR "3")
38set(FLTK_VERSION_PATCH "0")
39set(FLTK_VERSION "${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}")
40set(FLTK_VERSION_FULL "${FLTK_VERSION}.${FLTK_VERSION_PATCH}")
41
42set(EXECUTABLE_OUTPUT_PATH ${FLTK_BINARY_DIR}/bin)
43set(LIBRARY_OUTPUT_PATH ${FLTK_BINARY_DIR}/lib)
44set(ARCHIVE_OUTPUT_PATH ${FLTK_BINARY_DIR}/lib)
45
46# Search for modules in the FLTK source dir first
47set(CMAKE_MODULE_PATH "${FLTK_SOURCE_DIR}/CMake")
48
49include_directories(${FLTK_BINARY_DIR} ${FLTK_SOURCE_DIR})
50
51#######################################################################
52# platform dependent information
53#######################################################################
54
55include(TestBigEndian)
56TEST_BIG_ENDIAN(WORDS_BIGENDIAN)
57
58if(APPLE)
59   set(__APPLE_QUARTZ__ 1)
60   set(HAVE_STRTOLL 1)
61   set(HAVE_STRCASECMP 1)
62   set(HAVE_DIRENT_H 1)
63   set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Cocoa")
64endif(APPLE)
65
66if(WIN32)
67   if(MSVC)
68      add_definitions(-DWIN32_LEAN_AND_MEAN)
69      add_definitions(-D_CRT_SECURE_NO_WARNINGS)
70   endif(MSVC)
71   if(CMAKE_C_COMPILER_ID STREQUAL GNU)
72      set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-subsystem,windows")
73   endif(CMAKE_C_COMPILER_ID STREQUAL GNU)
74   if(MINGW AND EXISTS /mingw)
75      list(APPEND CMAKE_PREFIX_PATH /mingw)
76        endif(MINGW AND EXISTS /mingw)
77endif(WIN32)
78
79#######################################################################
80# size of ints
81include(CheckTypeSize)
82
83CHECK_TYPE_SIZE(short SIZEOF_SHORT)
84CHECK_TYPE_SIZE(int   SIZEOF_INT)
85CHECK_TYPE_SIZE(long  SIZEOF_LONG)
86CHECK_TYPE_SIZE("long long"  HAVE_LONG_LONG)
87
88if(${SIZEOF_SHORT} MATCHES "^2$")
89   set(U16 "unsigned short")
90endif(${SIZEOF_SHORT} MATCHES "^2$")
91
92if(${SIZEOF_INT} MATCHES "^4$")
93   set(U32 "unsigned")
94else()
95   if(${SIZEOF_LONG} MATCHES "^4$")
96      set(U32 "unsigned long")
97   endif(${SIZEOF_LONG} MATCHES "^4$")
98endif(${SIZEOF_INT} MATCHES "^4$")
99
100if(${SIZEOF_INT} MATCHES "^8$")
101   set(U64 "unsigned")
102else()
103   if(${SIZEOF_LONG} MATCHES "^8$")
104      set(U64 "unsigned long")
105   endif(${SIZEOF_LONG} MATCHES "^8$")
106endif(${SIZEOF_INT} MATCHES "^8$")
107
108#######################################################################
109# check for headers, libraries and functions
110#######################################################################
111# headers
112find_file(HAVE_ALSA_ASOUNDLIB_H alsa/asoundlib.h)
113find_file(HAVE_DIRENT_H dirent.h)
114find_file(HAVE_DLFCN_H dlfcn.h)
115find_file(HAVE_FREETYPE_H freetype.h PATH_SUFFIXES freetype2)
116find_file(HAVE_GL_GL_H GL/gl.h)
117find_file(HAVE_GL_GLU_H GL/glu.h)
118find_file(HAVE_LIBPNG_PNG_H libpng/png.h)
119find_file(HAVE_LOCALE_H locale.h)
120find_file(HAVE_NDIR_H ndir.h)
121find_file(HAVE_OPENGL_GLU_H OpenGL/glu.h)
122find_file(HAVE_PNG_H png.h)
123find_file(HAVE_PTHREAD_H pthread.h)
124find_file(HAVE_STDIO_H stdio.h)
125find_file(HAVE_STRINGS_H strings.h)
126find_file(HAVE_SYS_DIR_H sys/dir.h)
127find_file(HAVE_SYS_NDIR_H sys/ndir.h)
128find_file(HAVE_SYS_SELECT_H sys/select.h)
129find_file(HAVE_SYS_STDTYPES_H sys/stdtypes.h)
130find_path(HAVE_XDBE_H Xdbe.h PATH_SUFFIXES X11/extensions extensions)
131
132mark_as_advanced(HAVE_ALSA_ASOUNDLIB_H HAVE_DIRENT_H HAVE_DLFCN_H)
133mark_as_advanced(HAVE_FREETYPE_H HAVE_GL_GL_H HAVE_GL_GLU_H)
134mark_as_advanced(HAVE_LIBPNG_PNG_H HAVE_LOCALE_H HAVE_NDIR_H)
135mark_as_advanced(HAVE_OPENGL_GLU_H HAVE_PNG_H HAVE_PTHREAD_H)
136mark_as_advanced(HAVE_STDIO_H HAVE_STRINGS_H HAVE_SYS_DIR_H)
137mark_as_advanced(HAVE_SYS_NDIR_H HAVE_SYS_SELECT_H)
138mark_as_advanced(HAVE_SYS_STDTYPES_H HAVE_XDBE_H)
139
140# where to find freetype headers
141find_path(FREETYPE_PATH freetype/config/ftheader.h PATH_SUFFIXES freetype2)
142if(FREETYPE_PATH)
143   include_directories(${FREETYPE_PATH})
144endif(FREETYPE_PATH)
145mark_as_advanced(FREETYPE_PATH)
146
147#######################################################################
148# libraries
149find_library(LIB_CAIRO cairo)
150find_library(LIB_fontconfig fontconfig)
151find_library(LIB_freetype freetype)
152find_library(LIB_GL GL)
153find_library(LIB_MesaGL MesaGL)
154find_library(LIB_jpeg jpeg)
155find_library(LIB_png png)
156find_library(LIB_zlib z)
157
158mark_as_advanced(LIB_CAIRO LIB_fontconfig LIB_freetype)
159mark_as_advanced(LIB_GL LIB_MesaGL)
160mark_as_advanced(LIB_jpeg LIB_png LIB_zlib)
161
162#######################################################################
163# functions
164include(CheckFunctionExists)
165
166if(HAVE_DLFCN_H)
167   set(CMAKE_REQUIRED_LIBRARIES dl)
168endif(HAVE_DLFCN_H)
169CHECK_FUNCTION_EXISTS(dlsym                  HAVE_DLSYM)
170
171CHECK_FUNCTION_EXISTS(localeconv             HAVE_LOCALECONV)
172
173if(LIB_png)
174   set(CMAKE_REQUIRED_LIBRARIES png)
175endif(LIB_png)
176CHECK_FUNCTION_EXISTS(png_get_valid          HAVE_PNG_GET_VALID)
177CHECK_FUNCTION_EXISTS(png_set_tRNS_to_alpha  HAVE_PNG_SET_TRNS_TO_ALPHA)
178
179CHECK_FUNCTION_EXISTS(scandir                HAVE_SCANDIR)
180CHECK_FUNCTION_EXISTS(snprintf               HAVE_SNPRINTF)
181
182# not really true but we convert strcasecmp calls to _stricmp calls in flstring.h
183if(MSVC)
184   set(HAVE_STRCASECMP 1)
185endif(MSVC)
186CHECK_FUNCTION_EXISTS(strcasecmp             HAVE_STRCASECMP)
187
188CHECK_FUNCTION_EXISTS(strlcat                HAVE_STRLCAT)
189CHECK_FUNCTION_EXISTS(strlcpy                HAVE_STRLCPY)
190CHECK_FUNCTION_EXISTS(strtoll                HAVE_STRTOLL)
191CHECK_FUNCTION_EXISTS(vsnprintf              HAVE_VSNPRINTF)
192
193set(CMAKE_REQUIRED_LIBRARIES)
194
195if(HAVE_SCANDIR AND NOT HAVE_SCANDIR_POSIX)
196   set(MSG "POSIX compatible scandir")
197   message(STATUS "Looking for ${MSG}")
198   try_compile(V
199      ${FLTK_BINARY_DIR}
200      ${FLTK_SOURCE_DIR}/CMake/posixScandir.cxx
201      )
202   if(V)
203      message(STATUS "${MSG} - found")
204      set(HAVE_SCANDIR_POSIX 1 CACHE INTERNAL "")
205   else()
206      message(STATUS "${MSG} - not found")
207      set(HAVE_SCANDIR_POSIX HAVE_SCANDIR_POSIX-NOTFOUND)
208   endif(V)
209endif(HAVE_SCANDIR AND NOT HAVE_SCANDIR_POSIX)
210mark_as_advanced(HAVE_SCANDIR_POSIX)
211
212#######################################################################
213# options
214#######################################################################
215set(OPTION_OPTIM ""
216   CACHE STRING
217   "custom optimization flags"
218   )
219add_definitions(${OPTION_OPTIM})
220
221#######################################################################
222set(OPTION_ARCHFLAGS ""
223   CACHE STRING
224   "custom architecture flags"
225   )
226add_definitions(${OPTION_ARCHFLAGS})
227
228#######################################################################
229set(OPTION_PREFIX_BIN ""
230   CACHE STRING
231   "where to install executables - leave empty to use {CMAKE_INSTALL_PREFIX}/bin"
232   )
233
234if(OPTION_PREFIX_BIN)
235   set(PREFIX_BIN ${OPTION_PREFIX_BIN} CACHE INTERNAL "" FORCE)
236else()
237   set(PREFIX_BIN ${CMAKE_INSTALL_PREFIX}/bin CACHE INTERNAL "" FORCE)
238endif(OPTION_PREFIX_BIN)
239
240#######################################################################
241set(OPTION_PREFIX_LIB ""
242   CACHE STRING
243   "where to install libraries - leave empty to use {CMAKE_INSTALL_PREFIX}/lib"
244   )
245
246if(OPTION_PREFIX_LIB)
247   set(PREFIX_LIB ${OPTION_PREFIX_LIB} CACHE INTERNAL "" FORCE)
248else()
249   set(PREFIX_LIB ${CMAKE_INSTALL_PREFIX}/lib CACHE INTERNAL "" FORCE)
250endif(OPTION_PREFIX_LIB)
251
252#######################################################################
253set(OPTION_PREFIX_INCLUDE ""
254   CACHE STRING
255   "where to install include files - leave empty to use {CMAKE_INSTALL_PREFIX}/include"
256   )
257
258if(OPTION_PREFIX_INCLUDE)
259   set(PREFIX_INCLUDE ${OPTION_PREFIX_INCLUDE} CACHE INTERNAL "" FORCE)
260else()
261   set(PREFIX_INCLUDE ${CMAKE_INSTALL_PREFIX}/include CACHE INTERNAL "" FORCE)
262endif(OPTION_PREFIX_INCLUDE)
263
264#######################################################################
265set(OPTION_PREFIX_DATA ""
266   CACHE STRING
267   "where to install data files - leave empty to use {CMAKE_INSTALL_PREFIX}/share/FLTK"
268   )
269
270if(OPTION_PREFIX_DATA)
271   set(PREFIX_DATA ${OPTION_PREFIX_DATA} CACHE INTERNAL "" FORCE)
272else()
273   set(PREFIX_DATA ${CMAKE_INSTALL_PREFIX}/share/FLTK CACHE INTERNAL "" FORCE)
274endif(OPTION_PREFIX_DATA)
275
276#######################################################################
277set(OPTION_PREFIX_DOC ""
278   CACHE STRING
279   "where to install doc files - leave empty to use {CMAKE_INSTALL_PREFIX}/share/doc/FLTK"
280   )
281
282if(OPTION_PREFIX_DOC)
283   set(PREFIX_DOC ${OPTION_PREFIX_DOC} CACHE INTERNAL "" FORCE)
284else()
285   set(PREFIX_DOC ${CMAKE_INSTALL_PREFIX}/share/doc/FLTK CACHE INTERNAL "" FORCE)
286endif(OPTION_PREFIX_DOC)
287
288#######################################################################
289if(WIN32)
290   set(DEFAULT_CONFIG "${CMAKE_INSTALL_PREFIX}/CMake")
291elseif(APPLE)
292   set(DEFAULT_CONFIG "${CMAKE_INSTALL_PREFIX}/FLTK/.framework/Resources/CMake")
293else()
294   set(DEFAULT_CONFIG "${CMAKE_INSTALL_PREFIX}/lib/FLTK-${FLTK_VERSION}")
295endif(WIN32)
296
297set(OPTION_PREFIX_CONFIG ""
298   CACHE STRING
299   "where to install CMake config files - leave empty to use ${DEFAULT_CONFIG}"
300   )
301
302if(OPTION_PREFIX_CONFIG)
303   set(PREFIX_CONFIG "${OPTION_PREFIX_CONFIG}" CACHE INTERNAL "" FORCE)
304else()
305   set(PREFIX_CONFIG "${DEFAULT_CONFIG}" CACHE INTERNAL "" FORCE)
306endif(OPTION_PREFIX_CONFIG)
307
308#######################################################################
309if(CMAKE_HOST_UNIX)
310   set(OPTION_PREFIX_MAN ""
311      CACHE STRING
312      "where to install man files - leave empty to use {CMAKE_INSTALL_PREFIX}/man"
313      )
314
315   if(OPTION_PREFIX_MAN)
316      set(PREFIX_MAN ${OPTION_PREFIX_MAN} CACHE INTERNAL "" FORCE)
317   else()
318      set(PREFIX_MAN ${CMAKE_INSTALL_PREFIX}/man CACHE INTERNAL "" FORCE)
319   endif(OPTION_PREFIX_MAN)
320
321   option(OPTION_CREATE_LINKS "create backwards compatibility links" OFF)
322endif(CMAKE_HOST_UNIX)
323
324#######################################################################
325if(APPLE)
326   option(OPTION_APPLE_X11 "use X11" OFF)
327endif(APPLE)
328
329if(NOT APPLE OR OPTION_APPLE_X11)
330   include(FindX11)
331   if(X11_FOUND)
332      set(USE_X11 1)
333      list(APPEND FLTK_CFLAGS -DUSE_X11)
334      list(APPEND FLTK_LDLIBS -lX11)
335   endif(X11_FOUND)
336endif(NOT APPLE OR OPTION_APPLE_X11)
337
338#######################################################################
339option(OPTION_USE_POLL "use poll if available" OFF)
340
341if(OPTION_USE_POLL)
342   CHECK_FUNCTION_EXISTS(poll USE_POLL)
343endif(OPTION_USE_POLL)
344
345#######################################################################
346option(OPTION_BUILD_SHARED_LIBS "Build shared libraries" OFF)
347
348#######################################################################
349option(OPTION_BUILD_EXAMPLES "build example programs" ON)
350
351#######################################################################
352include(FindPkgConfig)
353
354option(OPTION_CAIRO "use lib Cairo" OFF)
355option(OPTION_CAIROEXT
356   "use fltk code instrumentation for cairo extended use" OFF
357   )
358
359if(OPTION_CAIRO OR OPTION_CAIROEXT AND LIB_CAIRO)
360   pkg_search_module(PKG_CAIRO cairo)
361endif(OPTION_CAIRO OR OPTION_CAIROEXT AND LIB_CAIRO)
362
363if(PKG_CAIRO_FOUND)
364   set(FLTK_HAVE_CAIRO 1)
365   add_subdirectory(cairo)
366   list(APPEND FLTK_LDLIBS -lcairo -lpixman-1)
367   include_directories(${PKG_CAIRO_INCLUDE_DIRS})
368   string(REPLACE ";" " " CAIROFLAGS "${PKG_CAIRO_CFLAGS}")
369endif(PKG_CAIRO_FOUND)
370
371if(LIB_CAIRO AND OPTION_CAIROEXT AND PKG_CAIRO_FOUND)
372   set(FLTK_USE_CAIRO 1)
373   set(FLTK_CAIRO_FOUND TRUE)
374else()
375   set(FLTK_CAIRO_FOUND FALSE)
376endif(LIB_CAIRO AND OPTION_CAIROEXT AND PKG_CAIRO_FOUND)
377
378#######################################################################
379set(HAVE_GL LIB_GL OR LIB_MesaGL)
380
381if(HAVE_GL)
382   option(OPTION_USE_GL "use OpenGL" ON)
383endif(HAVE_GL)
384
385if(OPTION_USE_GL)
386   include(FindOpenGL)
387endif(OPTION_USE_GL)
388
389if(OPENGL_FOUND)
390   set(CMAKE_REQUIRED_INCLUDES ${OPENGL_INCLUDE_DIR}/GL)
391   set(CMAKE_REQUIRED_LIBRARIES -lGLU -lGL)
392   CHECK_FUNCTION_EXISTS(glXGetProcAddressARB HAVE_GLXGETPROCADDRESSARB)
393   set(FLTK_GL_FOUND TRUE)
394else()
395   set(FLTK_GL_FOUND FALSE)
396endif(OPENGL_FOUND)
397
398#######################################################################
399option(OPTION_USE_THREADS "use multi-threading" ON)
400
401if(OPTION_USE_THREADS)
402   include(FindThreads)
403endif(OPTION_USE_THREADS)
404
405if(OPTION_USE_THREADS AND CMAKE_HAVE_THREADS_LIBRARY)
406   add_definitions("-D_THREAD_SAFE -D_REENTRANT")
407   set(USE_THREADS 1)
408   set(FLTK_THREADS_FOUND TRUE)
409else()
410   set(FLTK_THREADS_FOUND FALSE)
411endif(OPTION_USE_THREADS AND CMAKE_HAVE_THREADS_LIBRARY)
412
413if(OPTION_USE_THREADS AND CMAKE_USE_PTHREADS_INIT)
414   set(HAVE_PTHREAD 1)
415   list(APPEND FLTK_LDLIBS -lpthread)
416   list(APPEND FLTK_CFLAGS -D_THREAD_SAFE -D_REENTRANT)
417   set(FLTK_PTHREADS_FOUND TRUE)
418else()
419   set(HAVE_PTHREAD 0)
420   set(HAVE_PTHREAD_H 0)
421   set(FLTK_PTHREADS_FOUND FALSE)
422endif(OPTION_USE_THREADS AND CMAKE_USE_PTHREADS_INIT)
423
424#######################################################################
425option(OPTION_LARGE_FILE "enable large file support" ON)
426
427if(OPTION_LARGE_FILE)
428   if(NOT MSVC)
429      add_definitions(-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE)
430      list(APPEND FLTK_CFLAGS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE)
431   endif(NOT MSVC)
432endif(OPTION_LARGE_FILE)
433
434#######################################################################
435option(OPTION_USE_SYSTEM_LIBJPEG "Use's system libjpeg" ON)
436
437if(OPTION_USE_SYSTEM_LIBJPEG AND LIB_jpeg)
438   include(FindJPEG)
439endif(OPTION_USE_SYSTEM_LIBJPEG AND LIB_jpeg)
440
441if(OPTION_USE_SYSTEM_LIBJPEG AND JPEG_FOUND)
442   set(FLTK_JPEG_LIBRARIES ${JPEG_LIBRARIES})
443   include_directories(${JPEG_INCLUDE_DIR})
444   set(FLTK_BUILTIN_JPEG_FOUND FALSE)
445else()
446   add_subdirectory(jpeg)
447   set(FLTK_JPEG_LIBRARIES fltk_jpeg)
448   include_directories(${FLTK_SOURCE_DIR}/jpeg)
449   set(FLTK_BUILTIN_JPEG_FOUND TRUE)
450endif(OPTION_USE_SYSTEM_LIBJPEG AND JPEG_FOUND)
451
452if(OPTION_USE_SYSTEM_LIBJPEG AND NOT JPEG_FOUND)
453   message(STATUS "\ncannot find system jpeg library - using built-in\n")
454endif(OPTION_USE_SYSTEM_LIBJPEG AND NOT JPEG_FOUND)
455
456set(HAVE_LIBJPEG 1)
457
458#######################################################################
459option(OPTION_USE_SYSTEM_ZLIB "Use's system zlib" ON)
460
461if(OPTION_USE_SYSTEM_ZLIB AND LIB_zlib)
462   include(FindZLIB)
463endif(OPTION_USE_SYSTEM_ZLIB AND LIB_zlib)
464
465if(OPTION_USE_SYSTEM_ZLIB AND ZLIB_FOUND)
466   set(FLTK_ZLIB_LIBRARIES ${ZLIB_LIBRARIES})
467   include_directories(${ZLIB_INCLUDE_DIRS})
468   set(FLTK_BUILTIN_ZLIB_FOUND FALSE)
469else()
470   add_subdirectory(zlib)
471   set(FLTK_ZLIB_LIBRARIES fltk_z)
472   set(ZLIB_INCLUDE_DIR ${FLTK_SOURCE_DIR}/zlib)
473   include_directories(${FLTK_SOURCE_DIR}/zlib)
474   set(FLTK_BUILTIN_ZLIB_FOUND TRUE)
475endif(OPTION_USE_SYSTEM_ZLIB AND ZLIB_FOUND)
476
477if(OPTION_USE_SYSTEM_ZLIB AND NOT ZLIB_FOUND)
478   message(STATUS "\ncannot find system zlib library - using built-in\n")
479endif(OPTION_USE_SYSTEM_ZLIB AND NOT ZLIB_FOUND)
480
481set(HAVE_LIBZ 1)
482
483#######################################################################
484option(OPTION_USE_SYSTEM_LIBPNG "Use's system libpng" ON)
485
486if(OPTION_USE_SYSTEM_LIBPNG AND LIB_png)
487   include(FindPNG)
488endif(OPTION_USE_SYSTEM_LIBPNG AND LIB_png)
489
490if(OPTION_USE_SYSTEM_LIBPNG AND PNG_FOUND)
491   set(FLTK_PNG_LIBRARIES ${PNG_LIBRARIES})
492   include_directories(${PNG_INCLUDE_DIR})
493   add_definitions(${PNG_DEFINITIONS})
494   set(FLTK_BUILTIN_PNG_FOUND FALSE)
495else()
496   add_subdirectory(png)
497   set(FLTK_PNG_LIBRARIES fltk_png)
498   set(HAVE_PNG_H 1)
499   set(HAVE_PNG_GET_VALID 1)
500   set(HAVE_PNG_SET_TRNS_TO_ALPHA 1)
501   include_directories(${FLTK_SOURCE_DIR}/png)
502   set(FLTK_BUILTIN_PNG_FOUND TRUE)
503endif(OPTION_USE_SYSTEM_LIBPNG AND PNG_FOUND)
504
505if(OPTION_USE_SYSTEM_LIBPNG AND NOT PNG_FOUND)
506   message(STATUS "\ncannot find system png library - using built-in\n")
507endif(OPTION_USE_SYSTEM_LIBPNG AND NOT PNG_FOUND)
508
509set(HAVE_LIBPNG 1)
510
511#######################################################################
512if(X11_Xinerama_FOUND)
513   option(OPTION_USE_XINERAMA "use lib Xinerama" ON)
514endif(X11_Xinerama_FOUND)
515
516if(OPTION_USE_XINERAMA)
517   set(HAVE_XINERAMA ${X11_Xinerama_FOUND})
518   include_directories(${X11_Xinerama_INCLUDE_PATH})
519   list(APPEND FLTK_LDLIBS -lXinerama)
520   set(FLTK_XINERAMA_FOUND TRUE)
521else()
522   set(FLTK_XINERAMA_FOUND FALSE)
523endif(OPTION_USE_XINERAMA)
524
525#######################################################################
526if(X11_Xft_FOUND)
527   option(OPTION_USE_XFT "use lib Xft" ON)
528endif(X11_Xft_FOUND)
529
530if(OPTION_USE_XFT)
531   set(USE_XFT X11_Xft_FOUND)
532   list(APPEND FLTK_LDLIBS -lXft)
533   set(FLTK_XFT_FOUND TRUE)
534else()
535   set(FLTK_XFT_FOUND FALSE)
536endif(OPTION_USE_XFT)
537
538#######################################################################
539if(X11_FOUND)
540   option(OPTION_USE_XDBE "use lib Xdbe" ON)
541endif(X11_FOUND)
542
543if(OPTION_USE_XDBE AND HAVE_XDBE_H)
544   set(HAVE_XDBE 1)
545   set(FLTK_XDBE_FOUND TRUE)
546else()
547   set(FLTK_XDBE_FOUND FALSE)
548endif(OPTION_USE_XDBE AND HAVE_XDBE_H)
549
550#######################################################################
551# final setup and config
552#######################################################################
553# Set the fluid executable path
554if(CMAKE_CROSSCOMPILING)
555   find_file(FLUID_PATH
556      NAMES fluid fluid.exe
557      PATHS ENV PATH
558      NO_CMAKE_FIND_ROOT_PATH
559   )
560   add_executable(fluid IMPORTED)
561   set(FLTK_FLUID_EXECUTABLE ${FLUID_PATH})
562   set(FLTK_FLUID_PATH ${FLUID_PATH})
563   set_target_properties(fluid
564      PROPERTIES IMPORTED_LOCATION ${FLUID_PATH}
565   )
566else()
567   add_subdirectory(fluid)
568   set(FLTK_FLUID_EXECUTABLE fluid)
569   set(FLTK_FLUID_PATH ${PREFIX_BIN}/fluid)
570endif(CMAKE_CROSSCOMPILING)
571
572add_subdirectory(src)
573
574# generate FLTKConfig.cmake
575string(REPLACE ";" " " EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}")
576configure_file(
577   ${FLTK_SOURCE_DIR}/CMake/FLTKConfig.cmake.in
578   ${EXECUTABLE_OUTPUT_PATH}/FLTKConfig.cmake
579   @ONLY
580)
581
582# generate UseFLTK.cmake
583configure_file(
584   ${FLTK_SOURCE_DIR}/CMake/UseFLTK.cmake.in
585   ${EXECUTABLE_OUTPUT_PATH}/UseFLTK.cmake
586   @ONLY
587)
588
589# generate config.h
590configure_file(
591   "${FLTK_SOURCE_DIR}/configh.cmake.in"
592   "${FLTK_BINARY_DIR}/config.h"
593   @ONLY
594)
595
596# generate fltk-config
597get_filename_component(CC ${CMAKE_C_COMPILER} NAME)
598get_filename_component(CXX ${CMAKE_CXX_COMPILER} NAME)
599
600string(REPLACE ";" " " C_FLAGS "${FLTK_CFLAGS}")
601
602if(X11_Xext_FOUND)
603   list(APPEND FLTK_LDLIBS -lXext)
604endif(X11_Xext_FOUND)
605string(REPLACE ";" " " LD_LIBS "${FLTK_LDLIBS}")
606
607configure_file(
608   "${FLTK_SOURCE_DIR}/fltk-config.cmake.in"
609   "${FLTK_BINARY_DIR}/fltk-config"
610   @ONLY
611)
612if(UNIX)
613   execute_process(COMMAND chmod 755 fltk-config
614      WORKING_DIRECTORY "${FLTK_BINARY_DIR}"
615   )
616endif(UNIX)
617
618if(OPTION_CREATE_LINKS)
619   configure_file(
620      "${FLTK_SOURCE_DIR}/CMake/install-symlinks.cmake.in"
621      "${FLTK_BINARY_DIR}/install-symlinks.cmake"
622      @ONLY
623   )
624endif(OPTION_CREATE_LINKS)
625
626# generate uninstall target
627configure_file(
628  "${CMAKE_CURRENT_SOURCE_DIR}/CMake/cmake_uninstall.cmake.in"
629  "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
630  @ONLY
631)
632add_custom_target(uninstall
633  "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
634)
635
636#######################################################################
637# build examples - these have to be after fluid is built/imported
638#######################################################################
639if(OPTION_BUILD_EXAMPLES)
640   add_subdirectory(test)
641endif(OPTION_BUILD_EXAMPLES)
642
643#######################################################################
644# installation
645#######################################################################
646
647install(DIRECTORY ${FLTK_SOURCE_DIR}/FL
648   DESTINATION ${PREFIX_INCLUDE} USE_SOURCE_PERMISSIONS
649   PATTERN ".svn" EXCLUDE
650)
651
652if(OPTION_CREATE_LINKS)
653   install(SCRIPT ${FLTK_BINARY_DIR}/install-symlinks.cmake)
654endif(OPTION_CREATE_LINKS)
655
656install(PROGRAMS ${FLTK_BINARY_DIR}/fltk-config
657   DESTINATION ${PREFIX_BIN}
658   OPTIONAL
659)
660
661install(EXPORT fltk-install
662   DESTINATION ${PREFIX_CONFIG}
663   FILE FLTKLibraries.cmake
664)
665
666install(FILES ${EXECUTABLE_OUTPUT_PATH}/FLTKConfig.cmake
667   DESTINATION ${PREFIX_CONFIG}
668)
669
670install(FILES ${EXECUTABLE_OUTPUT_PATH}/UseFLTK.cmake
671   DESTINATION ${PREFIX_CONFIG}
672)
673
674if(CMAKE_HOST_UNIX)
675   macro(INSTALL_MAN FILE LEVEL)
676   install(FILES
677      ${FLTK_SOURCE_DIR}/documentation/src/${FILE}.man
678      DESTINATION ${PREFIX_MAN}/man${LEVEL}
679      RENAME ${FILE}.${LEVEL}
680   )
681   endmacro(INSTALL_MAN FILE LEVEL)
682
683   INSTALL_MAN(fluid 1)
684   INSTALL_MAN(fltk-config 1)
685   INSTALL_MAN(fltk 3)
686   INSTALL_MAN(blocks 6)
687   INSTALL_MAN(checkers 6)
688   INSTALL_MAN(sudoku 6)
689
690endif(CMAKE_HOST_UNIX)
691
Note: See TracBrowser for help on using the repository browser.