summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES1
-rw-r--r--CMake/CheckFunctionWithHeaderExists.cmake54
-rw-r--r--CMake/FLTKConfig.cmake.in51
-rw-r--r--CMake/FLTKUse.cmake98
-rw-r--r--CMake/PlatformTests.cxx140
-rw-r--r--CMake/UseFLTK.cmake.in8
-rw-r--r--CMake/cmake_uninstall.cmake.in19
-rw-r--r--CMake/posixScandir.cxx10
-rw-r--r--CMakeLists.txt1063
-rw-r--r--CREDITS1
-rw-r--r--cairo/CMakeLists.txt27
-rw-r--r--configh.cmake.in127
-rw-r--r--fltk-config.cmake.in388
-rw-r--r--fluid/CMakeLists.txt32
-rw-r--r--jpeg/CMakeLists.txt55
-rw-r--r--png/CMakeLists.txt49
-rw-r--r--src/CMakeLists.txt320
-rw-r--r--test/CMakeLists.txt75
-rw-r--r--zlib/CMakeLists.txt33
19 files changed, 1658 insertions, 893 deletions
diff --git a/CHANGES b/CHANGES
index df737ac5f..d7d39214e 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,6 @@
CHANGES IN FLTK 1.3.0
+ - redesigned CMake files (STR #2317).
- Fixed max. fd calculation, if USE_POLL is enabled (STR #2324)
- Fixed clipping for offscreen rendering (OSX, STR #2330)
- Added printing support (Fl_Printer class and friends) for native
diff --git a/CMake/CheckFunctionWithHeaderExists.cmake b/CMake/CheckFunctionWithHeaderExists.cmake
deleted file mode 100644
index 46694e82a..000000000
--- a/CMake/CheckFunctionWithHeaderExists.cmake
+++ /dev/null
@@ -1,54 +0,0 @@
-#
-# Check if the symbol exists in include files
-#
-# CHECK_FUNCTIONWITHHEADER_EXISTS - macro which checks the symbol exists in include files.
-# SYMBOL - symbol
-# FILES - include files to check
-# VARIABLE - variable to return result
-#
-
-MACRO(CHECK_FUNCTIONWITHHEADER_EXISTS SYMBOL FILES VARIABLE)
- IF("${VARIABLE}" MATCHES "^${VARIABLE}$")
- SET(CHECK_SYMBOL_EXISTS_CONTENT "/* */\n")
- SET(MACRO_CHECK_SYMBOL_EXISTS_FLAGS ${CMAKE_REQUIRED_FLAGS})
- IF(CMAKE_REQUIRED_LIBRARIES)
- SET(CHECK_SYMBOL_EXISTS_LIBS
- "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
- ENDIF(CMAKE_REQUIRED_LIBRARIES)
- FOREACH(FILE ${FILES})
- SET(CHECK_SYMBOL_EXISTS_CONTENT
- "${CHECK_SYMBOL_EXISTS_CONTENT}#include <${FILE}>\n")
- ENDFOREACH(FILE)
- SET(CHECK_SYMBOL_EXISTS_CONTENT
- "${CHECK_SYMBOL_EXISTS_CONTENT}\nint main()\n{\n${SYMBOL};return 0;\n}\n")
-
- FILE(WRITE ${CMAKE_BINARY_DIR}/CMakeTmp/CheckSymbolExists.c
- "${CHECK_SYMBOL_EXISTS_CONTENT}")
-
- MESSAGE(STATUS "Looking for ${SYMBOL}")
- TRY_COMPILE(${VARIABLE}
- ${CMAKE_BINARY_DIR}
- ${CMAKE_BINARY_DIR}/CMakeTmp/CheckSymbolExists.c
- CMAKE_FLAGS
- -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_SYMBOL_EXISTS_FLAGS}
- "${CHECK_SYMBOL_EXISTS_LIBS}"
- OUTPUT_VARIABLE OUTPUT)
- IF(${VARIABLE})
- MESSAGE(STATUS "Looking for ${SYMBOL} - found")
- SET(${VARIABLE} 1 CACHE INTERNAL "Have symbol ${SYMBOL}")
- FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeOutput.log
- "Determining if the ${SYMBOL} "
- "exist passed with the following output:\n"
- "${OUTPUT}\nFile ${CMAKE_BINARY_DIR}/CMakeTmp/CheckSymbolExists.c:\n"
- "${CHECK_SYMBOL_EXISTS_CONTENT}\n")
- ELSE(${VARIABLE})
- MESSAGE(STATUS "Looking for ${SYMBOL} - not found.")
- SET(${VARIABLE} "" CACHE INTERNAL "Have symbol ${SYMBOL}")
- FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeError.log
- "Determining if the ${SYMBOL} "
- "exist failed with the following output:\n"
- "${OUTPUT}\nFile ${CMAKE_BINARY_DIR}/CMakeTmp/CheckSymbolExists.c:\n"
- "${CHECK_SYMBOL_EXISTS_CONTENT}\n")
- ENDIF(${VARIABLE})
- ENDIF("${VARIABLE}" MATCHES "^${VARIABLE}$")
-ENDMACRO(CHECK_FUNCTIONWITHHEADER_EXISTS)
diff --git a/CMake/FLTKConfig.cmake.in b/CMake/FLTKConfig.cmake.in
index 3ed435b11..0501c6674 100644
--- a/CMake/FLTKConfig.cmake.in
+++ b/CMake/FLTKConfig.cmake.in
@@ -1,37 +1,38 @@
-#-----------------------------------------------------------------------------
#
# FLTKConfig.cmake - FLTK CMake configuration file for external projects.
#
# This file is configured by FLTK and used by the UseFLTK.cmake module
# to load FLTK's settings for an external project.
-# The FLTK source tree.
-SET(FLTK_SOURCE_DIR "@FLTK_SOURCE_DIR@")
+set(FLTK_FOUND TRUE)
+set(FLTK_VERSION @FLTK_VERSION_FULL@)
-# The FLTK include file directories.
-SET(FLUID_COMMAND "@FLTK_FLUID_COMMAND@")
-SET(FLTK_EXECUTABLE_DIRS "@FLTK_EXECUTABLE_DIRS@")
-SET(FLTK_LIBRARY_DIRS "@FLTK_LIBRARY_DIRS@")
-SET(FLTK_LIBRARIES "@FLTK_LIBRARIES@")
-SET(FLTK_INCLUDE_DIRS "@FLTK_INCLUDE_DIRS@")
+set(FLTK_FLUID_EXECUTABLE "@PREFIX_BIN@/fluid")
-# The C and C++ flags added by FLTK to the cmake-configured flags.
-SET(FLTK_REQUIRED_C_FLAGS "@FLTK_REQUIRED_C_FLAGS@")
-SET(FLTK_REQUIRED_CXX_FLAGS "@FLTK_REQUIRED_CXX_FLAGS@")
+if(NOT "@EXE_LINKER_FLAGS@" STREQUAL "")
+ set(FLTK_EXE_LINKER_FLAGS "@EXE_LINKER_FLAGS@")
+endif(NOT "@EXE_LINKER_FLAGS@" STREQUAL "")
-# The FLTK version number
-SET(FLTK_VERSION_MAJOR "@FLTK_VERSION_MAJOR@")
-SET(FLTK_VERSION_MINOR "@FLTK_VERSION_MINOR@")
-SET(FLTK_VERSION_PATCH "@FLTK_VERSION_PATCH@")
+set(FLTK_USE_FILE "@PREFIX_CONFIG@/UseFLTK.cmake")
-# Is FLTK using shared libraries?
-SET(FLTK_BUILD_SHARED_LIBS "@BUILD_SHARED_LIBS@")
-SET(FLTK_BUILD_SETTINGS_FILE "@FLTK_BUILD_SETTINGS_FILE@")
+set(FLTK_DIR "@PREFIX_CONFIG@")
-# The location of the UseFLTK.cmake file.
-SET(FLTK11_USE_FILE "@FLTK_USE_FILE@")
+set(FLTK_BIN_DIR "@PREFIX_BIN@")
+set(FLTK_LIB_DIR "@PREFIX_LIB@")
+set(FLTK_INCLUDE_DIR "@PREFIX_INCLUDE@")
+set(FLTK_DATA_DIR "@PREFIX_DATA@")
+set(FLTK_DOC_DIR "@PREFIX_DOC@")
-# The ExodusII library dependencies.
-IF(NOT FLTK_NO_LIBRARY_DEPENDS)
- INCLUDE("@FLTK_LIBRARY_DEPENDS_FILE@")
-ENDIF(NOT FLTK_NO_LIBRARY_DEPENDS)
+set(FLTK_SHARED_LIBS_FOUND @OPTION_BUILD_SHARED_LIBS@)
+set(FLTK_CAIRO_FOUND @FLTK_CAIRO_FOUND@)
+set(FLTK_GL_FOUND @FLTK_GL_FOUND@)
+set(FLTK_THREADS_FOUND @FLTK_THREADS_FOUND@)
+set(FLTK_PTHREADS_FOUND @FLTK_PTHREADS_FOUND@)
+set(FLTK_BUILTIN_JPEG_FOUND @FLTK_BUILTIN_JPEG_FOUND@)
+set(FLTK_BUILTIN_ZLIB_FOUND @FLTK_BUILTIN_ZLIB_FOUND@)
+set(FLTK_BUILTIN_PNG_FOUND @FLTK_BUILTIN_PNG_FOUND@)
+set(FLTK_XINERAMA_FOUND @FLTK_XINERAMA_FOUND@)
+set(FLTK_XFT_FOUND @FLTK_XFT_FOUND@)
+set(FLTK_XDBE_FOUND @FLTK_XDBE_FOUND@)
+
+include("@PREFIX_CONFIG@/FLTKLibraries.cmake")
diff --git a/CMake/FLTKUse.cmake b/CMake/FLTKUse.cmake
deleted file mode 100644
index 938366308..000000000
--- a/CMake/FLTKUse.cmake
+++ /dev/null
@@ -1,98 +0,0 @@
-#
-# "$Id$"
-#
-# CMake support file to build the FLTK project using CMake (www.cmake.org)
-#
-# Copyright 1998-2010 by Bill Spitzak and others.
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Library General Public
-# License as published by the Free Software Foundation; either
-# version 2 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Library General Public License for more details.
-#
-# You should have received a copy of the GNU Library General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
-# USA.
-#
-# Please report all bugs and problems on the following page:
-#
-# http:#www.fltk.org/str.php
-#
-
-IF(NOT FLTK11_FOUND)
- MESSAGE(FATAL_ERROR "Something went wrong. You are including FLTKUse.cmake but FLTK was not found")
-ENDIF(NOT FLTK11_FOUND)
-
-# -------------------------------------------------------------
-# This macro automates wrapping of Fluid files
-# Specify the output variable name and the list of sources
-# The output variable can be directly added to the target.
-#
-# For example:
-# FLTK_WRAP_FLUID(CubeView_SRCS CubeViewUI.fl)
-# ADD_EXECUTABLE(CubeView CubeMain.cxx CubeView.cxx CubeView.h ${CubeView_SRCS})
-# -------------------------------------------------------------
-MACRO(FLTK_WRAP_FLUID VARIABLE)
- FOREACH(src ${ARGN})
- IF("${src}" MATCHES ".fl$")
- GET_FILENAME_COMPONENT(fname ${src} NAME_WE)
- GET_FILENAME_COMPONENT(fpath ${src} PATH)
- GET_SOURCE_FILE_PROPERTY(gen ${src} GENERATED)
- IF(gen)
- SET(fluid_name "${src}")
- ELSE(gen)
- SET(fluid_name "${CMAKE_CURRENT_SOURCE_DIR}/${fpath}/${fname}.fl")
- IF(NOT EXISTS "${fluid_name}")
- SET(fluid_name "${CMAKE_CURRENT_BINARY_DIR}/${fpath}/${fname}.fl")
- IF(NOT EXISTS "${fluid_name}")
- SET(fluid_name "${fpath}/${fname}.fl")
- IF(NOT EXISTS "${fluid_name}")
- MESSAGE(SEND_ERROR "Cannot find Fluid source file: ${fpath}/${fname}.fl")
- ENDIF(NOT EXISTS "${fluid_name}")
- ENDIF(NOT EXISTS "${fluid_name}")
- ENDIF(NOT EXISTS "${fluid_name}")
- ENDIF(gen)
- SET(cxx_name "${CMAKE_CURRENT_BINARY_DIR}/${fname}.cxx")
- SET(h_name "${CMAKE_CURRENT_BINARY_DIR}/${fname}.h")
- SET(${VARIABLE} "${${VARIABLE}};${cxx_name}")
- ADD_CUSTOM_COMMAND(
- OUTPUT ${cxx_name}
- DEPENDS "${fluid_name}" "${FLUID_COMMAND}"
- COMMAND ${FLUID_COMMAND}
- ARGS -c ${fluid_name})
- ADD_CUSTOM_COMMAND(
- OUTPUT ${h_name}
- DEPENDS "${fluid_name}" "${FLUID_COMMAND}"
- COMMAND ${FLUID_COMMAND}
- ARGS -c ${fluid_name})
- ENDIF("${src}" MATCHES ".fl$")
- ENDFOREACH(src)
-ENDMACRO(FLTK_WRAP_FLUID VARIABLE)
-
-
-# Make FLTK easier to use
-INCLUDE_DIRECTORIES(${FLTK_INCLUDE_DIRS})
-LINK_DIRECTORIES(${FLTK_LIBRARY_DIRS})
-
-# Load the compiler settings used for FLTK.
-IF(FLTK_BUILD_SETTINGS_FILE)
- INCLUDE(CMakeImportBuildSettings)
- CMAKE_IMPORT_BUILD_SETTINGS(${FLTK_BUILD_SETTINGS_FILE})
-ENDIF(FLTK_BUILD_SETTINGS_FILE)
-
-# Add compiler flags needed to use FLTK.
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FLTK_REQUIRED_C_FLAGS}")
-SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FLTK_REQUIRED_CXX_FLAGS}")
-SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${FLTK_REQUIRED_EXE_LINKER_FLAGS}")
-SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${FLTK_REQUIRED_SHARED_LINKER_FLAGS}")
-SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${FLTK_REQUIRED_MODULE_LINKER_FLAGS}")
-
-#
-# End of "$Id$".
-#
diff --git a/CMake/PlatformTests.cxx b/CMake/PlatformTests.cxx
deleted file mode 100644
index a4e9c73b3..000000000
--- a/CMake/PlatformTests.cxx
+++ /dev/null
@@ -1,140 +0,0 @@
-//
-// "$Id$"
-//
-// CMake platform tests for the Fast Light Tool Kit (FLTK).
-//
-// Copyright 1998-2010 by Bill Spitzak and others.
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Library General Public
-// License as published by the Free Software Foundation; either
-// version 2 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Library General Public License for more details.
-//
-// You should have received a copy of the GNU Library General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
-// USA.
-//
-// Please report all bugs and problems on the following page:
-//
-// http://www.fltk.org/str.php
-//
-
-//
-// The platform tests in this file are invoked by the CMake macro
-// PERFORM_CMAKE_TEST in CMakeLists.txt (or maybe other files).
-//
-// Each platform test in this file must begin and end with
-// #ifdef FOO
-// ...
-// #endif
-// where FOO is the compiler macro to be tested/defined in config.h.
-//
-// It must contain a main() function and return 0 if the test succeeded.
-//
-
-#ifdef HAVE_LIBZ
-
-#include <zlib.h>
-
-int main() {
- unsigned long compressedSize = 0;
- unsigned char cd[100];
- const unsigned char ud[100] = "";
- unsigned long uncompressedSize = 0;
-
- // Call zlib's compress function.
- if (compress(cd, &compressedSize, ud, uncompressedSize) != Z_OK) {
- return 0;
- }
- return 1;
-}
-
-#endif
-
-
-#ifdef HAVE_LIBJPEG
-
-#include <stdio.h>
-#include <jpeglib.h>
-
-int main() {
- struct jpeg_decompress_struct cinfo;
- jpeg_create_decompress(&cinfo);
- jpeg_read_header(&cinfo, TRUE);
- return 1;
-}
-
-#endif
-
-
-#ifdef HAVE_LIBPNG
-#include <png.h>
-int main()
-{
- png_structp png_ptr = png_create_read_struct
- (PNG_LIBPNG_VER_STRING, (png_voidp)NULL,
- NULL, NULL);
- png_infop info_ptr = png_create_info_struct(png_ptr);
- png_set_sig_bytes(png_ptr, 8);
- png_read_info(png_ptr, info_ptr);
-
- return 0;
-}
-#endif
-
-
-// This one is probably not used:
-#ifdef HAVE_PNG_H
-#include <png.h>
-int main() { return 0;}
-#endif
-
-
-#ifdef HAVE_PNG_GET_VALID
-#include <png.h>
-
-int main() {
- png_structp png_ptr = png_create_read_struct
- (PNG_LIBPNG_VER_STRING, (png_voidp)NULL,
- NULL, NULL);
- png_infop info_ptr = png_create_info_struct(png_ptr);
- png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS);
- return 0;
-}
-#endif
-
-
-#ifdef HAVE_PNG_SET_TRNS_TO_ALPHA
-#include <png.h>
-
-int main() {
- png_structp png_ptr = png_create_read_struct
- (PNG_LIBPNG_VER_STRING, (png_voidp)NULL,
- NULL, NULL);
- png_set_tRNS_to_alpha(png_ptr);
- return 0;
-}
-#endif
-
-
-#ifdef HAVE_SCANDIR_POSIX
-#include <dirent.h>
-
-int func (const char *d, dirent ***list, void *sort) {
- int n = scandir(d, list, 0, (int(*)(const dirent **, const dirent **))sort);
-}
-
-int main() {
- return 0;
-}
-#endif
-
-//
-// End of "$Id$".
-//
diff --git a/CMake/UseFLTK.cmake.in b/CMake/UseFLTK.cmake.in
new file mode 100644
index 000000000..9518d26ba
--- /dev/null
+++ b/CMake/UseFLTK.cmake.in
@@ -0,0 +1,8 @@
+#
+# automatically generated - do not edit
+
+include_directories("@PREFIX_INCLUDE@")
+
+if(FLTK_EXE_LINKER_FLAGS)
+ list(APPEND CMAKE_EXE_LINKER_FLAGS "${FLTK_EXE_LINKER_FLAGS}")
+endif(FLTK_EXE_LINKER_FLAGS)
diff --git a/CMake/cmake_uninstall.cmake.in b/CMake/cmake_uninstall.cmake.in
new file mode 100644
index 000000000..ed3a5bdfd
--- /dev/null
+++ b/CMake/cmake_uninstall.cmake.in
@@ -0,0 +1,19 @@
+if(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
+ message(FATAL_ERROR
+ "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"")
+endif(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
+
+file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files)
+string(REGEX REPLACE "\n" ";" files "${files}")
+
+foreach(file ${files})
+message(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"")
+ exec_program("@CMAKE_COMMAND@"
+ ARGS "-E remove -f \"$ENV{DESTDIR}${file}\""
+ OUTPUT_VARIABLE rm_out
+ RETURN_VALUE rm_retval
+ )
+ if(NOT "${rm_retval}" STREQUAL 0)
+ message(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"")
+ endif(NOT "${rm_retval}" STREQUAL 0)
+endforeach(file)
diff --git a/CMake/posixScandir.cxx b/CMake/posixScandir.cxx
new file mode 100644
index 000000000..ea57e9ce2
--- /dev/null
+++ b/CMake/posixScandir.cxx
@@ -0,0 +1,10 @@
+
+#include <dirent.h>
+
+int func (const char *d, dirent ***list, void *sort) {
+ int n = scandir(d, list, 0, (int(*)(const dirent **, const dirent **))sort);
+}
+
+int main() {
+ return 0;
+}
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2403a9a56..c765e688f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -26,420 +26,673 @@
# http:#www.fltk.org/str.php
#
-PROJECT(FLTK)
-CMAKE_MINIMUM_REQUIRED(VERSION 2.0)
+#######################################################################
+# basic setup
+#######################################################################
+project(FLTK)
+cmake_minimum_required(VERSION 2.6)
# The FLTK version
-SET(FLTK_VERSION_MAJOR "1")
-SET(FLTK_VERSION_MINOR "3")
-SET(FLTK_VERSION_PATCH "0")
-SET(FLTK_VERSION "${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}")
-SET(FLTK_VERSION_FULL "${FLTK_VERSION}.${FLTK_VERSION_PATCH}")
+set(FLTK_VERSION_MAJOR "1")
+set(FLTK_VERSION_MINOR "3")
+set(FLTK_VERSION_PATCH "0")
+set(FLTK_VERSION "${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}")
+set(FLTK_VERSION_FULL "${FLTK_VERSION}.${FLTK_VERSION_PATCH}")
-SET(FLTK_LIBRARIES "fltk_images;fltk;fltk_gl;fltk_forms")
+set(EXECUTABLE_OUTPUT_PATH ${FLTK_BINARY_DIR}/bin)
+set(LIBRARY_OUTPUT_PATH ${FLTK_BINARY_DIR}/lib)
+set(ARCHIVE_OUTPUT_PATH ${FLTK_BINARY_DIR}/lib)
-# Executables and libraries should just go to bin
-SET(EXECUTABLE_OUTPUT_PATH "${FLTK_BINARY_DIR}/bin" CACHE INTERNAL
- "Where to put the executables for FLTK"
- )
-SET(LIBRARY_OUTPUT_PATH "${FLTK_BINARY_DIR}/bin" CACHE INTERNAL
- "Where to put the libraries for FLTK"
- )
+# Search for modules in the FLTK source dir first
+set(CMAKE_MODULE_PATH "${FLTK_SOURCE_DIR}/CMake")
-# Allow building shared libraries
-OPTION(BUILD_SHARED_LIBS "Build FLTK as a shared library" OFF)
+include_directories(${FLTK_SOURCE_DIR} ${FLTK_BINARY_DIR})
-# Search for modules in the FLTK source dir first
-SET(CMAKE_MODULE_PATH "${FLTK_SOURCE_DIR}/CMake")
-
-#-----------------------------------------------------------------------------
-# Test for some required system information.
-FIND_PACKAGE(Threads)
-SET (CMAKE_USE_PTHREADS
- "${CMAKE_USE_PTHREADS_INIT}" CACHE BOOL "Use the pthreads library.")
-
-# We need ansi c-flags, especially on HP
-SET(CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_C_FLAGS}")
-SET(CMAKE_REQUIRED_FLAGS ${CMAKE_ANSI_CFLAGS})
-
-IF(WIN32)
- IF(NOT CYGWIN)
- IF(BORLAND)
- SET( FLTK_PLATFORM_DEPENDENT_LIBS import32 )
- ELSE(BORLAND)
- ADD_DEFINITIONS(-DWIN32_LEAN_AND_MEAN)
- SET( FLTK_PLATFORM_DEPENDENT_LIBS comctl32 )
- ENDIF(BORLAND)
- ENDIF(NOT CYGWIN)
-ENDIF(WIN32)
-
-# OS X with X11 is not currently supported!
-SET(FLTK_X11 1)
-SET(FLTK_APPLE 0)
-IF(APPLE)
- OPTION(FLTK_APPLE_X11 "Use X11 on Mac instead of Carbon" OFF)
- MARK_AS_ADVANCED(FLTK_APPLE_X11)
- IF(NOT FLTK_APPLE_X11)
- SET(FLTK_APPLE 1)
- SET(FLTK_X11 0)
- OPTION(FLTK_QUARTZ "Use Quartz instead of Quickdraw" OFF)
- ENDIF(NOT FLTK_APPLE_X11)
-ENDIF(APPLE)
-
-IF(UNIX AND NOT APPLE)
- FIND_PACKAGE(X11)
- ADD_DEFINITIONS(-DUSE_X11)
- SET( FLTK_PLATFORM_DEPENDENT_LIBS ${X11_LIBRARIES} -lm)
-ENDIF(UNIX AND NOT APPLE)
-
-IF(APPLE AND NOT FLTK_APPLE_X11)
- SET( FLTK_PLATFORM_DEPENDENT_LIBS
- "-framework Carbon -framework Cocoa -framework ApplicationServices -lz")
-ENDIF(APPLE AND NOT FLTK_APPLE_X11)
-
-IF(CYGWIN)
- ADD_DEFINITIONS(-DWIN32)
- SET( FLTK_PLATFORM_DEPENDENT_LIBS ole32 uuid comctl32 supc++ -lm -lgdi32)
-ENDIF(CYGWIN)
-
-IF(MINGW)
- ADD_DEFINITIONS(-DWIN32)
- SET( FLTK_PLATFORM_DEPENDENT_LIBS ole32 uuid comctl32 gdi32 comdlg32)
-ENDIF(MINGW)
-
-INCLUDE(CheckIncludeFiles)
-# Check if header file exists and add it to the list.
-MACRO(CHECK_INCLUDE_FILE_CONCAT FILE VARIABLE)
- CHECK_INCLUDE_FILES("${PROJECT_INCLUDES};${FILE}" ${VARIABLE})
- IF(${VARIABLE})
- SET(PROJECT_INCLUDES ${PROJECT_INCLUDES} ${FILE})
- ENDIF(${VARIABLE})
-ENDMACRO(CHECK_INCLUDE_FILE_CONCAT)
-CHECK_INCLUDE_FILE_CONCAT("GL/glu.h" HAVE_GL_GLU_H)
-CHECK_INCLUDE_FILE_CONCAT("OpenGL/glu.h" HAVE_OPENGL_GLU_H)
-CHECK_INCLUDE_FILE_CONCAT("dirent.h" HAVE_DIRENT_H)
-CHECK_INCLUDE_FILE_CONCAT("stdio.h" HAVE_STDIO_H)
-CHECK_INCLUDE_FILE_CONCAT("strings.h" HAVE_STRINGS_H)
-CHECK_INCLUDE_FILE_CONCAT("sys/dir.h" HAVE_SYS_DIR_H)
-CHECK_INCLUDE_FILE_CONCAT("sys/ndir.h" HAVE_SYS_NDIR_H)
-CHECK_INCLUDE_FILE_CONCAT("sys/select.h" HAVE_SYS_SELECT_H)
-CHECK_INCLUDE_FILE_CONCAT("sys/stdtypes.h" HAVE_SYS_STDTYPES_H)
-CHECK_INCLUDE_FILE("pthread.h" CMAKE_HAVE_PTHREAD_H)
-
-FIND_PACKAGE(ZLIB)
-FIND_PACKAGE(PNG)
-FIND_PACKAGE(JPEG)
-
-INCLUDE(CheckSymbolExists)
-INCLUDE(CheckFunctionWithHeaderExists)
-
-CHECK_FUNCTIONWITHHEADER_EXISTS("int strcasecmp()" "${PROJECT_INCLUDES}" HAVE_STRCASECMP)
-
-CHECK_SYMBOL_EXISTS(strlcat "${PROJECT_INCLUDES}" HAVE_STRLCAT)
-CHECK_SYMBOL_EXISTS(strlcpy "${PROJECT_INCLUDES}" HAVE_STRLCPY)
-CHECK_SYMBOL_EXISTS(vsnprintf "${PROJECT_INCLUDES}" HAVE_VSNPRINTF)
-CHECK_SYMBOL_EXISTS(snprintf "${PROJECT_INCLUDES}" HAVE_SNPRINTF)
-CHECK_SYMBOL_EXISTS(scandir "${PROJECT_INCLUDES}" HAVE_SCANDIR)
-
-INCLUDE(CheckTypeSize)
+# If this is out-of-source build, then copy FL directory
+if(NOT ${FLTK_SOURCE_DIR} STREQUAL ${FLTK_BINARY_DIR})
+ file(GLOB FLTK_HEADER_FILES ${FLTK_SOURCE_DIR}/FL/*.[hHr])
+ foreach(file ${FLTK_HEADER_FILES})
+ GET_FILENAME_COMPONENT(name ${file} NAME)
+ CONFIGURE_file(${file} ${FLTK_BINARY_DIR}/FL/${name} COPYONLY)
+ endforeach(file)
+endif(NOT ${FLTK_SOURCE_DIR} STREQUAL ${FLTK_BINARY_DIR})
+
+#######################################################################
+# platform dependent information
+#######################################################################
+# On unix create backward compatibility symlinks
+if(CMAKE_HOST_UNIX)
+ if(NOT EXISTS ${FLTK_BINARY_DIR}/Fl)
+ EXECUTE_PROCESS(COMMAND ln -s FL Fl
+ WORKING_DIRECTORY ${FLTK_BINARY_DIR}
+ )
+ endif(NOT EXISTS ${FLTK_BINARY_DIR}/Fl)
+
+ file(GLOB FLTK_HEADER_FILES ${FLTK_BINARY_DIR}/FL/*.H)
+ foreach(file ${FLTK_HEADER_FILES})
+ GET_FILENAME_COMPONENT(nameWE ${file} NAME_WE)
+ if(NOT EXISTS ${FLTK_BINARY_DIR}/FL/${nameWE}.h)
+ EXECUTE_PROCESS(COMMAND ln -s ${nameWE}.H ${nameWE}.h
+ WORKING_DIRECTORY ${FLTK_BINARY_DIR}/FL
+ )
+ endif()
+ endforeach(file)
+endif(CMAKE_HOST_UNIX)
+
+include(TestBigEndian)
+TEST_BIG_ENDIAN(WORDS_BIGENDIAN)
+
+if(APPLE)
+ set(USE_QUARTZ ON)
+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)
-
-IF(${SIZEOF_SHORT} MATCHES "^2$")
- SET(U16 "unsigned short")
-ENDIF(${SIZEOF_SHORT} MATCHES "^2$")
-
-IF(${SIZEOF_INT} MATCHES "^4$")
- SET(U32 "unsigned")
-ELSE(${SIZEOF_INT} MATCHES "^4$")
- 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(${SIZEOF_INT} MATCHES "^8$")
- IF(${SIZEOF_LONG} MATCHES "^8$")
- SET(U64 "unsigned long")
- ENDIF(${SIZEOF_LONG} MATCHES "^8$")
-ENDIF(${SIZEOF_INT} MATCHES "^8$")
-
-# Set an option to build FLTK with OpenGL support
-SET(HAVE_GL 0)
-OPTION(USE_OPENGL "OpenGL Support" ON)
-IF(USE_OPENGL)
- FIND_PACKAGE(OpenGL)
- IF(OPENGL_FOUND)
- SET(HAVE_GL 1)
- INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR})
- ENDIF(OPENGL_FOUND)
-ENDIF(USE_OPENGL)
-
-#
-# Perform the FLTK specific test with status output
-#
-MACRO(PERFORM_CMAKE_TEST FILE TEST)
- IF("${TEST}" MATCHES "^${TEST}$")
- # Perform test
- SET(MACRO_CHECK_FUNCTION_DEFINITIONS
- "-D${TEST} ${CMAKE_REQUIRED_FLAGS}")
- IF(CMAKE_REQUIRED_LIBRARIES)
- SET(TEST_ADD_LIBRARIES
- "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
- ENDIF(CMAKE_REQUIRED_LIBRARIES)
- MESSAGE(STATUS "Performing Test ${TEST}")
-
- TRY_COMPILE(${TEST}
- ${CMAKE_BINARY_DIR}
- ${CMAKE_CURRENT_SOURCE_DIR}/${FILE}
- CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
- -DLINK_LIBRARIES:STRING=${CMAKE_TEST_SPECIAL_LIBRARIES}
- "${TEST_ADD_LIBRARIES}"
- OUTPUT_VARIABLE OUTPUT)
- IF(${TEST})
- SET(${TEST} 1 CACHE INTERNAL "CMake test ${FUNCTION}")
- MESSAGE(STATUS "Performing Test ${TEST} - Success")
- ELSE(${TEST})
- MESSAGE(STATUS "Performing Test ${TEST} - Failed")
- SET(${TEST} 0 CACHE INTERNAL "Test ${FUNCTION}")
- WRITE_FILE(${CMAKE_BINARY_DIR}/CMakeError.log
- "Performing Test ${TEST} failed with the following output:\n"
- "${OUTPUT}\n" APPEND)
- ENDIF(${TEST})
- ENDIF("${TEST}" MATCHES "^${TEST}$")
-ENDMACRO(PERFORM_CMAKE_TEST FILE TEST)
-
-# Set an option to build the zlib library or not
-OPTION(FLTK_USE_SYSTEM_ZLIB "Use's system zlib" OFF)
-IF(FLTK_USE_SYSTEM_ZLIB)
- IF(ZLIB_FOUND)
- SET(CMAKE_TEST_SPECIAL_LIBRARIES ${ZLIB_LIBRARIES})
- SET(FLTK_ZLIB_LIBRARIES ${ZLIB_LIBRARIES})
- PERFORM_CMAKE_TEST(CMake/PlatformTests.cxx HAVE_LIBZ)
- ENDIF(ZLIB_FOUND)
- # We build the fltk zlib
-ELSE(FLTK_USE_SYSTEM_ZLIB)
- MARK_AS_ADVANCED(ZLIB_INCLUDE_DIR)
- MARK_AS_ADVANCED(ZLIB_LIBRARY)
- SUBDIRS(zlib)
- SET(HAVE_LIBZ 1)
- SET(FLTK_ZLIB_LIBRARIES fltk_zlib)
- SET(FLTK_LIBRARIES "${FLTK_LIBRARIES};fltk_zlib")
- INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/zlib")
-ENDIF(FLTK_USE_SYSTEM_ZLIB)
-
-# Set an option to build the jpeg library or not
-OPTION(FLTK_USE_SYSTEM_JPEG "Use's system jpeg" OFF)
-IF(FLTK_USE_SYSTEM_JPEG)
- IF(JPEG_FOUND)
- SET(CMAKE_TEST_SPECIAL_LIBRARIES ${JPEG_LIBRARIES})
- SET(FLTK_JPEG_LIBRARIES ${JPEG_LIBRARIES})
- PERFORM_CMAKE_TEST(CMake/PlatformTests.cxx HAVE_LIBJPEG)
- ENDIF(JPEG_FOUND)
- # We build the fltk png
-ELSE(FLTK_USE_SYSTEM_JPEG)
- MARK_AS_ADVANCED(JPEG_INCLUDE_DIR)
- MARK_AS_ADVANCED(JPEG_LIBRARY)
- SUBDIRS(jpeg)
- SET(HAVE_LIBJPEG 1)
- SET(FLTK_JPEG_LIBRARIES fltk_jpeg)
- SET(FLTK_LIBRARIES "${FLTK_LIBRARIES};fltk_jpeg")
- INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/jpeg")
-ENDIF(FLTK_USE_SYSTEM_JPEG)
-
-# Set an option to build the png library or not
-OPTION(FLTK_USE_SYSTEM_PNG "Use's system png" OFF)
-IF(FLTK_USE_SYSTEM_PNG)
- IF(PNG_FOUND)
- SET(CMAKE_TEST_SPECIAL_LIBRARIES ${PNG_LIBRARIES})
- SET(FLTK_PNG_LIBRARIES ${PNG_LIBRARIES})
- PERFORM_CMAKE_TEST(CMake/PlatformTests.cxx HAVE_LIBPNG)
- PERFORM_CMAKE_TEST(CMake/PlatformTests.cxx HAVE_PNG_GET_VALID)
- PERFORM_CMAKE_TEST(CMake/PlatformTests.cxx HAVE_PNG_SET_TRNS_TO_ALPHA)
- SET(HAVE_PNG_H 1)
- ENDIF(PNG_FOUND)
- # We build the fltk png
-ELSE(FLTK_USE_SYSTEM_PNG)
- MARK_AS_ADVANCED(PNG_INCLUDE_DIR)
- MARK_AS_ADVANCED(PNG_LIBRARY)
- SUBDIRS(png)
- SET(HAVE_LIBPNG 1)
- SET(HAVE_PNG_H 1)
- SET(FLTK_PNG_LIBRARIES fltk_png)
- SET(FLTK_LIBRARIES "${FLTK_LIBRARIES};fltk_png")
- INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/png")
-ENDIF(FLTK_USE_SYSTEM_PNG)
-
-# Do we have the POSIX compatible scandir() prototype?
-PERFORM_CMAKE_TEST(CMake/PlatformTests.cxx HAVE_SCANDIR_POSIX)
-
-SET(FLTK_DATADIR "${CMAKE_INSTALL_PREFIX}/share/FLTK")
-SET(FLTK_DOCDIR "${CMAKE_INSTALL_PREFIX}/share/doc/FLTK")
-
-# Write out configuration header file
-CONFIGURE_FILE(${FLTK_SOURCE_DIR}/configh.cmake.in
- ${FLTK_BINARY_DIR}/config.h)
-
-# On unix create symlinks for backward compatibility
-SET(FLTK_CREATE_SYMLINKS 1)
-IF(WIN32)
- IF(NOT UNIX)
- SET(FLTK_CREATE_SYMLINKS 0)
- ENDIF(NOT UNIX)
-ENDIF(WIN32)
-
-MACRO(SAFE_CREATE_SYMLINK SOURCE DESTINATION)
- IF(EXISTS "${DESTINATION}")
- ELSE(EXISTS "${DESTINATION}")
- MESSAGE(STATUS "Create symlink from: \"${SOURCE}\" to \"${DESTINATION}\"")
- # The quoting here does seems unnatural, but this is to prevent bug in CMake
- EXEC_PROGRAM(ln ARGS
- "-s \"${SOURCE}\" \"${DESTINATION}\"" OUTPUT_VARIABLE ln_output
- RETURN_VALUE ln_retval)
- IF("${ln_retval}" GREATER 0)
- MESSAGE(FATAL_ERROR "Problem creatin symlink from \"${SOURCE}\" to \"${DESTINATION}\":\n${ln_output}")
- ENDIF("${ln_retval}" GREATER 0)
- ENDIF(EXISTS "${DESTINATION}")
-ENDMACRO(SAFE_CREATE_SYMLINK SOURCE DESTINATION)
-
-# If this is out-of-source build, then copy FL directory
-FILE(GLOB FLTK_HEADER_FILES "${FLTK_SOURCE_DIR}/FL/*.[hHr]")
-FOREACH(file ${FLTK_HEADER_FILES})
- GET_FILENAME_COMPONENT(ext "${file}" EXT)
- GET_FILENAME_COMPONENT(namewe "${file}" NAME_WE)
- GET_FILENAME_COMPONENT(name "${file}" NAME)
- STRING(COMPARE EQUAL "${ext}" ".h" lower_case_h)
- STRING(COMPARE EQUAL "${ext}" ".H" upper_case_h)
- IF(lower_case_h OR upper_case_h)
- SET(outfile_h "${FLTK_BINARY_DIR}/FL/${namewe}.h")
- SET(outfile_H "${FLTK_BINARY_DIR}/FL/${namewe}.H")
- CONFIGURE_FILE("${file}" "${outfile_H}" COPYONLY IMMEDIATE)
- CONFIGURE_FILE("${file}" "${outfile_h}" COPYONLY IMMEDIATE)
-# IF(FLTK_CREATE_SYMLINKS)
-# SAFE_CREATE_SYMLINK("${outfile_H}" "${outfile_h}")
-# ENDIF(FLTK_CREATE_SYMLINKS)
- ELSE(lower_case_h OR upper_case_h)
- STRING(COMPARE EQUAL "${ext}" ".r" mac_resource_file)
- IF(mac_resource_file)
- SET(outfile "${FLTK_BINARY_DIR}/FL/${name}")
- CONFIGURE_FILE("${file}" "${outfile}" COPYONLY IMMEDIATE)
- ENDIF(mac_resource_file)
- ENDIF(lower_case_h OR upper_case_h)
-ENDFOREACH(file)
-
-IF(FLTK_CREATE_SYMLINKS)
- SAFE_CREATE_SYMLINK(
- "${FLTK_BINARY_DIR}/FL"
- "${FLTK_BINARY_DIR}/Fl")
-
- SAFE_CREATE_SYMLINK(
- "${FLTK_BINARY_DIR}/FL/gl.H"
- "${FLTK_BINARY_DIR}/FL/gl.h")
-
- # Create the symlinks
- FILE(READ ${FLTK_SOURCE_DIR}/fltk.list.in SYMLINKSFILE)
- STRING(REGEX MATCHALL "(l 0000 root sys .includedir/)([^(\n)])+"
- SYMLINKS ${SYMLINKSFILE})
- FOREACH(var ${SYMLINKS} )
- IF("${var}" MATCHES ".H")
- STRING(REGEX MATCH "(/F)([^(\n)])+" tmp ${var})
- STRING(REGEX MATCH "(/F)([^( )])+" in ${tmp})
- STRING(REGEX MATCH "( )([^(\n)])+" out ${tmp})
- STRING(REGEX REPLACE "( )" "" out ${out})
- SAFE_CREATE_SYMLINK("${FLTK_BINARY_DIR}/FL/${out}" "${FLTK_BINARY_DIR}/${in}")
- ENDIF("${var}" MATCHES ".H")
- ENDFOREACH(var)
-ENDIF(FLTK_CREATE_SYMLINKS)
-
+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$")
+
+#######################################################################
+# check for headers, libraries and functions
+#######################################################################
+# set default search paths
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+# 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/config/ftheader.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_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_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)
+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(strtoll HAVE_STRTOLL)
+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)
+
+#######################################################################
+# 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)
+
+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(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(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)
+ 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_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)
+
+#######################################################################
+# final setup and config
+#######################################################################
# Set the fluid executable path
-UTILITY_SOURCE(FLUID_COMMAND fluid fluid fluid.cxx)
-SET(FLUID_COMMAND "${FLUID_COMMAND}" CACHE INTERNAL "" FORCE)
-
-# Include header files in fltk binary tree
-INCLUDE_DIRECTORIES(${FLTK_BINARY_DIR})
-
-# Do the build of fltk libraries and fluid
-SUBDIRS(src)
-SUBDIRS(fluid)
-
-
-# Set an option to build the examples and testing
-OPTION(BUILD_EXAMPLES "Build the tests" ON)
-IF(BUILD_EXAMPLES)
- SUBDIRS(test)
-ENDIF(BUILD_EXAMPLES)
-
-OPTION(BUILD_TESTING "Build testing of FLTK" ON)
-IF(BUILD_TESTING)
- ENABLE_TESTING()
- INCLUDE(Dart)
-ENDIF(BUILD_TESTING)
-
-#-----------------------------------------------------------------------------
-# Help outside projects build FLTK projects.
-INCLUDE(CMakeExportBuildSettings)
-EXPORT_LIBRARY_DEPENDENCIES(${FLTK_BINARY_DIR}/FLTKLibraryDepends.cmake)
-CMAKE_EXPORT_BUILD_SETTINGS(${FLTK_BINARY_DIR}/FLTKBuildSettings.cmake)
-SET(FL_MAJOR_VERSION "${FLTK_VERSION_MAJOR}")
-SET(FL_MINOR_VERSION "${FLTK_VERSION_MINOR}")
-SET(FL_PATCH_VERSION "${FLTK_VERSION_PATCH}")
-
-SET(CFLAGS "${CMAKE_C_FLAGS}")
-SET(CXXFLAGS "${CMAKE_CXX_FLAGS}")
-SET(CC "${CMAKE_C_COMPILER}")
-SET(CXX "${CMAKE_CXX_COMPILER}")
-
-# For build tree usage
-SET(FLTK_FLUID_COMMAND "${FLUID_COMMAND}")
-SET(FLTK_LIBRARY_DEPENDS_FILE ${FLTK_BINARY_DIR}/FLTKLibraryDepends.cmake)
-SET(FLTK_EXECUTABLE_DIRS ${EXECUTABLE_OUTPUT_PATH})
-SET(FLTK_LIBRARY_DIRS ${LIBRARY_OUTPUT_PATH})
-SET(FLTK_USE_FILE ${FLTK_SOURCE_DIR}/CMake/FLTKUse.cmake)
-SET(FLTK_INCLUDE_DIRS "${FLTK_BINARY_DIR}/")
-SET(FLTK_BUILD_SETTINGS_FILE ${FLTK_BINARY_DIR}/FLTKBuildSettings.cmake)
-SET(prefix "${FLTK_BINARY_DIR}")
-SET(exec_prefix "${prefix}")
-SET(exec_prefix_set "no")
-SET(bindir "${prefix}/bin")
-SET(includedir "${prefix}")
-SET(libdir "${prefix}/bin")
-SET(srcdir "${FLTK_SOURCE_DIR}")
-
-CONFIGURE_FILE("${FLTK_SOURCE_DIR}/CMake/FLTKConfig.cmake.in"
- "${FLTK_BINARY_DIR}/FLTKConfig.cmake" @ONLY IMMEDIATE)
-CONFIGURE_FILE("${FLTK_SOURCE_DIR}/fltk-config.in"
- "${FLTK_BINARY_DIR}/fltk-config" @ONLY IMMEDIATE)
-
-# For installed tree usage
-SET(FLTK_FLUID_COMMAND "${CMAKE_INSTALL_PREFIX}/bin/fluid")
-SET(FLTK_LIBRARY_DEPENDS_FILE ${CMAKE_INSTALL_PREFIX}/lib/FLTK-${FLTK_VERSION}/FLTKLibraryDepends.cmake)
-SET(FLTK_EXECUTABLE_DIRS "${CMAKE_INSTALL_PREFIX}/bin")
-SET(FLTK_LIBRARY_DIRS "${CMAKE_INSTALL_PREFIX}/lib")
-SET(FLTK_USE_FILE "${CMAKE_INSTALL_PREFIX}/lib/FLTK-${FLTK_VERSION}/FLTKUse.cmake")
-SET(FLTK_INCLUDE_DIRS "${CMAKE_INSTALL_PREFIX}/")
-SET(FLTK_BUILD_SETTINGS_FILE ${CMAKE_INSTALL_PREFIX}/lib/FLTK-${FLTK_VERSION}/FLTKBuildSettings.cmake)
-SET(prefix "${CMAKE_INSTALL_PREFIX}")
-SET(exec_prefix "${prefix}")
-SET(exec_prefix_set "no")
-SET(bindir "${prefix}/bin")
-SET(includedir "${prefix}")
-SET(libdir "${prefix}/lib")
-SET(srcdir ".")
-
-CONFIGURE_FILE("${FLTK_SOURCE_DIR}/CMake/FLTKConfig.cmake.in"
- "${FLTK_BINARY_DIR}/CMake/FLTKConfig.cmake" @ONLY IMMEDIATE)
-CONFIGURE_FILE("${FLTK_SOURCE_DIR}/fltk-config.in"
- "${FLTK_BINARY_DIR}/CMake/fltk-config" @ONLY IMMEDIATE)
-
-INSTALL_FILES(/include/FL FILES ${FLTK_HEADER_FILES})
-INSTALL_FILES(/lib/FLTK-${FLTK_VERSION} FILES "${FLTK_SOURCE_DIR}/CMake/FLTKUse.cmake")
-INSTALL_FILES(/lib/FLTK-${FLTK_VERSION} FILES "${FLTK_BINARY_DIR}/FLTKBuildSettings.cmake")
-INSTALL_FILES(/lib/FLTK-${FLTK_VERSION} FILES "${FLTK_BINARY_DIR}/FLTKLibraryDepends.cmake")
-INSTALL_FILES(/lib/FLTK-${FLTK_VERSION} FILES "${FLTK_BINARY_DIR}/CMake/FLTKConfig.cmake")
+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)
+ 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 ${EXECUTABLE_OUTPUT_PATH}/${FLTK_FLUID_EXECUTABLE})
+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
+ )
+
+# 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"
+ )
+
+#######################################################################
+# build examples - these have to be after fluid is built/imported
+#######################################################################
+if(OPTION_BUILD_EXAMPLES)
+ add_subdirectory(test)
+endif(OPTION_BUILD_EXAMPLES)
+
+#######################################################################
+# installation
+#######################################################################
+
+install(DIRECTORY ${FLTK_BINARY_DIR}/FL
+ DESTINATION ${PREFIX_INCLUDE} USE_SOURCE_PERMISSIONS
+ )
+
+install(DIRECTORY ${FLTK_BINARY_DIR}/Fl
+ DESTINATION ${PREFIX_INCLUDE} USE_SOURCE_PERMISSIONS
+ )
+
+install(PROGRAMS ${FLTK_BINARY_DIR}/fltk-config
+ DESTINATION ${PREFIX_BIN}
+ PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
+ 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)
-#
-# End of "$Id$".
-#
diff --git a/CREDITS b/CREDITS
index 4f853812a..07d0e255b 100644
--- a/CREDITS
+++ b/CREDITS
@@ -49,6 +49,7 @@ OTHER CONTRIBUTORS
James Roth
Albrecht Schlosser
Andrea Suatoni
+ Michael Surette
Paul Sydney
Aaron Ucko
Emanuele Vicentini
diff --git a/cairo/CMakeLists.txt b/cairo/CMakeLists.txt
new file mode 100644
index 000000000..e6ac7a6fc
--- /dev/null
+++ b/cairo/CMakeLists.txt
@@ -0,0 +1,27 @@
+project(FLTKcairo)
+
+include_directories(${FLTKcairo_SOURCE_DIR})
+include_directories(${FLTKcairo_BINARY_DIR})
+include_directories(${PKG_CAIRO_INCLUDE_DIRS})
+
+# source files for cairo
+set(cairo_SRCS Fl_Cairo.cxx)
+
+#######################################################################
+add_library(fltk_cairo ${cairo_SRCS})
+
+if(MSVC)
+ set_target_properties(fltk_cairo
+ PROPERTIES
+ OUTPUT_NAME fltkcairo
+ DEBUG_OUTPUT_NAME fltkcairod
+ )
+ if(OPTION_LARGE_FILE)
+ set_target_properties(fltk_cairo PROPERTIES LINK_FLAGS /LARGEADDRESSAWARE)
+ endif(OPTION_LARGE_FILE)
+endif(MSVC)
+
+install(TARGETS fltk_cairo
+ EXPORT fltk-install
+ DESTINATION ${PREFIX_LIB}
+)
diff --git a/configh.cmake.in b/configh.cmake.in
index 76e2cd2a2..e90add931 100644
--- a/configh.cmake.in
+++ b/configh.cmake.in
@@ -28,8 +28,8 @@
* Where to find files...
*/
-#define FLTK_DATADIR "@FLTK_DATADIR@"
-#define FLTK_DOCDIR "@FLTK_DOCDIR@"
+#define FLTK_DATADIR "@PREFIX_DATA@"
+#define FLTK_DOCDIR "@PREFIX_DOC@"
/*
* BORDER_WIDTH:
@@ -54,7 +54,7 @@
* OpenGL, and FLTK will be smaller.
*/
-#define HAVE_GL @HAVE_GL@
+#cmakedefine01 HAVE_GL
/*
* HAVE_GL_GLU_H:
@@ -63,7 +63,15 @@
* (many broken Mesa RPMs do not...)
*/
-#cmakedefine HAVE_GL_GLU_H @HAVE_GL_GLU_H@
+#cmakedefine01 HAVE_GL_GLU_H
+
+/*
+ * HAVE_GLXGETPROCADDRESSARB:
+ *
+ * Do you have the OpenGL glXGetProcAddressARB() function?
+ */
+
+#cmakedefine HAVE_GLXGETPROCADDRESSARB
/*
* USE_COLORMAP:
@@ -75,12 +83,20 @@
#define USE_COLORMAP 1
/*
+ * HAVE_XINERAMA
+ *
+ * Do we have the Xinerama library to support multi-head displays?
+ */
+
+#cmakedefine01 HAVE_XINERAMA
+
+/*
* USE_XFT
*
* Use the new Xft library to draw anti-aliased text.
*/
-#define USE_XFT 0
+#cmakedefine01 USE_XFT
/*
* HAVE_XDBE:
@@ -88,7 +104,7 @@
* Do we have the X double-buffer extension?
*/
-#define HAVE_XDBE 0
+#cmakedefine01 HAVE_XDBE
/*
* USE_XDBE:
@@ -108,19 +124,20 @@
* other operating systems.
*/
-#cmakedefine FLTK_APPLE
-#ifdef FLTK_APPLE
- #cmakedefine FLTK_QUARTZ
- #ifdef FLTK_QUARTZ
- #define USE_QUARTZ 1
- #define __APPLE_QUARTZ__
- #undef __APPLE_QD__
- #else
- #define USE_QUARTZ 0
- #undef __APPLE_QUARTZ__
- #define __APPLE_QD__
- #endif
-#endif
+#cmakedefine USE_QUARTZ
+#cmakedefine __APPLE_QUARTZ__ @__APPLE_QUARTZ__@
+#cmakedefine __APPLE_COCOA__ @__APPLE_COCOA__@
+#cmakedefine __APPLE_QD__ @__APPLE_QD__@
+
+
+/*
+ * USE_X11
+ *
+ * Should we use X11 for the current platform
+ *
+ */
+
+#cmakedefine USE_X11 @USE_X11@
/*
* HAVE_OVERLAY:
@@ -148,7 +165,7 @@
* Byte order of your machine: 1 = big-endian, 0 = little-endian.
*/
-#define WORDS_BIGENDIAN 0
+#define WORDS_BIGENDIAN @WORDS_BIGENDIAN@
/*
* U16, U32, U64:
@@ -192,7 +209,7 @@
#cmakedefine HAVE_STRLCPY @HAVE_STRLCPY@
/*
- * 'locale' functions
+ * Do we have POSIX locale support?
*/
#cmakedefine HAVE_LOCALE_H @HAVE_LOCALE_H@
@@ -204,7 +221,7 @@
* Whether or not select() call has its own header file.
*/
-#cmakedefine HAVE_SYS_SELECT_H @HAVE_SYS_SELECT_H@
+#cmakedefine01 HAVE_SYS_SELECT_H
/*
* HAVE_SYS_STDTYPES_H:
@@ -220,7 +237,7 @@
* Use the poll() call provided on Linux and Irix instead of select()
*/
-#define USE_POLL 0
+#cmakedefine01 USE_POLL
/*
* Do we have various image libraries?
@@ -231,6 +248,23 @@
#cmakedefine HAVE_LIBJPEG @HAVE_LIBJPEG@
/*
+ * USE_CAIRO
+ *
+ * Do we have the cairo library available and want extended cairo use in fltk ?
+ * will implies to link cairo.lib in all fltk based apps.
+ */
+
+#cmakedefine USE_CAIRO @USE_CAIRO@
+
+/*
+ * HAVE_CAIRO
+ *
+ * Do we have the cairo library available?
+ */
+
+#cmakedefine HAVE_CAIRO @HAVE_CAIRO@
+
+/*
* Which header file do we include for libpng?
*/
@@ -248,19 +282,44 @@
* Do we have POSIX threading?
*/
-#cmakedefine CMAKE_USE_PTHREADS
-#ifdef CMAKE_USE_PTHREADS
-#define HAVE_PTHREAD 1
-#else
-#define HAVE_PTHREAD 0
-#endif
+#cmakedefine HAVE_PTHREAD @HAVE_PTHREAD@
+#cmakedefine01 HAVE_PTHREAD_H
+
+/*
+ * Do we have the ALSA library?
+ */
+
+#cmakedefine HAVE_ALSA_ASOUNDLIB_H @HAVE_ALSA_ASOUNDLIB_H@
+/*
+ * Do we have the long long type?
+ */
+
+#cmakedefine HAVE_LONG_LONG @HAVE_LONG_LONG@
-#cmakedefine CMAKE_HAVE_PTHREAD_H
-#ifdef CMAKE_HAVE_PTHREAD_H
-#define HAVE_PTHREAD_H 1
+#ifdef HAVE_LONG_LONG
+# define FLTK_LLFMT "%lld"
+# define FLTK_LLCAST (long long)
#else
-#define HAVE_PTHREAD_H 0
-#endif
+# define FLTK_LLFMT "%ld"
+# define FLTK_LLCAST (long)
+#endif /* HAVE_LONG_LONG */
+
+/*
+ * Do we have the strtoll() function?
+ */
+
+#cmakedefine HAVE_STRTOLL @HAVE_STRTOLL@
+
+#ifndef HAVE_STRTOLL
+# define strtoll(nptr,endptr,base) strtol((nptr), (endptr), (base))
+#endif /* !HAVE_STRTOLL */
+
+/*
+ * Do we have the dlsym() function and header?
+ */
+
+#cmakedefine HAVE_DLFCN_H @HAVE_DLFCN_H@
+#cmakedefine HAVE_DLSYM @HAVE_DLSYM@
/*
* End of "$Id$".
diff --git a/fltk-config.cmake.in b/fltk-config.cmake.in
new file mode 100644
index 000000000..500ad785c
--- /dev/null
+++ b/fltk-config.cmake.in
@@ -0,0 +1,388 @@
+#!/bin/sh
+#
+# "$Id: fltk-config.in 6614 2009-01-01 16:11:32Z matt $"
+#
+# FLTK configuration utility.
+#
+# Copyright 2000-2009 by Bill Spitzak and others.
+# Original version Copyright 2000 by James Dean Palmer
+# Adapted by Vincent Penne and Michael Sweet
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+# USA.
+#
+# Please report all bugs and problems on the following page:
+#
+# http://www.fltk.org/str.php
+#
+
+MAJOR_VERSION=@FLTK_VERSION_MAJOR@
+MINOR_VERSION=@FLTK_VERSION_MINOR@
+PATCH_VERSION=@FLTK_VERSION_PATCH@
+VERSION=@FLTK_VERSION_FULL@
+APIVERSION=@FLTK_VERSION@
+
+### BEGIN fltk-config
+selfdir=`dirname "$0"`
+
+prefix=@CMAKE_INSTALL_PREFIX@
+exec_prefix=${prefix}
+exec_prefix_set=no
+bindir=@PREFIX_BIN@
+includedir=@CPREFIX_INCLUDE@
+libdir=@PREFIX_LIB@
+srcdir=.
+
+# compiler names
+CC="@CC@"
+CXX="@CXX@"
+
+# flags for C++ compiler:
+ARCHFLAGS="@OPTION_ARCHFLAGS@"
+CFLAGS="@C_FLAGS@"
+CXXFLAGS="@CAIROFLAGS@@C_FLAGS@"
+LDFLAGS="@LDFLAGS@"
+LDLIBS="@LD_LIBS@"
+OPTIM="@OPTION_OPTIM@"
+CAIROFLAGS="@CAIROFLAGS@"
+
+# Check for local invocation, and update paths accordingly...
+if test -f "$selfdir/FL/Fl_Window.H"; then
+ bindir="$selfdir/fluid"
+ includedir="$selfdir"
+ libdir="$selfdir/lib"
+
+ if test -f "$libdir/libfltk_jpeg.a"; then
+ CFLAGS="-I$includedir/jpeg $CFLAGS"
+ CXXFLAGS="-I$includedir/jpeg $CXXFLAGS"
+ fi
+
+ if test -f "$libdir/libfltk_z.a"; then
+ CFLAGS="-I$includedir/zlib $CFLAGS"
+ CXXFLAGS="-I$includedir/zlib $CXXFLAGS"
+ fi
+
+ if test -f "$libdir/libfltk_png.a"; then
+ CFLAGS="-I$includedir/png $CFLAGS"
+ CXXFLAGS="-I$includedir/png $CXXFLAGS"
+ fi
+fi
+
+if test -d $includedir/FL/images; then
+ CFLAGS="-I$includedir/FL/images $CFLAGS"
+ CXXFLAGS="-I$includedir/FL/images $CXXFLAGS"
+fi
+
+if test -f "$libdir/libfltk_cairo.a"; then
+ CFLAGS="$CAIROFLAGS $CFLAGS"
+ CXXFLAGS="$CAIROFLAGS $CXXFLAGS"
+fi
+
+# libraries to link with:
+LIBNAME="@LIBNAME@"
+DSONAME="@DSONAME@"
+DSOLINK="@DSOLINK@"
+IMAGELIBS="@IMAGELIBS@"
+STATICIMAGELIBS="@STATICIMAGELIBS@"
+CAIROLIBS="@CAIROLIBS@"
+SHAREDSUFFIX="@SHAREDSUFFIX@"
+
+usage ()
+{
+ echo "Usage: fltk-config [OPTIONS]
+Options:
+ [--version]
+ [--api-version]
+
+Options telling what we are doing:
+ [--use-gl] use GL
+ [--use-images] use extra image formats (PNG, JPEG)
+ [--use-glut] use glut compatibility layer
+ [--use-forms] use forms compatibility layer
+ [--use-cairo] use cairo graphics lib
+
+Options telling what information we request:
+ [--cc] return C compiler used to compile FLTK
+ [--cxx] return C++ compiler used to compile FLTK
+ [--optim] return compiler optimization used to compile FLTK
+ [--cflags] return flags to compile C using FLTK
+ [--cxxflags] return flags to compile C++ using FLTK
+ [--ldflags] return flags to link against FLTK
+ [--ldstaticflags] return flags to link against static FLTK library
+ even if there are DSOs installed
+ [--libs] return FLTK libraries full path for dependencies
+
+Options to compile and link an application:
+ [-g] compile the program with debugging information
+ [-Dname[=value]] compile the program with the given define
+ [--compile program.cxx]
+ [--post program] prepare the program for desktop use
+"
+ exit $1
+}
+
+if test $# -eq 0; then
+ usage 1
+fi
+
+no_plugins=no
+compile=
+post=
+debug=
+
+# Parse command line options
+while test $# -gt 0
+do
+ case "$1" in
+ -*=*)
+ optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'`
+ ;;
+ *)
+ optarg=
+ ;;
+ esac
+
+ case $1 in
+ --version)
+ echo $VERSION
+ ;;
+ --api-version)
+ echo $APIVERSION
+ ;;
+ --cc)
+ echo $CC
+ ;;
+ --cxx)
+ echo $CXX
+ ;;
+ --optim)
+ echo_optim=yes
+ ;;
+ --use-gl | --use-glut)
+ use_gl=yes
+ ;;
+ --use-forms)
+ use_forms=yes
+ ;;
+ --use-images)
+ use_images=yes
+ ;;
+ --use-cairo)
+ use_cairo=yes
+ ;;
+ --cflags)
+ echo_cflags=yes
+ ;;
+ --cxxflags)
+ echo_cxxflags=yes
+ ;;
+ --ldflags)
+ echo_ldflags=yes
+ ;;
+ --ldstaticflags)
+ echo_ldstaticflags=yes
+ ;;
+ --libs)
+ echo_libs=yes
+ ;;
+ -g)
+ debug=-g
+ ;;
+ -D*)
+ CXXFLAGS="$CXXFLAGS $1"
+ ;;
+ --compile)
+ compile="$2"
+ shift
+ ;;
+ --post)
+ post="$2"
+ shift
+ ;;
+ *)
+ echo_help=yes
+ ;;
+ esac
+ shift
+done
+
+if test "$includedir" != /usr/include; then
+ includes=-I$includedir
+else
+ includes=
+fi
+
+if test "$libdir" != /usr/lib -a "$libdir" != /usr/lib32; then
+ libs=-L$libdir
+else
+ libs=
+fi
+
+# Calculate needed libraries
+LDSTATIC="$libdir/libfltk.a $LDLIBS"
+LDLIBS="-lfltk$SHAREDSUFFIX $LDLIBS"
+
+if test x$use_forms = xyes; then
+ LDLIBS="-lfltk_forms$SHAREDSUFFIX $LDLIBS"
+ LDSTATIC="$libdir/libfltk_forms.a $LDSTATIC"
+fi
+if test x$use_gl = xyes; then
+ LDLIBS="-lfltk_gl$SHAREDSUFFIX @GLLIB@ $LDLIBS"
+ LDSTATIC="$libdir/libfltk_gl.a @GLLIB@ $LDSTATIC"
+fi
+if test x$use_images = xyes; then
+ LDLIBS="-lfltk_images$SHAREDSUFFIX $IMAGELIBS $LDLIBS"
+ LDSTATIC="$libdir/libfltk_images.a $STATICIMAGELIBS $LDSTATIC"
+fi
+
+if test x$use_cairo = xyes; then
+ LDLIBS="-lfltk_cairo$SHAREDSUFFIX $CAIROLIBS $LDLIBS"
+ LDSTATIC="$libdir/libfltk_cairo.a $CAIROLIBS $LDSTATIC"
+fi
+
+LDLIBS="$DSOLINK $LDFLAGS $libs $LDLIBS"
+LDSTATIC="$LDFLAGS $LDSTATIC"
+
+# Answer to user requests
+if test -n "$echo_help"; then
+ usage 1
+fi
+
+if test -n "$compile"; then
+ case "$compile" in
+ *.cxx)
+ prog="`basename \"$compile\" .cxx`"
+ ;;
+ *.cpp)
+ prog="`basename \"$compile\" .cpp`"
+ ;;
+ *.cc)
+ prog="`basename \"$compile\" .cc`"
+ ;;
+ *.C)
+ prog="`basename \"$compile\" .C`"
+ ;;
+ *)
+ echo "ERROR: Unknown/bad C++ source file extension on \"$compile\"!"
+ exit 1
+ ;;
+ esac
+
+ post="$prog"
+
+ echo $CXX $ARCHFLAGS $includes $CXXFLAGS $debug -o "'$prog'" "'$compile'" $LDSTATIC
+ $CXX $ARCHFLAGS $includes $CXXFLAGS $debug -o "$prog" "$compile" $LDSTATIC || exit 1
+fi
+
+if test -n "$post"; then
+ case "`uname`" in
+ Darwin)
+ echo Creating "'$post.app'" bundle for desktop...
+ id=`echo $post | tr ' ' '_'`
+
+ # Make the bundle directory and move the executable there
+ rm -rf "$post.app/Contents/MacOS"
+ mkdir -p "$post.app/Contents/MacOS"
+ mv "$post" "$post.app/Contents/MacOS"
+
+ # Make a shell script that runs the bundled executable
+ echo "#!/bin/sh" >"$post"
+ echo 'dir="`dirname '"'"'$0'"'"'`"' >>"$post"
+ echo 'exec "$dir/'"$post.app/Contents/MacOS/$post"'" "$@"' >>"$post"
+ chmod +x "$post"
+
+ # Make the simplest Info.plist needed for an application
+ cat >"$post.app/Contents/Info.plist" <<EOF
+<?xml version="1.0" encoding="UTF-8"?>
+<plist version="0.9">
+ <dict>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleExecutable</key>
+ <string>$post</string>
+ <key>CFBundleIdentifier</key>
+ <string>org.fltk.$id</string>
+ <key>CFBundleName</key>
+ <string>$post</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ </dict>
+</plist>
+EOF
+ ;;
+ esac
+fi
+
+if test "$echo_cflags" = "yes"; then
+ echo $includes $CFLAGS
+fi
+
+if test "$echo_cxxflags" = "yes"; then
+ echo $includes $CXXFLAGS
+fi
+
+if test "$echo_optim" = "yes"; then
+ echo $OPTIM
+fi
+
+if test "$echo_ldflags" = "yes"; then
+ my_libs=
+ libdirs=$libs
+
+ for i in $LDLIBS ; do
+ if test $i != -L$libdir ; then
+ if test -z "$my_libs" ; then
+ my_libs="$i"
+ else
+ my_libs="$my_libs $i"
+ fi
+ fi
+ done
+ echo $libdirs $my_libs
+fi
+
+if test "$echo_ldstaticflags" = "yes"; then
+ echo $LDSTATIC
+fi
+
+if test "$echo_libs" = "yes"; then
+ echo $libdir/libfltk.a
+
+ if test x$use_forms = xyes; then
+ echo $libdir/libfltk_forms.a
+ fi
+
+ if test x$use_gl = xyes; then
+ echo $libdir/libfltk_gl.a
+ fi
+
+ if test x$use_cairo = xyes; then
+ echo $libdir/libfltk_cairo.a
+ fi
+
+ if test x$use_images = xyes; then
+ echo $libdir/libfltk_images.a
+
+ for lib in fltk_jpeg fltk_png fltk_z; do
+ if test -f $libdir/lib$lib.a; then
+ echo $libdir/lib$lib.a
+ fi
+ done
+ fi
+fi
+
+#
+# End of "$Id: fltk-config.in 6614 2009-01-01 16:11:32Z matt $".
+#
diff --git a/fluid/CMakeLists.txt b/fluid/CMakeLists.txt
index 347f258dc..d2d85ae34 100644
--- a/fluid/CMakeLists.txt
+++ b/fluid/CMakeLists.txt
@@ -1,4 +1,5 @@
-SET(CPPFILES
+
+set(CPPFILES
CodeEditor.cxx
Fl_Function_Type.cxx
Fl_Group_Type.cxx
@@ -20,11 +21,28 @@ SET(CPPFILES
widget_panel.cxx
)
+add_executable(fluid ${CPPFILES})
+target_link_libraries(fluid fltk fltk_images fltk_forms)
+
+# link in optional libraries
+if(HAVE_CAIRO)
+ target_link_libraries(fluid fltk_cairo)
+endif(HAVE_CAIRO)
+
+if(FLTK_USE_GL)
+ target_link_libraries(fluid fltk_gl)
+ target_link_libraries(fluid ${OPENGL_LIBRARIES})
+endif(FLTK_USE_GL)
-ADD_EXECUTABLE(fluid ${CPPFILES})
-INSTALL_TARGETS(/bin fluid)
-TARGET_LINK_LIBRARIES(fluid fltk fltk_images fltk_forms ${FLTK_PLATFORM_DEPENDENT_LIBS})
-IF(OPENGL_FOUND)
- TARGET_LINK_LIBRARIES(fluid fltk_gl)
-ENDIF(OPENGL_FOUND)
+if(USE_XFT)
+ target_link_libraries(fluid ${X11_Xft_LIB})
+endif(USE_XFT)
+if(HAVE_XINERAMA)
+ target_link_libraries(fluid ${X11_Xinerama_LIB})
+endif(HAVE_XINERAMA)
+
+install(TARGETS fluid
+ EXPORT fltk-install
+ DESTINATION ${PREFIX_BIN}
+)
diff --git a/jpeg/CMakeLists.txt b/jpeg/CMakeLists.txt
index eb05c48a3..2b41aee7c 100644
--- a/jpeg/CMakeLists.txt
+++ b/jpeg/CMakeLists.txt
@@ -1,36 +1,51 @@
-PROJECT(FLTKJPEG)
+project(FLTKJPEG)
-INCLUDE_REGULAR_EXPRESSION("^(jchuff|jconfig|jdct|jdhuff|jerror|jinclude|jmemsys|jmorecfg|jpegint|jpeglib|jversion|jpeg).*$")
+include_regular_expression("^j.*[.][c|h]$")
-INCLUDE_DIRECTORIES(${FLTKJPEG_SOURCE_DIR})
-INCLUDE_DIRECTORIES(${FLTKJPEG_BINARY_DIR})
+include_directories(${FLTKJPEG_SOURCE_DIR})
+include_directories(${FLTKJPEG_BINARY_DIR})
# memmgr back ends: compile only one of these into a working library
# (For now, let's use the mode that requires the image fit into memory.
# This is the recommended mode for Win32 anyway.)
-SET(systemdependent_SRCS jmemnobs.c)
+set(systemdependent_SRCS jmemnobs.c)
# library object files common to compression and decompression
-SET(common_SRCS
-jcomapi.c jutils.c jerror.c jmemmgr.c
+set(common_SRCS
+ jcomapi.c jutils.c jerror.c jmemmgr.c
)
# compression library object files
-SET(compression_SRCS
-jcapimin.c jcapistd.c jctrans.c jcparam.c jdatadst.c jcinit.c
-jcmaster.c jcmarker.c jcmainct.c jcprepct.c jccoefct.c jccolor.c
-jcsample.c jchuff.c jcphuff.c jcdctmgr.c jfdctfst.c jfdctflt.c
-jfdctint.c
+set(compression_SRCS
+ jcapimin.c jcapistd.c jctrans.c jcparam.c jdatadst.c jcinit.c
+ jcmaster.c jcmarker.c jcmainct.c jcprepct.c jccoefct.c jccolor.c
+ jcsample.c jchuff.c jcphuff.c jcdctmgr.c jfdctfst.c jfdctflt.c
+ jfdctint.c
)
# decompression library object files
-SET(decompression_SRCS
-jdapimin.c jdapistd.c jdtrans.c jdatasrc.c jdmaster.c
-jdinput.c jdmarker.c jdhuff.c jdphuff.c jdmainct.c jdcoefct.c
-jdpostct.c jddctmgr.c jidctfst.c jidctflt.c jidctint.c jidctred.c
-jdsample.c jdcolor.c jquant1.c jquant2.c jdmerge.c
+set(decompression_SRCS
+ jdapimin.c jdapistd.c jdtrans.c jdatasrc.c jdmaster.c
+ jdinput.c jdmarker.c jdhuff.c jdphuff.c jdmainct.c jdcoefct.c
+ jdpostct.c jddctmgr.c jidctfst.c jidctflt.c jidctint.c jidctred.c
+ jdsample.c jdcolor.c jquant1.c jquant2.c jdmerge.c
)
-ADD_LIBRARY(fltk_jpeg ${systemdependent_SRCS} ${common_SRCS} ${compression_SRCS} ${decompression_SRCS})
-INSTALL_TARGETS(/lib fltk_jpeg)
-
+#######################################################################
+add_library(fltk_jpeg ${systemdependent_SRCS} ${common_SRCS} ${compression_SRCS} ${decompression_SRCS})
+
+if(MSVC)
+ set_target_properties(fltk_jpeg
+ PROPERTIES
+ OUTPUT_NAME fltkjpeg
+ DEBUG_OUTPUT_NAME fltkjpegd
+ )
+ if(OPTION_LARGE_FILE)
+ set_target_properties(fltk_jpeg PROPERTIES LINK_FLAGS /LARGEADDRESSAWARE)
+ endif(OPTION_LARGE_FILE)
+endif(MSVC)
+
+install(TARGETS fltk_jpeg
+ EXPORT fltk-install
+ DESTINATION ${PREFIX_LIB}
+)
diff --git a/png/CMakeLists.txt b/png/CMakeLists.txt
index eb2984885..8cd41114f 100644
--- a/png/CMakeLists.txt
+++ b/png/CMakeLists.txt
@@ -1,30 +1,35 @@
-PROJECT(FLTKPNG)
-INCLUDE_REGULAR_EXPRESSION("^png.*$")
+project(FLTKPNG)
+include_regular_expression("^png.*[.][c|h]$")
-INCLUDE_DIRECTORIES(${FLTKZLIB_SOURCE_DIR})
+include_directories(${FLTKZLIB_SOURCE_DIR})
+include_directories(${ZLIB_INCLUDE_DIR})
-IF(ZLIB_INCLUDE_DIR)
- INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR})
-ENDIF(ZLIB_INCLUDE_DIR)
-
-INCLUDE_DIRECTORIES(${FLTKPNG_SOURCE_DIR})
-INCLUDE_DIRECTORIES(${FLTKPNG_BINARY_DIR})
+include_directories(${FLTKPNG_SOURCE_DIR})
+include_directories(${FLTKPNG_BINARY_DIR})
# source files for png
-SET(PNG_SRCS
+set(PNG_SRCS
pngget.c pngrio.c pngwrite.c
png.c pngmem.c pngrtran.c pngtrans.c pngwtran.c
pngerror.c pngpread.c pngrutil.c pngwutil.c
pngread.c pngset.c pngwio.c
- )
-
-ADD_LIBRARY(fltk_png ${PNG_SRCS})
-INSTALL_TARGETS(/lib fltk_png)
-
-
-IF(UNIX)
- TARGET_LINK_LIBRARIES(fltk_png ${FLTK_ZLIB_LIBRARIES} -lm)
-ELSE(UNIX)
- TARGET_LINK_LIBRARIES(fltk_png ${FLTK_ZLIB_LIBRARIES})
-ENDIF(UNIX)
-
+)
+
+#######################################################################
+add_library(fltk_png ${PNG_SRCS})
+
+if(MSVC)
+ set_target_properties(fltk_png PROPERTIES OUTPUT_NAME fltkpng)
+ if(OPTION_LARGE_FILE)
+ set_target_properties(fltk_png PROPERTIES LINK_FLAGS /LARGEADDRESSAWARE)
+ endif(OPTION_LARGE_FILE)
+else()
+ set_target_properties(fltk_png PROPERTIES OUTPUT_NAME fltk_png)
+endif(MSVC)
+
+target_link_libraries(fltk_png ${FLTK_ZLIB_LIBRARIES})
+
+install(TARGETS fltk_png
+ EXPORT fltk-install
+ DESTINATION ${PREFIX_LIB}
+)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 4b6691605..f4e2ce6ca 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,5 +1,8 @@
-SET(CPPFILES
+include_regular_expression("[.][cxx|c|h]$")
+
+set(CPPFILES
Fl.cxx
+ Fl_Abstract_Printer.cxx
Fl_Adjuster.cxx
Fl_Bitmap.cxx
Fl_Browser.cxx
@@ -14,6 +17,7 @@ SET(CPPFILES
Fl_Clock.cxx
Fl_Color_Chooser.cxx
Fl_Counter.cxx
+ Fl_Device.cxx
Fl_Dial.cxx
Fl_Double_Window.cxx
Fl_File_Browser.cxx
@@ -41,6 +45,7 @@ SET(CPPFILES
Fl_Pack.cxx
Fl_Pixmap.cxx
Fl_Positioner.cxx
+ Fl_Printer.cxx
Fl_Preferences.cxx
Fl_Progress.cxx
Fl_Repeat_Button.cxx
@@ -131,21 +136,25 @@ SET(CPPFILES
fl_show_colormap.cxx
fl_symbols.cxx
fl_vertex.cxx
+ ps_image.cxx
screen_xywh.cxx
fl_utf8.cxx
fl_encoding_latin1.cxx
fl_encoding_mac_roman.cxx
- )
-SET(FLCPPFILES
+)
+
+set(FLCPPFILES
forms_compatability.cxx
forms_bitmap.cxx
forms_free.cxx
forms_fselect.cxx
forms_pixmap.cxx
forms_timer.cxx
- )
-SET(GLCPPFILES
+)
+
+set(GLCPPFILES
Fl_Gl_Choice.cxx
+ Fl_Gl_Device_Plugin.cxx
Fl_Gl_Overlay.cxx
Fl_Gl_Window.cxx
freeglut_geometry.cxx
@@ -156,8 +165,9 @@ SET(GLCPPFILES
gl_start.cxx
glut_compatability.cxx
glut_font.cxx
- )
-SET(IMGCPPFILES
+)
+
+set(IMGCPPFILES
fl_images_core.cxx
Fl_BMP_Image.cxx
Fl_File_Icon2.cxx
@@ -166,10 +176,9 @@ SET(IMGCPPFILES
Fl_JPEG_Image.cxx
Fl_PNG_Image.cxx
Fl_PNM_Image.cxx
- )
+)
-SET(CFILES
- fl_call_main.c
+set(CFILES
flstring.c
scandir.c
numericsort.c
@@ -182,45 +191,256 @@ SET(CFILES
xutf8/utf8Wrap.c
xutf8/keysym2Ucs.c
fl_utf.c
- )
-
-ADD_LIBRARY(fltk ${CPPFILES} ${CFILES})
-INSTALL_TARGETS(/lib fltk)
-SET_TARGET_PROPERTIES(fltk
- PROPERTIES
- VERSION ${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}
- SOVERSION ${FLTK_VERSION_PATCH})
-
-TARGET_LINK_LIBRARIES(fltk ${FLTK_PLATFORM_DEPENDENT_LIBS} ${CMAKE_THREAD_LIBS_INIT})
-
-IF(X11_FOUND)
- TARGET_LINK_LIBRARIES(fltk ${X11_LIBRARIES})
-ENDIF(X11_FOUND)
-
-IF(OPENGL_FOUND)
- ADD_LIBRARY(fltk_gl ${GLCPPFILES})
- INSTALL_TARGETS(/lib fltk_gl)
- TARGET_LINK_LIBRARIES(fltk_gl fltk ${OPENGL_LIBRARIES})
- SET_TARGET_PROPERTIES(fltk_gl
- PROPERTIES
- VERSION ${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}
- SOVERSION ${FLTK_VERSION_PATCH})
-ENDIF(OPENGL_FOUND)
-
-ADD_LIBRARY(fltk_forms ${FLCPPFILES})
-INSTALL_TARGETS(/lib fltk_forms)
-TARGET_LINK_LIBRARIES(fltk_forms fltk)
-SET_TARGET_PROPERTIES(fltk_forms
- PROPERTIES
- VERSION ${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}
- SOVERSION ${FLTK_VERSION_PATCH})
-
-ADD_LIBRARY(fltk_images ${IMGCPPFILES})
-INSTALL_TARGETS(/lib fltk_images)
-TARGET_LINK_LIBRARIES(fltk_images fltk ${FLTK_PNG_LIBRARIES}
+)
+
+if(APPLE)
+ set_source_file_properties(Fl.cxx
+ PROPERTIES COMPILE_FLAGS "-x objective-c++")
+endif(APPLE)
+
+#######################################################################
+add_library(fltk STATIC ${CPPFILES} ${CFILES} fl_call_main.c)
+set_target_properties(fltk PROPERTIES CLEAN_DIRECT_OUTPUT 1)
+if(MSVC)
+ if(OPTION_LARGE_FILE)
+ set_target_properties(fltk PROPERTIES LINK_FLAGS /LARGEADDRESSAWARE)
+ endif()
+ set_target_properties(fltk
+ PROPERTIES
+ OUTPUT_NAME fltk
+ DEBUG_OUTPUT_NAME fltkd
+ )
+endif(MSVC)
+
+if(USE_THREADS)
+ target_link_libraries(fltk ${CMAKE_THREAD_LIBS_INIT})
+endif(USE_THREADS)
+
+if(USE_X11)
+ target_link_libraries(fltk ${X11_LIBRARIES})
+endif(USE_X11)
+
+if(WIN32)
+ target_link_libraries(fltk comctl32)
+endif(WIN32)
+
+if(HAVE_CAIRO)
+ target_link_libraries(fltk fltk_cairo ${PKG_CAIRO_LIBRARIES})
+ENDif(HAVE_CAIRO)
+
+if(USE_XINERAMA)
+ target_link_libraries(fltk ${X11_Xinerama_LIB})
+endif(USE_XINERAMA)
+
+if(USE_XFT)
+ target_link_libraries(fltk ${X11_Xft_LIB})
+endif(USE_XFT)
+
+if(LIB_fontconfig)
+ target_link_libraries(fltk ${LIB_fontconfig})
+endif(LIB_fontconfig)
+
+#######################################################################
+add_library(fltk_forms STATIC ${FLCPPFILES})
+target_link_libraries(fltk_forms fltk)
+set_target_properties(fltk_forms
+ PROPERTIES CLEAN_DIRECT_OUTPUT 1
+)
+if(MSVC)
+ if(OPTION_LARGE_FILE)
+ set_target_properties(fltk_forms PROPERTIES LINK_FLAGS /LARGEADDRESSAWARE)
+ endif()
+ set_target_properties(fltk_forms
+ PROPERTIES
+ OUTPUT_NAME fltkforms
+ DEBUG_OUTPUT_NAME fltkformsd
+ )
+endif(MSVC)
+
+#######################################################################
+add_library(fltk_images STATIC ${IMGCPPFILES})
+target_link_libraries(fltk_images fltk ${FLTK_PNG_LIBRARIES}
${FLTK_JPEG_LIBRARIES} ${FLTK_ZLIB_LIBRARIES})
-SET_TARGET_PROPERTIES(fltk_images
- PROPERTIES
- VERSION ${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}
- SOVERSION ${FLTK_VERSION_PATCH})
+set_target_properties(fltk_images PROPERTIES CLEAN_DIRECT_OUTPUT 1)
+if(MSVC)
+ if(OPTION_LARGE_FILE)
+ set_target_properties(fltk_images PROPERTIES LINK_FLAGS /LARGEADDRESSAWARE)
+ endif()
+ set_target_properties(fltk_images
+ PROPERTIES
+ OUTPUT_NAME fltkimages
+ DEBUG_OUTPUT_NAME fltkimagesd
+ )
+endif(MSVC)
+
+#######################################################################
+install(TARGETS fltk fltk_forms fltk_images
+ EXPORT fltk-install
+ DESTINATION ${PREFIX_LIB}
+)
+
+#######################################################################
+if(OPENGL_FOUND)
+ add_library(fltk_gl STATIC ${GLCPPFILES})
+ target_link_libraries(fltk_gl fltk ${OPENGL_LIBRARIES})
+ set_target_properties(fltk_gl PROPERTIES CLEAN_DIRECT_OUTPUT 1)
+ if(MSVC)
+ if(OPTION_LARGE_FILE)
+ set_target_properties(fltk_gl PROPERTIES LINK_FLAGS /LARGEADDRESSAWARE)
+ endif()
+ set_target_properties(fltk_gl
+ PROPERTIES
+ OUTPUT_NAME fltkgl
+ DEBUG_OUTPUT_NAME fltkgld
+ )
+ endif(MSVC)
+
+ install(TARGETS fltk_gl
+ EXPORT fltk-install
+ DESTINATION ${PREFIX_LIB}
+ )
+endif(OPENGL_FOUND)
+
+#######################################################################
+#######################################################################
+if(OPTION_BUILD_SHARED_LIBS)
+
+#######################################################################
+add_library(fltk_SHARED SHARED ${CPPFILES} ${CFILES})
+set_target_properties(fltk_SHARED
+ PROPERTIES CLEAN_DIRECT_OUTPUT 1
+ VERSION ${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}
+ SOVERSION ${FLTK_VERSION_PATCH}
+)
+if(MSVC)
+ set_target_properties(fltk_SHARED
+ PROPERTIES
+ OUTPUT_NAME fltkdll
+ DEBUG_OUTPUT_NAME fltkdlld
+ COMPILE_DEFINITIONS "FL_DLL;FL_LIBRARY"
+ )
+ if(OPTION_LARGE_FILE)
+ set_target_properties(fltk_SHARED PROPERTIES LINK_FLAGS /LARGEADDRESSAWARE)
+ endif(OPTION_LARGE_FILE)
+else()
+ set_target_properties(fltk_SHARED PROPERTIES OUTPUT_NAME fltk)
+endif(MSVC)
+
+if(USE_THREADS)
+ target_link_libraries(fltk_SHARED ${CMAKE_THREAD_LIBS_INIT})
+endif(USE_THREADS)
+
+if(USE_X11)
+ target_link_libraries(fltk_SHARED ${X11_LIBRARIES})
+endif(USE_X11)
+
+if(WIN32)
+ target_link_libraries(fltk_SHARED comctl32)
+endif(WIN32)
+
+if(HAVE_CAIRO)
+ target_link_libraries(fltk_SHARED fltk_cairo ${PKG_CAIRO_LIBRARIES})
+ENDif(HAVE_CAIRO)
+
+if(USE_XINERAMA)
+ target_link_libraries(fltk_SHARED ${X11_Xinerama_LIB})
+endif(USE_XINERAMA)
+
+if(USE_XFT)
+ target_link_libraries(fltk_SHARED ${X11_Xft_LIB})
+endif(USE_XFT)
+
+if(LIB_fontconfig)
+ target_link_libraries(fltk_SHARED ${LIB_fontconfig})
+endif(LIB_fontconfig)
+
+#######################################################################
+add_library(fltk_forms_SHARED SHARED ${FLCPPFILES})
+target_link_libraries(fltk_forms_SHARED fltk)
+set_target_properties(fltk_forms_SHARED
+ PROPERTIES CLEAN_DIRECT_OUTPUT 1
+ VERSION ${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}
+ SOVERSION ${FLTK_VERSION_PATCH}
+)
+if(MSVC)
+ set_target_properties(fltk_forms_SHARED
+ PROPERTIES
+ OUTPUT_NAME fltkformsdll
+ DEBUG_OUTPUT_NAME fltkformsdlld
+ COMPILE_DEFINITIONS "FL_DLL;FL_LIBRARY"
+ )
+ if(OPTION_LARGE_FILE)
+ set_target_properties(fltk_forms_SHARED PROPERTIES LINK_FLAGS /LARGEADDRESSAWARE)
+ endif(OPTION_LARGE_FILE)
+else()
+ set_target_properties(fltk_forms_SHARED PROPERTIES OUTPUT_NAME fltk_forms)
+endif(MSVC)
+
+if(USE_THREADS)
+ target_link_libraries(fltk_SHARED ${CMAKE_THREAD_LIBS_INIT})
+endif(USE_THREADS)
+
+if(USE_X11)
+ target_link_libraries(fltk_SHARED ${X11_LIBRARIES})
+endif(USE_X11)
+
+#######################################################################
+add_library(fltk_images_SHARED SHARED ${IMGCPPFILES})
+target_link_libraries(fltk_images_SHARED fltk
+ ${FLTK_PNG_LIBRARIES} ${FLTK_JPEG_LIBRARIES} ${FLTK_ZLIB_LIBRARIES}
+)
+set_target_properties(fltk_images_SHARED
+ PROPERTIES CLEAN_DIRECT_OUTPUT 1
+ VERSION ${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}
+ SOVERSION ${FLTK_VERSION_PATCH}
+)
+if(MSVC)
+ set_target_properties(fltk_images_SHARED
+ PROPERTIES
+ OUTPUT_NAME fltkimagesdll
+ DEBUG_OUTPUT_NAME fltkimagesdlld
+ COMPILE_DEFINITIONS "FL_DLL;FL_LIBRARY"
+ )
+ if(OPTION_LARGE_FILE)
+ set_target_properties(fltk_images_SHARED PROPERTIES LINK_FLAGS /LARGEADDRESSAWARE)
+ endif(OPTION_LARGE_FILE)
+else()
+ set_target_properties(fltk_images_SHARED PROPERTIES OUTPUT_NAME fltk_images)
+endif(MSVC)
+
+#######################################################################
+install(TARGETS fltk_SHARED fltk_forms_SHARED fltk_images_SHARED
+ EXPORT fltk-install
+ DESTINATION ${PREFIX_LIB}
+)
+
+#######################################################################
+if(OPENGL_FOUND)
+ add_library(fltk_gl_SHARED SHARED ${GLCPPFILES})
+ target_link_libraries(fltk_gl_SHARED fltk ${OPENGL_LIBRARIES})
+ set_target_properties(fltk_gl_SHARED
+ PROPERTIES CLEAN_DIRECT_OUTPUT 1
+ VERSION ${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}
+ SOVERSION ${FLTK_VERSION_PATCH}
+ )
+ if(MSVC)
+ set_target_properties(fltk_gl_SHARED
+ PROPERTIES
+ OUTPUT_NAME fltkgldll
+ DEBUG_OUTPUT_NAME fltkgldlld
+ COMPILE_DEFINITIONS "FL_DLL;FL_LIBRARY"
+ )
+ if(OPTION_LARGE_FILE)
+ set_target_properties(fltk_gl_SHARED PROPERTIES LINK_FLAGS /LARGEADDRESSAWARE)
+ endif(OPTION_LARGE_FILE)
+ else()
+ set_target_properties(fltk_gl_SHARED PROPERTIES OUTPUT_NAME fltk_gl)
+ endif(MSVC)
+
+ install(TARGETS fltk_gl_SHARED
+ EXPORT fltk-install
+ DESTINATION ${PREFIX_LIB}
+ )
+endif(OPENGL_FOUND)
+endif(OPTION_BUILD_SHARED_LIBS)
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index c8bfaf3e6..a28c48d58 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -1,31 +1,45 @@
-MACRO(CREATE_EXAMPLE NAME SOURCES LIBRARIES)
- SET(srcs)
- FOREACH(src ${SOURCES})
- IF("${src}" MATCHES ".fl$")
- GET_FILENAME_COMPONENT(fname ${src} NAME_WE)
- SET(fluid_name "${CMAKE_CURRENT_SOURCE_DIR}/${fname}.fl")
- SET(cxx_name "${CMAKE_CURRENT_BINARY_DIR}/${fname}.cxx")
- SET(h_name "${CMAKE_CURRENT_BINARY_DIR}/${fname}.cxx")
- SET(srcs ${srcs} "${cxx_name}")
- ADD_CUSTOM_COMMAND(
- OUTPUT ${cxx_name}
- DEPENDS "${fluid_name}" "${FLUID_COMMAND}"
- COMMAND ${FLUID_COMMAND}
- ARGS -c ${fluid_name})
- ADD_CUSTOM_COMMAND(
- OUTPUT ${h_name}
- DEPENDS "${fluid_name}" "${FLUID_COMMAND}"
- COMMAND ${FLUID_COMMAND}
- ARGS -c ${fluid_name})
- ELSE("${src}" MATCHES ".fl$")
- SET(srcs ${srcs} ${src})
- ENDIF("${src}" MATCHES ".fl$")
- ENDFOREACH(src)
- ADD_EXECUTABLE(${NAME} ${srcs})
- TARGET_LINK_LIBRARIES(${NAME} ${LIBRARIES})
-ENDMACRO(CREATE_EXAMPLE)
+set(EXECUTABLE_OUTPUT_PATH ${FLTK_BINARY_DIR}/bin/examples)
-INCLUDE_DIRECTORIES(
+macro(CREATE_EXAMPLE NAME SOURCES LIBRARIES)
+ set(srcs)
+ set(flsrcs)
+ foreach(src ${SOURCES})
+ if("${src}" MATCHES ".fl$")
+ list(APPEND flsrcs ${src})
+ else()
+ list(APPEND srcs ${src})
+ endif("${src}" MATCHES ".fl$")
+ endforeach(src)
+
+ if(flsrcs)
+ fltk_wrap_ui(${NAME} ${flsrcs})
+ endif(flsrcs)
+
+ add_executable(${NAME} WIN32 ${srcs} ${${NAME}_FLTK_UI_SRCS})
+ if(flsrcs)
+ add_dependencies(${NAME} ${FLTK_FLUID_EXECUTABLE})
+ endif(flsrcs)
+ target_link_libraries(${NAME} ${LIBRARIES})
+
+ # link in optional libraries
+ if(HAVE_CAIRO)
+ target_link_libraries(${NAME} fltk_cairo)
+ endif(HAVE_CAIRO)
+
+ if(USE_XFT)
+ target_link_libraries(${NAME} ${X11_Xft_LIB})
+ endif(USE_XFT)
+
+ if(HAVE_XINERAMA)
+ target_link_libraries(${NAME} ${X11_Xinerama_LIB})
+ endif(HAVE_XINERAMA)
+
+ install(TARGETS ${NAME}
+ DESTINATION ${PREFIX_DOC}/examples
+ )
+endmacro(CREATE_EXAMPLE NAME SOURCES LIBRARIES)
+
+include_directories(
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}
)
@@ -45,6 +59,7 @@ CREATE_EXAMPLE(color_chooser color_chooser.cxx fltk)
CREATE_EXAMPLE(cursor cursor.cxx fltk)
CREATE_EXAMPLE(curve curve.cxx fltk)
CREATE_EXAMPLE(demo demo.cxx "fltk;fltk_forms")
+CREATE_EXAMPLE(device device.cxx fltk)
CREATE_EXAMPLE(doublebuffer doublebuffer.cxx fltk)
CREATE_EXAMPLE(editor editor.cxx fltk)
CREATE_EXAMPLE(fast_slow fast_slow.fl fltk)
@@ -85,11 +100,12 @@ CREATE_EXAMPLE(threads threads.cxx fltk)
CREATE_EXAMPLE(tile tile.cxx fltk)
CREATE_EXAMPLE(tiled_image tiled_image.cxx fltk)
CREATE_EXAMPLE(tree tree.cxx fltk)
+CREATE_EXAMPLE(utf8 utf8.cxx fltk)
CREATE_EXAMPLE(valuators valuators.fl fltk)
CREATE_EXAMPLE(unittests unittests.cxx fltk)
# OpenGL demos...
-IF(OPENGL_FOUND)
+if(OPENGL_FOUND)
CREATE_EXAMPLE(CubeView "CubeMain.cxx;CubeView.cxx;CubeViewUI.fl" "fltk;fltk_gl")
CREATE_EXAMPLE(cube cube.cxx "fltk;fltk_gl;${OPENGL_LIBRARIES}")
CREATE_EXAMPLE(fractals "fractals.cxx;fracviewer.cxx" "fltk;fltk_gl")
@@ -97,4 +113,5 @@ CREATE_EXAMPLE(fullscreen fullscreen.cxx "fltk;fltk_gl")
CREATE_EXAMPLE(glpuzzle glpuzzle.cxx "fltk;fltk_gl;${OPENGL_LIBRARIES}")
CREATE_EXAMPLE(gl_overlay gl_overlay.cxx "fltk;fltk_gl;${OPENGL_LIBRARIES}")
CREATE_EXAMPLE(shape shape.cxx "fltk;fltk_gl;${OPENGL_LIBRARIES}")
-ENDIF(OPENGL_FOUND)
+endif(OPENGL_FOUND)
+
diff --git a/zlib/CMakeLists.txt b/zlib/CMakeLists.txt
index 006a7634f..f4e62d00a 100644
--- a/zlib/CMakeLists.txt
+++ b/zlib/CMakeLists.txt
@@ -1,15 +1,30 @@
-PROJECT(FLTKZLIB)
-INCLUDE_REGULAR_EXPRESSION("^(deflate|inf|trees|zconf|zlib|zutil).*$")
+project(FLTKZLIB)
+include_regular_expression(regex_match "[.][h|c]$")
-INCLUDE_DIRECTORIES(${FLTKZLIB_SOURCE_DIR})
-INCLUDE_DIRECTORIES(${FLTKZLIB_BINARY_DIR})
+include_directories(${FLTKZLIB_SOURCE_DIR})
+include_directories(${FLTKZLIB_BINARY_DIR})
# source files for zlib
-SET(ZLIB_SRCS
-adler32.c compress.c crc32.c deflate.c gzio.c inffast.c
-inflate.c inftrees.c trees.c uncompr.c zutil.c
+set(ZLIB_SRCS
+ adler32.c compress.c crc32.c deflate.c gzio.c inffast.c
+ inflate.c inftrees.c trees.c uncompr.c zutil.c
)
-ADD_LIBRARY(fltk_zlib ${ZLIB_SRCS})
-INSTALL_TARGETS(/lib fltk_zlib)
+#######################################################################
+add_library(fltk_z ${ZLIB_SRCS})
+if(MSVC)
+ set_target_properties(fltk_z
+ PROPERTIES
+ OUTPUT_NAME zlib
+ DEBUG_OUTPUT_NAME zlibd
+ )
+ if(OPTION_LARGE_FILE)
+ set_target_properties(fltk_z PROPERTIES LINK_FLAGS /LARGEADDRESSAWARE)
+ endif(OPTION_LARGE_FILE)
+endif(MSVC)
+
+install(TARGETS fltk_z
+ EXPORT fltk-install
+ DESTINATION ${PREFIX_LIB}
+)