From 318c3619dcc19088cc48dccd8d21f87caeff3bb8 Mon Sep 17 00:00:00 2001 From: Albrecht Schlosser Date: Sat, 27 Sep 2014 00:41:06 +0000 Subject: [PATCH] CMake enhancements, as discussed in STR #3055. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@10342 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- CMake/FLTKConfig.cmake.in | 51 ++------- CMake/UseFLTK.cmake.in | 25 ++++- CMake/export.cmake | 20 ++-- CMake/install.cmake | 40 +++++--- CMake/options.cmake | 151 ++++++--------------------- CMake/resources.cmake | 3 +- CMake/setup.cmake | 48 ++++++--- CMakeLists.txt | 7 +- README.CMake.txt | 33 +++--- cairo/CMakeLists.txt | 26 ++--- fluid/CMakeLists.txt | 55 +++++----- jpeg/CMakeLists.txt | 31 ++---- png/CMakeLists.txt | 39 ++++--- src/CMakeLists.txt | 210 ++++++++++---------------------------- test/CMakeLists.txt | 42 +------- zlib/CMakeLists.txt | 32 ++---- 16 files changed, 285 insertions(+), 528 deletions(-) diff --git a/CMake/FLTKConfig.cmake.in b/CMake/FLTKConfig.cmake.in index 8adc8233e..baa25a6d2 100644 --- a/CMake/FLTKConfig.cmake.in +++ b/CMake/FLTKConfig.cmake.in @@ -1,49 +1,16 @@ # # 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. +# This file is generated by CMake and used to load FLTK's settings for an external project. +# It defines the following variables +# FLTK_INCLUDE_DIRS - FLTK include directories +# FLTK_LIBRARIES - list of FLTK libraries built +# FLTK_FLUID_EXECUTABLE needed by fltk_wrap_ui() +# FLTK_USE_FILE - sets things up to use FLTK -set(FLTK_FOUND TRUE) set(FLTK_VERSION @FLTK_VERSION_FULL@) -set(FLTK_FLUID_EXECUTABLE "@FLTK_FLUID_PATH@") +include(${CMAKE_CURRENT_LIST_DIR}/FLTK-Targets.cmake) -if("@EXE_LINKER_FLAGS@" MATCHES "[-_A-Za-z0-9]+")) - set(FLTK_EXE_LINKER_FLAGS "@EXE_LINKER_FLAGS@") -endif("@EXE_LINKER_FLAGS@" MATCHES "[-_A-Za-z0-9]+") - -set(FLTK_USE_FILE "@PREFIX_CONFIG@/UseFLTK.cmake") - -set(FLTK_DIR "@PREFIX_CONFIG@") - -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@") - -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@) - -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") +set(FLTK_INCLUDE_DIRS "@INCLUDE_DIRS@") +set(FLTK_USE_FILE ${CMAKE_CURRENT_LIST_DIR}/UseFLTK.cmake) diff --git a/CMake/UseFLTK.cmake.in b/CMake/UseFLTK.cmake.in index 9518d26ba..ed26f8815 100644 --- a/CMake/UseFLTK.cmake.in +++ b/CMake/UseFLTK.cmake.in @@ -1,8 +1,25 @@ # +# UseFLTK.CMake - FLTK CMake environment configuration file for external projects. +# +# This file is generated by CMake and used to set FLTK's environment for an external project. +# # automatically generated - do not edit -include_directories("@PREFIX_INCLUDE@") +include_directories("@INCLUDE_DIRS@") -if(FLTK_EXE_LINKER_FLAGS) - list(APPEND CMAKE_EXE_LINKER_FLAGS "${FLTK_EXE_LINKER_FLAGS}") -endif(FLTK_EXE_LINKER_FLAGS) +if(CMAKE_CROSSCOMPILING) + find_file(FLUID_PATH + NAMES fluid fluid.exe + PATHS ENV PATH + NO_CMAKE_FIND_ROOT_PATH + ) + add_executable(fluid IMPORTED) + set_target_properties(fluid + PROPERTIES IMPORTED_LOCATION ${FLUID_PATH} + ) + set(FLTK_FLUID_EXECUTABLE ${FLUID_PATH}) +else() + set(FLTK_FLUID_EXECUTABLE fluid) +endif(CMAKE_CROSSCOMPILING) + +set(FLTK_WRAP_UI TRUE) diff --git a/CMake/export.cmake b/CMake/export.cmake index 50aa79556..f022002f8 100644 --- a/CMake/export.cmake +++ b/CMake/export.cmake @@ -29,30 +29,35 @@ if(CMAKE_CROSSCOMPILING) ) add_executable(fluid IMPORTED) set(FLTK_FLUID_EXECUTABLE ${FLUID_PATH}) - set(FLTK_FLUID_PATH ${FLUID_PATH}) + set(FLUID) # no export set_target_properties(fluid PROPERTIES IMPORTED_LOCATION ${FLUID_PATH} ) else() add_subdirectory(fluid) set(FLTK_FLUID_EXECUTABLE fluid) - set(FLTK_FLUID_PATH ${PREFIX_BIN}/fluid) + set(FLUID fluid) # export endif(CMAKE_CROSSCOMPILING) add_subdirectory(src) -# generate FLTKConfig.cmake -string(REPLACE ";" " " EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}") +# generate FLTK-Targets.cmake for build directory use +export(TARGETS ${FLUID} ${FLTK_LIBRARIES} FILE ${CMAKE_BINARY_DIR}/FLTK-Targets.cmake) + +# generate FLTKConfig.cmake for build directory use +set(INCLUDE_DIRS "@FLTK_INCLUDE_DIRS@") +set(CONFIG_PATH @FLTK_BINARY_DIR@) + configure_file( ${FLTK_SOURCE_DIR}/CMake/FLTKConfig.cmake.in - ${EXECUTABLE_OUTPUT_PATH}/FLTKConfig.cmake + ${FLTK_BINARY_DIR}/FLTKConfig.cmake @ONLY ) -# generate UseFLTK.cmake +# generate UseFLTK.cmake for build directory use configure_file( ${FLTK_SOURCE_DIR}/CMake/UseFLTK.cmake.in - ${EXECUTABLE_OUTPUT_PATH}/UseFLTK.cmake + ${FLTK_BINARY_DIR}/UseFLTK.cmake @ONLY ) @@ -92,4 +97,3 @@ if(OPTION_CREATE_LINKS) @ONLY ) endif(OPTION_CREATE_LINKS) -# diff --git a/CMake/install.cmake b/CMake/install.cmake index e8684906d..4df09820b 100644 --- a/CMake/install.cmake +++ b/CMake/install.cmake @@ -32,7 +32,7 @@ add_custom_target(uninstall ) install(DIRECTORY ${FLTK_SOURCE_DIR}/FL - DESTINATION ${PREFIX_INCLUDE} USE_SOURCE_PERMISSIONS + DESTINATION include USE_SOURCE_PERMISSIONS PATTERN ".svn" EXCLUDE ) @@ -40,29 +40,41 @@ if(OPTION_CREATE_LINKS) install(SCRIPT ${FLTK_BINARY_DIR}/install-symlinks.cmake) endif(OPTION_CREATE_LINKS) -install(PROGRAMS ${FLTK_BINARY_DIR}/fltk-config - DESTINATION ${PREFIX_BIN} - OPTIONAL +# generate FLTKConfig.cmake for installed directory use +set(INCLUDE_DIRS ${CMAKE_INSTALL_PREFIX}/include) + +set(CONFIG_PATH ${CMAKE_INSTALL_PREFIX}/@FLTK_CONFIG_PATH@) + +install(EXPORT FLTK-Targets + DESTINATION ${FLTK_CONFIG_PATH} + FILE FLTK-Targets.cmake ) -install(EXPORT fltk-install - DESTINATION ${PREFIX_CONFIG} - FILE FLTKLibraries.cmake +configure_file( + ${FLTK_SOURCE_DIR}/CMake/FLTKConfig.cmake.in + ${FLTK_BINARY_DIR}/etc/FLTKConfig.cmake + @ONLY ) -install(FILES ${EXECUTABLE_OUTPUT_PATH}/FLTKConfig.cmake - DESTINATION ${PREFIX_CONFIG} +install(FILES ${FLTK_BINARY_DIR}/etc/FLTKConfig.cmake + DESTINATION ${FLTK_CONFIG_PATH} ) -install(FILES ${EXECUTABLE_OUTPUT_PATH}/UseFLTK.cmake - DESTINATION ${PREFIX_CONFIG} +configure_file( + ${FLTK_SOURCE_DIR}/CMake/UseFLTK.cmake.in + ${FLTK_BINARY_DIR}/etc/UseFLTK.cmake + @ONLY ) -if(CMAKE_HOST_UNIX) +install(FILES ${FLTK_BINARY_DIR}/etc/UseFLTK.cmake + DESTINATION ${FLTK_CONFIG_PATH} +) + +if(UNIX) macro(INSTALL_MAN FILE LEVEL) install(FILES ${FLTK_SOURCE_DIR}/documentation/src/${FILE}.man - DESTINATION ${PREFIX_MAN}/man${LEVEL} + DESTINATION man/man${LEVEL} RENAME ${FILE}.${LEVEL} ) endmacro(INSTALL_MAN FILE LEVEL) @@ -74,4 +86,4 @@ if(CMAKE_HOST_UNIX) INSTALL_MAN(checkers 6) INSTALL_MAN(sudoku 6) -endif(CMAKE_HOST_UNIX) +endif(UNIX) diff --git a/CMake/options.cmake b/CMake/options.cmake index 62822444f..13931d178 100644 --- a/CMake/options.cmake +++ b/CMake/options.cmake @@ -34,114 +34,24 @@ set(OPTION_ARCHFLAGS "" 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) - +if(UNIX) option(OPTION_CREATE_LINKS "create backwards compatibility links" OFF) -endif(CMAKE_HOST_UNIX) +endif(UNIX) ####################################################################### if(APPLE) option(OPTION_APPLE_X11 "use X11" OFF) endif(APPLE) -if(NOT APPLE OR OPTION_APPLE_X11) +if((NOT APPLE OR OPTION_APPLE_X11) AND NOT WIN32) 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) +endif((NOT APPLE OR OPTION_APPLE_X11) AND NOT WIN32) ####################################################################### option(OPTION_USE_POLL "use poll if available" OFF) @@ -151,7 +61,10 @@ if(OPTION_USE_POLL) endif(OPTION_USE_POLL) ####################################################################### -option(OPTION_BUILD_SHARED_LIBS "Build shared libraries" OFF) +option(OPTION_BUILD_SHARED_LIBS + "Build shared libraries(in addition to static libraries)" + OFF + ) ####################################################################### option(OPTION_BUILD_EXAMPLES "build example programs" ON) @@ -240,30 +153,6 @@ if(OPTION_LARGE_FILE) 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) @@ -289,6 +178,30 @@ endif(OPTION_USE_SYSTEM_ZLIB AND NOT ZLIB_FOUND) set(HAVE_LIBZ 1) +####################################################################### +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_LIBPNG "Use's system libpng" ON) diff --git a/CMake/resources.cmake b/CMake/resources.cmake index dbd19f8d0..5fe4063f5 100644 --- a/CMake/resources.cmake +++ b/CMake/resources.cmake @@ -24,7 +24,7 @@ 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_FREETYPE_H freetype.h PATH_SUFFIXES freetype2 freetype2/freetype) 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) @@ -51,6 +51,7 @@ mark_as_advanced(HAVE_SYS_STDTYPES_H HAVE_XDBE_H) # where to find freetype headers find_path(FREETYPE_PATH freetype.h PATH_SUFFIXES freetype2) +find_path(FREETYPE_PATH freetype/freetype.h PATH_SUFFIXES freetype2) if(FREETYPE_PATH) include_directories(${FREETYPE_PATH}) endif(FREETYPE_PATH) diff --git a/CMake/setup.cmake b/CMake/setup.cmake index b6355ac61..a44f344f2 100644 --- a/CMake/setup.cmake +++ b/CMake/setup.cmake @@ -34,18 +34,39 @@ set(ARCHIVE_OUTPUT_PATH ${FLTK_BINARY_DIR}/lib) # Search for modules in the FLTK source dir first set(CMAKE_MODULE_PATH "${FLTK_SOURCE_DIR}/CMake") -include_directories(${FLTK_BINARY_DIR} ${FLTK_SOURCE_DIR}) +set(FLTK_INCLUDE_DIRS ${FLTK_BINARY_DIR} ${FLTK_SOURCE_DIR}) +include_directories(${FLTK_INCLUDE_DIRS}) ####################################################################### # platform dependent information ####################################################################### +# fix no WIN32 defined issue +if(NOT WIN32) + if(_WIN32) + set(WIN32 _WIN32) + elseif(__WIN32__) + set(WIN32 __WIN32__) + endif(_WIN32) +endif(NOT WIN32) + +# set where config and example files go +if(WIN32 AND NOT CYGWIN) + set(FLTK_CONFIG_PATH CMake) + set(FLTK_EXAMPLES_PATH bin/fltk-examples) +elseif(APPLE) + set(FLTK_CONFIG_PATH FLTK/.framework/Resources/CMake) + set(FLTK_EXAMPLES_PATH share/fltk-examples) +else() + set(FLTK_CONFIG_PATH lib/fltk) + set(FLTK_EXAMPLES_PATH share/fltk-examples) +endif(WIN32 AND NOT CYGWIN) + include(TestBigEndian) TEST_BIG_ENDIAN(WORDS_BIGENDIAN) if(APPLE) set(__APPLE_QUARTZ__ 1) - set(HAVE_STRTOLL 1) set(HAVE_STRCASECMP 1) set(HAVE_DIRENT_H 1) set(HAVE_SNPRINTF 1) @@ -57,16 +78,19 @@ if(APPLE) endif(APPLE) if(WIN32) - if(MSVC) - add_definitions(-DWIN32_LEAN_AND_MEAN) - add_definitions(-D_CRT_SECURE_NO_WARNINGS) - endif(MSVC) - if(CMAKE_C_COMPILER_ID STREQUAL GNU) - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-subsystem,windows") - endif(CMAKE_C_COMPILER_ID STREQUAL GNU) - if(MINGW AND EXISTS /mingw) - list(APPEND CMAKE_PREFIX_PATH /mingw) - endif(MINGW AND EXISTS /mingw) + if(MSVC) + add_definitions(-DWIN32_LEAN_AND_MEAN) + add_definitions(-D_CRT_SECURE_NO_WARNINGS) +######## from ide/VisualC2010/config.h + set(BORDER_WIDTH 2) +######## + 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) ####################################################################### diff --git a/CMakeLists.txt b/CMakeLists.txt index 16ba357ec..9a919fe1a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,12 @@ # project(FLTK) -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 2.6) + +####################################################################### +# define some macros +####################################################################### +include(CMake/macros.cmake) ####################################################################### # basic setup diff --git a/README.CMake.txt b/README.CMake.txt index b8b9b85fc..4824e7b09 100644 --- a/README.CMake.txt +++ b/README.CMake.txt @@ -1,4 +1,4 @@ -README.CMake.txt - 2010-12-20 - Building and using FLTK with CMake +README.CMake.txt - 2014-09-27 - Building and using FLTK with CMake ------------------------------------------------------------------ @@ -98,16 +98,6 @@ OPTION_OPTIM OPTION_ARCHFLAGS Extra architecture flags. -OPTION_PREFIX_BIN -OPTION_PREFIX_LIB -OPTION_PREFIX_INCLUDE -OPTION_PREFIX_DATA -OPTION_PREFIX_DOC -OPTION_PREFIX_CONFIG -OPTION_PREFIX_MAN - The OPTION_PREFIX_* flags are for fine-tuning where everything goes - on the install. - OPTION_APPLE_X11 - default OFF In case you want to use X11 on OSX. Not currently supported. @@ -218,6 +208,11 @@ install it in the /usr/i486-mingw32/usr tree. USING CMAKE WITH FLTK ======================= +The CMake Export/Import facility can be thought of as an automated +fltk-config. For example, if you link your program to the fltk +library, it will automatically link in all of its dependencies. This +includes any special flags. ie on Linux it includes the -lpthread flag. + This howto assumes that you have FLTK libraries which were built using CMake, installed. Building them with CMake generates some CMake helper files which are installed in standard locations, making FLTK easy to find @@ -231,6 +226,12 @@ cmake_minimum_required(VERSION 2.6) project(hello) +# the following line is required only if you don't install FLTK +# or if find_package can't find your installation directory +# it points to the build directory or the base folder, +# not the library folder. +set(FLTK_DIR /path/to/fltk) + find_package(FLTK REQUIRED NO_MODULE) include(${FLTK_USE_FILE}) @@ -240,21 +241,20 @@ target_link_libraries(hello fltk) ------ +The set(FLTK_DIR ...) command is a superhint to the find_package command. +This is very useful if you don't install or have a non-standard install. The find_package command tells CMake to find the package FLTK, REQUIRED means that it is an error if it's not found. NO_MODULE tells it to search only for the FLTKConfig file, not using the FindFLTK.cmake supplied with CMake, which doesn't work with this version of FLTK. Once the package is found we include the ${FLTK_USE_FILE} which adds the -FLTK include directories and library link information to its knowledge -base. After that your programs will be able to find FLTK headers and -when you link the fltk library, it automatically links the libraries -fltk depends on. +FLTK include directories to its knowledge base. After that your programs +will be able to find FLTK headers. The WIN32 in the add_executable tells your Windows compiler that this is a gui app. It is ignored on other platforms. - LIBRARY NAMES --------------- @@ -301,3 +301,4 @@ when find_package(FLTK REQUIRED NO_MODULE) succeeds. Dec 20 2010 - matt: merged and restructures May 15 2013 - erco: small formatting tweaks, added some examples +Feb 23 2014 - msurette: updated to reflect changes to the CMake files diff --git a/cairo/CMakeLists.txt b/cairo/CMakeLists.txt index e6ac7a6fc..2cfa912fd 100644 --- a/cairo/CMakeLists.txt +++ b/cairo/CMakeLists.txt @@ -1,27 +1,17 @@ -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}) +FL_ADD_LIBRARY(fltk_cairo STATIC "${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) +####################################################################### +if(OPTION_BUILD_SHARED_LIBS) +####################################################################### +FL_ADD_LIBRARY(fltk_cairo SHARED "${cairo_SRCS}") -install(TARGETS fltk_cairo - EXPORT fltk-install - DESTINATION ${PREFIX_LIB} -) +####################################################################### +endif(OPTION_BUILD_SHARED_LIBS) +####################################################################### diff --git a/fluid/CMakeLists.txt b/fluid/CMakeLists.txt index 57e735200..25424a8bf 100644 --- a/fluid/CMakeLists.txt +++ b/fluid/CMakeLists.txt @@ -1,39 +1,30 @@ set(CPPFILES - CodeEditor.cxx - Fl_Function_Type.cxx - Fl_Group_Type.cxx - Fl_Menu_Type.cxx - Fl_Type.cxx - Fl_Widget_Type.cxx - Fl_Window_Type.cxx - Fluid_Image.cxx - about_panel.cxx - align_widget.cxx - alignment_panel.cxx - code.cxx - factory.cxx - file.cxx - fluid.cxx - function_panel.cxx - template_panel.cxx - undo.cxx - widget_panel.cxx + CodeEditor.cxx + Fl_Function_Type.cxx + Fl_Group_Type.cxx + Fl_Menu_Type.cxx + Fl_Type.cxx + Fl_Widget_Type.cxx + Fl_Window_Type.cxx + Fluid_Image.cxx + about_panel.cxx + align_widget.cxx + alignment_panel.cxx + code.cxx + factory.cxx + file.cxx + fluid.cxx + function_panel.cxx + template_panel.cxx + undo.cxx + widget_panel.cxx ) add_executable(fluid ${CPPFILES}) target_link_libraries(fluid fltk fltk_images fltk_forms) # link in optional libraries -if(FLTK_HAVE_CAIRO) - target_link_libraries(fluid fltk_cairo) -endif(FLTK_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) @@ -43,6 +34,8 @@ if(HAVE_XINERAMA) endif(HAVE_XINERAMA) install(TARGETS fluid - EXPORT fltk-install - DESTINATION ${PREFIX_BIN} -) + EXPORT FLTK-Targets + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib + ) diff --git a/jpeg/CMakeLists.txt b/jpeg/CMakeLists.txt index ef1431784..20e215b63 100644 --- a/jpeg/CMakeLists.txt +++ b/jpeg/CMakeLists.txt @@ -1,9 +1,3 @@ -project(FLTKJPEG) - -include_regular_expression("^j.*[.][c|h]$") - -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. @@ -31,21 +25,16 @@ set(decompression_SRCS jdsample.c jdcolor.c jquant1.c jquant2.c jdmerge.c ) +list(APPEND BUILD_SRCS "${systemdependent_SRCS};${common_SRCS}") +list(APPEND BUILD_SRCS "${compression_SRCS};${decompression_SRCS}") ####################################################################### -add_library(fltk_jpeg ${systemdependent_SRCS} ${common_SRCS} ${compression_SRCS} ${decompression_SRCS}) +FL_ADD_LIBRARY(fltk_jpeg STATIC "${BUILD_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) +####################################################################### +if(OPTION_BUILD_SHARED_LIBS) +####################################################################### +FL_ADD_LIBRARY(fltk_jpeg SHARED "${BUILD_SRCS}") -install(TARGETS fltk_jpeg - EXPORT fltk-install - DESTINATION ${PREFIX_LIB} -) +####################################################################### +endif(OPTION_BUILD_SHARED_LIBS) +####################################################################### diff --git a/png/CMakeLists.txt b/png/CMakeLists.txt index 8cd41114f..4ebb90529 100644 --- a/png/CMakeLists.txt +++ b/png/CMakeLists.txt @@ -1,11 +1,3 @@ -project(FLTKPNG) -include_regular_expression("^png.*[.][c|h]$") - -include_directories(${FLTKZLIB_SOURCE_DIR}) -include_directories(${ZLIB_INCLUDE_DIR}) - -include_directories(${FLTKPNG_SOURCE_DIR}) -include_directories(${FLTKPNG_BINARY_DIR}) # source files for png set(PNG_SRCS @@ -16,20 +8,25 @@ set(PNG_SRCS ) ####################################################################### -add_library(fltk_png ${PNG_SRCS}) +FL_ADD_LIBRARY(fltk_png STATIC "${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) +if(OPTION_USE_SYSTEM_ZLIB) + target_link_libraries(fltk_png ${FLTK_ZLIB_LIBRARIES}) else() - set_target_properties(fltk_png PROPERTIES OUTPUT_NAME fltk_png) -endif(MSVC) + target_link_libraries(fltk_png fltk_z) +endif(OPTION_USE_SYSTEM_ZLIB) -target_link_libraries(fltk_png ${FLTK_ZLIB_LIBRARIES}) +####################################################################### +if(OPTION_BUILD_SHARED_LIBS) +####################################################################### +FL_ADD_LIBRARY(fltk_png SHARED "${PNG_SRCS}") -install(TARGETS fltk_png - EXPORT fltk-install - DESTINATION ${PREFIX_LIB} -) +if(OPTION_USE_SYSTEM_ZLIB) + target_link_libraries(fltk_png_SHARED ${FLTK_ZLIB_LIBRARIES}) +else() + target_link_libraries(fltk_png_SHARED fltk_z_SHARED) +endif(OPTION_USE_SYSTEM_ZLIB) + +####################################################################### +endif(OPTION_BUILD_SHARED_LIBS) +####################################################################### diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b662bb39d..946f31ad2 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,4 +1,3 @@ -include_regular_expression("[.][cxx|c|h]$") set(CPPFILES Fl.cxx @@ -19,6 +18,7 @@ set(CPPFILES Fl_Counter.cxx Fl_Device.cxx Fl_Dial.cxx + Fl_Help_Dialog_Dox.cxx Fl_Double_Window.cxx Fl_File_Browser.cxx Fl_File_Chooser.cxx @@ -200,30 +200,19 @@ set(CFILES add_definitions(-DFL_LIBRARY) if(APPLE) - set(MMFILES - Fl_cocoa.mm - Fl_Quartz_Printer.mm - Fl_Native_File_Chooser_MAC.mm - Fl_Sys_Menu_Bar.mm - ) + set(MMFILES + Fl_cocoa.mm + Fl_Quartz_Printer.mm + Fl_Native_File_Chooser_MAC.mm + Fl_Sys_Menu_Bar.mm + ) else() set(MMFILES ) endif(APPLE) ####################################################################### -add_library(fltk STATIC ${CPPFILES} ${MMFILES} ${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) +FL_ADD_LIBRARY(fltk STATIC "${CPPFILES};${MMFILES};${CFILES};fl_call_main.c") if(USE_THREADS) target_link_libraries(fltk ${CMAKE_THREAD_LIBS_INIT} ${LIB_dl}) @@ -261,64 +250,36 @@ if(USE_XFT) endif(USE_XFT) ####################################################################### -add_library(fltk_forms STATIC ${FLCPPFILES}) +FL_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}) +FL_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 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(OPTION_USE_SYSTEM_LIBJPEG) + target_link_libraries(fltk_images ${FLTK_JPEG_LIBRARIES}) +else() + target_link_libraries(fltk_images fltk_jpeg) +endif(OPTION_USE_SYSTEM_LIBJPEG) + +if(OPTION_USE_SYSTEM_ZLIB) + target_link_libraries(fltk_images ${FLTK_ZLIB_LIBRARIES}) +else() + target_link_libraries(fltk_images fltk_z) +endif(OPTION_USE_SYSTEM_ZLIB) + +if(OPTION_USE_SYSTEM_LIBPNG) + target_link_libraries(fltk_images ${FLTK_PNG_LIBRARIES}) +else() + target_link_libraries(fltk_images fltk_png) +endif(OPTION_USE_SYSTEM_LIBPNG) ####################################################################### if(OPENGL_FOUND) - add_library(fltk_gl STATIC ${GLCPPFILES}) + FL_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) ####################################################################### @@ -326,25 +287,7 @@ endif(OPENGL_FOUND) if(OPTION_BUILD_SHARED_LIBS) ####################################################################### -add_library(fltk_SHARED SHARED ${CPPFILES} ${MMFILES} ${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) +FL_ADD_LIBRARY(fltk SHARED "${CPPFILES};${MMFILES};${CFILES}") if(USE_THREADS) target_link_libraries(fltk_SHARED ${CMAKE_THREAD_LIBS_INIT} ${LIB_dl}) @@ -359,7 +302,7 @@ if(WIN32) endif(WIN32) if(FLTK_HAVE_CAIRO) - target_link_libraries(fltk_SHARED fltk_cairo ${PKG_CAIRO_LIBRARIES}) + target_link_libraries(fltk_SHARED fltk_cairo_SHARED ${PKG_CAIRO_LIBRARIES}) ENDif(FLTK_HAVE_CAIRO) if(HAVE_XINERAMA) @@ -374,26 +317,8 @@ if(USE_XFT) endif(USE_XFT) ####################################################################### -add_library(fltk_forms_SHARED SHARED ${FLCPPFILES}) +FL_ADD_LIBRARY(fltk_forms SHARED "${FLCPPFILES}") target_link_libraries(fltk_forms_SHARED fltk_SHARED) -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_forms_SHARED ${CMAKE_THREAD_LIBS_INIT} ${LIB_dl}) @@ -404,62 +329,33 @@ if(USE_X11) endif(USE_X11) ####################################################################### -add_library(fltk_images_SHARED SHARED ${IMGCPPFILES}) -target_link_libraries(fltk_images_SHARED fltk_SHARED - ${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) +FL_ADD_LIBRARY(fltk_images SHARED "${IMGCPPFILES}") +target_link_libraries(fltk_images_SHARED fltk_SHARED) -####################################################################### -install(TARGETS fltk_SHARED fltk_forms_SHARED fltk_images_SHARED - EXPORT fltk-install - DESTINATION ${PREFIX_LIB} -) +if(OPTION_USE_SYSTEM_LIBJPEG) + target_link_libraries(fltk_images_SHARED ${FLTK_JPEG_LIBRARIES}) +else() + target_link_libraries(fltk_images_SHARED fltk_jpeg_SHARED) +endif(OPTION_USE_SYSTEM_LIBJPEG) + +if(OPTION_USE_SYSTEM_ZLIB) + target_link_libraries(fltk_images_SHARED ${FLTK_ZLIB_LIBRARIES}) +else() + target_link_libraries(fltk_images_SHARED fltk_z_SHARED) +endif(OPTION_USE_SYSTEM_ZLIB) + +if(OPTION_USE_SYSTEM_LIBPNG) + target_link_libraries(fltk_images_SHARED ${FLTK_PNG_LIBRARIES}) +else() + target_link_libraries(fltk_images_SHARED fltk_png_SHARED) +endif(OPTION_USE_SYSTEM_LIBPNG) ####################################################################### if(OPENGL_FOUND) - add_library(fltk_gl_SHARED SHARED ${GLCPPFILES}) + FL_ADD_LIBRARY(fltk_gl SHARED "${GLCPPFILES}") target_link_libraries(fltk_gl_SHARED fltk_SHARED ${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 616e95777..072fb852f 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -10,46 +10,6 @@ elseif(HAVE_ALSA_ASOUNDLIB_H) set(AUDIOLIBS -lasound) endif(WIN32) -####################################################################### -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(FLTK_HAVE_CAIRO) - target_link_libraries(${NAME} fltk_cairo) - endif(FLTK_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} @@ -137,5 +97,5 @@ endif(OPENGL_FOUND) # Cairo demo if(FLTK_HAVE_CAIRO) - CREATE_EXAMPLE(cairo_test cairo_test.cxx fltk) + CREATE_EXAMPLE(cairo_test cairo_test.cxx "fltk;fltk_cairo") endif(FLTK_HAVE_CAIRO) diff --git a/zlib/CMakeLists.txt b/zlib/CMakeLists.txt index d12e46055..e96080622 100644 --- a/zlib/CMakeLists.txt +++ b/zlib/CMakeLists.txt @@ -1,32 +1,20 @@ -project(FLTKZLIB) -include_regular_expression(regex_match "[.][h|c]$") - -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 + adler32.c compress.c crc32.c deflate.c gzclose.c gzlib.c gzread.c gzwrite.c - inffast.c infback.c inflate.c inftrees.c + inffast.c infback.c inflate.c inftrees.c trees.c uncompr.c zutil.c ) ####################################################################### -add_library(fltk_z ${ZLIB_SRCS}) +FL_ADD_LIBRARY(fltk_z STATIC "${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) +####################################################################### +if(OPTION_BUILD_SHARED_LIBS) +####################################################################### +FL_ADD_LIBRARY(fltk_z SHARED "${ZLIB_SRCS}") -install(TARGETS fltk_z - EXPORT fltk-install - DESTINATION ${PREFIX_LIB} -) +####################################################################### +endif(OPTION_BUILD_SHARED_LIBS) +#######################################################################