diff options
| author | Albrecht Schlosser <albrechts.fltk@online.de> | 2014-02-09 18:41:29 +0000 |
|---|---|---|
| committer | Albrecht Schlosser <albrechts.fltk@online.de> | 2014-02-09 18:41:29 +0000 |
| commit | f35274095392e82e5d20459f100bb6ba268cc6d7 (patch) | |
| tree | c0d7b0fdce376cc708f2707874520c99dd9f41fd /CMake | |
| parent | 98695591f4aa3b0a19e271b7de54041d507ddc1b (diff) | |
Split CMake files for better maintenance, as discussed in fltk.general.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@10098 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'CMake')
| -rw-r--r-- | CMake/export.cmake | 95 | ||||
| -rw-r--r-- | CMake/install.cmake | 77 | ||||
| -rw-r--r-- | CMake/options.cmake | 371 | ||||
| -rw-r--r-- | CMake/resources.cmake | 124 | ||||
| -rw-r--r-- | CMake/setup.cmake | 99 |
5 files changed, 766 insertions, 0 deletions
diff --git a/CMake/export.cmake b/CMake/export.cmake new file mode 100644 index 000000000..50aa79556 --- /dev/null +++ b/CMake/export.cmake @@ -0,0 +1,95 @@ +# +# "$Id: CMakeLists.txt 10092 2014-02-02 00:49:50Z AlbrechtS $" +# +# Main CMakeLists.txt to build the FLTK project using CMake (www.cmake.org) +# Written by Michael Surette +# +# Copyright 1998-2010 by Bill Spitzak and others. +# +# This library is free software. Distribution and use rights are outlined in +# the file "COPYING" which should have been included with this file. If this +# file is missing or damaged, see the license at: +# +# http://www.fltk.org/COPYING.php +# +# Please report all bugs and problems on the following page: +# +# http://www.fltk.org/str.php +# + +####################################################################### +# final config and export +####################################################################### +# Set the fluid executable path +if(CMAKE_CROSSCOMPILING) + find_file(FLUID_PATH + NAMES fluid fluid.exe + PATHS ENV PATH + NO_CMAKE_FIND_ROOT_PATH + ) + add_executable(fluid IMPORTED) + set(FLTK_FLUID_EXECUTABLE ${FLUID_PATH}) + set(FLTK_FLUID_PATH ${FLUID_PATH}) + set_target_properties(fluid + PROPERTIES IMPORTED_LOCATION ${FLUID_PATH} + ) +else() + add_subdirectory(fluid) + set(FLTK_FLUID_EXECUTABLE fluid) + set(FLTK_FLUID_PATH ${PREFIX_BIN}/fluid) +endif(CMAKE_CROSSCOMPILING) + +add_subdirectory(src) + +# generate FLTKConfig.cmake +string(REPLACE ";" " " EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}") +configure_file( + ${FLTK_SOURCE_DIR}/CMake/FLTKConfig.cmake.in + ${EXECUTABLE_OUTPUT_PATH}/FLTKConfig.cmake + @ONLY +) + +# generate UseFLTK.cmake +configure_file( + ${FLTK_SOURCE_DIR}/CMake/UseFLTK.cmake.in + ${EXECUTABLE_OUTPUT_PATH}/UseFLTK.cmake + @ONLY +) + +# generate config.h +configure_file( + "${FLTK_SOURCE_DIR}/configh.cmake.in" + "${FLTK_BINARY_DIR}/config.h" + @ONLY +) + +# generate fltk-config +get_filename_component(CC ${CMAKE_C_COMPILER} NAME) +get_filename_component(CXX ${CMAKE_CXX_COMPILER} NAME) + +string(REPLACE ";" " " C_FLAGS "${FLTK_CFLAGS}") + +if(X11_Xext_FOUND) + list(APPEND FLTK_LDLIBS -lXext) +endif(X11_Xext_FOUND) +string(REPLACE ";" " " LD_LIBS "${FLTK_LDLIBS}") + +configure_file( + "${FLTK_SOURCE_DIR}/fltk-config.cmake.in" + "${FLTK_BINARY_DIR}/fltk-config" + @ONLY +) +if(UNIX) + execute_process(COMMAND chmod 755 fltk-config + WORKING_DIRECTORY "${FLTK_BINARY_DIR}" + ) +endif(UNIX) + +if(OPTION_CREATE_LINKS) + configure_file( + "${FLTK_SOURCE_DIR}/CMake/install-symlinks.cmake.in" + "${FLTK_BINARY_DIR}/install-symlinks.cmake" + @ONLY + ) +endif(OPTION_CREATE_LINKS) +# diff --git a/CMake/install.cmake b/CMake/install.cmake new file mode 100644 index 000000000..e8684906d --- /dev/null +++ b/CMake/install.cmake @@ -0,0 +1,77 @@ +# +# "$Id: CMakeLists.txt 10092 2014-02-02 00:49:50Z AlbrechtS $" +# +# Main CMakeLists.txt to build the FLTK project using CMake (www.cmake.org) +# Written by Michael Surette +# +# Copyright 1998-2010 by Bill Spitzak and others. +# +# This library is free software. Distribution and use rights are outlined in +# the file "COPYING" which should have been included with this file. If this +# file is missing or damaged, see the license at: +# +# http://www.fltk.org/COPYING.php +# +# Please report all bugs and problems on the following page: +# +# http://www.fltk.org/str.php +# + +####################################################################### +# installation +####################################################################### + +# generate uninstall target +configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/CMake/cmake_uninstall.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" + @ONLY +) +add_custom_target(uninstall + "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" +) + +install(DIRECTORY ${FLTK_SOURCE_DIR}/FL + DESTINATION ${PREFIX_INCLUDE} USE_SOURCE_PERMISSIONS + PATTERN ".svn" EXCLUDE +) + +if(OPTION_CREATE_LINKS) + install(SCRIPT ${FLTK_BINARY_DIR}/install-symlinks.cmake) +endif(OPTION_CREATE_LINKS) + +install(PROGRAMS ${FLTK_BINARY_DIR}/fltk-config + DESTINATION ${PREFIX_BIN} + OPTIONAL +) + +install(EXPORT fltk-install + DESTINATION ${PREFIX_CONFIG} + FILE FLTKLibraries.cmake +) + +install(FILES ${EXECUTABLE_OUTPUT_PATH}/FLTKConfig.cmake + DESTINATION ${PREFIX_CONFIG} +) + +install(FILES ${EXECUTABLE_OUTPUT_PATH}/UseFLTK.cmake + DESTINATION ${PREFIX_CONFIG} +) + +if(CMAKE_HOST_UNIX) + macro(INSTALL_MAN FILE LEVEL) + install(FILES + ${FLTK_SOURCE_DIR}/documentation/src/${FILE}.man + DESTINATION ${PREFIX_MAN}/man${LEVEL} + RENAME ${FILE}.${LEVEL} + ) + endmacro(INSTALL_MAN FILE LEVEL) + + INSTALL_MAN(fluid 1) + INSTALL_MAN(fltk-config 1) + INSTALL_MAN(fltk 3) + INSTALL_MAN(blocks 6) + INSTALL_MAN(checkers 6) + INSTALL_MAN(sudoku 6) + +endif(CMAKE_HOST_UNIX) diff --git a/CMake/options.cmake b/CMake/options.cmake new file mode 100644 index 000000000..784fc604b --- /dev/null +++ b/CMake/options.cmake @@ -0,0 +1,371 @@ +# +# "$Id: CMakeLists.txt 10092 2014-02-02 00:49:50Z AlbrechtS $" +# +# Main CMakeLists.txt to build the FLTK project using CMake (www.cmake.org) +# Written by Michael Surette +# +# Copyright 1998-2010 by Bill Spitzak and others. +# +# This library is free software. Distribution and use rights are outlined in +# the file "COPYING" which should have been included with this file. If this +# file is missing or damaged, see the license at: +# +# http://www.fltk.org/COPYING.php +# +# Please report all bugs and problems on the following page: +# +# http://www.fltk.org/str.php +# + +####################################################################### +# options +####################################################################### +set(OPTION_OPTIM "" + CACHE STRING + "custom optimization flags" + ) +add_definitions(${OPTION_OPTIM}) + +####################################################################### +set(OPTION_ARCHFLAGS "" + CACHE STRING + "custom architecture flags" + ) +add_definitions(${OPTION_ARCHFLAGS}) + +####################################################################### +set(OPTION_PREFIX_BIN "" + CACHE STRING + "where to install executables - leave empty to use {CMAKE_INSTALL_PREFIX}/bin" + ) + +if(OPTION_PREFIX_BIN) + set(PREFIX_BIN ${OPTION_PREFIX_BIN} CACHE INTERNAL "" FORCE) +else() + set(PREFIX_BIN ${CMAKE_INSTALL_PREFIX}/bin CACHE INTERNAL "" FORCE) +endif(OPTION_PREFIX_BIN) + +####################################################################### +set(OPTION_PREFIX_LIB "" + CACHE STRING + "where to install libraries - leave empty to use {CMAKE_INSTALL_PREFIX}/lib" + ) + +if(OPTION_PREFIX_LIB) + set(PREFIX_LIB ${OPTION_PREFIX_LIB} CACHE INTERNAL "" FORCE) +else() + set(PREFIX_LIB ${CMAKE_INSTALL_PREFIX}/lib CACHE INTERNAL "" FORCE) +endif(OPTION_PREFIX_LIB) + +####################################################################### +set(OPTION_PREFIX_INCLUDE "" + CACHE STRING + "where to install include files - leave empty to use {CMAKE_INSTALL_PREFIX}/include" + ) + +if(OPTION_PREFIX_INCLUDE) + set(PREFIX_INCLUDE ${OPTION_PREFIX_INCLUDE} CACHE INTERNAL "" FORCE) +else() + set(PREFIX_INCLUDE ${CMAKE_INSTALL_PREFIX}/include CACHE INTERNAL "" FORCE) +endif(OPTION_PREFIX_INCLUDE) + +####################################################################### +set(OPTION_PREFIX_DATA "" + CACHE STRING + "where to install data files - leave empty to use {CMAKE_INSTALL_PREFIX}/share/FLTK" + ) + +if(OPTION_PREFIX_DATA) + set(PREFIX_DATA ${OPTION_PREFIX_DATA} CACHE INTERNAL "" FORCE) +else() + set(PREFIX_DATA ${CMAKE_INSTALL_PREFIX}/share/FLTK CACHE INTERNAL "" FORCE) +endif(OPTION_PREFIX_DATA) + +####################################################################### +set(OPTION_PREFIX_DOC "" + CACHE STRING + "where to install doc files - leave empty to use {CMAKE_INSTALL_PREFIX}/share/doc/FLTK" + ) + +if(OPTION_PREFIX_DOC) + set(PREFIX_DOC ${OPTION_PREFIX_DOC} CACHE INTERNAL "" FORCE) +else() + set(PREFIX_DOC ${CMAKE_INSTALL_PREFIX}/share/doc/FLTK CACHE INTERNAL "" FORCE) +endif(OPTION_PREFIX_DOC) + +####################################################################### +if(WIN32) + set(DEFAULT_CONFIG "${CMAKE_INSTALL_PREFIX}/CMake") +elseif(APPLE) + set(DEFAULT_CONFIG "${CMAKE_INSTALL_PREFIX}/FLTK/.framework/Resources/CMake") +else() + set(DEFAULT_CONFIG "${CMAKE_INSTALL_PREFIX}/lib/FLTK-${FLTK_VERSION}") +endif(WIN32) + +set(OPTION_PREFIX_CONFIG "" + CACHE STRING + "where to install CMake config files - leave empty to use ${DEFAULT_CONFIG}" + ) + +if(OPTION_PREFIX_CONFIG) + set(PREFIX_CONFIG "${OPTION_PREFIX_CONFIG}" CACHE INTERNAL "" FORCE) +else() + set(PREFIX_CONFIG "${DEFAULT_CONFIG}" CACHE INTERNAL "" FORCE) +endif(OPTION_PREFIX_CONFIG) + +####################################################################### +if(CMAKE_HOST_UNIX) + set(OPTION_PREFIX_MAN "" + CACHE STRING + "where to install man files - leave empty to use {CMAKE_INSTALL_PREFIX}/man" + ) + + if(OPTION_PREFIX_MAN) + set(PREFIX_MAN ${OPTION_PREFIX_MAN} CACHE INTERNAL "" FORCE) + else() + set(PREFIX_MAN ${CMAKE_INSTALL_PREFIX}/man CACHE INTERNAL "" FORCE) + endif(OPTION_PREFIX_MAN) + + option(OPTION_CREATE_LINKS "create backwards compatibility links" OFF) +endif(CMAKE_HOST_UNIX) + +####################################################################### +if(APPLE) + option(OPTION_APPLE_X11 "use X11" OFF) +endif(APPLE) + +if(NOT APPLE OR OPTION_APPLE_X11) + include(FindX11) + if(X11_FOUND) + set(USE_X11 1) + list(APPEND FLTK_CFLAGS -DUSE_X11) + list(APPEND FLTK_LDLIBS -lX11) + endif(X11_FOUND) +endif(NOT APPLE OR OPTION_APPLE_X11) + +####################################################################### +option(OPTION_USE_POLL "use poll if available" OFF) + +if(OPTION_USE_POLL) + CHECK_FUNCTION_EXISTS(poll USE_POLL) +endif(OPTION_USE_POLL) + +####################################################################### +option(OPTION_BUILD_SHARED_LIBS "Build shared libraries" OFF) + +####################################################################### +option(OPTION_BUILD_EXAMPLES "build example programs" ON) + +####################################################################### +include(FindPkgConfig) + +option(OPTION_CAIRO "use lib Cairo" OFF) +option(OPTION_CAIROEXT + "use fltk code instrumentation for cairo extended use" OFF + ) + +if(OPTION_CAIRO OR OPTION_CAIROEXT AND LIB_CAIRO) + pkg_search_module(PKG_CAIRO cairo) +endif(OPTION_CAIRO OR OPTION_CAIROEXT AND LIB_CAIRO) + +if(PKG_CAIRO_FOUND) + set(FLTK_HAVE_CAIRO 1) + add_subdirectory(cairo) + list(APPEND FLTK_LDLIBS -lcairo -lpixman-1) + include_directories(${PKG_CAIRO_INCLUDE_DIRS}) + string(REPLACE ";" " " CAIROFLAGS "${PKG_CAIRO_CFLAGS}") +endif(PKG_CAIRO_FOUND) + +if(LIB_CAIRO AND OPTION_CAIROEXT AND PKG_CAIRO_FOUND) + set(FLTK_USE_CAIRO 1) + set(FLTK_CAIRO_FOUND TRUE) +else() + set(FLTK_CAIRO_FOUND FALSE) +endif(LIB_CAIRO AND OPTION_CAIROEXT AND PKG_CAIRO_FOUND) + +####################################################################### +set(HAVE_GL LIB_GL OR LIB_MesaGL) + +if(HAVE_GL) + option(OPTION_USE_GL "use OpenGL" ON) +endif(HAVE_GL) + +if(OPTION_USE_GL) + include(FindOpenGL) +endif(OPTION_USE_GL) + +if(OPENGL_FOUND) + set(CMAKE_REQUIRED_INCLUDES ${OPENGL_INCLUDE_DIR}/GL) + set(CMAKE_REQUIRED_LIBRARIES -lGLU -lGL) + CHECK_FUNCTION_EXISTS(glXGetProcAddressARB HAVE_GLXGETPROCADDRESSARB) + set(FLTK_GL_FOUND TRUE) +else() + set(FLTK_GL_FOUND FALSE) +endif(OPENGL_FOUND) + +####################################################################### +option(OPTION_USE_THREADS "use multi-threading" ON) + +if(OPTION_USE_THREADS) + include(FindThreads) +endif(OPTION_USE_THREADS) + +if(OPTION_USE_THREADS AND CMAKE_HAVE_THREADS_LIBRARY) + add_definitions("-D_THREAD_SAFE -D_REENTRANT") + set(USE_THREADS 1) + set(FLTK_THREADS_FOUND TRUE) +else() + set(FLTK_THREADS_FOUND FALSE) +endif(OPTION_USE_THREADS AND CMAKE_HAVE_THREADS_LIBRARY) + +if(OPTION_USE_THREADS AND CMAKE_USE_PTHREADS_INIT) + set(HAVE_PTHREAD 1) + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pthread") + list(APPEND FLTK_LDLIBS -lpthread) + list(APPEND FLTK_CFLAGS -D_THREAD_SAFE -D_REENTRANT) + set(FLTK_PTHREADS_FOUND TRUE) +else() + set(HAVE_PTHREAD 0) + set(HAVE_PTHREAD_H 0) + set(FLTK_PTHREADS_FOUND FALSE) +endif(OPTION_USE_THREADS AND CMAKE_USE_PTHREADS_INIT) + +####################################################################### +option(OPTION_LARGE_FILE "enable large file support" ON) + +if(OPTION_LARGE_FILE) + if(NOT MSVC) + add_definitions(-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE) + list(APPEND FLTK_CFLAGS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE) + endif(NOT MSVC) +endif(OPTION_LARGE_FILE) + +####################################################################### +option(OPTION_USE_SYSTEM_LIBJPEG "Use's system libjpeg" ON) + +if(OPTION_USE_SYSTEM_LIBJPEG AND LIB_jpeg) + include(FindJPEG) +endif(OPTION_USE_SYSTEM_LIBJPEG AND LIB_jpeg) + +if(OPTION_USE_SYSTEM_LIBJPEG AND JPEG_FOUND) + set(FLTK_JPEG_LIBRARIES ${JPEG_LIBRARIES}) + include_directories(${JPEG_INCLUDE_DIR}) + set(FLTK_BUILTIN_JPEG_FOUND FALSE) +else() + add_subdirectory(jpeg) + set(FLTK_JPEG_LIBRARIES fltk_jpeg) + include_directories(${FLTK_SOURCE_DIR}/jpeg) + set(FLTK_BUILTIN_JPEG_FOUND TRUE) +endif(OPTION_USE_SYSTEM_LIBJPEG AND JPEG_FOUND) + +if(OPTION_USE_SYSTEM_LIBJPEG AND NOT JPEG_FOUND) + message(STATUS "\ncannot find system jpeg library - using built-in\n") +endif(OPTION_USE_SYSTEM_LIBJPEG AND NOT JPEG_FOUND) + +set(HAVE_LIBJPEG 1) + +####################################################################### +option(OPTION_USE_SYSTEM_ZLIB "Use's system zlib" ON) + +if(OPTION_USE_SYSTEM_ZLIB AND LIB_zlib) + include(FindZLIB) +endif(OPTION_USE_SYSTEM_ZLIB AND LIB_zlib) + +if(OPTION_USE_SYSTEM_ZLIB AND ZLIB_FOUND) + set(FLTK_ZLIB_LIBRARIES ${ZLIB_LIBRARIES}) + include_directories(${ZLIB_INCLUDE_DIRS}) + set(FLTK_BUILTIN_ZLIB_FOUND FALSE) +else() + add_subdirectory(zlib) + set(FLTK_ZLIB_LIBRARIES fltk_z) + set(ZLIB_INCLUDE_DIR ${FLTK_SOURCE_DIR}/zlib) + include_directories(${FLTK_SOURCE_DIR}/zlib) + set(FLTK_BUILTIN_ZLIB_FOUND TRUE) +endif(OPTION_USE_SYSTEM_ZLIB AND ZLIB_FOUND) + +if(OPTION_USE_SYSTEM_ZLIB AND NOT ZLIB_FOUND) + message(STATUS "\ncannot find system zlib library - using built-in\n") +endif(OPTION_USE_SYSTEM_ZLIB AND NOT ZLIB_FOUND) + +set(HAVE_LIBZ 1) + +####################################################################### +option(OPTION_USE_SYSTEM_LIBPNG "Use's system libpng" ON) + +if(OPTION_USE_SYSTEM_LIBPNG AND LIB_png) + include(FindPNG) +endif(OPTION_USE_SYSTEM_LIBPNG AND LIB_png) + +if(OPTION_USE_SYSTEM_LIBPNG AND PNG_FOUND) + set(FLTK_PNG_LIBRARIES ${PNG_LIBRARIES}) + include_directories(${PNG_INCLUDE_DIR}) + add_definitions(${PNG_DEFINITIONS}) + set(FLTK_BUILTIN_PNG_FOUND FALSE) +else() + add_subdirectory(png) + set(FLTK_PNG_LIBRARIES fltk_png) + set(HAVE_PNG_H 1) + set(HAVE_PNG_GET_VALID 1) + set(HAVE_PNG_SET_TRNS_TO_ALPHA 1) + include_directories(${FLTK_SOURCE_DIR}/png) + set(FLTK_BUILTIN_PNG_FOUND TRUE) +endif(OPTION_USE_SYSTEM_LIBPNG AND PNG_FOUND) + +if(OPTION_USE_SYSTEM_LIBPNG AND NOT PNG_FOUND) + message(STATUS "\ncannot find system png library - using built-in\n") +endif(OPTION_USE_SYSTEM_LIBPNG AND NOT PNG_FOUND) + +set(HAVE_LIBPNG 1) + +####################################################################### +if(X11_Xinerama_FOUND) + option(OPTION_USE_XINERAMA "use lib Xinerama" ON) +endif(X11_Xinerama_FOUND) + +if(OPTION_USE_XINERAMA) + set(HAVE_XINERAMA ${X11_Xinerama_FOUND}) + include_directories(${X11_Xinerama_INCLUDE_PATH}) + list(APPEND FLTK_LDLIBS -lXinerama) + set(FLTK_XINERAMA_FOUND TRUE) +else() + set(FLTK_XINERAMA_FOUND FALSE) +endif(OPTION_USE_XINERAMA) + +####################################################################### +if(X11_Xfixes_FOUND) + option(OPTION_USE_XFIXES "use lib XFIXES" ON) +endif(X11_Xfixes_FOUND) + +if(OPTION_USE_XFIXES) + set(HAVE_XFIXES ${X11_Xfixes_FOUND}) + include_directories(${X11_Xfixes_INCLUDE_PATH}) + list(APPEND FLTK_LDLIBS -lXfixes) + set(FLTK_XFIXES_FOUND TRUE) +else() + set(FLTK_XFIXES_FOUND FALSE) +endif(OPTION_USE_XFIXES) + +####################################################################### +if(X11_Xft_FOUND) + option(OPTION_USE_XFT "use lib Xft" ON) +endif(X11_Xft_FOUND) + +if(OPTION_USE_XFT) + set(USE_XFT X11_Xft_FOUND) + list(APPEND FLTK_LDLIBS -lXft) + set(FLTK_XFT_FOUND TRUE) +else() + set(FLTK_XFT_FOUND FALSE) +endif(OPTION_USE_XFT) + +####################################################################### +if(X11_FOUND) + option(OPTION_USE_XDBE "use lib Xdbe" ON) +endif(X11_FOUND) + +if(OPTION_USE_XDBE AND HAVE_XDBE_H) + set(HAVE_XDBE 1) + set(FLTK_XDBE_FOUND TRUE) +else() + set(FLTK_XDBE_FOUND FALSE) +endif(OPTION_USE_XDBE AND HAVE_XDBE_H) diff --git a/CMake/resources.cmake b/CMake/resources.cmake new file mode 100644 index 000000000..dbd19f8d0 --- /dev/null +++ b/CMake/resources.cmake @@ -0,0 +1,124 @@ +# +# "$Id: CMakeLists.txt 10092 2014-02-02 00:49:50Z AlbrechtS $" +# +# Main CMakeLists.txt to build the FLTK project using CMake (www.cmake.org) +# Written by Michael Surette +# +# Copyright 1998-2010 by Bill Spitzak and others. +# +# This library is free software. Distribution and use rights are outlined in +# the file "COPYING" which should have been included with this file. If this +# file is missing or damaged, see the license at: +# +# http://www.fltk.org/COPYING.php +# +# Please report all bugs and problems on the following page: +# +# http://www.fltk.org/str.php +# + +####################################################################### +# check for headers, libraries and functions +####################################################################### +# headers +find_file(HAVE_ALSA_ASOUNDLIB_H alsa/asoundlib.h) +find_file(HAVE_DIRENT_H dirent.h) +find_file(HAVE_DLFCN_H dlfcn.h) +find_file(HAVE_FREETYPE_H freetype.h PATH_SUFFIXES freetype2) +find_file(HAVE_GL_GL_H GL/gl.h) +find_file(HAVE_GL_GLU_H GL/glu.h) +find_file(HAVE_LIBPNG_PNG_H libpng/png.h) +find_file(HAVE_LOCALE_H locale.h) +find_file(HAVE_NDIR_H ndir.h) +find_file(HAVE_OPENGL_GLU_H OpenGL/glu.h) +find_file(HAVE_PNG_H png.h) +find_file(HAVE_PTHREAD_H pthread.h) +find_file(HAVE_STDIO_H stdio.h) +find_file(HAVE_STRINGS_H strings.h) +find_file(HAVE_SYS_DIR_H sys/dir.h) +find_file(HAVE_SYS_NDIR_H sys/ndir.h) +find_file(HAVE_SYS_SELECT_H sys/select.h) +find_file(HAVE_SYS_STDTYPES_H sys/stdtypes.h) +find_path(HAVE_XDBE_H Xdbe.h PATH_SUFFIXES X11/extensions extensions) + +mark_as_advanced(HAVE_ALSA_ASOUNDLIB_H HAVE_DIRENT_H HAVE_DLFCN_H) +mark_as_advanced(HAVE_FREETYPE_H HAVE_GL_GL_H HAVE_GL_GLU_H) +mark_as_advanced(HAVE_LIBPNG_PNG_H HAVE_LOCALE_H HAVE_NDIR_H) +mark_as_advanced(HAVE_OPENGL_GLU_H HAVE_PNG_H HAVE_PTHREAD_H) +mark_as_advanced(HAVE_STDIO_H HAVE_STRINGS_H HAVE_SYS_DIR_H) +mark_as_advanced(HAVE_SYS_NDIR_H HAVE_SYS_SELECT_H) +mark_as_advanced(HAVE_SYS_STDTYPES_H HAVE_XDBE_H) + +# where to find freetype headers +find_path(FREETYPE_PATH freetype.h PATH_SUFFIXES freetype2) +if(FREETYPE_PATH) + include_directories(${FREETYPE_PATH}) +endif(FREETYPE_PATH) +mark_as_advanced(FREETYPE_PATH) + +####################################################################### +# libraries +find_library(LIB_CAIRO cairo) +find_library(LIB_dl dl) +find_library(LIB_fontconfig fontconfig) +find_library(LIB_freetype freetype) +find_library(LIB_GL GL) +find_library(LIB_MesaGL MesaGL) +find_library(LIB_jpeg jpeg) +find_library(LIB_png png) +find_library(LIB_zlib z) + +mark_as_advanced(LIB_CAIRO LIB_dl LIB_fontconfig LIB_freetype) +mark_as_advanced(LIB_GL LIB_MesaGL) +mark_as_advanced(LIB_jpeg LIB_png LIB_zlib) + +####################################################################### +# functions +include(CheckFunctionExists) + +if(HAVE_DLFCN_H) + set(CMAKE_REQUIRED_LIBRARIES dl) + set(HAVE_DLFCN_H 1) +endif(HAVE_DLFCN_H) +CHECK_FUNCTION_EXISTS(dlsym HAVE_DLSYM) + +CHECK_FUNCTION_EXISTS(localeconv HAVE_LOCALECONV) + +if(LIB_png) + set(CMAKE_REQUIRED_LIBRARIES png) +endif(LIB_png) +CHECK_FUNCTION_EXISTS(png_get_valid HAVE_PNG_GET_VALID) +CHECK_FUNCTION_EXISTS(png_set_tRNS_to_alpha HAVE_PNG_SET_TRNS_TO_ALPHA) + +CHECK_FUNCTION_EXISTS(scandir HAVE_SCANDIR) +CHECK_FUNCTION_EXISTS(snprintf HAVE_SNPRINTF) + +# not really true but we convert strcasecmp calls to _stricmp calls in flstring.h +if(MSVC) + set(HAVE_STRCASECMP 1) +endif(MSVC) + +CHECK_FUNCTION_EXISTS(strcasecmp HAVE_STRCASECMP) + +CHECK_FUNCTION_EXISTS(strlcat HAVE_STRLCAT) +CHECK_FUNCTION_EXISTS(strlcpy HAVE_STRLCPY) +CHECK_FUNCTION_EXISTS(vsnprintf HAVE_VSNPRINTF) + +set(CMAKE_REQUIRED_LIBRARIES) + +if(HAVE_SCANDIR AND NOT HAVE_SCANDIR_POSIX) + set(MSG "POSIX compatible scandir") + message(STATUS "Looking for ${MSG}") + try_compile(V + ${FLTK_BINARY_DIR} + ${FLTK_SOURCE_DIR}/CMake/posixScandir.cxx + ) + if(V) + message(STATUS "${MSG} - found") + set(HAVE_SCANDIR_POSIX 1 CACHE INTERNAL "") + else() + message(STATUS "${MSG} - not found") + set(HAVE_SCANDIR_POSIX HAVE_SCANDIR_POSIX-NOTFOUND) + endif(V) +endif(HAVE_SCANDIR AND NOT HAVE_SCANDIR_POSIX) +mark_as_advanced(HAVE_SCANDIR_POSIX) diff --git a/CMake/setup.cmake b/CMake/setup.cmake new file mode 100644 index 000000000..b6355ac61 --- /dev/null +++ b/CMake/setup.cmake @@ -0,0 +1,99 @@ +# +# "$Id: CMakeLists.txt 10092 2014-02-02 00:49:50Z AlbrechtS $" +# +# CMakeLists.txt to build the FLTK project using CMake (www.cmake.org) +# Written by Michael Surette +# +# Copyright 1998-2010 by Bill Spitzak and others. +# +# This library is free software. Distribution and use rights are outlined in +# the file "COPYING" which should have been included with this file. If this +# file is missing or damaged, see the license at: +# +# http://www.fltk.org/COPYING.php +# +# Please report all bugs and problems on the following page: +# +# http://www.fltk.org/str.php +# + +####################################################################### +# basic setup +####################################################################### +# The FLTK version +set(FLTK_VERSION_MAJOR "1") +set(FLTK_VERSION_MINOR "3") +set(FLTK_VERSION_PATCH "2") +set(FLTK_VERSION "${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}") +set(FLTK_VERSION_FULL "${FLTK_VERSION}.${FLTK_VERSION_PATCH}") + +set(EXECUTABLE_OUTPUT_PATH ${FLTK_BINARY_DIR}/bin) +set(LIBRARY_OUTPUT_PATH ${FLTK_BINARY_DIR}/lib) +set(ARCHIVE_OUTPUT_PATH ${FLTK_BINARY_DIR}/lib) + +# Search for modules in the FLTK source dir first +set(CMAKE_MODULE_PATH "${FLTK_SOURCE_DIR}/CMake") + +include_directories(${FLTK_BINARY_DIR} ${FLTK_SOURCE_DIR}) + +####################################################################### +# platform dependent information +####################################################################### + +include(TestBigEndian) +TEST_BIG_ENDIAN(WORDS_BIGENDIAN) + +if(APPLE) + set(__APPLE_QUARTZ__ 1) + set(HAVE_STRTOLL 1) + set(HAVE_STRCASECMP 1) + set(HAVE_DIRENT_H 1) + set(HAVE_SNPRINTF 1) + set(HAVE_VSNPRINTF 1) + set(HAVE_SCANDIR 1) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Cocoa") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -framework Cocoa") +endif(APPLE) + +if(WIN32) + if(MSVC) + add_definitions(-DWIN32_LEAN_AND_MEAN) + add_definitions(-D_CRT_SECURE_NO_WARNINGS) + endif(MSVC) + if(CMAKE_C_COMPILER_ID STREQUAL GNU) + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-subsystem,windows") + endif(CMAKE_C_COMPILER_ID STREQUAL GNU) + if(MINGW AND EXISTS /mingw) + list(APPEND CMAKE_PREFIX_PATH /mingw) + endif(MINGW AND EXISTS /mingw) +endif(WIN32) + +####################################################################### +# size of ints +include(CheckTypeSize) + +CHECK_TYPE_SIZE(short SIZEOF_SHORT) +CHECK_TYPE_SIZE(int SIZEOF_INT) +CHECK_TYPE_SIZE(long SIZEOF_LONG) +CHECK_TYPE_SIZE("long long" HAVE_LONG_LONG) + +if(${SIZEOF_SHORT} MATCHES "^2$") + set(U16 "unsigned short") +endif(${SIZEOF_SHORT} MATCHES "^2$") + +if(${SIZEOF_INT} MATCHES "^4$") + set(U32 "unsigned") +else() + if(${SIZEOF_LONG} MATCHES "^4$") + set(U32 "unsigned long") + endif(${SIZEOF_LONG} MATCHES "^4$") +endif(${SIZEOF_INT} MATCHES "^4$") + +if(${SIZEOF_INT} MATCHES "^8$") + set(U64 "unsigned") +else() + if(${SIZEOF_LONG} MATCHES "^8$") + set(U64 "unsigned long") + endif(${SIZEOF_LONG} MATCHES "^8$") +endif(${SIZEOF_INT} MATCHES "^8$") |
