From a0d26b634afd9234234f3343c25961b7ffdb7be0 Mon Sep 17 00:00:00 2001 From: Albrecht Schlosser Date: Mon, 5 Apr 2010 22:33:58 +0000 Subject: [PATCH] Mostly rewritten CMake files by Michael Surette. They are more complete than what we had previously, but may need some more testing. The latest changes (removing old APPLE_QD definitions and code) might need another update. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@7451 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- CHANGES | 1 + CMake/CheckFunctionWithHeaderExists.cmake | 54 -- CMake/FLTKConfig.cmake.in | 51 +- CMake/FLTKUse.cmake | 98 --- CMake/PlatformTests.cxx | 140 --- CMake/UseFLTK.cmake.in | 8 + CMake/cmake_uninstall.cmake.in | 19 + CMake/posixScandir.cxx | 10 + CMakeLists.txt | 987 ++++++++++++++-------- CREDITS | 1 + cairo/CMakeLists.txt | 27 + configh.cmake.in | 127 ++- fltk-config.cmake.in | 388 +++++++++ fluid/CMakeLists.txt | 32 +- jpeg/CMakeLists.txt | 53 +- png/CMakeLists.txt | 41 +- src/CMakeLists.txt | 308 ++++++- test/CMakeLists.txt | 75 +- zlib/CMakeLists.txt | 33 +- 19 files changed, 1609 insertions(+), 844 deletions(-) delete mode 100644 CMake/CheckFunctionWithHeaderExists.cmake delete mode 100644 CMake/FLTKUse.cmake delete mode 100644 CMake/PlatformTests.cxx create mode 100644 CMake/UseFLTK.cmake.in create mode 100644 CMake/cmake_uninstall.cmake.in create mode 100644 CMake/posixScandir.cxx create mode 100644 cairo/CMakeLists.txt create mode 100644 fltk-config.cmake.in 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 - -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 -#include - -int main() { - struct jpeg_decompress_struct cinfo; - jpeg_create_decompress(&cinfo); - jpeg_read_header(&cinfo, TRUE); - return 1; -} - -#endif - - -#ifdef HAVE_LIBPNG -#include -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 -int main() { return 0;} -#endif - - -#ifdef HAVE_PNG_GET_VALID -#include - -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 - -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 - -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 + +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") - -# 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" - ) - -# Allow building shared libraries -OPTION(BUILD_SHARED_LIBS "Build FLTK as a shared library" OFF) +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") +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.") +include_directories(${FLTK_SOURCE_DIR} ${FLTK_BINARY_DIR}) -# 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) +# 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}) -# 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) +####################################################################### +# 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) -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) + 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) -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) +include(TestBigEndian) +TEST_BIG_ENDIAN(WORDS_BIGENDIAN) -IF(CYGWIN) - ADD_DEFINITIONS(-DWIN32) - SET( FLTK_PLATFORM_DEPENDENT_LIBS ole32 uuid comctl32 supc++ -lm -lgdi32) -ENDIF(CYGWIN) +if(APPLE) + set(USE_QUARTZ ON) +endif(APPLE) -IF(MINGW) - ADD_DEFINITIONS(-DWIN32) - SET( FLTK_PLATFORM_DEPENDENT_LIBS ole32 uuid comctl32 gdi32 comdlg32) -ENDIF(MINGW) +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) -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) +####################################################################### +# 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_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 "^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(${SIZEOF_INT} MATCHES "^8$") - IF(${SIZEOF_LONG} MATCHES "^8$") - SET(U64 "unsigned long") - ENDIF(${SIZEOF_LONG} MATCHES "^8$") -ENDIF(${SIZEOF_INT} MATCHES "^8$") +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$") -# 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) +####################################################################### +# 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) -# -# 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}") +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) - 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) +# 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) -# 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) +####################################################################### +# 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) -# 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) +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) -# 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) +####################################################################### +# functions +include(CheckFunctionExists) -# Do we have the POSIX compatible scandir() prototype? -PERFORM_CMAKE_TEST(CMake/PlatformTests.cxx HAVE_SCANDIR_POSIX) +if(HAVE_DLFCN_H) + set(CMAKE_REQUIRED_LIBRARIES dl) +endif(HAVE_DLFCN_H) +CHECK_FUNCTION_EXISTS(dlsym HAVE_DLSYM) -SET(FLTK_DATADIR "${CMAKE_INSTALL_PREFIX}/share/FLTK") -SET(FLTK_DOCDIR "${CMAKE_INSTALL_PREFIX}/share/doc/FLTK") +CHECK_FUNCTION_EXISTS(localeconv HAVE_LOCALECONV) -# Write out configuration header file -CONFIGURE_FILE(${FLTK_SOURCE_DIR}/configh.cmake.in - ${FLTK_BINARY_DIR}/config.h) +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) -# 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) +CHECK_FUNCTION_EXISTS(scandir HAVE_SCANDIR) +CHECK_FUNCTION_EXISTS(snprintf HAVE_SNPRINTF) -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) +# 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) -# 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) +CHECK_FUNCTION_EXISTS(strlcat HAVE_STRLCAT) +CHECK_FUNCTION_EXISTS(strlcpy HAVE_STRLCPY) +CHECK_FUNCTION_EXISTS(strtoll HAVE_STRTOLL) +CHECK_FUNCTION_EXISTS(vsnprintf HAVE_VSNPRINTF) -IF(FLTK_CREATE_SYMLINKS) - SAFE_CREATE_SYMLINK( - "${FLTK_BINARY_DIR}/FL" - "${FLTK_BINARY_DIR}/Fl") +set(CMAKE_REQUIRED_LIBRARIES) - SAFE_CREATE_SYMLINK( - "${FLTK_BINARY_DIR}/FL/gl.H" - "${FLTK_BINARY_DIR}/FL/gl.h") +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) - # 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) +####################################################################### +# 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) +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) -# Include header files in fltk binary tree -INCLUDE_DIRECTORIES(${FLTK_BINARY_DIR}) +add_subdirectory(src) -# Do the build of fltk libraries and fluid -SUBDIRS(src) -SUBDIRS(fluid) +# 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 + ) -# Set an option to build the examples and testing -OPTION(BUILD_EXAMPLES "Build the tests" ON) -IF(BUILD_EXAMPLES) - SUBDIRS(test) -ENDIF(BUILD_EXAMPLES) +# generate config.h +configure_file("${FLTK_SOURCE_DIR}/configh.cmake.in" + "${FLTK_BINARY_DIR}/config.h" @ONLY + ) -OPTION(BUILD_TESTING "Build testing of FLTK" ON) -IF(BUILD_TESTING) - ENABLE_TESTING() - INCLUDE(Dart) -ENDIF(BUILD_TESTING) +# generate fltk-config +get_filename_component(CC ${CMAKE_C_COMPILER} NAME) +get_filename_component(CXX ${CMAKE_CXX_COMPILER} NAME) -#----------------------------------------------------------------------------- -# 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}") +string(REPLACE ";" " " C_FLAGS "${FLTK_CFLAGS}") -SET(CFLAGS "${CMAKE_C_FLAGS}") -SET(CXXFLAGS "${CMAKE_CXX_FLAGS}") -SET(CC "${CMAKE_C_COMPILER}") -SET(CXX "${CMAKE_CXX_COMPILER}") +if(X11_Xext_FOUND) + list(APPEND FLTK_LDLIBS -lXext) +endif(X11_Xext_FOUND) +string(REPLACE ";" " " LD_LIBS "${FLTK_LDLIBS}") -# 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}/fltk-config.cmake.in + ${FLTK_BINARY_DIR}/fltk-config + ) -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) +# 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" + ) -# 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 ".") +####################################################################### +# build examples - these have to be after fluid is built/imported +####################################################################### +if(OPTION_BUILD_EXAMPLES) + add_subdirectory(test) +endif(OPTION_BUILD_EXAMPLES) -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) +####################################################################### +# installation +####################################################################### -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") +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: @@ -74,13 +82,21 @@ #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? @@ -230,6 +247,23 @@ #cmakedefine HAVE_LIBZ @HAVE_LIBZ@ #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 -#cmakedefine CMAKE_HAVE_PTHREAD_H -#ifdef CMAKE_HAVE_PTHREAD_H -#define HAVE_PTHREAD_H 1 +/* + * 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@ + +#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" < + + + CFBundleInfoDictionaryVersion + 6.0 + CFBundleExecutable + $post + CFBundleIdentifier + org.fltk.$id + CFBundleName + $post + CFBundlePackageType + APPL + + +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) -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) +# 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) + +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) +####################################################################### +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) -IF(UNIX) - TARGET_LINK_LIBRARIES(fltk_png ${FLTK_ZLIB_LIBRARIES} -lm) -ELSE(UNIX) - TARGET_LINK_LIBRARIES(fltk_png ${FLTK_ZLIB_LIBRARIES}) -ENDIF(UNIX) +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}) +if(APPLE) + set_source_file_properties(Fl.cxx + PROPERTIES COMPILE_FLAGS "-x objective-c++") +endif(APPLE) -TARGET_LINK_LIBRARIES(fltk ${FLTK_PLATFORM_DEPENDENT_LIBS} ${CMAKE_THREAD_LIBS_INIT}) +####################################################################### +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(X11_FOUND) - TARGET_LINK_LIBRARIES(fltk ${X11_LIBRARIES}) -ENDIF(X11_FOUND) +if(USE_THREADS) + target_link_libraries(fltk ${CMAKE_THREAD_LIBS_INIT}) +endif(USE_THREADS) -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) +if(USE_X11) + target_link_libraries(fltk ${X11_LIBRARIES}) +endif(USE_X11) -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}) +if(WIN32) + target_link_libraries(fltk comctl32) +endif(WIN32) -ADD_LIBRARY(fltk_images ${IMGCPPFILES}) -INSTALL_TARGETS(/lib fltk_images) -TARGET_LINK_LIBRARIES(fltk_images fltk ${FLTK_PNG_LIBRARIES} +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} +)