From 1ca225e19da3653cba2cd94543ab3f9019e83f3f Mon Sep 17 00:00:00 2001 From: Michael R Sweet Date: Mon, 13 Sep 2004 02:12:41 +0000 Subject: Added (unsupported) CMake files (STR #499) git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@3829 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- CHANGES | 1 + CMake/CheckFunctionWithHeaderExists.cmake | 54 +++++++ CMake/FLTKConfig.cmake.in | 32 ++++ CMake/PlatformTests.cxx | 81 +++++++++++ CMakeLists.txt | 231 +++++++++++++++++++++++++++++ configh.cmake.in | 234 ++++++++++++++++++++++++++++++ fluid/CMakeLists.txt | 25 ++++ jpeg/CMakeLists.txt | 35 +++++ png/CMakeLists.txt | 28 ++++ src/CMakeLists.txt | 189 ++++++++++++++++++++++++ test/CMakeLists.txt | 96 ++++++++++++ zlib/CMakeLists.txt | 14 ++ 12 files changed, 1020 insertions(+) create mode 100644 CMake/CheckFunctionWithHeaderExists.cmake create mode 100644 CMake/FLTKConfig.cmake.in create mode 100644 CMake/PlatformTests.cxx create mode 100644 CMakeLists.txt create mode 100644 configh.cmake.in create mode 100644 fluid/CMakeLists.txt create mode 100644 jpeg/CMakeLists.txt create mode 100644 png/CMakeLists.txt create mode 100644 src/CMakeLists.txt create mode 100644 test/CMakeLists.txt create mode 100644 zlib/CMakeLists.txt diff --git a/CHANGES b/CHANGES index e7eb7c220..c872c8086 100644 --- a/CHANGES +++ b/CHANGES @@ -3,6 +3,7 @@ CHANGES IN FLTK 1.1.5rc3 - Documentation updates (STR #505, STR #513) - Updated PNG library source to 1.2.6 + wutil patch. - Updated ZLIB library source to 1.2.1. + - Added (unsupported) CMake files (STR #499) - Tooltips would not reappear on the same widget, and the initial tooltip delay was not used after a tooltip was shown (STR #465) diff --git a/CMake/CheckFunctionWithHeaderExists.cmake b/CMake/CheckFunctionWithHeaderExists.cmake new file mode 100644 index 000000000..7d824cd96 --- /dev/null +++ b/CMake/CheckFunctionWithHeaderExists.cmake @@ -0,0 +1,54 @@ +# +# 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 new file mode 100644 index 000000000..3f53597cc --- /dev/null +++ b/CMake/FLTKConfig.cmake.in @@ -0,0 +1,32 @@ +#----------------------------------------------------------------------------- +# +# 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@") + +# The FLTK include file directories. +SET(FLTK_EXECUTABLE_DIRS "@FLTK_EXECUTABLE_DIRS@") +SET(FLTK_LIBRARY_DIRS "@FLTK_LIBRARY_DIRS@") +SET(FLTK_LIBRARIES "fltk_images;fltk;fltk_gl;fltk_forms") + +# 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@") + +# 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@") + +# The location of the UseFLTK.cmake file. +SET(FLTK_USE_FILE "@FLTK_USE_FILE@") + +# The build settings file. +SET(FLTK_BUILD_SETTINGS_FILE "@FLTK_BUILD_SETTINGS_FILE@") + +# Whether FLTK was built with shared libraries. +SET(FLTK_BUILD_SHARED "@BUILD_SHARED_LIBS@") diff --git a/CMake/PlatformTests.cxx b/CMake/PlatformTests.cxx new file mode 100644 index 000000000..828a93eb2 --- /dev/null +++ b/CMake/PlatformTests.cxx @@ -0,0 +1,81 @@ +#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 + +#ifdef HAVE_PNG_H +#include +int main() { retunr 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 diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 000000000..496e4c839 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,231 @@ +# Main CMakeLists.txt to build the FLTK project using CMake (www.cmake.org) +# Written by Andy Cedilnik and Julien Jomier + +PROJECT(FLTK) + +SET(EXECUTABLE_OUTPUT_PATH ${FLTK_BINARY_DIR}/bin CACHE INTERNAL + "Where to put the executables for FLTK" +) +SET(LIBRARY_OUTPUT_PATH "${FLTK_BINARY_DIR}/lib" CACHE INTERNAL + "Where to put the libraries for FLTK" +) + +#----------------------------------------------------------------------------- +# Test for some required system information. +INCLUDE (${CMAKE_ROOT}/Modules/FindThreads.cmake) +SET (CMAKE_USE_PTHREADS "${CMAKE_USE_PTHREADS_INIT}" CACHE BOOL "Use the pthreads library.") + + +SET(FLTK_DATADIR "${CMAKE_INSTALL_PREFIX}/share/FLTK") +SET(FLTK_DOCDIR "${CMAKE_INSTALL_PREFIX}/share/doc/FLTK") + +CONFIGURE_FILE(${FLTK_SOURCE_DIR}/configh.cmake.in + ${FLTK_BINARY_DIR}/config.h) + +IF(WIN32) + IF(NOT CYGWIN) + IF(BORLAND) + SET( FLTK_PLATFORM_DEPENDENT_LIBS import32 ) + ELSE(BORLAND) + SET( FLTK_PLATFORM_DEPENDENT_LIBS wsock32 comctl32 ) + ENDIF(BORLAND) + ENDIF(NOT CYGWIN) +ENDIF(WIN32) + +IF(UNIX) + INCLUDE(${CMAKE_ROOT}/Modules/FindX11.cmake) + SET( FLTK_PLATFORM_DEPENDENT_LIBS ${X11_LIBRARIES} -lm) +ENDIF(UNIX) + +IF(APPLE) + SET( FLTK_PLATFORM_DEPENDENT_LIBS "-framework Carbon -framework Cocoa -framework ApplicationServices -lz") +ENDIF(APPLE) + +IF(CYGWIN) + ADD_DEFINITIONS(-DWIN32) + SET( FLTK_PLATFORM_DEPENDENT_LIBS ole32 uuid comctl32 wsock32 supc++ -lm -lgdi32) +ENDIF(CYGWIN) + + +INCLUDE_DIRECTORIES( + ${FLTK_BINARY_DIR} + ${FLTK_SOURCE_DIR} + ) + +INCLUDE (${CMAKE_ROOT}/Modules/CheckIncludeFiles.cmake) +# 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("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) + +INCLUDE(${CMAKE_ROOT}/Modules/FindZLIB.cmake) +INCLUDE(${CMAKE_ROOT}/Modules/FindPNG.cmake) +INCLUDE(${CMAKE_ROOT}/Modules/FindJPEG.cmake) + +INCLUDE(${CMAKE_ROOT}/Modules/CheckSymbolExists.cmake) +INCLUDE(${FLTK_SOURCE_DIR}/CMake/CheckFunctionWithHeaderExists.cmake) + +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(${CMAKE_ROOT}/Modules/CheckTypeSize.cmake) + +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(HAVE_GL 0) + +# Set an option to build FLTK with OpenGL support +OPTION(USE_OPENGL "OpenGL Support" ON) +IF(USE_OPENGL) +INCLUDE(${CMAKE_ROOT}/Modules/FindOpenGL.cmake) +IF(OPENGL_FOUND) + SET(HAVE_GL 1) +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}) + ELSE("${TEST}" MATCHES "^${TEST}$") + # Have result + #FOREACH(tst ${TEST}) + # MESSAGE("Test ${TEST} resulted in ${${tst}}") + #ENDFOREACH(tst ${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" ON) +IF(FLTK_USE_SYSTEM_ZLIB) +IF(ZLIB_FOUND) + SET(CMAKE_TEST_SPECIAL_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) +ENDIF(FLTK_USE_SYSTEM_ZLIB) + +# Set an option to build the jpeg library or not +OPTION(FLTK_USE_SYSTEM_JPEG "Use's system jpeg" ON) +IF(FLTK_USE_SYSTEM_JPEG) +IF(JPEG_FOUND) + SET(CMAKE_TEST_SPECIAL_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) +ENDIF(FLTK_USE_SYSTEM_JPEG) + + + +# Set an option to build the png library or not +OPTION(FLTK_USE_SYSTEM_PNG "Use's system png" ON) +IF(FLTK_USE_SYSTEM_PNG) +IF(PNG_FOUND) + SET(CMAKE_TEST_SPECIAL_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) +ENDIF(FLTK_USE_SYSTEM_PNG) + + + +SUBDIRS(src) +SUBDIRS(fluid) + +# Set the fluid executable path +SET(FLUID_COMMAND ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/fluid) + +# Set an option to build the tests +OPTION(BUILD_TESTS "Build the tests" ON) +IF(BUILD_TESTS) + SUBDIRS(test) +ENDIF(BUILD_TESTS ) + + +#Genereate the configuration file +SET(FLTK_EXECUTABLE_DIRS ${EXECUTABLE_OUTPUT_PATH}) +SET(FLTK_LIBRARY_DIRS ${LIBRARY_OUTPUT_PATH}) + +CONFIGURE_FILE(${FLTK_SOURCE_DIR}/CMake/FLTKConfig.cmake.in + ${FLTK_BINARY_DIR}/FLTKConfig.cmake) diff --git a/configh.cmake.in b/configh.cmake.in new file mode 100644 index 000000000..fdd07952e --- /dev/null +++ b/configh.cmake.in @@ -0,0 +1,234 @@ +/* + * "$Id: configh.cmake.in,v 1.1.2.1 2004/09/13 02:12:40 easysw Exp $" + * + * Configuration file for the Fast Light Tool Kit (FLTK). + * @configure_input@ + * + * Copyright 1998-2003 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 to "fltk-bugs@fltk.org". + */ + +/* + * Where to find files... + */ + +#define FLTK_DATADIR "@FLTK_DATADIR@" +#define FLTK_DOCDIR "@FLTK_DOCDIR@" + +/* + * BORDER_WIDTH: + * + * Thickness of FL_UP_BOX and FL_DOWN_BOX. Current 1,2, and 3 are + * supported. + * + * 3 is the historic FLTK look. + * 2 is the default and looks like Microsoft Windows, KDE, and Qt. + * 1 is a plausible future evolution... + * + * Note that this may be simulated at runtime by redefining the boxtypes + * using Fl::set_boxtype(). + */ + +#define BORDER_WIDTH 2 + +/* + * HAVE_GL: + * + * Do you have OpenGL? Set this to 0 if you don't have or plan to use + * OpenGL, and FLTK will be smaller. + */ + +#define HAVE_GL @HAVE_GL@ + +/* + * HAVE_GL_GLU_H: + * + * Do you have the OpenGL Utility Library header file? + * (many broken Mesa RPMs do not...) + */ + +#cmakedefine HAVE_GL_GLU_H @HAVE_GL_GLU_H@ + +/* + * USE_COLORMAP: + * + * Setting this to zero will save a good deal of code (especially for + * fl_draw_image), but FLTK will only work on TrueColor visuals. + */ + +#define USE_COLORMAP 1 + +/* + * USE_XFT + * + * Use the new Xft library to draw anti-aliased text. + */ + +#define USE_XFT 0 + +/* + * HAVE_XDBE: + * + * Do we have the X double-buffer extension? + */ + +#define HAVE_XDBE 0 + +/* + * USE_XDBE: + * + * Actually try to use the double-buffer extension? + */ + +#define USE_XDBE HAVE_XDBE + +/* + * HAVE_OVERLAY: + * + * Use the X overlay extension? FLTK will try to use an overlay + * visual for Fl_Overlay_Window, the Gl_Window overlay, and for the + * menus. Setting this to zero will remove a substantial amount of + * code from FLTK. Overlays have only been tested on SGI servers! + */ + +#define HAVE_OVERLAY 0 + +/* + * HAVE_GL_OVERLAY: + * + * It is possible your GL has an overlay even if X does not. If so, + * set this to 1. + */ + +#define HAVE_GL_OVERLAY HAVE_OVERLAY + +/* + * WORDS_BIGENDIAN: + * + * Byte order of your machine: 1 = big-endian, 0 = little-endian. + */ + +#define WORDS_BIGENDIAN 0 + +/* + * U16, U32, U64: + * + * Types used by fl_draw_image. One of U32 or U64 must be defined. + * U16 is optional but FLTK will work better with it! + */ + +#cmakedefine U16 @U16@ +#cmakedefine U32 @U32@ +#cmakedefine U64 @U64@ + +/* + * HAVE_DIRENT_H, HAVE_SYS_NDIR_H, HAVE_SYS_DIR_H, HAVE_NDIR_H, HAVE_SCANDIR: + * + * Where is (used only by fl_file_chooser and scandir). + */ + +#cmakedefine HAVE_DIRENT_H @HAVE_DIRENT_H@ +#cmakedefine HAVE_SYS_NDIR_H @HAVE_SYS_NDIR_H@ +#cmakedefine HAVE_SYS_DIR_H @HAVE_SYS_DIR_H@ +#cmakedefine HAVE_NDIR_H @HAVE_NDIR_H@ +#cmakedefine HAVE_SCANDIR @HAVE_SCANDIR@ + +/* + * Possibly missing sprintf-style functions: + */ + +#cmakedefine HAVE_VSNPRINTF @HAVE_VSNPRINTF@ +#cmakedefine HAVE_SNPRINTF @HAVE_SNPRINTF@ + +/* + * String functions and headers... + */ + +#cmakedefine HAVE_STRINGS_H @HAVE_STRINGS_H@ +#cmakedefine HAVE_STRCASECMP @HAVE_STRCASECMP@ +#cmakedefine HAVE_STRLCAT @HAVE_STRLCAT@ +#cmakedefine HAVE_STRLCPY @HAVE_STRLCPY@ + +/* + * HAVE_SYS_SELECT_H: + * + * Whether or not select() call has its own header file. + */ + +#cmakedefine HAVE_SYS_SELECT_H @HAVE_SYS_SELECT_H@ + +/* + * HAVE_SYS_STDTYPES_H: + * + * Whether or not we have the header file. + */ + +#cmakedefine HAVE_SYS_STDTYPES_H @HAVE_SYS_STDTYPES_H@ + +/* + * USE_POLL: + * + * Use the poll() call provided on Linux and Irix instead of select() + */ + +#define USE_POLL 0 + +/* + * Do we have various image libraries? + */ + +#cmakedefine HAVE_LIBPNG @HAVE_LIBPNG@ +#cmakedefine HAVE_LIBZ @HAVE_LIBZ@ +#cmakedefine HAVE_LIBJPEG @HAVE_LIBJPEG@ + +/* + * Which header file do we include for libpng? + */ + +#cmakedefine HAVE_PNG_H @HAVE_PNG_H@ +#cmakedefine HAVE_LIBPNG_PNG_H @HAVE_LIBPNG_PNG_H@ + +/* + * Do we have the png_xyz() functions? + */ + +#cmakedefine HAVE_PNG_GET_VALID @HAVE_PNG_GET_VALID@ +#cmakedefine HAVE_PNG_SET_TRNS_TO_ALPHA @HAVE_PNG_SET_TRNS_TO_ALPHA@ + +/* + * Do we have POSIX threading? + */ + +#cmakedefine CMAKE_USE_PTHREADS +#ifdef CMAKE_USE_PTHREADS +#define HAVE_PTHREAD 1 +#else +#define HAVE_PTHREAD 0 +#endif + +#cmakedefine CMAKE_HAVE_PTHREAD_H +#ifdef CMAKE_HAVE_PTHREAD_H +#define HAVE_PTHREAD_H 1 +#else +#define HAVE_PTHREAD_H 0 +#endif + +/* + * End of "$Id: configh.cmake.in,v 1.1.2.1 2004/09/13 02:12:40 easysw Exp $". + */ diff --git a/fluid/CMakeLists.txt b/fluid/CMakeLists.txt new file mode 100644 index 000000000..b63cf569a --- /dev/null +++ b/fluid/CMakeLists.txt @@ -0,0 +1,25 @@ +SET(CPPFILES + Fl_Function_Type.cxx + Fl_Menu_Type.cxx + Fl_Group_Type.cxx + Fl_Widget_Type.cxx + Fl_Type.cxx + Fl_Window_Type.cxx + Fluid_Image.cxx + code.cxx + factory.cxx + file.cxx + fluid.cxx + align_widget.cxx + about_panel.cxx + widget_panel.cxx + alignment_panel.cxx + function_panel.cxx +) + + +ADD_EXECUTABLE(fluid ${CPPFILES}) +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) diff --git a/jpeg/CMakeLists.txt b/jpeg/CMakeLists.txt new file mode 100644 index 000000000..03b33f3e6 --- /dev/null +++ b/jpeg/CMakeLists.txt @@ -0,0 +1,35 @@ +PROJECT(FLTKJPEG) + +INCLUDE_REGULAR_EXPRESSION("^(jchuff|jconfig|jdct|jdhuff|jerror|jinclude|jmemsys|jmorecfg|jpegint|jpeglib|jversion|jpeg).*$") + +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) + +# library object files common to compression and decompression +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 +) + +# 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 +) + +ADD_LIBRARY(fltk_jpeg ${systemdependent_SRCS} ${common_SRCS} ${compression_SRCS} ${decompression_SRCS}) + diff --git a/png/CMakeLists.txt b/png/CMakeLists.txt new file mode 100644 index 000000000..abb86f9c9 --- /dev/null +++ b/png/CMakeLists.txt @@ -0,0 +1,28 @@ +PROJECT(FLTKPNG) +INCLUDE_REGULAR_EXPRESSION("^png.*$") + +INCLUDE_DIRECTORIES(${FLTKZLIB_SOURCE_DIR}) + +IF(ZLIB_INCLUDE_DIR) +INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR}) +ENDIF(ZLIB_INCLUDE_DIR) + +INCLUDE_DIRECTORIES(${FLTKPNG_SOURCE_DIR}) +INCLUDE_DIRECTORIES(${FLTKPNG_BINARY_DIR}) + +# source files for png +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}) + +IF(UNIX) +TARGET_LINK_LIBRARIES(fltk_png ${FLTK_ZLIB_LIBRARIES} -lm) +ELSE(UNIX) +TARGET_LINK_LIBRARIES(fltk_png ${FLTK_ZLIB_LIBRARIES}) +ENDIF(UNIX) + diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 000000000..5c3e6f513 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,189 @@ +SET(CPPFILES + Fl.cxx + Fl_Adjuster.cxx + Fl_Bitmap.cxx + Fl_Browser.cxx + Fl_Browser_.cxx + Fl_Browser_load.cxx + Fl_Box.cxx + Fl_Button.cxx + Fl_Chart.cxx + Fl_Check_Browser.cxx + Fl_Check_Button.cxx + Fl_Choice.cxx + Fl_Clock.cxx + Fl_Color_Chooser.cxx + Fl_Counter.cxx + Fl_Dial.cxx + Fl_Double_Window.cxx + Fl_File_Browser.cxx + Fl_File_Chooser.cxx + Fl_File_Chooser2.cxx + Fl_File_Icon.cxx + Fl_File_Input.cxx + Fl_Group.cxx + Fl_Help_View.cxx + Fl_Image.cxx + Fl_Input.cxx + Fl_Input_.cxx + Fl_Light_Button.cxx + Fl_Menu.cxx + Fl_Menu_.cxx + Fl_Menu_Bar.cxx + Fl_Menu_Button.cxx + Fl_Menu_Window.cxx + Fl_Menu_add.cxx + Fl_Menu_global.cxx + Fl_Multi_Label.cxx + Fl_Overlay_Window.cxx + Fl_Pack.cxx + Fl_Pixmap.cxx + Fl_Positioner.cxx + Fl_Preferences.cxx + Fl_Progress.cxx + Fl_Repeat_Button.cxx + Fl_Return_Button.cxx + Fl_Roller.cxx + Fl_Round_Button.cxx + Fl_Scroll.cxx + Fl_Scrollbar.cxx + Fl_Shared_Image.cxx + Fl_Single_Window.cxx + Fl_Slider.cxx + Fl_Tabs.cxx + Fl_Text_Buffer.cxx + Fl_Text_Display.cxx + Fl_Text_Editor.cxx + Fl_Tile.cxx + Fl_Tiled_Image.cxx + Fl_Tooltip.cxx + Fl_Valuator.cxx + Fl_Value_Input.cxx + Fl_Value_Output.cxx + Fl_Value_Slider.cxx + Fl_Widget.cxx + Fl_Window.cxx + Fl_Window_fullscreen.cxx + Fl_Window_hotspot.cxx + Fl_Window_iconize.cxx + Fl_Wizard.cxx + Fl_XBM_Image.cxx + Fl_XPM_Image.cxx + Fl_abort.cxx + Fl_add_idle.cxx + Fl_arg.cxx + Fl_compose.cxx + Fl_display.cxx + Fl_get_key.cxx + Fl_get_system_colors.cxx + Fl_grab.cxx + Fl_lock.cxx + Fl_own_colormap.cxx + Fl_visual.cxx + Fl_x.cxx + filename_absolute.cxx + filename_expand.cxx + filename_ext.cxx + filename_isdir.cxx + filename_list.cxx + filename_match.cxx + filename_setext.cxx + fl_arc.cxx + fl_arci.cxx + fl_ask.cxx + fl_boxtype.cxx + fl_color.cxx + fl_cursor.cxx + fl_curve.cxx + fl_diamond_box.cxx + fl_dnd.cxx + fl_draw.cxx + fl_draw_image.cxx + fl_draw_pixmap.cxx + fl_engraved_label.cxx + fl_file_dir.cxx + fl_font.cxx + fl_labeltype.cxx + fl_line_style.cxx + fl_oval_box.cxx + fl_overlay.cxx + fl_overlay_visual.cxx + fl_plastic.cxx + fl_read_image.cxx + fl_rect.cxx + fl_round_box.cxx + fl_rounded_box.cxx + fl_set_font.cxx + fl_set_fonts.cxx + fl_scroll_area.cxx + fl_shadow_box.cxx + fl_shortcut.cxx + fl_show_colormap.cxx + fl_symbols.cxx + fl_vertex.cxx + ) + +SET(FLCPPFILES + forms_compatability.cxx + forms_bitmap.cxx + forms_free.cxx + forms_fselect.cxx + forms_pixmap.cxx + forms_timer.cxx + ) + +SET(GLCPPFILES + Fl_Gl_Choice.cxx + Fl_Gl_Overlay.cxx + Fl_Gl_Window.cxx + gl_draw.cxx + gl_start.cxx + glut_compatability.cxx + glut_font.cxx + ) + +SET(IMGCPPFILES + fl_images_core.cxx + Fl_BMP_Image.cxx + Fl_File_Icon2.cxx + Fl_GIF_Image.cxx + Fl_Help_Dialog.cxx + Fl_JPEG_Image.cxx + Fl_PNG_Image.cxx + Fl_PNM_Image.cxx + ) + +SET(CFILES + fl_call_main.c + flstring.c + scandir.c + numericsort.c + vsnprintf.c + ) + +ADD_LIBRARY(fltk ${CPPFILES} ${CFILES}) + +TARGET_LINK_LIBRARIES(fltk ${FLTK_PLATFORM_DEPENDENT_LIBS}) + +IF(X11_FOUND) + TARGET_LINK_LIBRARIES(fltk ${X11_LIBRARIES}) +ENDIF(X11_FOUND) + +IF(OPENGL_FOUND) + ADD_LIBRARY(fltk_gl ${GLCPPFILES}) + TARGET_LINK_LIBRARIES(fltk_gl fltk ${OPENGL_LIBRARIES}) +ENDIF(OPENGL_FOUND) + +ADD_LIBRARY(fltk_forms ${FLCPPFILES}) +TARGET_LINK_LIBRARIES(fltk_forms fltk) + +ADD_LIBRARY(fltk_images ${IMGCPPFILES}) +TARGET_LINK_LIBRARIES(fltk_images fltk) + +IF(HAVE_LIBPNG) + TARGET_LINK_LIBRARIES(fltk_images ${PNG_LIBRARIES}) +ENDIF(HAVE_LIBPNG) + +IF(HAVE_LIBJPEG) + TARGET_LINK_LIBRARIES(fltk_images ${JPEG_LIBRARIES}) +ENDIF(HAVE_LIBJPEG) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt new file mode 100644 index 000000000..c32e2dbdb --- /dev/null +++ b/test/CMakeLists.txt @@ -0,0 +1,96 @@ +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} + COMMAND ${FLUID_COMMAND} + ARGS -c ${fluid_name}) + ADD_CUSTOM_COMMAND( + OUTPUT ${h_name} + DEPENDS ${fluid_name} + 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) + +INCLUDE_DIRECTORIES( + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_BINARY_DIR} + ) + +CREATE_EXAMPLE(adjuster adjuster.cxx fltk) +CREATE_EXAMPLE(arc arc.cxx fltk) +CREATE_EXAMPLE(ask ask.cxx fltk) +CREATE_EXAMPLE(bitmap bitmap.cxx fltk) +CREATE_EXAMPLE(boxtype boxtype.cxx fltk) +CREATE_EXAMPLE(browser browser.cxx fltk) +CREATE_EXAMPLE(button button.cxx fltk) +CREATE_EXAMPLE(buttons buttons.cxx fltk) +CREATE_EXAMPLE(checkers checkers.cxx fltk) +CREATE_EXAMPLE(clock clock.cxx fltk) +CREATE_EXAMPLE(colbrowser colbrowser.cxx "fltk;fltk_forms") +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(doublebuffer doublebuffer.cxx fltk) +CREATE_EXAMPLE(editor editor.cxx fltk) +CREATE_EXAMPLE(fast_slow fast_slow.fl fltk) +CREATE_EXAMPLE(file_chooser file_chooser.cxx "fltk;fltk_images") +CREATE_EXAMPLE(fonts fonts.cxx fltk) +CREATE_EXAMPLE(forms forms.cxx "fltk;fltk_forms") +CREATE_EXAMPLE(hello hello.cxx fltk) +CREATE_EXAMPLE(help help.cxx "fltk;fltk_images") +CREATE_EXAMPLE(iconize iconize.cxx fltk) +CREATE_EXAMPLE(image image.cxx fltk) +CREATE_EXAMPLE(inactive inactive.fl fltk) +CREATE_EXAMPLE(input input.cxx fltk) +CREATE_EXAMPLE(keyboard "keyboard.cxx;keyboard_ui.fl" fltk) +CREATE_EXAMPLE(label label.cxx "fltk;fltk_forms") +CREATE_EXAMPLE(line_style line_style.cxx fltk) +CREATE_EXAMPLE(list_visuals list_visuals.cxx fltk) +CREATE_EXAMPLE(mandelbrot "mandelbrot_ui.fl;mandelbrot.cxx" fltk) +CREATE_EXAMPLE(menubar menubar.cxx fltk) +CREATE_EXAMPLE(message message.cxx fltk) +CREATE_EXAMPLE(minimum minimum.cxx fltk) +CREATE_EXAMPLE(navigation navigation.cxx fltk) +CREATE_EXAMPLE(output output.cxx "fltk;fltk_forms") +CREATE_EXAMPLE(overlay overlay.cxx fltk) +CREATE_EXAMPLE(pack pack.cxx fltk) +CREATE_EXAMPLE(pixmap pixmap.cxx fltk) +CREATE_EXAMPLE(pixmap_browser pixmap_browser.cxx "fltk;fltk_images") +CREATE_EXAMPLE(preferences preferences.fl fltk) +CREATE_EXAMPLE(radio radio.fl fltk) +CREATE_EXAMPLE(resize resize.fl fltk) +CREATE_EXAMPLE(resizebox resizebox.cxx fltk) +CREATE_EXAMPLE(scroll scroll.cxx fltk) +CREATE_EXAMPLE(subwindow subwindow.cxx fltk) +CREATE_EXAMPLE(symbols symbols.cxx fltk) +CREATE_EXAMPLE(tabs tabs.fl fltk) +CREATE_EXAMPLE(threads threads.cxx fltk) +CREATE_EXAMPLE(tile tile.cxx fltk) +CREATE_EXAMPLE(tiled_image tiled_image.cxx fltk) +CREATE_EXAMPLE(valuators valuators.fl fltk) + +# OpenGL demos... +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") +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) diff --git a/zlib/CMakeLists.txt b/zlib/CMakeLists.txt new file mode 100644 index 000000000..94fa0e254 --- /dev/null +++ b/zlib/CMakeLists.txt @@ -0,0 +1,14 @@ +PROJECT(FLTKZLIB) +INCLUDE_REGULAR_EXPRESSION("^(deflate|inf|trees|zconf|zlib|zutil).*$") + +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 +) + +ADD_LIBRARY(fltk_zlib ${ZLIB_SRCS}) + -- cgit v1.2.3