summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlbrecht Schlosser <albrechts.fltk@online.de>2020-06-13 15:19:27 +0200
committerAlbrecht Schlosser <albrechts.fltk@online.de>2020-07-15 00:34:53 +0200
commit720b84ef9d086245f5119d143202a2661a78ca53 (patch)
tree26bcd11ffa797c3c01917507e9204fbc9f9b45aa
parent54425030774eb04b29c749ffa85d224c8bbfcc34 (diff)
CMake: refactor and reformat CMake files
- raise minimum CMake version from 2.6.3 to 3.2.3 (Jun 01, 2015) - indent all CMake files according to the CMP (2 col.) - refactor FLTK version number definitions and usage - unify CMake and autoconf/configure variable names: - FL_VERSION -> FLTK_VERSION - FL_MAJOR_VERSION -> FLTK_VERSION_MAJOR - etc. for _MINOR_ and _PATCH_, respectively - note: this does not affect FL_VERSION etc. in source code - generate "export headers" for all libraries (experimental: OFF) - port some forgotten goodies from branch-1.3 to master - merge and improve macro 'create_example' (WIP) - remove "temporary" options and code for older CMake versions - include and use 'GenerateExportHeader' (experimental, WIP: OFF) - note: created header files are not yet used - build only *one* DLL with Visual Studio (tested, works) - similar to the bundled IDE projects in 1.3.x - add some dynamically linked test/demo programs ('*-shared') if shared libraries are built (WIP) - split 'macros.cmake': use one file per macro
-rw-r--r--CMake/FLTK-Functions.cmake55
-rw-r--r--CMake/export.cmake138
-rw-r--r--CMake/fl_add_library.cmake123
-rw-r--r--CMake/fl_create_example.cmake145
-rw-r--r--CMake/fl_debug_var.cmake47
-rw-r--r--CMake/install.cmake121
-rw-r--r--CMake/macros.cmake204
-rw-r--r--CMake/options.cmake469
-rw-r--r--CMake/resources.cmake221
-rw-r--r--CMake/setup.cmake201
-rw-r--r--CMake/variables.cmake61
-rw-r--r--CMakeLists.txt140
-rw-r--r--README.CMake.txt6
-rw-r--r--configure.ac23
-rw-r--r--documentation/CMakeLists.txt135
-rw-r--r--documentation/Doxyfile.in2
-rw-r--r--documentation/Makefile6
-rw-r--r--documentation/src/fltk-book.tex.in2
-rw-r--r--fltk-config.in6
-rw-r--r--fltk.list.in2
-rw-r--r--fltk.spec.in2
-rw-r--r--fluid/CMakeLists.txt109
-rw-r--r--makeinclude.in6
-rw-r--r--src/CMakeLists.txt233
-rw-r--r--src/Makefile2
-rw-r--r--test/CMakeLists.txt291
26 files changed, 1509 insertions, 1241 deletions
diff --git a/CMake/FLTK-Functions.cmake b/CMake/FLTK-Functions.cmake
new file mode 100644
index 000000000..cf7b0ae1a
--- /dev/null
+++ b/CMake/FLTK-Functions.cmake
@@ -0,0 +1,55 @@
+#
+# FLTK-Functions.cmake
+# Written by Michael Surette
+#
+# Copyright 1998-2020 by Bill Spitzak and others.
+#
+# This library is free software. Distribution and use rights are outlined in
+# the file "COPYING" which should have been included with this file. If this
+# file is missing or damaged, see the license at:
+#
+# https://www.fltk.org/COPYING.php
+#
+# Please see the following page on how to report bugs and issues:
+#
+# https://www.fltk.org/bugs.php
+#
+
+#######################################################################
+# functions used by the build system and exported for the end-user
+#######################################################################
+
+# USAGE: FLTK_RUN_FLUID TARGET_NAME "FLUID_SOURCE [.. FLUID_SOURCE]"
+
+function (FLTK_RUN_FLUID TARGET SOURCES)
+ set (CXX_FILES)
+ foreach (src ${SOURCES})
+ if ("${src}" MATCHES "\\.fl$")
+ string(REGEX REPLACE "(.*).fl" \\1 basename ${src})
+ add_custom_command(
+ OUTPUT "${basename}.cxx" "${basename}.h"
+ COMMAND fluid -c ${CMAKE_CURRENT_SOURCE_DIR}/${src}
+ DEPENDS ${src}
+ MAIN_DEPENDENCY ${src}
+ )
+ list (APPEND CXX_FILES "${basename}.cxx")
+ endif ("${src}" MATCHES "\\.fl$")
+ set (${TARGET} ${CXX_FILES} PARENT_SCOPE)
+ endforeach ()
+endfunction (FLTK_RUN_FLUID TARGET SOURCES)
+
+#######################################################################
+
+# sets the bundle icon for OSX bundles
+
+function (FLTK_SET_BUNDLE_ICON TARGET ICON_PATH)
+ get_filename_component (ICON_NAME "${ICON_PATH}" NAME)
+ set_target_properties ("${TARGET}" PROPERTIES
+ MACOSX_BUNDLE_ICON_FILE "${ICON_NAME}"
+ RESOURCE "${ICON_PATH}"
+ )
+endfunction (FLTK_SET_BUNDLE_ICON TARGET ICON_PATH)
+
+#
+# End of file
+#
diff --git a/CMake/export.cmake b/CMake/export.cmake
index d6c07564a..6e8bc5dd6 100644
--- a/CMake/export.cmake
+++ b/CMake/export.cmake
@@ -2,7 +2,7 @@
# Main CMakeLists.txt to build the FLTK project using CMake (www.cmake.org)
# Written by Michael Surette
#
-# Copyright 1998-2018 by Bill Spitzak and others.
+# Copyright 1998-2020 by Bill Spitzak and others.
#
# This library is free software. Distribution and use rights are outlined in
# the file "COPYING" which should have been included with this file. If this
@@ -18,104 +18,112 @@
#######################################################################
# final config and export
#######################################################################
+
# Set the fluid executable path
-if(CMAKE_CROSSCOMPILING)
- find_file(FLUID_PATH
- NAMES fluid fluid.exe
- PATHS ENV PATH
- NO_CMAKE_FIND_ROOT_PATH
- )
- add_executable(fluid IMPORTED)
- set(FLTK_FLUID_EXECUTABLE ${FLUID_PATH})
- set(FLUID) # no export
- set_target_properties(fluid
- PROPERTIES IMPORTED_LOCATION ${FLUID_PATH}
- )
-else()
- add_subdirectory(fluid)
- set(FLTK_FLUID_EXECUTABLE fluid)
- set(FLUID fluid) # export
-endif(CMAKE_CROSSCOMPILING)
+if (CMAKE_CROSSCOMPILING)
+ find_file(FLUID_PATH
+ NAMES fluid fluid.exe
+ PATHS ENV PATH
+ NO_CMAKE_FIND_ROOT_PATH
+ )
+ add_executable(fluid IMPORTED)
+ set (FLTK_FLUID_EXECUTABLE ${FLUID_PATH})
+ set (FLUID) # no export
+ set_target_properties(fluid
+ PROPERTIES IMPORTED_LOCATION ${FLUID_PATH}
+ )
+else ()
+ add_subdirectory(fluid)
+ set (FLTK_FLUID_EXECUTABLE fluid)
+ set (FLUID fluid) # export
+endif (CMAKE_CROSSCOMPILING)
add_subdirectory(src)
# generate FLTK-Targets.cmake for build directory use
export(TARGETS ${FLUID} ${FLTK_LIBRARIES} FILE ${CMAKE_CURRENT_BINARY_DIR}/FLTK-Targets.cmake)
+# generate FLTK-Functions.cmake for build directory use
+configure_file (
+ ${CMAKE_CURRENT_SOURCE_DIR}/CMake/FLTK-Functions.cmake
+ ${CMAKE_CURRENT_BINARY_DIR}/FLTK-Functions.cmake
+ COPYONLY
+)
+
# generate FLTKConfig.cmake for build directory use
-set(INCLUDE_DIRS "${FLTK_INCLUDE_DIRS}")
-set(CONFIG_PATH ${CMAKE_CURRENT_BINARY_DIR})
+set (INCLUDE_DIRS "${FLTK_INCLUDE_DIRS}")
+set (CONFIG_PATH ${CMAKE_CURRENT_BINARY_DIR})
configure_file(
- ${CMAKE_CURRENT_SOURCE_DIR}/CMake/FLTKConfig.cmake.in
- ${CMAKE_CURRENT_BINARY_DIR}/FLTKConfig.cmake
- @ONLY
+ ${CMAKE_CURRENT_SOURCE_DIR}/CMake/FLTKConfig.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/FLTKConfig.cmake
+ @ONLY
)
# generate UseFLTK.cmake for build directory use
configure_file(
- ${CMAKE_CURRENT_SOURCE_DIR}/CMake/UseFLTK.cmake.in
- ${CMAKE_CURRENT_BINARY_DIR}/UseFLTK.cmake
- @ONLY
+ ${CMAKE_CURRENT_SOURCE_DIR}/CMake/UseFLTK.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/UseFLTK.cmake
+ @ONLY
)
# generate fltk-config for build directory use
-set(prefix ${CMAKE_CURRENT_BINARY_DIR})
-set(exec_prefix "\${prefix}")
-set(includedir "${CMAKE_CURRENT_SOURCE_DIR}")
-set(BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}")
-set(libdir "\${exec_prefix}/lib")
-set(srcdir ".")
+set (prefix ${CMAKE_CURRENT_BINARY_DIR})
+set (exec_prefix "\${prefix}")
+set (includedir "${CMAKE_CURRENT_SOURCE_DIR}")
+set (BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}")
+set (libdir "\${exec_prefix}/lib")
+set (srcdir ".")
-set(LIBNAME "${libdir}/libfltk.a")
+set (LIBNAME "${libdir}/libfltk.a")
configure_file(
- "${CMAKE_CURRENT_SOURCE_DIR}/fltk-config.in"
- "${CMAKE_CURRENT_BINARY_DIR}/fltk-config"
- @ONLY
+ "${CMAKE_CURRENT_SOURCE_DIR}/fltk-config.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/fltk-config"
+ @ONLY
)
if (UNIX)
execute_process(COMMAND chmod 755 fltk-config
- WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
)
endif (UNIX)
# prepare some variables for config.h
-if(IS_ABSOLUTE "${FLTK_DATADIR}")
- set(PREFIX_DATA "${FLTK_DATADIR}/fltk")
-else(IS_ABSOLUTE "${FLTK_DATADIR}")
- set(PREFIX_DATA "${CMAKE_INSTALL_PREFIX}/${FLTK_DATADIR}/fltk")
-endif(IS_ABSOLUTE "${FLTK_DATADIR}")
+if (IS_ABSOLUTE "${FLTK_DATADIR}")
+ set (PREFIX_DATA "${FLTK_DATADIR}/fltk")
+else (IS_ABSOLUTE "${FLTK_DATADIR}")
+ set (PREFIX_DATA "${CMAKE_INSTALL_PREFIX}/${FLTK_DATADIR}/fltk")
+endif (IS_ABSOLUTE "${FLTK_DATADIR}")
-if(IS_ABSOLUTE "${FLTK_DOCDIR}")
- set(PREFIX_DOC "${FLTK_DOCDIR}/fltk")
-else(IS_ABSOLUTE "${FLTK_DOCDIR}")
- set(PREFIX_DOC "${CMAKE_INSTALL_PREFIX}/${FLTK_DOCDIR}/fltk")
-endif(IS_ABSOLUTE "${FLTK_DOCDIR}")
+if (IS_ABSOLUTE "${FLTK_DOCDIR}")
+ set (PREFIX_DOC "${FLTK_DOCDIR}/fltk")
+else (IS_ABSOLUTE "${FLTK_DOCDIR}")
+ set (PREFIX_DOC "${CMAKE_INSTALL_PREFIX}/${FLTK_DOCDIR}/fltk")
+endif (IS_ABSOLUTE "${FLTK_DOCDIR}")
-set(CONFIG_H_IN configh.cmake.in)
-set(CONFIG_H config.h)
+set (CONFIG_H_IN configh.cmake.in)
+set (CONFIG_H config.h)
# generate config.h
configure_file(
- "${CMAKE_CURRENT_SOURCE_DIR}/${CONFIG_H_IN}"
- "${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_H}"
- @ONLY
+ "${CMAKE_CURRENT_SOURCE_DIR}/${CONFIG_H_IN}"
+ "${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_H}"
+ @ONLY
)
-if(OPTION_CREATE_LINKS)
- # Set PREFIX_INCLUDE to the proper value.
- if(IS_ABSOLUTE ${FLTK_INCLUDEDIR})
- set(PREFIX_INCLUDE ${FLTK_INCLUDEDIR})
- else()
- set(PREFIX_INCLUDE "${CMAKE_INSTALL_PREFIX}/${FLTK_INCLUDEDIR}")
- endif(IS_ABSOLUTE ${FLTK_INCLUDEDIR})
- configure_file(
- "${CMAKE_CURRENT_SOURCE_DIR}/CMake/install-symlinks.cmake.in"
- "${CMAKE_CURRENT_BINARY_DIR}/install-symlinks.cmake"
- @ONLY
- )
-endif(OPTION_CREATE_LINKS)
+if (OPTION_CREATE_LINKS)
+ # Set PREFIX_INCLUDE to the proper value.
+ if (IS_ABSOLUTE ${FLTK_INCLUDEDIR})
+ set (PREFIX_INCLUDE ${FLTK_INCLUDEDIR})
+ else ()
+ set (PREFIX_INCLUDE "${CMAKE_INSTALL_PREFIX}/${FLTK_INCLUDEDIR}")
+ endif (IS_ABSOLUTE ${FLTK_INCLUDEDIR})
+ configure_file(
+ "${CMAKE_CURRENT_SOURCE_DIR}/CMake/install-symlinks.cmake.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/install-symlinks.cmake"
+ @ONLY
+ )
+endif (OPTION_CREATE_LINKS)
diff --git a/CMake/fl_add_library.cmake b/CMake/fl_add_library.cmake
new file mode 100644
index 000000000..29baa9562
--- /dev/null
+++ b/CMake/fl_add_library.cmake
@@ -0,0 +1,123 @@
+#
+# Macro used by the CMake build system for the Fast Light Tool Kit (FLTK).
+# Written by Michael Surette
+#
+# Copyright 1998-2020 by Bill Spitzak and others.
+#
+# This library is free software. Distribution and use rights are outlined in
+# the file "COPYING" which should have been included with this file. If this
+# file is missing or damaged, see the license at:
+#
+# https://www.fltk.org/COPYING.php
+#
+# Please see the following page on how to report bugs and issues:
+#
+# https://www.fltk.org/bugs.php
+#
+
+#######################################################################
+# FL_ADD_LIBRARY - add a static or shared library to the build
+#######################################################################
+
+macro (FL_ADD_LIBRARY LIBNAME LIBTYPE LIBFILES)
+
+ if (${LIBTYPE} STREQUAL "SHARED")
+ set (TARGET_NAME ${LIBNAME}_SHARED)
+ else ()
+ set (TARGET_NAME ${LIBNAME})
+ endif (${LIBTYPE} STREQUAL "SHARED")
+
+ if (MSVC)
+ set (OUTPUT_NAME_DEBUG "${LIBNAME}d")
+ set (OUTPUT_NAME_RELEASE "${LIBNAME}")
+ else ()
+ set (OUTPUT_NAME_DEBUG "${LIBNAME}")
+ set (OUTPUT_NAME_RELEASE "${LIBNAME}")
+ endif (MSVC)
+
+ add_library(${TARGET_NAME} ${LIBTYPE} ${LIBFILES})
+
+ # target properties for all libraries
+
+ set_target_properties(${TARGET_NAME}
+ PROPERTIES
+ CLEAN_DIRECT_OUTPUT TRUE
+ COMPILE_DEFINITIONS "FL_LIBRARY"
+ )
+
+ # additional target properties for static libraries
+
+ if (${LIBTYPE} STREQUAL "STATIC")
+ set_target_properties(${TARGET_NAME}
+ PROPERTIES
+ OUTPUT_NAME ${LIBNAME}
+ OUTPUT_NAME_DEBUG ${OUTPUT_NAME_DEBUG}
+ OUTPUT_NAME_RELEASE ${OUTPUT_NAME_RELEASE}
+ )
+ endif (${LIBTYPE} STREQUAL "STATIC")
+
+ # additional target properties for shared (dynamic) libraries (DLL's)
+
+ if (${LIBTYPE} STREQUAL "SHARED")
+ set_target_properties(${TARGET_NAME}
+ PROPERTIES
+ VERSION ${FLTK_VERSION}
+ SOVERSION ${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}
+ OUTPUT_NAME ${LIBNAME}
+ OUTPUT_NAME_DEBUG ${OUTPUT_NAME_DEBUG}
+ OUTPUT_NAME_RELEASE ${OUTPUT_NAME_RELEASE}
+ )
+ # MSVC only:
+ if (MSVC)
+ set_target_properties(${TARGET_NAME}
+ PROPERTIES
+ OUTPUT_NAME lib${LIBNAME}
+ OUTPUT_NAME_DEBUG lib${OUTPUT_NAME_DEBUG}
+ OUTPUT_NAME_RELEASE lib${OUTPUT_NAME_RELEASE}
+ # PREFIX "lib" # for MSVC static/shared coexistence *DOES NOT WORK*
+ )
+ endif (MSVC)
+ endif (${LIBTYPE} STREQUAL "SHARED")
+
+ # Debug library output names (optional)
+ set (DEBUG_ONAME 0)
+
+ if (DEBUG_ONAME)
+ get_target_property (XX_ONAME ${TARGET_NAME} OUTPUT_NAME)
+ get_target_property (XX_ONAME_DEBUG ${TARGET_NAME} OUTPUT_NAME_DEBUG)
+ get_target_property (XX_ONAME_RELEASE ${TARGET_NAME} OUTPUT_NAME_RELEASE)
+
+ fl_debug_var (TARGET_NAME)
+ fl_debug_var (XX_ONAME)
+ fl_debug_var (XX_ONAME_DEBUG)
+ fl_debug_var (XX_ONAME_RELEASE)
+ message (STATUS "---")
+ endif (DEBUG_ONAME)
+
+ if (MSVC)
+ if (OPTION_LARGE_FILE)
+ set_target_properties(${TARGET_NAME}
+ PROPERTIES
+ LINK_FLAGS /LARGEADDRESSAWARE
+ )
+ endif (OPTION_LARGE_FILE)
+
+ if (${LIBTYPE} STREQUAL "SHARED")
+ set_target_properties(${TARGET_NAME}
+ PROPERTIES
+ COMPILE_DEFINITIONS "FL_DLL"
+ )
+ endif (${LIBTYPE} STREQUAL "SHARED")
+ endif (MSVC)
+
+ install (TARGETS ${TARGET_NAME}
+ EXPORT FLTK-Targets
+ RUNTIME DESTINATION ${FLTK_BINDIR}
+ LIBRARY DESTINATION ${FLTK_LIBDIR}
+ ARCHIVE DESTINATION ${FLTK_LIBDIR}
+ )
+
+ list (APPEND FLTK_LIBRARIES "${TARGET_NAME}")
+ set (FLTK_LIBRARIES ${FLTK_LIBRARIES} PARENT_SCOPE)
+
+endmacro (FL_ADD_LIBRARY LIBNAME LIBTYPE LIBFILES)
diff --git a/CMake/fl_create_example.cmake b/CMake/fl_create_example.cmake
new file mode 100644
index 000000000..6fa14c4e9
--- /dev/null
+++ b/CMake/fl_create_example.cmake
@@ -0,0 +1,145 @@
+#
+# A macro used by the CMake build system for the Fast Light Tool Kit (FLTK).
+# Written by Michael Surette
+#
+# Copyright 1998-2020 by Bill Spitzak and others.
+#
+# This library is free software. Distribution and use rights are outlined in
+# the file "COPYING" which should have been included with this file. If this
+# file is missing or damaged, see the license at:
+#
+# https://www.fltk.org/COPYING.php
+#
+# Please see the following page on how to report bugs and issues:
+#
+# https://www.fltk.org/bugs.php
+#
+
+#######################################################################
+#
+# macro CREATE_EXAMPLE - Create a test/demo program
+#
+# Input:
+#
+# - NAME: program name, e.g. 'hello'
+#
+# - SOURCES: list of source files, separated by ';' (needs quotes)
+# Sources can be:
+# - .c/.cxx files, e.g. 'hello.cxx'
+# - .fl (fluid) files, e.g. 'radio.fl'
+# - .plist file (macOS), e.g. 'editor-Info.plist'
+# - .icns file (macOS Icon), e.g. 'checkers.icns'
+# File name (type), e.g. '.icns' matters, it is parsed internally.
+# Order of sources doesn't matter, multiple .cxx and .fl files are
+# supported, but only one .plist and .icns file.
+# macOS specific files are ignored on other platforms.
+#
+# - LIBRARIES:
+# List of libraries (CMake target names), separated by ';'. Needs
+# quotes if more than one library is needed, e.g. "fltk_gl;fltk"
+#
+# CREATE_EXAMPLE can have an optional fourth argument with a list of options
+# - the option ANDROID_OK is set if CREATE_EXAMPLE creates code for Android
+# builds in addition to the native build
+#
+#######################################################################
+
+macro (CREATE_EXAMPLE NAME SOURCES LIBRARIES)
+
+ set (srcs) # source files
+ set (flsrcs) # fluid source (.fl) files
+ set (TARGET_NAME ${NAME}) # CMake target name
+ set (FLUID_SOURCES) # generated sources
+ set (ICON_NAME) # macOS icon (max. one)
+ set (PLIST) # macOS .plist file (max. one)
+ set (RESOURCE_PATH) # macOS resource path
+
+ # rename target name "help" (reserved since CMake 2.8.12 and later)
+ # FIXME: not necessary in FLTK 1.4 but left for compatibility (06/2020)
+
+ if (${TARGET_NAME} STREQUAL "help")
+ set (TARGET_NAME "test_help")
+ endif (${TARGET_NAME} STREQUAL "help")
+
+ # filter input files for different handling (fluid, icon, plist, source)
+
+ foreach (src ${SOURCES})
+ if ("${src}" MATCHES "\\.fl$")
+ list (APPEND flsrcs ${src})
+ elseif ("${src}" MATCHES "\\.icns$")
+ set (ICON_NAME "${src}")
+ elseif ("${src}" MATCHES "\\.plist$")
+ set (PLIST "${src}")
+ else ()
+ list (APPEND srcs ${src})
+ endif ("${src}" MATCHES "\\.fl$")
+ endforeach (src)
+
+ if (flsrcs)
+ FLTK_RUN_FLUID (FLUID_SOURCES "${flsrcs}")
+ endif (flsrcs)
+
+ ## FIXME ## #############################################################
+ ## FIXME ## The macOS specific code needs reorganization/simplification
+ ## FIXME ## -- Albrecht (06/2020)
+ ## FIXME ## =============================================================
+ ## FIXME ## Use "new" function `FLTK_SET_BUNDLE_ICON()` (?)
+ ## FIXME ## -- see CMake/FLTK-Functions.cmake (may need some tweaks)
+ ## FIXME ## -- ported from FLTK 1.3 (06/2020)
+ ## FIXME ## #############################################################
+
+ if (APPLE AND (NOT OPTION_APPLE_X11) AND (NOT OPTION_APPLE_SDL))
+
+ ## -- Code from FLTK 1.3 for reference (variable names adjusted):
+ ## add_executable (${TARGET_NAME} MACOSX_BUNDLE ${srcs} ${FLUID_SOURCES} ${ICON_NAME})
+ ## if (ICON_NAME)
+ ## FLTK_SET_BUNDLE_ICON (${TARGET_NAME} ${ICON_NAME})
+ ## endif ()
+ ## -- End of code from FLTK 1.3
+
+ if (ICON_NAME)
+ set (RESOURCE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${TARGET_NAME}.app/Contents/Resources/${ICON_NAME}")
+ elseif (${TARGET_NAME} STREQUAL "demo")
+ set (RESOURCE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/demo.menu")
+ endif (ICON_NAME)
+
+ if (RESOURCE_PATH)
+ add_executable (${TARGET_NAME} MACOSX_BUNDLE ${srcs} ${FLUID_SOURCES} ${RESOURCE_PATH})
+ if (${TARGET_NAME} STREQUAL "demo")
+ target_compile_definitions (demo PUBLIC USING_XCODE)
+ endif (${TARGET_NAME} STREQUAL "demo")
+ else ()
+ add_executable (${TARGET_NAME} MACOSX_BUNDLE ${srcs} ${FLUID_SOURCES})
+ endif (RESOURCE_PATH)
+ else ()
+ add_executable (${TARGET_NAME} WIN32 ${srcs} ${FLUID_SOURCES})
+ endif (APPLE AND (NOT OPTION_APPLE_X11) AND (NOT OPTION_APPLE_SDL))
+
+ set_target_properties (${TARGET_NAME}
+ PROPERTIES OUTPUT_NAME ${NAME}
+ )
+
+ if (APPLE AND RESOURCE_PATH)
+ if (ICON_NAME)
+ set_target_properties (${TARGET_NAME} PROPERTIES MACOSX_BUNDLE_ICON_FILE ${ICON_NAME})
+ endif (ICON_NAME)
+ set_target_properties (${TARGET_NAME} PROPERTIES RESOURCE ${RESOURCE_PATH})
+ endif (APPLE AND RESOURCE_PATH)
+
+ if (APPLE AND (NOT OPTION_APPLE_X11) AND (NOT OPTION_APPLE_SDL) AND PLIST)
+ set_target_properties (${TARGET_NAME} PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/${PLIST}")
+ endif (APPLE AND (NOT OPTION_APPLE_X11) AND (NOT OPTION_APPLE_SDL) AND PLIST)
+
+ target_link_libraries (${TARGET_NAME} ${LIBRARIES})
+
+ # Parse optional fourth argument 'ANDROID_OK', see description above.
+
+ if (${ARGC} GREATER 3)
+ foreach (OPTION ${ARGV3})
+ if (${OPTION} STREQUAL ANDROID_OK AND OPTION_CREATE_ANDROID_STUDIO_IDE)
+ CREATE_ANDROID_IDE_FOR_TEST (${NAME} ${SOURCES} ${LIBRARIES})
+ endif ()
+ endforeach ()
+ endif ()
+
+endmacro (CREATE_EXAMPLE NAME SOURCES LIBRARIES)
diff --git a/CMake/fl_debug_var.cmake b/CMake/fl_debug_var.cmake
new file mode 100644
index 000000000..4cecf3c7a
--- /dev/null
+++ b/CMake/fl_debug_var.cmake
@@ -0,0 +1,47 @@
+#
+# Macro used by the CMake build system for the Fast Light Tool Kit (FLTK).
+# Written by Michael Surette
+#
+# Copyright 1998-2020 by Bill Spitzak and others.
+#
+# This library is free software. Distribution and use rights are outlined in
+# the file "COPYING" which should have been included with this file. If this
+# file is missing or damaged, see the license at:
+#
+# https://www.fltk.org/COPYING.php
+#
+# Please see the following page on how to report bugs and issues:
+#
+# https://www.fltk.org/bugs.php
+#
+
+#######################################################################
+# fl_debug_var - a macro to output debugging info
+#######################################################################
+#
+# This macro displays the name and value of a CMake variable.
+# The variable name is expanded with spaces to be (at least)
+# <min_len> (currently 24) characters wide for better readability.
+# VARNAME must be a string literal, e.g. WIN32 or "WIN32".
+#
+# Syntax:
+# fl_debug_var(VARNAME)
+#
+# Example:
+# fl_debug_var(WIN32)
+# fl_debug_var("UNIX")
+#
+#######################################################################
+
+macro (fl_debug_var name)
+ set (min_len 24)
+ set (var "${name}")
+ string(LENGTH "${var}" len)
+ while (len LESS min_len)
+ # add one space until min_len is reached
+ # ** string(APPEND var " ") # requires CMake 3.4.x (otherwise loop...)
+ set (var "${var} ")
+ string(LENGTH "${var}" len)
+ endwhile (len LESS min_len)
+ message (STATUS "${var} = '${${name}}'")
+endmacro (fl_debug_var)
diff --git a/CMake/install.cmake b/CMake/install.cmake
index 0ab8e6073..c01f19d4d 100644
--- a/CMake/install.cmake
+++ b/CMake/install.cmake
@@ -2,7 +2,7 @@
# Main CMakeLists.txt to build the FLTK project using CMake (www.cmake.org)
# Written by Michael Surette
#
-# Copyright 1998-2018 by Bill Spitzak and others.
+# Copyright 1998-2020 by Bill Spitzak and others.
#
# This library is free software. Distribution and use rights are outlined in
# the file "COPYING" which should have been included with this file. If this
@@ -25,92 +25,103 @@ configure_file(
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
@ONLY
)
-add_custom_target(uninstall
+add_custom_target (uninstall
"${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
)
-install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/FL
- DESTINATION ${FLTK_INCLUDEDIR} USE_SOURCE_PERMISSIONS
- PATTERN ".svn" EXCLUDE
+install (DIRECTORY
+ ${CMAKE_CURRENT_SOURCE_DIR}/FL
+ DESTINATION ${FLTK_INCLUDEDIR} USE_SOURCE_PERMISSIONS
)
-install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/FL
- DESTINATION ${FLTK_INCLUDEDIR} USE_SOURCE_PERMISSIONS
+install (DIRECTORY
+ ${CMAKE_CURRENT_BINARY_DIR}/FL
+ DESTINATION ${FLTK_INCLUDEDIR} USE_SOURCE_PERMISSIONS
)
-if(OPTION_CREATE_LINKS)
- install(SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/install-symlinks.cmake)
-endif(OPTION_CREATE_LINKS)
+if (OPTION_CREATE_LINKS)
+ install (SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/install-symlinks.cmake)
+endif (OPTION_CREATE_LINKS)
# generate FLTKConfig.cmake for installed directory use
-set(INCLUDE_DIRS ${CMAKE_INSTALL_PREFIX}/include)
+set (INCLUDE_DIRS ${CMAKE_INSTALL_PREFIX}/include)
-set(CONFIG_PATH ${CMAKE_INSTALL_PREFIX}/${FLTK_CONFIG_PATH})
+set (CONFIG_PATH ${CMAKE_INSTALL_PREFIX}/${FLTK_CONFIG_PATH})
-install(EXPORT FLTK-Targets
- DESTINATION ${FLTK_CONFIG_PATH}
- FILE FLTK-Targets.cmake
+install (EXPORT FLTK-Targets
+ DESTINATION ${FLTK_CONFIG_PATH}
+ FILE FLTK-Targets.cmake
)
configure_file(
- ${CMAKE_CURRENT_SOURCE_DIR}/CMake/FLTKConfig.cmake.in
- ${CMAKE_CURRENT_BINARY_DIR}/etc/FLTKConfig.cmake
- @ONLY
+ ${CMAKE_CURRENT_SOURCE_DIR}/CMake/FLTKConfig.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/etc/FLTKConfig.cmake
+ @ONLY
+)
+
+install (FILES
+ ${CMAKE_CURRENT_BINARY_DIR}/etc/FLTKConfig.cmake
+ DESTINATION ${FLTK_CONFIG_PATH}
)
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/etc/FLTKConfig.cmake
- DESTINATION ${FLTK_CONFIG_PATH}
+install (FILES
+ ${CMAKE_CURRENT_SOURCE_DIR}/CMake/FLTK-Functions.cmake
+ DESTINATION ${FLTK_CONFIG_PATH}
)
configure_file(
- ${CMAKE_CURRENT_SOURCE_DIR}/CMake/UseFLTK.cmake.in
- ${CMAKE_CURRENT_BINARY_DIR}/etc/UseFLTK.cmake
- @ONLY
+ ${CMAKE_CURRENT_SOURCE_DIR}/CMake/UseFLTK.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/etc/UseFLTK.cmake
+ @ONLY
)
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/etc/UseFLTK.cmake
- DESTINATION ${FLTK_CONFIG_PATH}
+# Deprecated: install UseFLTK.cmake with deprecation warnings only
+install (FILES
+ ${CMAKE_CURRENT_BINARY_DIR}/etc/UseFLTK.cmake
+ DESTINATION ${FLTK_CONFIG_PATH}
)
# generate fltk-config
-set(prefix ${CMAKE_INSTALL_PREFIX})
-set(exec_prefix "\${prefix}")
-set(includedir "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}")
-set(BINARY_DIR)
-set(libdir "\${exec_prefix}/${CMAKE_INSTALL_LIBDIR}")
-set(srcdir ".")
+set (prefix ${CMAKE_INSTALL_PREFIX})
+set (exec_prefix "\${prefix}")
+set (includedir "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}")
+set (BINARY_DIR)
+set (libdir "\${exec_prefix}/${CMAKE_INSTALL_LIBDIR}")
+set (srcdir ".")
-set(LIBNAME "${libdir}/libfltk.a")
+set (LIBNAME "${libdir}/libfltk.a")
configure_file(
- "${CMAKE_CURRENT_SOURCE_DIR}/fltk-config.in"
- "${CMAKE_CURRENT_BINARY_DIR}/bin/fltk-config"
- @ONLY
+ "${CMAKE_CURRENT_SOURCE_DIR}/fltk-config.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/bin/fltk-config"
+ @ONLY
)
-if(UNIX)
- execute_process(COMMAND chmod 755 fltk-config
- WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin"
- )
-endif(UNIX)
-
-install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/bin/fltk-config
- DESTINATION ${FLTK_BINDIR}
+
+if (UNIX)
+ execute_process (COMMAND chmod 755 fltk-config
+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin"
+ )
+endif (UNIX)
+
+install (PROGRAMS
+ ${CMAKE_CURRENT_BINARY_DIR}/bin/fltk-config
+ DESTINATION ${FLTK_BINDIR}
)
-if(UNIX OR MSYS OR (MINGW AND CMAKE_CROSSCOMPILING))
- macro(INSTALL_MAN FILE LEVEL)
- install(FILES
+if (UNIX OR MSYS OR (MINGW AND CMAKE_CROSSCOMPILING))
+ macro(INSTALL_MAN FILE LEVEL)
+ install(FILES
${CMAKE_CURRENT_SOURCE_DIR}/documentation/src/${FILE}.man
DESTINATION ${FLTK_MANDIR}/man${LEVEL}
RENAME ${FILE}.${LEVEL}
- )
- endmacro(INSTALL_MAN 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)
+ 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(UNIX OR MSYS OR (MINGW AND CMAKE_CROSSCOMPILING))
+endif (UNIX OR MSYS OR (MINGW AND CMAKE_CROSSCOMPILING))
diff --git a/CMake/macros.cmake b/CMake/macros.cmake
deleted file mode 100644
index b91b80b89..000000000
--- a/CMake/macros.cmake
+++ /dev/null
@@ -1,204 +0,0 @@
-#
-# Macros used by the CMake build system for the Fast Light Tool Kit (FLTK).
-# Written by Michael Surette
-#
-# Copyright 1998-2018 by Bill Spitzak and others.
-#
-# This library is free software. Distribution and use rights are outlined in
-# the file "COPYING" which should have been included with this file. If this
-# file is missing or damaged, see the license at:
-#
-# https://www.fltk.org/COPYING.php
-#
-# Please see the following page on how to report bugs and issues:
-#
-# https://www.fltk.org/bugs.php
-#
-
-#######################################################################
-# macros used for debugging purposes
-#######################################################################
-
-# This macro displays the name and value of a CMake variable.
-# The variable name is expanded with spaces to be (at least)
-# <min_len> (currently 24) characters wide for better readability.
-# VARNAME must be a string literal, e.g. WIN32 or "WIN32".
-#
-# Syntax:
-# fl_debug_var(VARNAME)
-#
-# Example:
-# fl_debug_var(WIN32)
-# fl_debug_var("UNIX")
-#
-
-macro (fl_debug_var name)
- set (min_len 24)
- set (var "${name}")
- string(LENGTH "${var}" len)
- while (len LESS min_len)
- # add one space until min_len is reached
- # ** string(APPEND var " ") # requires CMake 3.4.x (otherwise loop...)
- set (var "${var} ")
- string(LENGTH "${var}" len)
- endwhile (len LESS min_len)
- message (STATUS "${var} = '${${name}}'")
-endmacro (fl_debug_var)
-
-#######################################################################
-# macros used by the build system
-#######################################################################
-macro(FL_ADD_LIBRARY LIBNAME LIBTYPE LIBFILES)
-
- if (${LIBTYPE} STREQUAL "SHARED")
- set (TARGET_NAME ${LIBNAME}_SHARED)
- else ()
- set (TARGET_NAME ${LIBNAME})
- endif (${LIBTYPE} STREQUAL "SHARED")
-
- if (MSVC)
- set (DEBUG_OUTPUT_NAME "${LIBNAME}d")
- else ()
- set (DEBUG_OUTPUT_NAME "${LIBNAME}")
- endif (MSVC)
-
- add_library(${TARGET_NAME} ${LIBTYPE} ${LIBFILES})
-
- set_target_properties(${TARGET_NAME}
- PROPERTIES
- OUTPUT_NAME ${LIBNAME}
- DEBUG_OUTPUT_NAME ${DEBUG_OUTPUT_NAME}
- CLEAN_DIRECT_OUTPUT TRUE
- COMPILE_DEFINITIONS "FL_LIBRARY"
- )
-
- if (${LIBTYPE} STREQUAL "SHARED")
- set_target_properties(${TARGET_NAME}
- PROPERTIES
- OUTPUT_NAME ${LIBNAME}
- DEBUG_OUTPUT_NAME ${DEBUG_OUTPUT_NAME}
- VERSION ${FLTK_VERSION_FULL}
- SOVERSION ${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}
- PREFIX "lib" # for MSVC static/shared coexistence
- )
- endif (${LIBTYPE} STREQUAL "SHARED")
-
- if (MSVC)
- if (OPTION_LARGE_FILE)
- set_target_properties(${TARGET_NAME}
- PROPERTIES
- LINK_FLAGS /LARGEADDRESSAWARE
- )
- endif (OPTION_LARGE_FILE)
-
- if (${LIBTYPE} STREQUAL "SHARED")
- set_target_properties(${TARGET_NAME}
- PROPERTIES
- COMPILE_DEFINITIONS "FL_DLL"
- )
- endif (${LIBTYPE} STREQUAL "SHARED")
- endif (MSVC)
-
- install(TARGETS ${TARGET_NAME}
- EXPORT FLTK-Targets
- RUNTIME DESTINATION ${FLTK_BINDIR}
- LIBRARY DESTINATION ${FLTK_LIBDIR}
- ARCHIVE DESTINATION ${FLTK_LIBDIR}
- )
-
- list(APPEND FLTK_LIBRARIES "${TARGET_NAME}")
- set (FLTK_LIBRARIES ${FLTK_LIBRARIES} PARENT_SCOPE)
-
-endmacro(FL_ADD_LIBRARY LIBNAME LIBTYPE LIBFILES)
-
-#######################################################################
-# USAGE: FLTK_RUN_FLUID TARGET_NAME "FLUID_SOURCE [.. FLUID_SOURCE]"
-function(FLTK_RUN_FLUID TARGET SOURCES)
- set (CXX_FILES)
- foreach(src ${SOURCES})
- if ("${src}" MATCHES "\\.fl$")
- string(REGEX REPLACE "(.*).fl" \\1 basename ${src})
- add_custom_command(
- OUTPUT "${basename}.cxx" "${basename}.h"
- COMMAND fluid -c ${CMAKE_CURRENT_SOURCE_DIR}/${src}
- DEPENDS ${src}
- MAIN_DEPENDENCY ${src}
- )
- list(APPEND CXX_FILES "${basename}.cxx")
- endif ("${src}" MATCHES "\\.fl$")
- set (${TARGET} ${CXX_FILES} PARENT_SCOPE)
- endforeach(src)
-endfunction(FLTK_RUN_FLUID TARGET SOURCES)
-
-#######################################################################
-macro(CREATE_EXAMPLE NAME SOURCES LIBRARIES)
-
- set (srcs) # source files
- set (flsrcs) # fluid source files
-
- set (tname ${NAME}) # target name
- set (oname ${NAME}) # output (executable) name
-
- foreach(src ${SOURCES})
- if ("${src}" MATCHES "\\.fl$")
- list(APPEND flsrcs ${src})
- else ()
- list(APPEND srcs ${src})
- endif ("${src}" MATCHES "\\.fl$")
- endforeach(src)
-
- set (FLUID_SOURCES)
- if (flsrcs)
- FLTK_RUN_FLUID(FLUID_SOURCES "${flsrcs}")
- endif (flsrcs)
-
- if (APPLE AND (NOT OPTION_APPLE_X11) AND (NOT OPTION_APPLE_SDL))
- unset (RESOURCE_PATH)
- if (${tname} STREQUAL "blocks" OR ${tname} STREQUAL "checkers" OR ${tname} STREQUAL "sudoku")
- set (ICON_NAME ${tname}.icns)
- set (RESOURCE_PATH "${PROJECT_SOURCE_DIR}/test/${tname}.app/Contents/Resources/${ICON_NAME}")
- elseif (${tname} STREQUAL "demo")
- set (RESOURCE_PATH "${PROJECT_SOURCE_DIR}/test/demo.menu")
- endif (${tname} STREQUAL "blocks" OR ${tname} STREQUAL "checkers" OR ${tname} STREQUAL "sudoku")
-
- if (DEFINED RESOURCE_PATH)
- add_executable(${tname} MACOSX_BUNDLE ${srcs} ${FLUID_SOURCES} ${RESOURCE_PATH})
- if (${tname} STREQUAL "demo")
- target_compile_definitions(demo PUBLIC USING_XCODE)
- endif (${tname} STREQUAL "demo")
- else ()
- add_executable(${tname} MACOSX_BUNDLE ${srcs} ${FLUID_SOURCES})
- endif (DEFINED RESOURCE_PATH)
- else ()
- add_executable(${tname} WIN32 ${srcs} ${FLUID_SOURCES})
- endif (APPLE AND (NOT OPTION_APPLE_X11) AND (NOT OPTION_APPLE_SDL))
-
- set_target_properties(${tname}
- PROPERTIES OUTPUT_NAME ${oname}
- )
- if (APPLE AND DEFINED RESOURCE_PATH)
- if (NOT ${tname} STREQUAL "demo")
- set_target_properties(${tname} PROPERTIES MACOSX_BUNDLE_ICON_FILE ${ICON_NAME})
- endif (NOT ${tname} STREQUAL "demo")
- set_target_properties(${tname} PROPERTIES RESOURCE ${RESOURCE_PATH})
- endif (APPLE AND DEFINED RESOURCE_PATH)
- if (APPLE AND (NOT OPTION_APPLE_X11) AND (NOT OPTION_APPLE_SDL) AND ${tname} STREQUAL "editor")
- set_target_properties("editor" PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${PROJECT_SOURCE_DIR}/test/editor-Info.plist" )
- endif(APPLE AND (NOT OPTION_APPLE_X11) AND (NOT OPTION_APPLE_SDL) AND ${tname} STREQUAL "editor")
-
- target_link_libraries(${tname} ${LIBRARIES})
-
- # CREATE_EXAMPLE can have an optional fourth argument with a list of options
- # - the option ANDROID_OK is set if CREATE_EXAMPLE creates code for Androids
- # builds in addition to the native build
- if (${ARGC} GREATER 3)
- foreach(OPTION ${ARGV3})
- if (${OPTION} STREQUAL ANDROID_OK AND OPTION_CREATE_ANDROID_STUDIO_IDE)
- CREATE_ANDROID_IDE_FOR_TEST(${NAME} ${SOURCES} ${LIBRARIES})
- endif()
- endforeach()
- endif()
-
-endmacro(CREATE_EXAMPLE NAME SOURCES LIBRARIES)
-
-#######################################################################
diff --git a/CMake/options.cmake b/CMake/options.cmake
index 63412ebc3..0c13fa9a6 100644
--- a/CMake/options.cmake
+++ b/CMake/options.cmake
@@ -23,49 +23,33 @@ if (DEBUG_OPTIONS_CMAKE)
endif (DEBUG_OPTIONS_CMAKE)
#######################################################################
-# *Temporary* option to modify header file searches
-#######################################################################
-# Note: The old, deprecated behavior (ON) was to use find_file() for
-# header searches, the new behavior (ON) is to use check_include_files()
-# which seems to be more reliable but more difficult to set up and
-# slower because it uses a compilation test. Default is "new" (OFF).
-# This option should be removed as soon as the new search strategy
-# is considered stable.
-# Currently used only in resources.cmake.
-#######################################################################
-option(USE_FIND_FILE
- "Deprecated: use find_file() for header searches. Should be OFF."
- OFF
-)
-mark_as_advanced(USE_FIND_FILE)
-
-#######################################################################
# options
#######################################################################
-set(OPTION_OPTIM ""
- CACHE STRING
- "custom optimization flags"
- )
-add_definitions(${OPTION_OPTIM})
+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_ARCHFLAGS ""
+ CACHE STRING
+ "custom architecture flags"
+ )
+add_definitions (${OPTION_ARCHFLAGS})
#######################################################################
-set(OPTION_ABI_VERSION ""
- CACHE STRING
- "FLTK ABI Version FL_ABI_VERSION: 1xxyy for 1.x.y (xx,yy with leading zero)"
- )
-set(FL_ABI_VERSION ${OPTION_ABI_VERSION})
+set (OPTION_ABI_VERSION ""
+ CACHE STRING
+ "FLTK ABI Version FL_ABI_VERSION: 1xxyy for 1.x.y (xx,yy with leading zero)"
+ )
+set (FL_ABI_VERSION ${OPTION_ABI_VERSION})
#######################################################################
#######################################################################
if (UNIX)
- option(OPTION_CREATE_LINKS "create backwards compatibility links" OFF)
+ option (OPTION_CREATE_LINKS "create backwards compatibility links" OFF)
+ list (APPEND FLTK_LDLIBS -lm)
endif (UNIX)
#######################################################################
@@ -107,105 +91,105 @@ if (OPTION_APPLE_SDL)
endif (OPTION_APPLE_SDL)
#######################################################################
-option(OPTION_USE_POLL "use poll if available" OFF)
-mark_as_advanced(OPTION_USE_POLL)
+option (OPTION_USE_POLL "use poll if available" OFF)
+mark_as_advanced (OPTION_USE_POLL)
-if(OPTION_USE_POLL)
- CHECK_FUNCTION_EXISTS(poll USE_POLL)
-endif(OPTION_USE_POLL)
+if (OPTION_USE_POLL)
+ CHECK_FUNCTION_EXISTS(poll USE_POLL)
+endif (OPTION_USE_POLL)
#######################################################################
-option(OPTION_BUILD_SHARED_LIBS
- "Build shared libraries(in addition to static libraries)"
- OFF
- )
+option (OPTION_BUILD_SHARED_LIBS
+ "Build shared libraries(in addition to static libraries)"
+ OFF
+ )
#######################################################################
-option(OPTION_BUILD_EXAMPLES "build example programs" ON)
-option(OPTION_PRINT_SUPPORT "allow print support" ON)
-option(OPTION_FILESYSTEM_SUPPORT "allow file system support" ON)
+option (OPTION_BUILD_EXAMPLES "build example programs" ON)
+option (OPTION_PRINT_SUPPORT "allow print support" ON)
+option (OPTION_FILESYSTEM_SUPPORT "allow file system support" ON)
#######################################################################
if (DOXYGEN_FOUND)
- option(OPTION_BUILD_HTML_DOCUMENTATION "build html docs" ON)
- option(OPTION_INSTALL_HTML_DOCUMENTATION "install html docs" OFF)
+ option (OPTION_BUILD_HTML_DOCUMENTATION "build html docs" ON)
+ option (OPTION_INSTALL_HTML_DOCUMENTATION "install html docs" OFF)
- option(OPTION_INCLUDE_DRIVER_DOCUMENTATION "include driver (developer) docs" OFF)
- mark_as_advanced(OPTION_INCLUDE_DRIVER_DOCUMENTATION)
+ option (OPTION_INCLUDE_DRIVER_DOCUMENTATION "include driver (developer) docs" OFF)
+ mark_as_advanced (OPTION_INCLUDE_DRIVER_DOCUMENTATION)
- if (LATEX_FOUND)
- option(OPTION_BUILD_PDF_DOCUMENTATION "build pdf docs" ON)
- option(OPTION_INSTALL_PDF_DOCUMENTATION "install pdf docs" OFF)
- endif (LATEX_FOUND)
+ if (LATEX_FOUND)
+ option (OPTION_BUILD_PDF_DOCUMENTATION "build pdf docs" ON)
+ option (OPTION_INSTALL_PDF_DOCUMENTATION "install pdf docs" OFF)
+ endif (LATEX_FOUND)
endif (DOXYGEN_FOUND)
-if(OPTION_BUILD_HTML_DOCUMENTATION OR OPTION_BUILD_PDF_DOCUMENTATION)
- add_subdirectory(documentation)
-endif(OPTION_BUILD_HTML_DOCUMENTATION OR OPTION_BUILD_PDF_DOCUMENTATION)
+if (OPTION_BUILD_HTML_DOCUMENTATION OR OPTION_BUILD_PDF_DOCUMENTATION)
+ add_subdirectory (documentation)
+endif (OPTION_BUILD_HTML_DOCUMENTATION OR OPTION_BUILD_PDF_DOCUMENTATION)
#######################################################################
-include(FindPkgConfig)
+include (FindPkgConfig)
-option(OPTION_CAIRO "use lib Cairo" OFF)
-option(OPTION_CAIROEXT
- "use FLTK code instrumentation for Cairo extended use" OFF
- )
+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)
+ pkg_search_module (PKG_CAIRO cairo)
endif ((OPTION_CAIRO OR OPTION_CAIROEXT) AND LIB_CAIRO)
if (PKG_CAIRO_FOUND)
- set (FLTK_HAVE_CAIRO 1)
- add_subdirectory(cairo)
- list(APPEND FLTK_LDLIBS -lcairo -lpixman-1)
- include_directories(${PKG_CAIRO_INCLUDE_DIRS})
- string(REPLACE ";" " " CAIROFLAGS "${PKG_CAIRO_CFLAGS}")
-
- if (LIB_CAIRO AND OPTION_CAIROEXT)
- set(FLTK_USE_CAIRO 1)
- set(FLTK_CAIRO_FOUND TRUE)
- else ()
- set(FLTK_CAIRO_FOUND FALSE)
- endif (LIB_CAIRO AND OPTION_CAIROEXT)
+ set (FLTK_HAVE_CAIRO 1)
+ add_subdirectory (cairo)
+ list (APPEND FLTK_LDLIBS -lcairo -lpixman-1)
+ include_directories (${PKG_CAIRO_INCLUDE_DIRS})
+ string (REPLACE ";" " " CAIROFLAGS "${PKG_CAIRO_CFLAGS}")
+
+ if (LIB_CAIRO AND OPTION_CAIROEXT)
+ set (FLTK_USE_CAIRO 1)
+ set (FLTK_CAIRO_FOUND TRUE)
+ else ()
+ set (FLTK_CAIRO_FOUND FALSE)
+ endif (LIB_CAIRO AND OPTION_CAIROEXT)
else ()
- if (OPTION_CAIRO OR OPTION_CAIROEXT)
- message(STATUS "*** Cairo was requested but not found - please check your cairo installation")
- message(STATUS "*** or disable options OPTION_CAIRO and OPTION_CAIRO_EXT.")
- message(FATAL_ERROR "*** Terminating: missing Cairo libs or headers.")
- endif (OPTION_CAIRO OR OPTION_CAIROEXT)
+ if (OPTION_CAIRO OR OPTION_CAIROEXT)
+ message (STATUS "*** Cairo was requested but not found - please check your cairo installation")
+ message (STATUS "*** or disable options OPTION_CAIRO and OPTION_CAIRO_EXT.")
+ message (FATAL_ERROR "*** Terminating: missing Cairo libs or headers.")
+ endif (OPTION_CAIRO OR OPTION_CAIROEXT)
endif (PKG_CAIRO_FOUND)
#######################################################################
-option(OPTION_USE_SVG "read/write SVG files" ON)
+option (OPTION_USE_SVG "read/write SVG files" ON)
-if(OPTION_USE_SVG)
- set(FLTK_USE_SVG 1)
-endif(OPTION_USE_SVG)
+if (OPTION_USE_SVG)
+ set (FLTK_USE_SVG 1)
+endif (OPTION_USE_SVG)
#######################################################################
-set(HAVE_GL LIB_GL OR LIB_MesaGL)
+set (HAVE_GL LIB_GL OR LIB_MesaGL)
-if(HAVE_GL)
- option(OPTION_USE_GL "use OpenGL" ON)
-endif(HAVE_GL)
+if (HAVE_GL)
+ option (OPTION_USE_GL "use OpenGL" ON)
+endif (HAVE_GL)
-if(OPTION_USE_GL)
- if(OPTION_APPLE_X11)
- set(OPENGL_FOUND TRUE)
- set(OPENGL_LIBRARIES -L${PATH_TO_XLIBS} -lGLU -lGL)
- set(HAVE_GL_GLU_H /opt/X11/include/GL/glu.h)
- elseif(OPTION_APPLE_SDL)
- set(OPENGL_FOUND FALSE)
- else()
- include(FindOpenGL)
- if(APPLE)
- set(HAVE_GL_GLU_H ${HAVE_OPENGL_GLU_H})
- endif(APPLE)
- endif(OPTION_APPLE_X11)
+if (OPTION_USE_GL)
+ if (OPTION_APPLE_X11)
+ set (OPENGL_FOUND TRUE)
+ set (OPENGL_LIBRARIES -L${PATH_TO_XLIBS} -lGLU -lGL)
+ find_file (HAVE_GL_GLU_H GL/glu.h PATHS /opt/X11/include)
+ elseif (OPTION_APPLE_SDL)
+ set (OPENGL_FOUND FALSE)
+ else()
+ include (FindOpenGL)
+ if (APPLE)
+ set (HAVE_GL_GLU_H ${HAVE_OPENGL_GLU_H})
+ endif (APPLE)
+ endif (OPTION_APPLE_X11)
else ()
- set(OPENGL_FOUND FALSE)
-endif(OPTION_USE_GL)
+ set (OPENGL_FOUND FALSE)
+endif (OPTION_USE_GL)
if (OPENGL_FOUND)
set (CMAKE_REQUIRED_INCLUDES ${OPENGL_INCLUDE_DIR}/GL)
@@ -256,44 +240,44 @@ endif (OPTION_LARGE_FILE)
# before this file is included (or set to 0 for WIN32).
if (WIN32 AND NOT CYGWIN)
- # set(HAVE_PTHREAD_H 0) # (see resources.cmake)
- set(OPTION_USE_THREADS FALSE)
+ # set (HAVE_PTHREAD_H 0) # (see resources.cmake)
+ set (OPTION_USE_THREADS FALSE)
else ()
- option(OPTION_USE_THREADS "use multi-threading with pthreads" ON)
+ option (OPTION_USE_THREADS "use multi-threading with pthreads" ON)
endif (WIN32 AND NOT CYGWIN)
# initialize more variables
-set(USE_THREADS 0)
-set(HAVE_PTHREAD 0)
-set(FLTK_PTHREADS_FOUND FALSE)
+set (USE_THREADS 0)
+set (HAVE_PTHREAD 0)
+set (FLTK_PTHREADS_FOUND FALSE)
if (OPTION_USE_THREADS)
- include(FindThreads)
+ include (FindThreads)
if (CMAKE_HAVE_THREADS_LIBRARY)
- add_definitions("-D_THREAD_SAFE -D_REENTRANT")
- set(USE_THREADS 1)
- set(FLTK_THREADS_FOUND TRUE)
+ add_definitions ("-D_THREAD_SAFE -D_REENTRANT")
+ set (USE_THREADS 1)
+ set (FLTK_THREADS_FOUND TRUE)
endif (CMAKE_HAVE_THREADS_LIBRARY)
if (CMAKE_USE_PTHREADS_INIT AND NOT WIN32)
- set(HAVE_PTHREAD 1)
+ set (HAVE_PTHREAD 1)
if (NOT APPLE)
- set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pthread")
+ set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pthread")
endif (NOT APPLE)
- list(APPEND FLTK_LDLIBS -lpthread)
- list(APPEND FLTK_CFLAGS -D_THREAD_SAFE -D_REENTRANT)
- set(FLTK_PTHREADS_FOUND TRUE)
+ 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(CMAKE_USE_PTHREADS_INIT AND NOT WIN32)
+ set (HAVE_PTHREAD 0)
+ set (HAVE_PTHREAD_H 0)
+ set (FLTK_PTHREADS_FOUND FALSE)
+ endif (CMAKE_USE_PTHREADS_INIT AND NOT WIN32)
else (OPTION_USE_THREADS)
- set(HAVE_PTHREAD_H 0)
+ set (HAVE_PTHREAD_H 0)
endif (OPTION_USE_THREADS)
@@ -323,7 +307,7 @@ if (ZLIB_FOUND)
set (FLTK_BUILTIN_ZLIB_FOUND FALSE)
else()
if (OPTION_USE_SYSTEM_ZLIB)
- message(STATUS "\ncannot find system zlib library - using built-in\n")
+ message (STATUS "\ncannot find system zlib library - using built-in\n")
endif (OPTION_USE_SYSTEM_ZLIB)
add_subdirectory (zlib)
@@ -347,9 +331,9 @@ if (OPTION_USE_SYSTEM_LIBJPEG)
endif (OPTION_USE_SYSTEM_LIBJPEG)
if (JPEG_FOUND)
- set(FLTK_JPEG_LIBRARIES ${JPEG_LIBRARIES})
- include_directories(${JPEG_INCLUDE_DIR})
- set(FLTK_BUILTIN_JPEG_FOUND FALSE)
+ set (FLTK_JPEG_LIBRARIES ${JPEG_LIBRARIES})
+ include_directories (${JPEG_INCLUDE_DIR})
+ set (FLTK_BUILTIN_JPEG_FOUND FALSE)
else ()
if (OPTION_USE_SYSTEM_LIBJPEG)
message (STATUS "\ncannot find system jpeg library - using built-in\n")
@@ -396,101 +380,101 @@ endif (PNG_FOUND)
set (HAVE_LIBPNG 1)
#######################################################################
-if(X11_Xinerama_FOUND)
- option(OPTION_USE_XINERAMA "use lib Xinerama" ON)
-endif(X11_Xinerama_FOUND)
+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)
+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)
+ set (FLTK_XINERAMA_FOUND FALSE)
+endif (OPTION_USE_XINERAMA)
#######################################################################
-if(X11_Xfixes_FOUND)
- option(OPTION_USE_XFIXES "use lib Xfixes" ON)
-endif(X11_Xfixes_FOUND)
+if (X11_Xfixes_FOUND)
+ option (OPTION_USE_XFIXES "use lib Xfixes" ON)
+endif (X11_Xfixes_FOUND)
-if(OPTION_USE_XFIXES)
- set(HAVE_XFIXES ${X11_Xfixes_FOUND})
- include_directories(${X11_Xfixes_INCLUDE_PATH})
- list(APPEND FLTK_LDLIBS -lXfixes)
- set(FLTK_XFIXES_FOUND TRUE)
+if (OPTION_USE_XFIXES)
+ set (HAVE_XFIXES ${X11_Xfixes_FOUND})
+ include_directories (${X11_Xfixes_INCLUDE_PATH})
+ list (APPEND FLTK_LDLIBS -lXfixes)
+ set (FLTK_XFIXES_FOUND TRUE)
else()
- set(FLTK_XFIXES_FOUND FALSE)
-endif(OPTION_USE_XFIXES)
+ set (FLTK_XFIXES_FOUND FALSE)
+endif (OPTION_USE_XFIXES)
#######################################################################
-if(X11_Xcursor_FOUND)
- option(OPTION_USE_XCURSOR "use lib Xcursor" ON)
-endif(X11_Xcursor_FOUND)
+if (X11_Xcursor_FOUND)
+ option (OPTION_USE_XCURSOR "use lib Xcursor" ON)
+endif (X11_Xcursor_FOUND)
-if(OPTION_USE_XCURSOR)
- set(HAVE_XCURSOR ${X11_Xcursor_FOUND})
- include_directories(${X11_Xcursor_INCLUDE_PATH})
- list(APPEND FLTK_LDLIBS -lXcursor)
- set(FLTK_XCURSOR_FOUND TRUE)
+if (OPTION_USE_XCURSOR)
+ set (HAVE_XCURSOR ${X11_Xcursor_FOUND})
+ include_directories (${X11_Xcursor_INCLUDE_PATH})
+ list (APPEND FLTK_LDLIBS -lXcursor)
+ set (FLTK_XCURSOR_FOUND TRUE)
else()
- set(FLTK_XCURSOR_FOUND FALSE)
-endif(OPTION_USE_XCURSOR)
+ set (FLTK_XCURSOR_FOUND FALSE)
+endif (OPTION_USE_XCURSOR)
#######################################################################
-if(X11_Xft_FOUND)
- option(OPTION_USE_XFT "use lib Xft" ON)
- option(OPTION_USE_PANGO "use lib Pango" OFF)
-endif(X11_Xft_FOUND)
+if (X11_Xft_FOUND)
+ option (OPTION_USE_XFT "use lib Xft" ON)
+ option (OPTION_USE_PANGO "use lib Pango" OFF)
+endif (X11_Xft_FOUND)
# test option compatibility: Pango requires Xft
if (OPTION_USE_PANGO)
if (NOT X11_Xft_FOUND)
- message(STATUS "Pango requires Xft but Xft library or headers could not be found.")
- message(STATUS "Please install Xft development files and try again or disable OPTION_USE_PANGO.")
- message(FATAL_ERROR "*** Aborting ***")
+ message (STATUS "Pango requires Xft but Xft library or headers could not be found.")
+ message (STATUS "Please install Xft development files and try again or disable OPTION_USE_PANGO.")
+ message (FATAL_ERROR "*** Aborting ***")
else ()
if (NOT OPTION_USE_XFT)
- message(STATUS "Pango requires Xft but usage of Xft was disabled.")
- message(STATUS "Please enable OPTION_USE_XFT and try again or disable OPTION_USE_PANGO.")
- message(FATAL_ERROR "*** Aborting ***")
+ message (STATUS "Pango requires Xft but usage of Xft was disabled.")
+ message (STATUS "Please enable OPTION_USE_XFT and try again or disable OPTION_USE_PANGO.")
+ message (FATAL_ERROR "*** Aborting ***")
endif (NOT OPTION_USE_XFT)
endif (NOT X11_Xft_FOUND)
endif (OPTION_USE_PANGO)
#######################################################################
-if(X11_Xft_FOUND AND OPTION_USE_PANGO)
+if (X11_Xft_FOUND AND OPTION_USE_PANGO)
pkg_check_modules(PANGOXFT pangoxft)
- # message(STATUS "PANGOXFT_FOUND=" ${PANGOXFT_FOUND})
- if(PANGOXFT_FOUND)
- include_directories(${PANGOXFT_INCLUDE_DIRS})
+ # message (STATUS "PANGOXFT_FOUND=" ${PANGOXFT_FOUND})
+ if (PANGOXFT_FOUND)
+ include_directories (${PANGOXFT_INCLUDE_DIRS})
find_library(HAVE_LIB_PANGO pango-1.0 ${CMAKE_LIBRARY_PATH})
find_library(HAVE_LIB_PANGOXFT pangoxft-1.0 ${CMAKE_LIBRARY_PATH})
- set(USE_PANGO TRUE)
- list(APPEND FLTK_LDLIBS -lpango-1.0 -lpangoxft-1.0 -lgobject-2.0)
+ set (USE_PANGO TRUE)
+ list (APPEND FLTK_LDLIBS -lpango-1.0 -lpangoxft-1.0 -lgobject-2.0)
else(PANGOXFT_FOUND)
-#this covers Debian, Ubuntu, FreeBSD, NetBSD, Darwin
- if(APPLE AND OPTION_APPLE_X11)
- find_file(FINK_PREFIX NAMES /opt/sw /sw)
- list(APPEND CMAKE_INCLUDE_PATH ${FINK_PREFIX}/include)
- list(APPEND CMAKE_LIBRARY_PATH ${FINK_PREFIX}/lib)
- endif(APPLE AND OPTION_APPLE_X11)
+ # this covers Debian, Ubuntu, FreeBSD, NetBSD, Darwin
+ if (APPLE AND OPTION_APPLE_X11)
+ find_file(FINK_PREFIX NAMES /opt/sw /sw)
+ list (APPEND CMAKE_INCLUDE_PATH ${FINK_PREFIX}/include)
+ list (APPEND CMAKE_LIBRARY_PATH ${FINK_PREFIX}/lib)
+ endif (APPLE AND OPTION_APPLE_X11)
find_file(HAVE_PANGO_H pango-1.0/pango/pango.h ${CMAKE_INCLUDE_PATH})
find_file(HAVE_PANGOXFT_H pango-1.0/pango/pangoxft.h ${CMAKE_INCLUDE_PATH})
- if(HAVE_PANGO_H AND HAVE_PANGOXFT_H)
+ if (HAVE_PANGO_H AND HAVE_PANGOXFT_H)
find_library(HAVE_LIB_PANGO pango-1.0 ${CMAKE_LIBRARY_PATH})
find_library(HAVE_LIB_PANGOXFT pangoxft-1.0 ${CMAKE_LIBRARY_PATH})
- if(APPLE)
- set(HAVE_LIB_GOBJECT TRUE)
+ if (APPLE)
+ set (HAVE_LIB_GOBJECT TRUE)
else()
find_library(HAVE_LIB_GOBJECT gobject-2.0 ${CMAKE_LIBRARY_PATH})
- endif(APPLE)
- endif(HAVE_PANGO_H AND HAVE_PANGOXFT_H)
- if(HAVE_LIB_PANGO AND HAVE_LIB_PANGOXFT AND HAVE_LIB_GOBJECT)
- set(USE_PANGO TRUE)
- # message(STATUS "USE_PANGO=" ${USE_PANGO})
+ endif (APPLE)
+ endif (HAVE_PANGO_H AND HAVE_PANGOXFT_H)
+ if (HAVE_LIB_PANGO AND HAVE_LIB_PANGOXFT AND HAVE_LIB_GOBJECT)
+ set (USE_PANGO TRUE)
+ # message (STATUS "USE_PANGO=" ${USE_PANGO})
# remove last 3 components of HAVE_PANGO_H and put in PANGO_H_PREFIX
get_filename_component(PANGO_H_PREFIX ${HAVE_PANGO_H} PATH)
get_filename_component(PANGO_H_PREFIX ${PANGO_H_PREFIX} PATH)
@@ -499,84 +483,80 @@ if(X11_Xft_FOUND AND OPTION_USE_PANGO)
get_filename_component(PANGOLIB_DIR ${HAVE_LIB_PANGO} PATH)
# glib.h is usually in ${PANGO_H_PREFIX}/glib-2.0/ ...
find_path(GLIB_H_PATH glib.h ${PANGO_H_PREFIX}/glib-2.0)
- if(NOT GLIB_H_PATH) # ... but not under NetBSD
+ if (NOT GLIB_H_PATH) # ... but not under NetBSD
find_path(GLIB_H_PATH glib.h ${PANGO_H_PREFIX}/glib/glib-2.0)
- endif(NOT GLIB_H_PATH)
- include_directories(${PANGO_H_PREFIX}/pango-1.0 ${GLIB_H_PATH} ${PANGOLIB_DIR}/glib-2.0/include)
- list(APPEND FLTK_LDLIBS -lpango-1.0 -lpangoxft-1.0 -lgobject-2.0)
+ endif (NOT GLIB_H_PATH)
+ include_directories (${PANGO_H_PREFIX}/pango-1.0 ${GLIB_H_PATH} ${PANGOLIB_DIR}/glib-2.0/include)
+ list (APPEND FLTK_LDLIBS -lpango-1.0 -lpangoxft-1.0 -lgobject-2.0)
if (APPLE)
- set(LDFLAGS "${LDFLAGS} -L${FINK_PREFIX}/lib")
+ set (LDFLAGS "${LDFLAGS} -L${FINK_PREFIX}/lib")
endif (APPLE)
- endif(HAVE_LIB_PANGO AND HAVE_LIB_PANGOXFT AND HAVE_LIB_GOBJECT)
-endif(PANGOXFT_FOUND)
-endif(X11_Xft_FOUND AND OPTION_USE_PANGO)
-
-if(OPTION_USE_XFT)
- set(USE_XFT X11_Xft_FOUND)
- list(APPEND FLTK_LDLIBS -lXft)
- set(FLTK_XFT_FOUND TRUE)
- if(APPLE AND OPTION_APPLE_X11)
- find_library(LIB_fontconfig fontconfig "/opt/X11/lib")
- endif(APPLE AND OPTION_APPLE_X11)
+ endif (HAVE_LIB_PANGO AND HAVE_LIB_PANGOXFT AND HAVE_LIB_GOBJECT)
+endif (PANGOXFT_FOUND)
+endif (X11_Xft_FOUND AND OPTION_USE_PANGO)
+
+if (OPTION_USE_XFT)
+ set (USE_XFT X11_Xft_FOUND)
+ list (APPEND FLTK_LDLIBS -lXft)
+ set (FLTK_XFT_FOUND TRUE)
+ if (APPLE AND OPTION_APPLE_X11)
+ find_library(LIB_fontconfig fontconfig "/opt/X11/lib")
+ endif (APPLE AND OPTION_APPLE_X11)
else()
- set(FLTK_XFT_FOUND FALSE)
-endif(OPTION_USE_XFT)
-
-#######################################################################
-if(X11_Xrender_FOUND)
- option(OPTION_USE_XRENDER "use lib Xrender" ON)
-endif(X11_Xrender_FOUND)
-
-if(OPTION_USE_XRENDER)
- set(HAVE_XRENDER ${X11_Xrender_FOUND})
- if(HAVE_XRENDER)
- include_directories(${X11_Xrender_INCLUDE_PATH})
- list(APPEND FLTK_LDLIBS -lXrender)
- set(FLTK_XRENDER_FOUND TRUE)
- else(HAVE_XRENDER)
- set(FLTK_XRENDER_FOUND FALSE)
- endif(HAVE_XRENDER)
+ set (FLTK_XFT_FOUND FALSE)
+endif (OPTION_USE_XFT)
+
+#######################################################################
+if (X11_Xrender_FOUND)
+ option (OPTION_USE_XRENDER "use lib Xrender" ON)
+endif (X11_Xrender_FOUND)
+
+if (OPTION_USE_XRENDER)
+ set (HAVE_XRENDER ${X11_Xrender_FOUND})
+ if (HAVE_XRENDER)
+ include_directories (${X11_Xrender_INCLUDE_PATH})
+ list (APPEND FLTK_LDLIBS -lXrender)
+ set (FLTK_XRENDER_FOUND TRUE)
+ else(HAVE_XRENDER)
+ set (FLTK_XRENDER_FOUND FALSE)
+ endif (HAVE_XRENDER)
else(OPTION_USE_XRENDER)
- set(FLTK_XRENDER_FOUND FALSE)
-endif(OPTION_USE_XRENDER)
+ set (FLTK_XRENDER_FOUND FALSE)
+endif (OPTION_USE_XRENDER)
#######################################################################
-if(X11_FOUND)
- option(OPTION_USE_XDBE "use lib Xdbe" ON)
-endif(X11_FOUND)
+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)
+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)
+ set (FLTK_XDBE_FOUND FALSE)
+endif (OPTION_USE_XDBE AND HAVE_XDBE_H)
#######################################################################
-set(FL_NO_PRINT_SUPPORT FALSE)
-if(X11_FOUND AND NOT OPTION_PRINT_SUPPORT)
- set(FL_NO_PRINT_SUPPORT TRUE)
-endif(X11_FOUND AND NOT OPTION_PRINT_SUPPORT)
+set (FL_NO_PRINT_SUPPORT FALSE)
+if (X11_FOUND AND NOT OPTION_PRINT_SUPPORT)
+ set (FL_NO_PRINT_SUPPORT TRUE)
+endif (X11_FOUND AND NOT OPTION_PRINT_SUPPORT)
#######################################################################
#######################################################################
-set(FL_CFG_NO_FILESYSTEM_SUPPORT TRUE)
-if(OPTION_FILESYSTEM_SUPPORT)
- set(FL_CFG_NO_FILESYSTEM_SUPPORT FALSE)
-endif(OPTION_FILESYSTEM_SUPPORT)
+set (FL_CFG_NO_FILESYSTEM_SUPPORT TRUE)
+if (OPTION_FILESYSTEM_SUPPORT)
+ set (FL_CFG_NO_FILESYSTEM_SUPPORT FALSE)
+endif (OPTION_FILESYSTEM_SUPPORT)
#######################################################################
#######################################################################
-option (OPTION_CREATE_ANDROID_STUDIO_IDE "create files needed to compile FLtk for Android" OFF)
+option (OPTION_CREATE_ANDROID_STUDIO_IDE "create files needed to compile FLTK for Android" OFF)
#######################################################################
#######################################################################
-# prior to CMake 3.0 this feature was buggy
-if(NOT CMAKE_VERSION VERSION_LESS 3.0.0)
- option(CMAKE_SUPPRESS_REGENERATION
- "suppress rules to re-run CMake on rebuild" OFF)
- mark_as_advanced(CMAKE_SUPPRESS_REGENERATION)
-endif(NOT CMAKE_VERSION VERSION_LESS 3.0.0)
+option (CMAKE_SUPPRESS_REGENERATION "suppress rules to re-run CMake on rebuild" OFF)
+mark_as_advanced (CMAKE_SUPPRESS_REGENERATION)
#######################################################################
# Debugging ...
@@ -587,7 +567,6 @@ if (DEBUG_OPTIONS_CMAKE)
fl_debug_var (LIBS)
fl_debug_var (GLLIBS)
fl_debug_var (FLTK_LDLIBS)
- fl_debug_var (USE_FIND_FILE)
fl_debug_var (OPENGL_FOUND)
fl_debug_var (OPENGL_INCLUDE_DIR)
fl_debug_var (OPENGL_LIBRARIES)
diff --git a/CMake/resources.cmake b/CMake/resources.cmake
index 4539f6f87..f5878e206 100644
--- a/CMake/resources.cmake
+++ b/CMake/resources.cmake
@@ -1,8 +1,8 @@
#
-# Main CMakeLists.txt to build the FLTK project using CMake (www.cmake.org)
+# Resource definitions to build the FLTK project using CMake (www.cmake.org)
# Written by Michael Surette
#
-# Copyright 1998-2018 by Bill Spitzak and others.
+# Copyright 1998-2020 by Bill Spitzak and others.
#
# This library is free software. Distribution and use rights are outlined in
# the file "COPYING" which should have been included with this file. If this
@@ -19,38 +19,17 @@
# check for headers, libraries and functions
#######################################################################
-# The following code is work in progress (as of Feb 2018) - AlbrechtS
-
-# The cache option USE_FIND_FILE can be set to ON to switch back to the old
-# behavior that tries to find headers by find_file() which appears to be
-# error prone at least under Windows when MSYS2 and MinGW are both
-# installed on one system.
-# If USE_FIND_FILE is OFF (new behavior), then headers are searched for by
-# check_include_files() which tries to compile a small file to test if
-# the header file can be used. In some cases this needs more than one
-# header in a list because another header must be included before the
-# header being searched for.
-# Example: X11/Xlib.h must be included before X11/Xregion.h so Xregion.h
-# can be compiled successfully.
-
-# If CMAKE_REQUIRED_QUIET is 1 (default) the search is mostly quiet, if
-# it is 0 (or not defined) check_include_files() is more verbose and
-# the result of the search is logged with fl_debug_var().
+# If CMAKE_REQUIRED_QUIET is 1 (default) the search is mostly quiet,
+# if it is 0 (or not defined) check_include_files() is more verbose
+# and the result of the search is logged with fl_debug_var().
# This is useful for debugging.
set (CMAKE_REQUIRED_QUIET 1)
-include(CheckIncludeFiles)
-
-# The following macro is used to switch between old and new behavior.
-# Once this is stable (USE_FIND_FILE = 0) the unused part may be removed.
+include (CheckIncludeFiles)
macro (fl_find_header VAR HEADER)
- if (USE_FIND_FILE)
- find_file (${VAR} "${HEADER}")
- else (USE_FIND_FILE)
- check_include_files("${HEADER}" ${VAR})
- endif (USE_FIND_FILE)
+ check_include_files ("${HEADER}" ${VAR})
if (NOT CMAKE_REQUIRED_QUIET)
fl_debug_var (${VAR})
endif (NOT CMAKE_REQUIRED_QUIET)
@@ -70,17 +49,12 @@ fl_find_header (HAVE_STRINGS_H strings.h)
fl_find_header (HAVE_SYS_SELECT_H sys/select.h)
fl_find_header (HAVE_SYS_STDTYPES_H sys/stdtypes.h)
-if (USE_FIND_FILE)
- fl_find_header (HAVE_X11_XREGION_H "X11/Xregion.h")
- fl_find_header (HAVE_XDBE_H "X11/extensions/Xdbe.h")
-else ()
- fl_find_header (HAVE_X11_XREGION_H "X11/Xlib.h;X11/Xregion.h")
- fl_find_header (HAVE_XDBE_H "X11/Xlib.h;X11/extensions/Xdbe.h")
-endif()
+fl_find_header (HAVE_X11_XREGION_H "X11/Xlib.h;X11/Xregion.h")
+fl_find_header (HAVE_XDBE_H "X11/Xlib.h;X11/extensions/Xdbe.h")
if (WIN32 AND NOT CYGWIN)
# we don't use pthreads on Windows (except for Cygwin, see options.cmake)
- set(HAVE_PTHREAD_H 0)
+ set (HAVE_PTHREAD_H 0)
else ()
fl_find_header (HAVE_PTHREAD_H pthread.h)
endif (WIN32 AND NOT CYGWIN)
@@ -111,20 +85,20 @@ if (MSVC)
set (MSVC_RERUN_MESSAGE FALSE)
if (NOT HAVE_GL_GLU_H)
- message(STATUS "Warning: Header file GL/glu.h was not found.")
+ message (STATUS "Warning: Header file GL/glu.h was not found.")
set (HAVE_GL_GLU_H 1)
set (MSVC_RERUN_MESSAGE TRUE)
endif (NOT HAVE_GL_GLU_H)
if (NOT HAVE_LOCALE_H)
- message(STATUS "Warning: Header file locale.h was not found.")
+ message (STATUS "Warning: Header file locale.h was not found.")
set (HAVE_LOCALE_H 1)
set (MSVC_RERUN_MESSAGE TRUE)
endif (NOT HAVE_LOCALE_H)
if (MSVC_RERUN_MESSAGE)
- message(STATUS "The FLTK team recommends to rerun CMake from a")
- message(STATUS "\"Developer Command Prompt for Visual Studio xxxx\"")
+ message (STATUS "The FLTK team recommends to rerun CMake from a")
+ message (STATUS "\"Developer Command Prompt for Visual Studio xxxx\"")
endif (MSVC_RERUN_MESSAGE)
unset (MSVC_RERUN_MESSAGE)
@@ -139,24 +113,25 @@ endif (MSVC)
# once we found the first suitable header file.
fl_find_header (HAVE_DIRENT_H dirent.h)
-if(NOT HAVE_DIRENT_H)
+
+if (NOT HAVE_DIRENT_H)
fl_find_header (HAVE_SYS_NDIR_H sys/ndir.h)
- if(NOT HAVE_SYS_NDIR_H)
+ if (NOT HAVE_SYS_NDIR_H)
fl_find_header (HAVE_SYS_DIR_H sys/dir.h)
- if(NOT HAVE_SYS_DIR_H)
+ if (NOT HAVE_SYS_DIR_H)
fl_find_header (HAVE_NDIR_H ndir.h)
- endif(NOT HAVE_SYS_DIR_H)
- endif(NOT HAVE_SYS_NDIR_H)
-endif(NOT HAVE_DIRENT_H)
-
-mark_as_advanced(HAVE_ALSA_ASOUNDLIB_H HAVE_DIRENT_H HAVE_DLFCN_H)
-mark_as_advanced(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)
-mark_as_advanced(HAVE_X11_XREGION_H)
+ endif (NOT HAVE_SYS_DIR_H)
+ endif (NOT HAVE_SYS_NDIR_H)
+endif (NOT HAVE_DIRENT_H)
+
+mark_as_advanced (HAVE_ALSA_ASOUNDLIB_H HAVE_DIRENT_H HAVE_DLFCN_H)
+mark_as_advanced (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)
+mark_as_advanced (HAVE_X11_XREGION_H)
#----------------------------------------------------------------------
# The following code is used to find the include path for freetype
@@ -164,104 +139,104 @@ mark_as_advanced(HAVE_X11_XREGION_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)
+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})
+ include_directories (${FREETYPE_PATH})
endif (FREETYPE_PATH)
-mark_as_advanced(FREETYPE_PATH)
+mark_as_advanced (FREETYPE_PATH)
#######################################################################
# libraries
-find_library(LIB_CAIRO cairo)
-find_library(LIB_dl dl)
-find_library(LIB_fontconfig fontconfig)
-find_library(LIB_freetype freetype)
-find_library(LIB_GL GL)
-find_library(LIB_MesaGL MesaGL)
-find_library(LIB_jpeg jpeg)
-find_library(LIB_png png)
-find_library(LIB_zlib z)
-
-mark_as_advanced(LIB_CAIRO LIB_dl LIB_fontconfig LIB_freetype)
-mark_as_advanced(LIB_GL LIB_MesaGL)
-mark_as_advanced(LIB_jpeg LIB_png LIB_zlib)
+find_library (LIB_CAIRO cairo)
+find_library (LIB_dl dl)
+find_library (LIB_fontconfig fontconfig)
+find_library (LIB_freetype freetype)
+find_library (LIB_GL GL)
+find_library (LIB_MesaGL MesaGL)
+find_library (LIB_jpeg jpeg)
+find_library (LIB_png png)
+find_library (LIB_zlib z)
+
+mark_as_advanced (LIB_CAIRO LIB_dl LIB_fontconfig LIB_freetype)
+mark_as_advanced (LIB_GL LIB_MesaGL)
+mark_as_advanced (LIB_jpeg LIB_png LIB_zlib)
#######################################################################
# functions
-include(CheckFunctionExists)
+include (CheckFunctionExists)
# save CMAKE_REQUIRED_LIBRARIES (is this really necessary ?)
-if(DEFINED CMAKE_REQUIRED_LIBRARIES)
- set(SAVED_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
-else(DEFINED CMAKE_REQUIRED_LIBRARIES)
- unset(SAVED_REQUIRED_LIBRARIES)
-endif(DEFINED CMAKE_REQUIRED_LIBRARIES)
-set(CMAKE_REQUIRED_LIBRARIES)
+if (DEFINED CMAKE_REQUIRED_LIBRARIES)
+ set (SAVED_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
+else (DEFINED CMAKE_REQUIRED_LIBRARIES)
+ unset (SAVED_REQUIRED_LIBRARIES)
+endif (DEFINED CMAKE_REQUIRED_LIBRARIES)
+set (CMAKE_REQUIRED_LIBRARIES)
-if(HAVE_DLFCN_H)
- set(HAVE_DLFCN_H 1)
-endif(HAVE_DLFCN_H)
+if (HAVE_DLFCN_H)
+ set (HAVE_DLFCN_H 1)
+endif (HAVE_DLFCN_H)
-set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_DL_LIBS})
-CHECK_FUNCTION_EXISTS(dlsym HAVE_DLSYM)
-set(CMAKE_REQUIRED_LIBRARIES)
+set (CMAKE_REQUIRED_LIBRARIES ${CMAKE_DL_LIBS})
+CHECK_FUNCTION_EXISTS (dlsym HAVE_DLSYM)
+set (CMAKE_REQUIRED_LIBRARIES)
-CHECK_FUNCTION_EXISTS(localeconv HAVE_LOCALECONV)
+CHECK_FUNCTION_EXISTS (localeconv HAVE_LOCALECONV)
-if(LIB_png)
- set(CMAKE_REQUIRED_LIBRARIES ${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)
- set(CMAKE_REQUIRED_LIBRARIES)
-endif(LIB_png)
+if (LIB_png)
+ set (CMAKE_REQUIRED_LIBRARIES ${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)
+ set (CMAKE_REQUIRED_LIBRARIES)
+endif (LIB_png)
-CHECK_FUNCTION_EXISTS(scandir HAVE_SCANDIR)
-CHECK_FUNCTION_EXISTS(snprintf HAVE_SNPRINTF)
+CHECK_FUNCTION_EXISTS (scandir HAVE_SCANDIR)
+CHECK_FUNCTION_EXISTS (snprintf HAVE_SNPRINTF)
# not really true but we convert strcasecmp calls to _stricmp calls in flstring.h
-if(MSVC)
- set(HAVE_STRCASECMP 1)
-endif(MSVC)
+if (MSVC)
+ set (HAVE_STRCASECMP 1)
+endif (MSVC)
-CHECK_FUNCTION_EXISTS(strcasecmp HAVE_STRCASECMP)
+CHECK_FUNCTION_EXISTS (strcasecmp HAVE_STRCASECMP)
-CHECK_FUNCTION_EXISTS(strlcat HAVE_STRLCAT)
-CHECK_FUNCTION_EXISTS(strlcpy HAVE_STRLCPY)
-CHECK_FUNCTION_EXISTS(vsnprintf HAVE_VSNPRINTF)
+CHECK_FUNCTION_EXISTS (strlcat HAVE_STRLCAT)
+CHECK_FUNCTION_EXISTS (strlcpy HAVE_STRLCPY)
+CHECK_FUNCTION_EXISTS (vsnprintf HAVE_VSNPRINTF)
-if(HAVE_SCANDIR AND NOT HAVE_SCANDIR_POSIX)
- set(MSG "POSIX compatible scandir")
- message(STATUS "Looking for ${MSG}")
+if (HAVE_SCANDIR AND NOT HAVE_SCANDIR_POSIX)
+ set (MSG "POSIX compatible scandir")
+ message (STATUS "Looking for ${MSG}")
try_compile(V
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/CMake/posixScandir.cxx
)
- if(V)
- message(STATUS "${MSG} - found")
- set(HAVE_SCANDIR_POSIX 1 CACHE INTERNAL "")
+ 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)
+ 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)
# restore CMAKE_REQUIRED_LIBRARIES (is this really necessary ?)
-if(DEFINED SAVED_REQUIRED_LIBRARIES)
- set(CMAKE_REQUIRED_LIBRARIES ${SAVED_REQUIRED_LIBRARIES})
- unset(SAVED_REQUIRED_LIBRARIES)
+if (DEFINED SAVED_REQUIRED_LIBRARIES)
+ set (CMAKE_REQUIRED_LIBRARIES ${SAVED_REQUIRED_LIBRARIES})
+ unset (SAVED_REQUIRED_LIBRARIES)
else(DEFINED SAVED_REQUIRED_LIBRARIES)
- unset(CMAKE_REQUIRED_LIBRARIES)
-endif(DEFINED SAVED_REQUIRED_LIBRARIES)
+ unset (CMAKE_REQUIRED_LIBRARIES)
+endif (DEFINED SAVED_REQUIRED_LIBRARIES)
#######################################################################
# packages
# Doxygen: necessary for HTML and PDF docs
-find_package(Doxygen)
+find_package (Doxygen)
# LaTex: necessary for PDF docs (note: FindLATEX doesn't return LATEX_FOUND)
@@ -270,15 +245,15 @@ find_package(Doxygen)
set (LATEX_FOUND)
if (DOXYGEN_FOUND)
- find_package(LATEX)
+ find_package (LATEX)
if (LATEX_COMPILER AND NOT LATEX_FOUND)
- set(LATEX_FOUND YES)
+ set (LATEX_FOUND YES)
endif (LATEX_COMPILER AND NOT LATEX_FOUND)
endif (DOXYGEN_FOUND)
-# message("Doxygen found : ${DOXYGEN_FOUND}")
-# message("LaTex found : ${LATEX_FOUND}")
-# message("LaTex Compiler : ${LATEX_COMPILER}")
+# message ("Doxygen found : ${DOXYGEN_FOUND}")
+# message ("LaTex found : ${LATEX_FOUND}")
+# message ("LaTex Compiler : ${LATEX_COMPILER}")
# Cleanup: unset local variables
diff --git a/CMake/setup.cmake b/CMake/setup.cmake
index 8935ed2bf..db661a54f 100644
--- a/CMake/setup.cmake
+++ b/CMake/setup.cmake
@@ -2,7 +2,7 @@
# CMakeLists.txt to build the FLTK project using CMake (www.cmake.org)
# Written by Michael Surette
#
-# Copyright 1998-2018 by Bill Spitzak and others.
+# Copyright 1998-2020 by Bill Spitzak and others.
#
# This library is free software. Distribution and use rights are outlined in
# the file "COPYING" which should have been included with this file. If this
@@ -19,52 +19,37 @@
# basic setup
#######################################################################
-# The FLTK version
-set(FLTK_VERSION_MAJOR "1")
-set(FLTK_VERSION_MINOR "4")
-set(FLTK_VERSION_PATCH "0")
-set(FLTK_VERSION "${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}")
-set(FLTK_VERSION_FULL "${FLTK_VERSION}.${FLTK_VERSION_PATCH}")
-
-set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/bin)
-set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/lib)
-set(ARCHIVE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/lib)
+set (EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/bin)
+set (LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/lib)
+set (ARCHIVE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/lib)
# Search for modules in the FLTK source dir first
-set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake")
+set (CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake")
-set(FLTK_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
-include_directories(${FLTK_INCLUDE_DIRS})
+set (FLTK_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
+include_directories (${FLTK_INCLUDE_DIRS})
# Remember root of FLTK source directory in case we're in a subdirectory.
# Used for instance to find the source directory for doxygen docs
-set(FLTK_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
-
-# Setup install locations
-if(CMAKE_VERSION VERSION_GREATER 2.8.4)
- # Use GNUInstallDirs if available.
- include(GNUInstallDirs)
-else()
- # Else set reasonable defaults.
- set(CMAKE_INSTALL_BINDIR bin)
- set(CMAKE_INSTALL_LIBDIR lib)
- set(CMAKE_INSTALL_INCLUDEDIR include)
- set(CMAKE_INSTALL_DATADIR share)
- set(CMAKE_INSTALL_MANDIR share/man)
-endif(CMAKE_VERSION VERSION_GREATER 2.8.4)
-
-set(FLTK_BINDIR ${CMAKE_INSTALL_BINDIR} CACHE PATH
- "Binary install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute path.")
-set(FLTK_LIBDIR ${CMAKE_INSTALL_LIBDIR} CACHE PATH
- "Library install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute path.")
-set(FLTK_INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR} CACHE PATH
- "Public header install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute path.")
-set(FLTK_DATADIR ${CMAKE_INSTALL_DATADIR} CACHE PATH
- "Non-arch data install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute path.")
-set(FLTK_MANDIR ${CMAKE_INSTALL_MANDIR} CACHE PATH
- "Manual install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute path.")
-set(FLTK_DOCDIR ${CMAKE_INSTALL_DATADIR}/doc CACHE PATH
- "Non-arch doc install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute path.")
+set (FLTK_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
+
+# Setup install locations (requires CMake 2.8.4)
+
+include(GNUInstallDirs)
+
+
+set (FLTK_BINDIR ${CMAKE_INSTALL_BINDIR} CACHE PATH
+ "Binary install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute path.")
+set (FLTK_LIBDIR ${CMAKE_INSTALL_LIBDIR} CACHE PATH
+ "Library install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute path.")
+set (FLTK_INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR} CACHE PATH
+ "Public header install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute path.")
+set (FLTK_DATADIR ${CMAKE_INSTALL_DATADIR} CACHE PATH
+ "Non-arch data install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute path.")
+set (FLTK_MANDIR ${CMAKE_INSTALL_MANDIR} CACHE PATH
+ "Manual install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute path.")
+set (FLTK_DOCDIR ${CMAKE_INSTALL_DATADIR}/doc CACHE PATH
+ "Non-arch doc install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute path.")
#######################################################################
@@ -72,56 +57,56 @@ set(FLTK_DOCDIR ${CMAKE_INSTALL_DATADIR}/doc CACHE PATH
#######################################################################
# set where config files go
-if(WIN32 AND NOT CYGWIN)
- set(FLTK_CONFIG_PATH CMake)
-elseif(APPLE AND NOT OPTION_APPLE_X11)
- set(FLTK_CONFIG_PATH FLTK.framework/Resources/CMake)
-else()
- set(FLTK_CONFIG_PATH ${FLTK_DATADIR}/fltk)
-endif(WIN32 AND NOT CYGWIN)
+if (WIN32 AND NOT CYGWIN)
+ set (FLTK_CONFIG_PATH CMake)
+elseif (APPLE AND NOT OPTION_APPLE_X11)
+ set (FLTK_CONFIG_PATH FLTK.framework/Resources/CMake)
+else ()
+ set (FLTK_CONFIG_PATH ${FLTK_DATADIR}/fltk)
+endif (WIN32 AND NOT CYGWIN)
include(TestBigEndian)
TEST_BIG_ENDIAN(WORDS_BIGENDIAN)
-if(APPLE)
- set(HAVE_STRCASECMP 1)
- set(HAVE_DIRENT_H 1)
- set(HAVE_SNPRINTF 1)
- set(HAVE_VSNPRINTF 1)
- set(HAVE_SCANDIR 1)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated")
- if(OPTION_APPLE_X11)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -U__APPLE__")
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -U__APPLE__")
- if(${CMAKE_SYSTEM_VERSION} VERSION_GREATER 16.9.0)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_LIBCPP_HAS_THREAD_API_PTHREAD")
- endif(${CMAKE_SYSTEM_VERSION} VERSION_GREATER 16.9.0)
- elseif(OPTION_APPLE_SDL)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SDL2_INCLUDE_DIRS} -U__APPLE__")
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${SDL2_INCLUDE_DIRS} -U__APPLE__")
- else()
- set(__APPLE_QUARTZ__ 1)
- set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Cocoa")
- set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -framework Cocoa")
- endif(OPTION_APPLE_X11)
-endif(APPLE)
-
-if(WIN32)
- # we do no longer define WIN32 or _WIN32 (since FLTK 1.4.0)
- # ... but if we did, we'd define _WIN32 (since FLTK 1.4.0)
- # add_definitions(-D_WIN32)
- if(MSVC)
- add_definitions(-DWIN32_LEAN_AND_MEAN)
- add_definitions(-D_CRT_SECURE_NO_WARNINGS)
- 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)
+if (APPLE)
+ set (HAVE_STRCASECMP 1)
+ set (HAVE_DIRENT_H 1)
+ set (HAVE_SNPRINTF 1)
+ set (HAVE_VSNPRINTF 1)
+ set (HAVE_SCANDIR 1)
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated")
+ if (OPTION_APPLE_X11)
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -U__APPLE__")
+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -U__APPLE__")
+ if (${CMAKE_SYSTEM_VERSION} VERSION_GREATER 16.9.0)
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_LIBCPP_HAS_THREAD_API_PTHREAD")
+ endif (${CMAKE_SYSTEM_VERSION} VERSION_GREATER 16.9.0)
+ elseif (OPTION_APPLE_SDL)
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SDL2_INCLUDE_DIRS} -U__APPLE__")
+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${SDL2_INCLUDE_DIRS} -U__APPLE__")
+ else ()
+ set (__APPLE_QUARTZ__ 1)
+ set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Cocoa")
+ set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -framework Cocoa")
+ endif (OPTION_APPLE_X11)
+endif (APPLE)
+
+if (WIN32)
+ # we do no longer define WIN32 or _WIN32 (since FLTK 1.4.0)
+ # ... but if we did, we'd define _WIN32 (since FLTK 1.4.0)
+ # add_definitions (-D_WIN32)
+ if (MSVC)
+ add_definitions (-DWIN32_LEAN_AND_MEAN)
+ add_definitions (-D_CRT_SECURE_NO_WARNINGS)
+ 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)
#######################################################################
# size of ints
@@ -130,24 +115,24 @@ include(CheckTypeSize)
CHECK_TYPE_SIZE(short SIZEOF_SHORT)
CHECK_TYPE_SIZE(int SIZEOF_INT)
CHECK_TYPE_SIZE(long SIZEOF_LONG)
-CHECK_TYPE_SIZE("long long" HAVE_LONG_LONG)
-
-if(${SIZEOF_SHORT} MATCHES "^2$")
- set(U16 "unsigned short")
-endif(${SIZEOF_SHORT} MATCHES "^2$")
-
-if(${SIZEOF_INT} MATCHES "^4$")
- set(U32 "unsigned")
-else()
- if(${SIZEOF_LONG} MATCHES "^4$")
- set(U32 "unsigned long")
- endif(${SIZEOF_LONG} MATCHES "^4$")
-endif(${SIZEOF_INT} MATCHES "^4$")
-
-if(${SIZEOF_INT} MATCHES "^8$")
- set(U64 "unsigned")
-else()
- if(${SIZEOF_LONG} MATCHES "^8$")
- set(U64 "unsigned long")
- endif(${SIZEOF_LONG} MATCHES "^8$")
-endif(${SIZEOF_INT} MATCHES "^8$")
+CHECK_TYPE_SIZE("long long" HAVE_LONG_LONG)
+
+if (${SIZEOF_SHORT} MATCHES "^2$")
+ set (U16 "unsigned short")
+endif (${SIZEOF_SHORT} MATCHES "^2$")
+
+if (${SIZEOF_INT} MATCHES "^4$")
+ set (U32 "unsigned")
+else ()
+ if (${SIZEOF_LONG} MATCHES "^4$")
+ set (U32 "unsigned long")
+ endif (${SIZEOF_LONG} MATCHES "^4$")
+endif (${SIZEOF_INT} MATCHES "^4$")
+
+if (${SIZEOF_INT} MATCHES "^8$")
+ set (U64 "unsigned")
+else ()
+ if (${SIZEOF_LONG} MATCHES "^8$")
+ set (U64 "unsigned long")
+ endif (${SIZEOF_LONG} MATCHES "^8$")
+endif (${SIZEOF_INT} MATCHES "^8$")
diff --git a/CMake/variables.cmake b/CMake/variables.cmake
index ebafe7b10..7ff8a53e1 100644
--- a/CMake/variables.cmake
+++ b/CMake/variables.cmake
@@ -2,7 +2,7 @@
# This file sets variables for common use in export.cmake and install.cmake
# Written by Michael Surette
#
-# Copyright 1998-2018 by Bill Spitzak and others.
+# Copyright 1998-2020 by Bill Spitzak and others.
#
# This library is free software. Distribution and use rights are outlined in
# the file "COPYING" which should have been included with this file. If this
@@ -16,9 +16,6 @@
#
#######################################################################
-set (FL_MAJOR_VERSION ${FLTK_VERSION_MAJOR})
-set (FL_MINOR_VERSION ${FLTK_VERSION_MINOR})
-set (FL_PATCH_VERSION ${FLTK_VERSION_PATCH})
set (DEBUG_VARIABLES_CMAKE 0)
if (DEBUG_VARIABLES_CMAKE)
@@ -83,66 +80,66 @@ set (IMAGELIBS)
set (STATICIMAGELIBS)
if (FLTK_BUILTIN_JPEG_FOUND)
- list(APPEND IMAGELIBS -lfltk_jpeg)
- list(APPEND STATICIMAGELIBS \$libdir/libfltk_jpeg.a)
+ list (APPEND IMAGELIBS -lfltk_jpeg)
+ list (APPEND STATICIMAGELIBS \$libdir/libfltk_jpeg.a)
else ()
if (LIB_jpeg)
- list(APPEND IMAGELIBS -ljpeg)
- list(APPEND STATICIMAGELIBS -ljpeg)
+ list (APPEND IMAGELIBS -ljpeg)
+ list (APPEND STATICIMAGELIBS -ljpeg)
endif (LIB_jpeg)
endif (FLTK_BUILTIN_JPEG_FOUND)
if (FLTK_BUILTIN_PNG_FOUND)
- list(APPEND IMAGELIBS -lfltk_png)
- list(APPEND STATICIMAGELIBS \$libdir/libfltk_png.a)
+ list (APPEND IMAGELIBS -lfltk_png)
+ list (APPEND STATICIMAGELIBS \$libdir/libfltk_png.a)
else ()
if (LIB_png)
- list(APPEND IMAGELIBS -lpng)
- list(APPEND STATICIMAGELIBS -lpng)
+ list (APPEND IMAGELIBS -lpng)
+ list (APPEND STATICIMAGELIBS -lpng)
endif (LIB_png)
endif (FLTK_BUILTIN_PNG_FOUND)
if (FLTK_BUILTIN_ZLIB_FOUND)
- list(APPEND IMAGELIBS -lfltk_z)
- list(APPEND STATICIMAGELIBS \$libdir/libfltk_z.a)
+ list (APPEND IMAGELIBS -lfltk_z)
+ list (APPEND STATICIMAGELIBS \$libdir/libfltk_z.a)
else ()
if (LIB_zlib)
- list(APPEND IMAGELIBS -lz)
- list(APPEND STATICIMAGELIBS -lz)
+ list (APPEND IMAGELIBS -lz)
+ list (APPEND STATICIMAGELIBS -lz)
endif (LIB_zlib)
endif (FLTK_BUILTIN_ZLIB_FOUND)
-string(REPLACE ";" " " IMAGELIBS "${IMAGELIBS}")
-string(REPLACE ";" " " STATICIMAGELIBS "${STATICIMAGELIBS}")
+string (REPLACE ";" " " IMAGELIBS "${IMAGELIBS}")
+string (REPLACE ";" " " STATICIMAGELIBS "${STATICIMAGELIBS}")
#######################################################################
-set(CC ${CMAKE_C_COMPILER})
-set(CXX ${CMAKE_CXX_COMPILER})
+set (CC ${CMAKE_C_COMPILER})
+set (CXX ${CMAKE_CXX_COMPILER})
-set(ARCHFLAGS ${OPTION_ARCHFLAGS})
+set (ARCHFLAGS ${OPTION_ARCHFLAGS})
string(TOUPPER "${CMAKE_BUILD_TYPE}" BUILD_UPPER)
if (${BUILD_UPPER})
set (CFLAGS "${CMAKE_C_FLAGS_${BUILD_UPPER}} ${CFLAGS}")
endif (${BUILD_UPPER})
-set(CFLAGS "${OPTION_OPTIM} ${CMAKE_C_FLAGS} ${CFLAGS}")
-foreach(arg ${FLTK_CFLAGS})
- set(CFLAGS "${CFLAGS} ${arg}")
-endforeach(arg ${FLTK_CFLAGS})
+set (CFLAGS "${OPTION_OPTIM} ${CMAKE_C_FLAGS} ${CFLAGS}")
+foreach (arg ${FLTK_CFLAGS})
+ set (CFLAGS "${CFLAGS} ${arg}")
+endforeach (arg ${FLTK_CFLAGS})
-set(CXXFLAGS "${CFLAGS}")
+set (CXXFLAGS "${CFLAGS}")
-foreach(arg ${FLTK_LDLIBS})
- set(LINK_LIBS "${LINK_LIBS} ${arg}")
-endforeach(arg ${FLTK_LDLIBS})
+foreach (arg ${FLTK_LDLIBS})
+ set (LINK_LIBS "${LINK_LIBS} ${arg}")
+endforeach (arg ${FLTK_LDLIBS})
-set(LIBS "${LINK_LIBS}")
+set (LIBS "${LINK_LIBS}")
if (${CMAKE_SYSTEM_NAME} STREQUAL "AIX")
- set(SHAREDSUFFIX "_s")
+ set (SHAREDSUFFIX "_s")
else ()
- set(SHAREDSUFFIX "")
+ set (SHAREDSUFFIX "")
endif (${CMAKE_SYSTEM_NAME} STREQUAL "AIX")
if (DEBUG_VARIABLES_CMAKE)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 172a949d0..281d6b440 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,7 +2,7 @@
# Main CMakeLists.txt to build the FLTK project using CMake (www.cmake.org)
# Written by Michael Surette
#
-# Copyright 1998-2018 by Bill Spitzak and others.
+# Copyright 1998-2020 by Bill Spitzak and others.
#
# This library is free software. Distribution and use rights are outlined in
# the file "COPYING" which should have been included with this file. If this
@@ -15,64 +15,87 @@
# https://www.fltk.org/bugs.php
#
-# Prevent annoying warning under Cygwin; this must be before project().
-# Remove when CMake >= 2.8.4 is required
-set(CMAKE_LEGACY_CYGWIN_WIN32 0)
+#######################################################################
+# set CMake minimum version (must be before `project()`
+#######################################################################
+
+# Note: previous (1.3.x) minimum version
+# cmake_minimum_required (VERSION 2.6.3)
+
+# Note: minimum CMake version required by GNUInstallDirs
+# cmake_minimum_required (VERSION 2.8.4)
+
+# Minimum CMake version required by FLTK 1.4 (06/2020, work in progress)
+cmake_minimum_required (VERSION 3.2.3 FATAL_ERROR)
+
+#######################################################################
+# define the FLTK project and version
+#######################################################################
-project(FLTK)
-cmake_minimum_required(VERSION 2.6.3)
+project (FLTK VERSION 1.4.0)
#######################################################################
-# define some macros
+# include macro definitions of generally used macros
#######################################################################
-include(CMake/macros.cmake)
+
+include (CMake/fl_debug_var.cmake)
+include (CMake/fl_add_library.cmake)
+
+if (false)
+ fl_debug_var (FLTK_VERSION_MAJOR)
+ fl_debug_var (FLTK_VERSION_MINOR)
+ fl_debug_var (FLTK_VERSION_PATCH)
+ fl_debug_var (FLTK_VERSION)
+ fl_debug_var (FLTK_VERSION)
+endif (false)
#######################################################################
# basic setup
#######################################################################
-include(CMake/setup.cmake)
+include (CMake/setup.cmake)
#######################################################################
# check for headers, libraries and functions
#######################################################################
-include(CMake/resources.cmake)
+include (CMake/resources.cmake)
#######################################################################
# options
#######################################################################
-include(CMake/options.cmake)
+include (CMake/options.cmake)
#######################################################################
# Android Studio setup
#######################################################################
if (OPTION_CREATE_ANDROID_STUDIO_IDE)
- include(CMake/android.cmake)
+ include (CMake/android.cmake)
endif (OPTION_CREATE_ANDROID_STUDIO_IDE)
-
#######################################################################
# print (debug) several build variables and options
#######################################################################
set (debug_build 0) # set to 1 to show debug info
+
if (debug_build)
message ("")
message (STATUS "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt: set debug_build to 0 to disable the following info:")
- fl_debug_var(WIN32)
- fl_debug_var(MINGW)
- fl_debug_var(CYGWIN)
- fl_debug_var(MSVC)
- fl_debug_var(UNIX)
- fl_debug_var(APPLE)
- fl_debug_var(ANDROID)
- fl_debug_var(CMAKE_BUILD_TYPE)
- fl_debug_var(CMAKE_SIZEOF_VOID_P)
- fl_debug_var(OPTION_OPTIM)
- fl_debug_var(CMAKE_C_FLAGS)
- fl_debug_var(CMAKE_CXX_FLAGS)
- fl_debug_var(CMAKE_EXE_LINKER_FLAGS)
+ fl_debug_var (WIN32)
+ fl_debug_var (MINGW)
+ fl_debug_var (CYGWIN)
+ fl_debug_var (MSVC)
+ fl_debug_var (UNIX)
+ fl_debug_var (APPLE)
+ fl_debug_var (ANDROID)
+ fl_debug_var (CMAKE_BUILD_TYPE)
+ fl_debug_var (CMAKE_SIZEOF_VOID_P)
+ fl_debug_var (OPTION_OPTIM)
+ fl_debug_var (CMAKE_C_FLAGS)
+ fl_debug_var (CMAKE_CXX_FLAGS)
+ fl_debug_var (CMAKE_EXE_LINKER_FLAGS)
message (STATUS "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt: end of debug_build info.")
endif (debug_build)
+
unset (debug_build)
#######################################################################
@@ -81,25 +104,25 @@ unset (debug_build)
# install.cmake creates these files for an installed FLTK
# these two would only differ in paths, so common variables are set here
#######################################################################
-include(CMake/variables.cmake)
+include (CMake/variables.cmake)
#######################################################################
# final config and export
#######################################################################
-include(CMake/export.cmake)
+include (CMake/export.cmake)
-configure_file(
- ${CMAKE_CURRENT_SOURCE_DIR}/abi-version.cmake.in
- ${CMAKE_CURRENT_BINARY_DIR}/FL/abi-version.h
- @ONLY
- )
+configure_file (
+ ${CMAKE_CURRENT_SOURCE_DIR}/abi-version.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/FL/abi-version.h
+ @ONLY
+)
#######################################################################
# build examples - these have to be built after fluid is built/imported
#######################################################################
-if(OPTION_BUILD_EXAMPLES)
- add_subdirectory(test)
-endif(OPTION_BUILD_EXAMPLES)
+if (OPTION_BUILD_EXAMPLES)
+ add_subdirectory (test)
+endif (OPTION_BUILD_EXAMPLES)
#######################################################################
# Android Studio wrapup
@@ -111,4 +134,47 @@ endif (OPTION_CREATE_ANDROID_STUDIO_IDE)
#######################################################################
# installation
#######################################################################
-include(CMake/install.cmake)
+include (CMake/install.cmake)
+
+#######################################################################
+# Generate Library Export Headers *** EXPERIMENTAL *** WIP ***
+#######################################################################
+
+# Enable (1) or disable (0) generation of experimental headers (WIP)
+set (GENERATE_EXPORT_HEADERS 0)
+
+if (OPTION_BUILD_SHARED_LIBS AND GENERATE_EXPORT_HEADERS)
+
+ include (GenerateExportHeader)
+
+ generate_export_header (fltk_SHARED
+ BASE_NAME fl
+ EXPORT_FILE_NAME FL/fltk_export.h
+ STATIC_DEFINE FL_STATIC_LIB
+ )
+
+ if (NOT MSVC)
+
+ # Visual Studio builds only one shared lib (DLL)
+
+ generate_export_header (fltk_images_SHARED
+ BASE_NAME fl_images
+ EXPORT_FILE_NAME FL/fltk_images_export.h
+ STATIC_DEFINE FL_STATIC_LIB
+ )
+
+ generate_export_header (fltk_forms_SHARED
+ BASE_NAME fl_forms
+ EXPORT_FILE_NAME FL/fltk_forms_export.h
+ STATIC_DEFINE FL_STATIC_LIB
+ )
+
+ generate_export_header (fltk_gl_SHARED
+ BASE_NAME fl_gl
+ EXPORT_FILE_NAME FL/fltk_gl_export.h
+ STATIC_DEFINE FL_STATIC_LIB
+ )
+
+ endif (NOT MSVC)
+
+endif (OPTION_BUILD_SHARED_LIBS AND GENERATE_EXPORT_HEADERS)
diff --git a/README.CMake.txt b/README.CMake.txt
index 57c0cc9b0..f64a80a83 100644
--- a/README.CMake.txt
+++ b/README.CMake.txt
@@ -552,9 +552,9 @@ add_executable(CubeView WIN32 CubeMain.cxx CubeView.cxx CubeViewUI.cxx)
target_link_libraries(CubeView fltk fltk_gl)
---
-You can repeat the add_custom_command for each fluid file or if you have
-a large number of them see the CMake/macros.cmake function FLTK_RUN_FLUID
-for an example of how to run it in a loop.
+You can repeat the add_custom_command for each fluid file or if you
+have a large number of them see the CMake/FLTK-Functions.cmake function
+FLTK_RUN_FLUID for an example of how to run it in a loop.
The two lines
diff --git a/configure.ac b/configure.ac
index 921b17814..692c3d706 100644
--- a/configure.ac
+++ b/configure.ac
@@ -56,19 +56,20 @@ case $host_os in
esac
dnl FLTK library versions...
-FL_MAJOR_VERSION=1
-FL_MINOR_VERSION=4
-FL_PATCH_VERSION=0
-FL_DSO_VERSION=${FL_MAJOR_VERSION}.${FL_MINOR_VERSION}
-FL_ABI_VERSION=${FL_MAJOR_VERSION}.${FL_MINOR_VERSION}.0
-FL_VERSION=${FL_MAJOR_VERSION}.${FL_MINOR_VERSION}.${FL_PATCH_VERSION}
-
-AC_SUBST(FL_MAJOR_VERSION)
-AC_SUBST(FL_MINOR_VERSION)
-AC_SUBST(FL_PATCH_VERSION)
+FLTK_VERSION_MAJOR=1
+FLTK_VERSION_MINOR=4
+FLTK_VERSION_PATCH=0
+FLTK_VERSION=${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}.${FLTK_VERSION_PATCH}
+
+FL_DSO_VERSION=${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}
+FL_ABI_VERSION=${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}.0
+
+AC_SUBST(FLTK_VERSION_MAJOR)
+AC_SUBST(FLTK_VERSION_MINOR)
+AC_SUBST(FLTK_VERSION_PATCH)
+AC_SUBST(FLTK_VERSION)
AC_SUBST(FL_DSO_VERSION)
AC_SUBST(FL_ABI_VERSION)
-AC_SUBST(FL_VERSION)
AC_SUBST(ARCHFLAGS)
AC_SUBST(OPTIM)
diff --git a/documentation/CMakeLists.txt b/documentation/CMakeLists.txt
index 66546cfa6..c240531e5 100644
--- a/documentation/CMakeLists.txt
+++ b/documentation/CMakeLists.txt
@@ -16,8 +16,6 @@
set (DOCS)
-set (FL_VERSION "${FLTK_VERSION_FULL}")
-
if (OPTION_INCLUDE_DRIVER_DOCUMENTATION)
set (DRIVER_DOCS "DriverDev")
else ()
@@ -30,34 +28,34 @@ endif ()
if (OPTION_BUILD_HTML_DOCUMENTATION)
- list(APPEND DOCS html)
+ list (APPEND DOCS html)
- # generate Doxygen file "Doxyfile"
+ # generate Doxygen file "Doxyfile"
- set(GENERATE_HTML YES)
- set(GENERATE_LATEX NO)
- set(LATEX_HEADER "")
+ set (GENERATE_HTML YES)
+ set (GENERATE_LATEX NO)
+ set (LATEX_HEADER "")
- configure_file(
- ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in
- ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
- @ONLY
- )
+ configure_file(
+ ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in
+ ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
+ @ONLY
+ )
- configure_file(
- ${CMAKE_CURRENT_SOURCE_DIR}/src/tiny.png
- ${CMAKE_CURRENT_BINARY_DIR}/html/tiny.png
- COPYONLY
- )
+ configure_file(
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/tiny.png
+ ${CMAKE_CURRENT_BINARY_DIR}/html/tiny.png
+ COPYONLY
+ )
- # generate html docs
+ # generate html docs
- add_custom_target(html
- # ALL
- ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMENT "Generating HTML documentation" VERBATIM
- )
+ add_custom_target (html
+ # ALL
+ ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ COMMENT "Generating HTML documentation" VERBATIM
+ )
endif (OPTION_BUILD_HTML_DOCUMENTATION)
@@ -67,52 +65,51 @@ endif (OPTION_BUILD_HTML_DOCUMENTATION)
if (OPTION_BUILD_PDF_DOCUMENTATION)
- list(APPEND DOCS pdf)
+ list (APPEND DOCS pdf)
- # generate Doxygen file "Doxybook"
+ # generate Doxygen file "Doxybook"
- set(GENERATE_HTML NO)
- set(GENERATE_LATEX YES)
- set(LATEX_HEADER "${CMAKE_CURRENT_BINARY_DIR}/fltk-book.tex")
+ set (GENERATE_HTML NO)
+ set (GENERATE_LATEX YES)
+ set (LATEX_HEADER "${CMAKE_CURRENT_BINARY_DIR}/fltk-book.tex")
- configure_file(
- ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in
- ${CMAKE_CURRENT_BINARY_DIR}/Doxybook
- @ONLY
- )
+ configure_file(
+ ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in
+ ${CMAKE_CURRENT_BINARY_DIR}/Doxybook
+ @ONLY
+ )
- # generate LaTeX header fltk-book.tex
+ # generate LaTeX header fltk-book.tex
- set(FL_VERSION ${FLTK_VERSION_FULL})
- set(DOXY_VERSION ${DOXYGEN_VERSION})
- execute_process(COMMAND date +%Y
- OUTPUT_VARIABLE YEAR
- )
+ set (DOXY_VERSION ${DOXYGEN_VERSION})
+ execute_process (COMMAND date +%Y
+ OUTPUT_VARIABLE YEAR
+ )
- configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/fltk-book.tex.in
- ${CMAKE_CURRENT_BINARY_DIR}/fltk-book.tex
- @ONLY
- )
+ configure_file (${CMAKE_CURRENT_SOURCE_DIR}/src/fltk-book.tex.in
+ ${CMAKE_CURRENT_BINARY_DIR}/fltk-book.tex
+ @ONLY
+ )
- # generate fltk.pdf
+ # generate fltk.pdf
- add_custom_command(
- OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/fltk.pdf
- COMMAND ${DOXYGEN_EXECUTABLE} Doxybook
- COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/make_pdf
- COMMAND cp -f latex/refman.pdf fltk.pdf
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMENT "Generating PDF documentation" VERBATIM
- )
+ add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/fltk.pdf
+ COMMAND ${DOXYGEN_EXECUTABLE} Doxybook
+ COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/make_pdf
+ COMMAND cp -f latex/refman.pdf fltk.pdf
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ COMMENT "Generating PDF documentation" VERBATIM
+ )
- # add target 'pdf'
+ # add target 'pdf'
- add_custom_target(pdf
- # ALL
- DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/fltk.pdf
- )
+ add_custom_target (pdf
+ # ALL
+ DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/fltk.pdf
+ )
-endif(OPTION_BUILD_PDF_DOCUMENTATION)
+endif (OPTION_BUILD_PDF_DOCUMENTATION)
#----------------------------------
# add target 'docs' for all docs
@@ -120,10 +117,10 @@ endif(OPTION_BUILD_PDF_DOCUMENTATION)
if (DOCS)
- add_custom_target(docs
- # ALL
- DEPENDS ${DOCS}
- )
+ add_custom_target(docs
+ # ALL
+ DEPENDS ${DOCS}
+ )
endif (DOCS)
@@ -133,16 +130,16 @@ endif (DOCS)
if (OPTION_INSTALL_HTML_DOCUMENTATION AND OPTION_BUILD_HTML_DOCUMENTATION)
- install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html
- DESTINATION ${FLTK_DATADIR}/doc/fltk
- )
+ install (DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html
+ DESTINATION ${FLTK_DATADIR}/doc/fltk
+ )
endif (OPTION_INSTALL_HTML_DOCUMENTATION AND OPTION_BUILD_HTML_DOCUMENTATION)
if (OPTION_INSTALL_PDF_DOCUMENTATION AND OPTION_BUILD_PDF_DOCUMENTATION)
- install(FILES ${CMAKE_CURRENT_BINARY_DIR}/fltk.pdf
- DESTINATION ${FLTK_DATADIR}/doc/fltk/
- )
+ install (FILES ${CMAKE_CURRENT_BINARY_DIR}/fltk.pdf
+ DESTINATION ${FLTK_DATADIR}/doc/fltk/
+ )
endif (OPTION_INSTALL_PDF_DOCUMENTATION AND OPTION_BUILD_PDF_DOCUMENTATION)
diff --git a/documentation/Doxyfile.in b/documentation/Doxyfile.in
index 893f3bd28..80c9dafaa 100644
--- a/documentation/Doxyfile.in
+++ b/documentation/Doxyfile.in
@@ -25,7 +25,7 @@ DOXYFILE_ENCODING = UTF-8
# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
# by quotes) that should identify the project.
-PROJECT_NAME = "FLTK @FL_VERSION@"
+PROJECT_NAME = "FLTK @FLTK_VERSION@"
# The PROJECT_NUMBER tag can be used to enter a project or revision number.
# This could be handy for archiving the generated documentation or
diff --git a/documentation/Makefile b/documentation/Makefile
index a1c370799..5e95ad5b8 100644
--- a/documentation/Makefile
+++ b/documentation/Makefile
@@ -132,7 +132,7 @@ uninstall-linux uninstall-osx:
Doxyfile: Doxyfile.in
echo "Generating Doxyfile ..."
- sed -e's,@FL_VERSION@,$(FL_VERSION),' \
+ sed -e's,@FLTK_VERSION@,$(FLTK_VERSION),' \
-e's,@GENERATE_HTML@,YES,' \
-e's,@GENERATE_LATEX@,NO,' \
-e's, @LATEX_HEADER@,,' \
@@ -142,7 +142,7 @@ Doxyfile: Doxyfile.in
Doxybook: Doxyfile.in
echo "Generating Doxybook ..."
- sed -e's,@FL_VERSION@,$(FL_VERSION),' \
+ sed -e's,@FLTK_VERSION@,$(FLTK_VERSION),' \
-e's,@GENERATE_HTML@,NO,' \
-e's,@GENERATE_LATEX@,YES,' \
-e's,@LATEX_HEADER@,src/fltk-book.tex,' \
@@ -183,6 +183,6 @@ src/fltk-book.tex: src/fltk-book.tex.in
DOXY_VERSION=`$(DOXYDOC) --version`; \
YEAR=`date +%Y`; \
sed -e"s/@YEAR@/$$YEAR/g" \
- -e"s/@FL_VERSION@/$(FL_VERSION)/g" \
+ -e"s/@FLTK_VERSION@/$(FLTK_VERSION)/g" \
-e"s/@DOXY_VERSION@/$$DOXY_VERSION/g" \
< $< > $@
diff --git a/documentation/src/fltk-book.tex.in b/documentation/src/fltk-book.tex.in
index e1568d6d6..880d06ead 100644
--- a/documentation/src/fltk-book.tex.in
+++ b/documentation/src/fltk-book.tex.in
@@ -127,7 +127,7 @@
\begin{titlepage}
\vspace*{5cm}
\begin{center}%
-{\Huge FLTK @FL_VERSION@ Programming Manual}\\
+{\Huge FLTK @FLTK_VERSION@ Programming Manual}\\
\vspace*{2cm}
\begin{DoxyImageNoCaption}
\mbox{\includegraphics[width=6cm]{FL200.png}}
diff --git a/fltk-config.in b/fltk-config.in
index c98d2b538..bf0bdef4e 100644
--- a/fltk-config.in
+++ b/fltk-config.in
@@ -17,9 +17,9 @@
# https://www.fltk.org/bugs.php
#
-MAJOR_VERSION=@FL_MAJOR_VERSION@
-MINOR_VERSION=@FL_MINOR_VERSION@
-PATCH_VERSION=@FL_PATCH_VERSION@
+MAJOR_VERSION=@FLTK_VERSION_MAJOR@
+MINOR_VERSION=@FLTK_VERSION_MINOR@
+PATCH_VERSION=@FLTK_VERSION_PATCH@
VERSION="$MAJOR_VERSION.$MINOR_VERSION.$PATCH_VERSION"
APIVERSION="$MAJOR_VERSION.$MINOR_VERSION"
diff --git a/fltk.list.in b/fltk.list.in
index 08877ba28..89c61426b 100644
--- a/fltk.list.in
+++ b/fltk.list.in
@@ -21,7 +21,7 @@
%vendor FLTK Development Team
%license COPYING
%readme README.txt
-%version @FL_MAJOR_VERSION@.@FL_MINOR_VERSION@.@FL_PATCH_VERSION@
+%version @FLTK_VERSION_MAJOR@.@FLTK_VERSION_MINOR@.@FLTK_VERSION_PATCH@
%description The Fast Light Tool Kit ("FLTK", pronounced "fulltick") is a
%description cross-platform C++ GUI toolkit for UNIX(r)/Linux(r) (X11),
%description Microsoft(r) Windows(r), and MacOS(r) X. FLTK provides modern
diff --git a/fltk.spec.in b/fltk.spec.in
index d13e6b5d9..d0fca8bbe 100644
--- a/fltk.spec.in
+++ b/fltk.spec.in
@@ -14,7 +14,7 @@
# https://www.fltk.org/bugs.php
#
-%define version @FL_MAJOR_VERSION@.@FL_MINOR_VERSION@.@FL_PATCH_VERSION@
+%define version @FLTK_VERSION_MAJOR@.@FLTK_VERSION_MINOR@.@FLTK_VERSION_PATCH@
%define release 1
%define prefix /usr
diff --git a/fluid/CMakeLists.txt b/fluid/CMakeLists.txt
index e730f274c..30b105891 100644
--- a/fluid/CMakeLists.txt
+++ b/fluid/CMakeLists.txt
@@ -1,7 +1,7 @@
#
# CMakeLists.txt to build fluid for the FLTK project using CMake (www.cmake.org)
#
-# Copyright 1998-2018 by Bill Spitzak and others.
+# Copyright 1998-2020 by Bill Spitzak and others.
#
# This library is free software. Distribution and use rights are outlined in
# the file "COPYING" which should have been included with this file. If this
@@ -14,85 +14,84 @@
# https://www.fltk.org/bugs.php
#
+if (NOT ANDROID)
-if(NOT ANDROID)
-
-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
+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
)
# ExternalCodeEditor: platform specific files
if (WIN32)
- list(APPEND CPPFILES ExternalCodeEditor_WIN32.cxx)
+ list (APPEND CPPFILES ExternalCodeEditor_WIN32.cxx)
else ()
- list(APPEND CPPFILES ExternalCodeEditor_UNIX.cxx)
+ list (APPEND CPPFILES ExternalCodeEditor_UNIX.cxx)
endif (WIN32)
-if(APPLE AND (NOT OPTION_APPLE_X11) AND (NOT OPTION_APPLE_SDL))
- set(ICON_NAME fluid.icns)
- set(ICON_PATH "${PROJECT_SOURCE_DIR}/fluid/fluid.app/Contents/Resources/${ICON_NAME}")
+if (APPLE AND (NOT OPTION_APPLE_X11) AND (NOT OPTION_APPLE_SDL))
+ set (ICON_NAME fluid.icns)
+ set (ICON_PATH "${PROJECT_SOURCE_DIR}/fluid/fluid.app/Contents/Resources/${ICON_NAME}")
add_executable(fluid MACOSX_BUNDLE ${CPPFILES} ${ICON_PATH})
-else()
+else ()
add_executable(fluid WIN32 ${CPPFILES})
-endif(APPLE AND (NOT OPTION_APPLE_X11) AND (NOT OPTION_APPLE_SDL))
+endif (APPLE AND (NOT OPTION_APPLE_X11) AND (NOT OPTION_APPLE_SDL))
target_link_libraries(fluid fltk fltk_images fltk_forms)
# install fluid
-if(APPLE AND (NOT OPTION_APPLE_X11) AND (NOT OPTION_APPLE_SDL))
+if (APPLE AND (NOT OPTION_APPLE_X11) AND (NOT OPTION_APPLE_SDL))
# create bundle
- set_target_properties(fluid PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${PROJECT_SOURCE_DIR}/fluid/fluid.app/Contents/Info.plist")
- set_target_properties(fluid PROPERTIES MACOSX_BUNDLE_ICON_FILE ${ICON_NAME})
- set_target_properties(fluid PROPERTIES RESOURCE ${ICON_PATH})
+ set_target_properties (fluid PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${PROJECT_SOURCE_DIR}/fluid/fluid.app/Contents/Info.plist")
+ set_target_properties (fluid PROPERTIES MACOSX_BUNDLE_ICON_FILE ${ICON_NAME})
+ set_target_properties (fluid PROPERTIES RESOURCE ${ICON_PATH})
# install
- install(TARGETS fluid DESTINATION ${FLTK_BINDIR})
+ install (TARGETS fluid DESTINATION ${FLTK_BINDIR})
else()
- install(TARGETS fluid
+ install (TARGETS fluid
EXPORT FLTK-Targets
RUNTIME DESTINATION ${FLTK_BINDIR}
LIBRARY DESTINATION ${FLTK_LIBDIR}
ARCHIVE DESTINATION ${FLTK_LIBDIR}
- )
-endif(APPLE AND (NOT OPTION_APPLE_X11) AND (NOT OPTION_APPLE_SDL))
+ )
+endif (APPLE AND (NOT OPTION_APPLE_X11) AND (NOT OPTION_APPLE_SDL))
# install desktop files
-if(UNIX)
- install(FILES fluid.desktop
- DESTINATION ${FLTK_DATADIR}/applications
- )
- # Install mime-type file. x-fluid.desktop method is deprecated.
- install(FILES fluid.xml
- DESTINATION ${FLTK_DATADIR}/mime/packages
- )
+if (UNIX)
+ install (FILES fluid.desktop
+ DESTINATION ${FLTK_DATADIR}/applications
+ )
+ # Install mime-type file (x-fluid.desktop method is deprecated)
+ install (FILES fluid.xml
+ DESTINATION ${FLTK_DATADIR}/mime/packages
+ )
- # Install desktop icons.
- foreach(icon 32 48 64 128)
- install(FILES icons/fluid-${icon}.png
- DESTINATION ${FLTK_DATADIR}/icons/hicolor/${icon}x${icon}/apps
- RENAME fluid.png
- )
- endforeach()
-endif(UNIX)
+ # Install desktop icons
+ foreach (icon 32 48 64 128)
+ install (FILES icons/fluid-${icon}.png
+ DESTINATION ${FLTK_DATADIR}/icons/hicolor/${icon}x${icon}/apps
+ RENAME fluid.png
+ )
+ endforeach()
+endif (UNIX)
-endif(NOT ANDROID)
+endif (NOT ANDROID)
diff --git a/makeinclude.in b/makeinclude.in
index 7980ac06b..e00baa8ea 100644
--- a/makeinclude.in
+++ b/makeinclude.in
@@ -16,13 +16,9 @@
# FLTK version numbers
-FL_MAJOR_VERSION = @FL_MAJOR_VERSION@
-FL_MINOR_VERSION = @FL_MINOR_VERSION@
-FL_PATCH_VERSION = @FL_PATCH_VERSION@
-
+FL_VERSION = @FLTK_VERSION@
FL_DSO_VERSION = @FL_DSO_VERSION@
FL_ABI_VERSION = @FL_ABI_VERSION@
-FL_VERSION = @FL_VERSION@
# FLTK configuration options: BUILD = { WIN | OSX | X11 | XFT }
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index b7597f74c..d3ef3940c 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -173,7 +173,7 @@ list (APPEND HEADER_FILES
${CMAKE_CURRENT_BINARY_DIR}/../config.h
)
-set (GL_HEADER_FILES) # FIXME: not (yet?) defined
+set (GL_HEADER_FILES) # FIXME: not (yet?) defined
if ((USE_X11 OR USE_SDL) AND NOT OPTION_PRINT_SUPPORT)
set (PSFILES
@@ -221,6 +221,7 @@ if (USE_X11)
drivers/Xlib/Fl_Xlib_Graphics_Driver_font_x.cxx
)
endif (USE_XFT)
+
set (DRIVER_HEADER_FILES
drivers/Posix/Fl_Posix_System_Driver.H
drivers/X11/Fl_X11_Screen_Driver.H
@@ -294,7 +295,7 @@ elseif (ANDROID)
# Android
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set (DRIVER_FILES
drivers/Android/Fl_Android_Application.cxx
@@ -361,7 +362,7 @@ set (CPPFILES
${DRIVER_FILES}
)
-set (FLCPPFILES
+set (FORMS_FILES
forms_compatibility.cxx
forms_bitmap.cxx
forms_free.cxx
@@ -453,15 +454,15 @@ if (WIN32)
endif (WIN32)
if (APPLE AND (NOT OPTION_APPLE_X11) AND (NOT OPTION_APPLE_SDL))
- set (MMFILES
- Fl_cocoa.mm
- drivers/Cocoa/Fl_Cocoa_Printer_Driver.mm
- Fl_Native_File_Chooser_MAC.mm
- Fl_MacOS_Sys_Menu_Bar.mm
- )
+ set (MMFILES
+ Fl_cocoa.mm
+ drivers/Cocoa/Fl_Cocoa_Printer_Driver.mm
+ Fl_Native_File_Chooser_MAC.mm
+ Fl_MacOS_Sys_Menu_Bar.mm
+ )
else()
- set (MMFILES
- )
+ set (MMFILES
+ )
endif (APPLE AND (NOT OPTION_APPLE_X11) AND (NOT OPTION_APPLE_SDL))
@@ -475,7 +476,7 @@ list (APPEND SHARED_FILES ${HEADER_FILES} ${DRIVER_HEADER_FILES})
set (STATIC_FILES ${SHARED_FILES})
if (WIN32)
- list (APPEND STATIC_FILES fl_call_main.c)
+ list (APPEND STATIC_FILES fl_call_main.c)
endif (WIN32)
add_definitions(-DFL_LIBRARY)
@@ -487,162 +488,188 @@ add_definitions(-DFL_LIBRARY)
set (OPTIONAL_LIBS)
if (LIB_dl)
- list (APPEND OPTIONAL_LIBS ${LIB_dl})
+ list (APPEND OPTIONAL_LIBS ${LIB_dl})
endif (LIB_dl)
if (USE_THREADS)
- list (APPEND OPTIONAL_LIBS ${CMAKE_THREAD_LIBS_INIT})
+ list (APPEND OPTIONAL_LIBS ${CMAKE_THREAD_LIBS_INIT})
endif (USE_THREADS)
if (USE_X11)
- list (APPEND OPTIONAL_LIBS ${X11_LIBRARIES})
+ list (APPEND OPTIONAL_LIBS ${X11_LIBRARIES})
endif (USE_X11)
if (USE_SDL)
- list (APPEND OPTIONAL_LIBS ${SDL2_LIBRARY})
-endif(USE_SDL)
+ list (APPEND OPTIONAL_LIBS ${SDL2_LIBRARY})
+endif (USE_SDL)
if (WIN32)
- list (APPEND OPTIONAL_LIBS comctl32 ws2_32)
+ list (APPEND OPTIONAL_LIBS comctl32 ws2_32)
endif (WIN32)
if (FLTK_HAVE_CAIRO)
- list (APPEND OPTIONAL_LIBS fltk_cairo ${PKG_CAIRO_LIBRARIES})
+ list (APPEND OPTIONAL_LIBS fltk_cairo ${PKG_CAIRO_LIBRARIES})
ENDif (FLTK_HAVE_CAIRO)
if (HAVE_XINERAMA)
- list (APPEND OPTIONAL_LIBS ${X11_Xinerama_LIB})
+ list (APPEND OPTIONAL_LIBS ${X11_Xinerama_LIB})
endif (HAVE_XINERAMA)
if (HAVE_XFIXES)
- list (APPEND OPTIONAL_LIBS ${X11_Xfixes_LIB})
+ list (APPEND OPTIONAL_LIBS ${X11_Xfixes_LIB})
endif (HAVE_XFIXES)
if (HAVE_XCURSOR)
- list (APPEND OPTIONAL_LIBS ${X11_Xcursor_LIB})
+ list (APPEND OPTIONAL_LIBS ${X11_Xcursor_LIB})
endif (HAVE_XCURSOR)
if (HAVE_XRENDER)
- list (APPEND OPTIONAL_LIBS ${X11_Xrender_LIB})
+ list (APPEND OPTIONAL_LIBS ${X11_Xrender_LIB})
endif (HAVE_XRENDER)
if (USE_PANGO)
list (APPEND OPTIONAL_LIBS ${HAVE_LIB_PANGO} ${HAVE_LIB_PANGOXFT})
- if(NOT APPLE)
- list (APPEND OPTIONAL_LIBS ${HAVE_LIB_GOBJECT} )
- endif(NOT APPLE)
-endif(USE_PANGO)
+ if (NOT APPLE)
+ list (APPEND OPTIONAL_LIBS ${HAVE_LIB_GOBJECT} )
+ endif (NOT APPLE)
+endif (USE_PANGO)
if (USE_XFT)
- list (APPEND OPTIONAL_LIBS ${X11_Xft_LIB})
- if (LIB_fontconfig)
- list (APPEND OPTIONAL_LIBS ${LIB_fontconfig})
- endif (LIB_fontconfig)
+ list (APPEND OPTIONAL_LIBS ${X11_Xft_LIB})
+ if (LIB_fontconfig)
+ list (APPEND OPTIONAL_LIBS ${LIB_fontconfig})
+ endif (LIB_fontconfig)
endif (USE_XFT)
#######################################################################
-FL_ADD_LIBRARY(fltk STATIC "${STATIC_FILES}")
-target_link_libraries(fltk ${OPTIONAL_LIBS})
+FL_ADD_LIBRARY (fltk STATIC "${STATIC_FILES}")
+target_link_libraries (fltk ${OPTIONAL_LIBS})
#######################################################################
-FL_ADD_LIBRARY(fltk_forms STATIC "${FLCPPFILES}")
-target_link_libraries(fltk_forms fltk)
+FL_ADD_LIBRARY (fltk_forms STATIC "${FORMS_FILES}")
+target_link_libraries (fltk_forms fltk)
#######################################################################
-FL_ADD_LIBRARY(fltk_images STATIC "${IMGCPPFILES}")
-target_link_libraries(fltk_images fltk)
+FL_ADD_LIBRARY (fltk_images STATIC "${IMGCPPFILES}")
+target_link_libraries (fltk_images fltk)
if (OPTION_USE_SYSTEM_LIBJPEG)
- target_link_libraries(fltk_images ${FLTK_JPEG_LIBRARIES})
+ target_link_libraries (fltk_images ${FLTK_JPEG_LIBRARIES})
else()
- target_link_libraries(fltk_images fltk_jpeg)
+ 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})
+ target_link_libraries (fltk_images ${FLTK_ZLIB_LIBRARIES})
else()
- target_link_libraries(fltk_images fltk_z)
+ 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})
+ target_link_libraries (fltk_images ${FLTK_PNG_LIBRARIES})
else()
- target_link_libraries(fltk_images fltk_png)
+ target_link_libraries (fltk_images fltk_png)
endif (OPTION_USE_SYSTEM_LIBPNG)
#######################################################################
if (OPENGL_FOUND)
- FL_ADD_LIBRARY(fltk_gl STATIC "${GLCPPFILES};${GL_HEADER_FILES};${GL_DRIVER_HEADER_FILES}")
- target_link_libraries(fltk_gl fltk ${OPENGL_LIBRARIES})
+ FL_ADD_LIBRARY (fltk_gl STATIC "${GLCPPFILES};${GL_HEADER_FILES};${GL_DRIVER_HEADER_FILES}")
+ target_link_libraries (fltk_gl fltk ${OPENGL_LIBRARIES})
endif (OPENGL_FOUND)
#######################################################################
# Build shared libraries (optional)
#######################################################################
+# Shared libraries, part 1: everything except Visual Studio (MSVC)
+#######################################################################
+
+if (OPTION_BUILD_SHARED_LIBS AND NOT MSVC)
+
+ FL_ADD_LIBRARY (fltk SHARED "${SHARED_FILES}")
+ target_link_libraries (fltk_SHARED ${OPTIONAL_LIBS})
+
+ ###################################################################
+
+ FL_ADD_LIBRARY (fltk_forms SHARED "${FORMS_FILES}")
+ target_link_libraries (fltk_forms_SHARED fltk_SHARED)
+
+ ###################################################################
+
+ FL_ADD_LIBRARY (fltk_images SHARED "${IMGCPPFILES}")
+ target_link_libraries (fltk_images_SHARED fltk_SHARED)
+
+ 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_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 (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 (OPENGL_FOUND)
+ FL_ADD_LIBRARY (fltk_gl SHARED "${GLCPPFILES};${GL_HEADER_FILES};${GL_DRIVER_HEADER_FILES}")
+ target_link_libraries (fltk_gl_SHARED fltk_SHARED ${OPENGL_LIBRARIES})
+ endif (OPENGL_FOUND)
+
+endif (OPTION_BUILD_SHARED_LIBS AND NOT MSVC)
+
+#######################################################################
+# Shared libraries, part 2: Visual Studio (MSVC)
+#######################################################################
-# Note to devs: As of 08 Aug 2016 we can build shared libs (dlls)
-# under Windows with Visual Studio (MSVC) but we can't link for instance
-# fltk_images_SHARED with fltk_SHARED - we have to use fltk, i.e. the
-# "static" object library instead. I don't know how to fix this, but
-# at least we can build shared libraries (dlls) with Visual Studio.
+# Note to devs: As of June 2020 we can't build separate shared libs (DLL's)
+# under Windows with Visual Studio (MSVC) but we can build one big DLL
+# that comprises all FLTK and optional PNG, JPEG, and ZLIB libs.
# AlbrechtS
-if (OPTION_BUILD_SHARED_LIBS)
-
- FL_ADD_LIBRARY(fltk SHARED "${SHARED_FILES}")
- target_link_libraries(fltk_SHARED ${OPTIONAL_LIBS})
-
- ###################################################################
-
- FL_ADD_LIBRARY(fltk_forms SHARED "${FLCPPFILES}")
- if (MSVC)
- target_link_libraries(fltk_forms_SHARED fltk)
- else ()
- target_link_libraries(fltk_forms_SHARED fltk_SHARED)
- endif (MSVC)
-
- ###################################################################
-
- FL_ADD_LIBRARY(fltk_images SHARED "${IMGCPPFILES}")
- if (MSVC)
- target_link_libraries(fltk_images_SHARED fltk)
- else ()
- target_link_libraries(fltk_images_SHARED fltk_SHARED)
- endif (MSVC)
-
- 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_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 (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 (OPENGL_FOUND)
- FL_ADD_LIBRARY(fltk_gl SHARED "${GLCPPFILES};${GL_HEADER_FILES};${GL_DRIVER_HEADER_FILES}")
- if (MSVC)
- target_link_libraries(fltk_gl_SHARED fltk ${OPENGL_LIBRARIES})
- else ()
- target_link_libraries(fltk_gl_SHARED fltk_SHARED ${OPENGL_LIBRARIES})
- endif (MSVC)
- endif (OPENGL_FOUND)
-
-endif (OPTION_BUILD_SHARED_LIBS)
+if (OPTION_BUILD_SHARED_LIBS AND MSVC)
+
+ set (SOURCES ${SHARED_FILES} ${FORMS_FILES} ${IMGCPPFILES})
+ if (OPENGL_FOUND)
+ list (APPEND SOURCES ${GLCPPFILES} ${GL_HEADER_FILES} ${GL_DRIVER_HEADER_FILES})
+ endif (OPENGL_FOUND)
+
+ FL_ADD_LIBRARY (fltk SHARED "${SOURCES}")
+ target_link_libraries (fltk_SHARED ${OPTIONAL_LIBS})
+
+ if (OPTION_USE_SYSTEM_LIBJPEG)
+ target_link_libraries (fltk_SHARED ${FLTK_JPEG_LIBRARIES})
+ else()
+ target_link_libraries (fltk_SHARED fltk_jpeg_SHARED)
+ endif (OPTION_USE_SYSTEM_LIBJPEG)
+
+ if (OPTION_USE_SYSTEM_LIBPNG)
+ target_link_libraries (fltk_SHARED ${FLTK_PNG_LIBRARIES})
+ else()
+ target_link_libraries (fltk_SHARED fltk_png_SHARED)
+ endif (OPTION_USE_SYSTEM_LIBPNG)
+
+ if (OPTION_USE_SYSTEM_ZLIB)
+ target_link_libraries (fltk_SHARED ${FLTK_ZLIB_LIBRARIES})
+ else()
+ target_link_libraries (fltk_SHARED fltk_z_SHARED)
+ endif (OPTION_USE_SYSTEM_ZLIB)
+
+ if (OPENGL_FOUND)
+ target_link_libraries (fltk_SHARED ${OPENGL_LIBRARIES})
+ endif (OPENGL_FOUND)
+
+endif (OPTION_BUILD_SHARED_LIBS AND MSVC)
#######################################################################
diff --git a/src/Makefile b/src/Makefile
index 0cbde688f..bb4b6af79 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -14,7 +14,7 @@
# https://www.fltk.org/bugs.php
#
-# Note: see ../configure.in and/or ../makeinclude for definition of
+# Note: see ../configure.ac and/or ../makeinclude for definition of
# FL_VERSION (x.y.z), FL_ABI_VERSION (x.y.0), and FL_DSO_VERSION (x.y)
CPPFILES = \
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index f47f33b93..5b6cd575f 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -1,7 +1,7 @@
#
# CMakeLists.txt used to build test and demo apps by the CMake build system
#
-# Copyright 2004-2019 by Bill Spitzak and others.
+# Copyright 2004-2020 by Bill Spitzak and others.
#
# This library is free software. Distribution and use rights are outlined in
# the file "COPYING" which should have been included with this file. If this
@@ -15,120 +15,184 @@
#
#######################################################################
-set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/../bin/examples)
+set (EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/../bin/examples)
+
+include (../CMake/FLTK-Functions.cmake)
+include (../CMake/fl_create_example.cmake)
#######################################################################
# audio libs for test apps
-if(WIN32)
- set(AUDIOLIBS winmm)
-elseif(APPLE)
- set(AUDIOLIBS "-framework CoreAudio")
-elseif(HAVE_ALSA_ASOUNDLIB_H)
+if (WIN32)
+ set (AUDIOLIBS winmm)
+elseif (APPLE)
+ set (AUDIOLIBS "-framework CoreAudio")
+elseif (HAVE_ALSA_ASOUNDLIB_H)
find_library(LIB_asound asound)
- if(LIB_asound)
- set(AUDIOLIBS ${LIB_asound})
- endif(LIB_asound)
-endif(WIN32)
+ if (LIB_asound)
+ set (AUDIOLIBS ${LIB_asound})
+ endif (LIB_asound)
+endif (WIN32)
#######################################################################
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}
- )
+)
#######################################################################
# Add the ANDROID_OK option if the example can be compiled for Android
# as well as for other platforms.
-if(NOT ANDROID)
-CREATE_EXAMPLE(adjuster adjuster.cxx fltk ANDROID_OK)
-CREATE_EXAMPLE(arc arc.cxx fltk ANDROID_OK)
-CREATE_EXAMPLE(animated animated.cxx fltk ANDROID_OK)
-CREATE_EXAMPLE(ask ask.cxx fltk ANDROID_OK)
-CREATE_EXAMPLE(bitmap bitmap.cxx fltk ANDROID_OK)
-CREATE_EXAMPLE(blocks blocks.cxx "fltk;${AUDIOLIBS}")
-CREATE_EXAMPLE(boxtype boxtype.cxx fltk ANDROID_OK)
-CREATE_EXAMPLE(browser browser.cxx fltk ANDROID_OK)
-CREATE_EXAMPLE(button button.cxx fltk ANDROID_OK)
-CREATE_EXAMPLE(buttons buttons.cxx fltk ANDROID_OK)
-CREATE_EXAMPLE(checkers "checkers.cxx;checkers_pieces.fl" "fltk_images;fltk" ANDROID_OK)
-CREATE_EXAMPLE(clock clock.cxx fltk ANDROID_OK)
-CREATE_EXAMPLE(colbrowser colbrowser.cxx fltk)
-CREATE_EXAMPLE(color_chooser color_chooser.cxx fltk ANDROID_OK)
-CREATE_EXAMPLE(cursor cursor.cxx fltk ANDROID_OK)
-CREATE_EXAMPLE(curve curve.cxx fltk ANDROID_OK)
-CREATE_EXAMPLE(demo demo.cxx fltk)
-CREATE_EXAMPLE(device device.cxx "fltk;fltk_images")
-CREATE_EXAMPLE(doublebuffer doublebuffer.cxx fltk ANDROID_OK)
-CREATE_EXAMPLE(editor editor.cxx fltk ANDROID_OK)
-CREATE_EXAMPLE(fast_slow fast_slow.fl fltk ANDROID_OK)
-CREATE_EXAMPLE(file_chooser file_chooser.cxx "fltk_images;fltk")
-CREATE_EXAMPLE(fonts fonts.cxx fltk)
-CREATE_EXAMPLE(forms forms.cxx "fltk_forms;fltk")
-CREATE_EXAMPLE(hello hello.cxx fltk)
-CREATE_EXAMPLE(help_dialog help_dialog.cxx "fltk_images;fltk")
-CREATE_EXAMPLE(icon icon.cxx fltk)
-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(input_choice input_choice.cxx fltk)
-CREATE_EXAMPLE(keyboard "keyboard.cxx;keyboard_ui.fl" fltk)
-CREATE_EXAMPLE(label label.cxx fltk)
-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(native-filechooser native-filechooser.cxx "fltk_images;fltk")
-CREATE_EXAMPLE(navigation navigation.cxx fltk)
-CREATE_EXAMPLE(output output.cxx fltk)
-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_images;fltk")
-CREATE_EXAMPLE(preferences preferences.fl fltk)
-CREATE_EXAMPLE(offscreen offscreen.cxx fltk)
-CREATE_EXAMPLE(radio radio.fl fltk)
-CREATE_EXAMPLE(resize resize.fl fltk)
-CREATE_EXAMPLE(resizebox resizebox.cxx fltk)
-CREATE_EXAMPLE(rotated_text rotated_text.cxx fltk)
-CREATE_EXAMPLE(scroll scroll.cxx fltk)
-CREATE_EXAMPLE(subwindow subwindow.cxx fltk)
-CREATE_EXAMPLE(sudoku sudoku.cxx "fltk_images;fltk;${AUDIOLIBS}")
-CREATE_EXAMPLE(symbols symbols.cxx fltk)
-CREATE_EXAMPLE(tabs tabs.fl fltk)
-CREATE_EXAMPLE(table table.cxx fltk)
-CREATE_EXAMPLE(threads threads.cxx fltk)
-CREATE_EXAMPLE(tile tile.cxx fltk)
-CREATE_EXAMPLE(tiled_image tiled_image.cxx fltk)
-CREATE_EXAMPLE(tree tree.fl fltk)
-CREATE_EXAMPLE(twowin twowin.cxx fltk)
-CREATE_EXAMPLE(utf8 utf8.cxx fltk)
-CREATE_EXAMPLE(valuators valuators.fl fltk)
-CREATE_EXAMPLE(unittests unittests.cxx fltk)
-CREATE_EXAMPLE(windowfocus windowfocus.cxx fltk)
-CREATE_EXAMPLE(fltk-versions ../examples/fltk-versions.cxx fltk)
+
+if (NOT ANDROID)
+
+CREATE_EXAMPLE (adjuster adjuster.cxx fltk ANDROID_OK)
+CREATE_EXAMPLE (arc arc.cxx fltk ANDROID_OK)
+CREATE_EXAMPLE (animated animated.cxx fltk ANDROID_OK)
+CREATE_EXAMPLE (ask ask.cxx fltk ANDROID_OK)
+CREATE_EXAMPLE (bitmap bitmap.cxx fltk ANDROID_OK)
+CREATE_EXAMPLE (blocks blocks.cxx "fltk;${AUDIOLIBS}")
+CREATE_EXAMPLE (boxtype boxtype.cxx fltk ANDROID_OK)
+CREATE_EXAMPLE (browser browser.cxx fltk ANDROID_OK)
+CREATE_EXAMPLE (button button.cxx fltk ANDROID_OK)
+CREATE_EXAMPLE (buttons buttons.cxx fltk ANDROID_OK)
+CREATE_EXAMPLE (checkers "checkers.cxx;checkers_pieces.fl" "fltk_images;fltk" ANDROID_OK)
+CREATE_EXAMPLE (clock clock.cxx fltk ANDROID_OK)
+CREATE_EXAMPLE (colbrowser colbrowser.cxx fltk)
+CREATE_EXAMPLE (color_chooser color_chooser.cxx fltk ANDROID_OK)
+CREATE_EXAMPLE (cursor cursor.cxx fltk ANDROID_OK)
+CREATE_EXAMPLE (curve curve.cxx fltk ANDROID_OK)
+CREATE_EXAMPLE (demo demo.cxx fltk)
+CREATE_EXAMPLE (device device.cxx "fltk_images;fltk")
+CREATE_EXAMPLE (doublebuffer doublebuffer.cxx fltk ANDROID_OK)
+CREATE_EXAMPLE (editor "editor.cxx;editor-Info.plist" fltk ANDROID_OK)
+CREATE_EXAMPLE (fast_slow fast_slow.fl fltk ANDROID_OK)
+CREATE_EXAMPLE (file_chooser file_chooser.cxx "fltk_images;fltk")
+CREATE_EXAMPLE (fonts fonts.cxx fltk)
+CREATE_EXAMPLE (forms forms.cxx "fltk_forms;fltk")
+CREATE_EXAMPLE (hello hello.cxx fltk)
+CREATE_EXAMPLE (help_dialog help_dialog.cxx "fltk_images;fltk")
+CREATE_EXAMPLE (icon icon.cxx fltk)
+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 (input_choice input_choice.cxx fltk)
+CREATE_EXAMPLE (keyboard "keyboard.cxx;keyboard_ui.fl" fltk)
+CREATE_EXAMPLE (label label.cxx fltk)
+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 (native-filechooser native-filechooser.cxx "fltk_images;fltk")
+CREATE_EXAMPLE (navigation navigation.cxx fltk)
+CREATE_EXAMPLE (output output.cxx fltk)
+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_images;fltk")
+CREATE_EXAMPLE (preferences preferences.fl fltk)
+CREATE_EXAMPLE (offscreen offscreen.cxx fltk)
+CREATE_EXAMPLE (radio radio.fl fltk)
+CREATE_EXAMPLE (resize resize.fl fltk)
+CREATE_EXAMPLE (resizebox resizebox.cxx fltk)
+CREATE_EXAMPLE (rotated_text rotated_text.cxx fltk)
+CREATE_EXAMPLE (scroll scroll.cxx fltk)
+CREATE_EXAMPLE (subwindow subwindow.cxx fltk)
+CREATE_EXAMPLE (sudoku sudoku.cxx "fltk_images;fltk;${AUDIOLIBS}")
+CREATE_EXAMPLE (symbols symbols.cxx fltk)
+CREATE_EXAMPLE (tabs tabs.fl fltk)
+CREATE_EXAMPLE (table table.cxx fltk)
+CREATE_EXAMPLE (threads threads.cxx fltk)
+CREATE_EXAMPLE (tile tile.cxx fltk)
+CREATE_EXAMPLE (tiled_image tiled_image.cxx fltk)
+CREATE_EXAMPLE (tree tree.fl fltk)
+CREATE_EXAMPLE (twowin twowin.cxx fltk)
+CREATE_EXAMPLE (utf8 utf8.cxx fltk)
+CREATE_EXAMPLE (valuators valuators.fl fltk)
+CREATE_EXAMPLE (unittests unittests.cxx fltk)
+CREATE_EXAMPLE (windowfocus windowfocus.cxx fltk)
+
+CREATE_EXAMPLE (fltk-versions ../examples/fltk-versions.cxx fltk)
# OpenGL demos...
-if(OPENGL_FOUND)
-CREATE_EXAMPLE(CubeView "CubeMain.cxx;CubeView.cxx;CubeViewUI.fl" "fltk_gl;fltk")
-CREATE_EXAMPLE(cube cube.cxx "fltk_gl;fltk;${OPENGL_LIBRARIES}")
-CREATE_EXAMPLE(fractals "fractals.cxx;fracviewer.cxx" "fltk_gl;fltk")
-CREATE_EXAMPLE(fullscreen fullscreen.cxx "fltk_gl;fltk")
-CREATE_EXAMPLE(glpuzzle glpuzzle.cxx "fltk_gl;fltk;${OPENGL_LIBRARIES}")
-CREATE_EXAMPLE(gl_overlay gl_overlay.cxx "fltk_gl;fltk;${OPENGL_LIBRARIES}")
-CREATE_EXAMPLE(shape shape.cxx "fltk_gl;fltk;${OPENGL_LIBRARIES}")
-endif(OPENGL_FOUND)
+if (OPENGL_FOUND)
+ CREATE_EXAMPLE (CubeView "CubeMain.cxx;CubeView.cxx;CubeViewUI.fl" "fltk_gl;fltk")
+ CREATE_EXAMPLE (cube cube.cxx "fltk_gl;fltk;${OPENGL_LIBRARIES}")
+ CREATE_EXAMPLE (fractals "fractals.cxx;fracviewer.cxx" "fltk_gl;fltk")
+ CREATE_EXAMPLE (fullscreen fullscreen.cxx "fltk_gl;fltk")
+ CREATE_EXAMPLE (glpuzzle glpuzzle.cxx "fltk_gl;fltk;${OPENGL_LIBRARIES}")
+ CREATE_EXAMPLE (gl_overlay gl_overlay.cxx "fltk_gl;fltk;${OPENGL_LIBRARIES}")
+ CREATE_EXAMPLE (shape shape.cxx "fltk_gl;fltk;${OPENGL_LIBRARIES}")
+endif (OPENGL_FOUND)
# Cairo demo - must also be built w/o Cairo (displays a message box)
if (FLTK_HAVE_CAIRO)
- CREATE_EXAMPLE(cairo_test cairo_test.cxx "fltk_cairo;fltk")
+ CREATE_EXAMPLE (cairo_test cairo_test.cxx "fltk_cairo;fltk")
else ()
- CREATE_EXAMPLE(cairo_test cairo_test.cxx fltk)
+ CREATE_EXAMPLE (cairo_test cairo_test.cxx fltk)
endif (FLTK_HAVE_CAIRO)
-endif(NOT ANDROID)
+# /EXPERIMENTAL/ Build some of the demo programs linked against the shared lib(s)
+
+if (OPTION_BUILD_SHARED_LIBS)
+
+ if (MSVC) # MS Visual C++ aka. Visual Studio
+
+ # We need to link with fl_call_main.c, but this must not be compiled with
+ # macro FL_DLL, whereas the other source file(s) must be compiled with FL_DLL
+ # to link against the shared libs.
+ #
+ # ;-) I *love* Visual Studio (MSVC) ;-)
+ #
+ # Trick: build an object library with just this one file and link the executable
+ # against the shared library plus this object library. Another way would be to
+ # add the extra source file fl_call_main.c to the source files of all targets
+ # and set the FL_DLL compile_definition property only on the main *source* files
+ # but this doesn't work since the same file must be compiled for the "static"
+ # and the "shared" target, for instance hello.cxx for "hello" and "hello-shared".
+
+ add_library (CALL_MAIN OBJECT EXCLUDE_FROM_ALL ../src/fl_call_main.c)
+
+ # define a list of shared targets so we can set COMPILE_DEFINITIONS in a loop
+ set (SHARED_TARGETS)
+
+ CREATE_EXAMPLE (hello-shared hello.cxx "fltk_SHARED;CALL_MAIN")
+ CREATE_EXAMPLE (pixmap_browser-shared pixmap_browser.cxx "fltk_SHARED;CALL_MAIN")
+ CREATE_EXAMPLE (unittests-shared unittests.cxx "fltk_SHARED;CALL_MAIN")
+
+ list (APPEND SHARED_TARGETS hello pixmap_browser unittests)
+
+ if (OPENGL_FOUND)
+ CREATE_EXAMPLE (glpuzzle-shared glpuzzle.cxx "fltk_SHARED;CALL_MAIN;${OPENGL_LIBRARIES}")
+ CREATE_EXAMPLE (shape-shared shape.cxx "fltk_SHARED;CALL_MAIN;${OPENGL_LIBRARIES}")
+
+ list (APPEND SHARED_TARGETS glpuzzle shape)
+
+ endif (OPENGL_FOUND)
+
+ # apply property COMPILE_DEFINITIONS in a loop for all necessary source files
+ foreach (tgt ${SHARED_TARGETS})
+ target_compile_definitions (${tgt}-shared PRIVATE "FL_DLL")
+ endforeach ()
+
+ else () # not MSVC
+
+ CREATE_EXAMPLE (hello-shared hello.cxx fltk_SHARED)
+ CREATE_EXAMPLE (pixmap_browser-shared pixmap_browser.cxx "fltk_images_SHARED;fltk_SHARED")
+ CREATE_EXAMPLE (unittests-shared unittests.cxx fltk_SHARED)
+
+ if (OPENGL_FOUND)
+ CREATE_EXAMPLE (glpuzzle-shared glpuzzle.cxx "fltk_gl_SHARED;fltk_SHARED;${OPENGL_LIBRARIES}")
+ CREATE_EXAMPLE (shape-shared shape.cxx "fltk_gl_SHARED;fltk_SHARED;${OPENGL_LIBRARIES}")
+ endif (OPENGL_FOUND)
+
+ endif (MSVC) # (not MSVC)
+
+endif (OPTION_BUILD_SHARED_LIBS)
+
+endif (NOT ANDROID)
# We need some support files for the demo programs:
@@ -140,34 +204,31 @@ endif(NOT ANDROID)
# prepare for a "better" test file installation path
set (TESTFILE_PATH ${EXECUTABLE_OUTPUT_PATH})
-
-# *FIXME* *DEBUG*
-# message ("test/CMakeLists.txt: EXECUTABLE_OUTPUT_PATH = '${EXECUTABLE_OUTPUT_PATH}'")
-# message ("test/CMakeLists.txt: TESTFILE_PATH = '${TESTFILE_PATH}'")
+# fl_debug_var (TESTFILE_PATH)
# use a target filename to make sure the target directory gets created
-configure_file(demo.menu ${TESTFILE_PATH}/demo.menu COPYONLY)
+configure_file (demo.menu ${TESTFILE_PATH}/demo.menu COPYONLY)
-# use target directory only to avoid redundancy
-configure_file(rgb.txt ${TESTFILE_PATH} COPYONLY)
-configure_file(help_dialog.html ${TESTFILE_PATH} COPYONLY)
-configure_file(browser.cxx ${TESTFILE_PATH} COPYONLY)
-configure_file(editor.cxx ${TESTFILE_PATH} COPYONLY)
+# use target directory only (no filename) to avoid redundancy
+configure_file (rgb.txt ${TESTFILE_PATH} COPYONLY)
+configure_file (help_dialog.html ${TESTFILE_PATH} COPYONLY)
+configure_file (browser.cxx ${TESTFILE_PATH} COPYONLY)
+configure_file (editor.cxx ${TESTFILE_PATH} COPYONLY)
# Apple macOS creates bundles instead of executables and needs a little bit
# more help for demos to run correctly
-if(APPLE AND NOT OPTION_APPLE_X11)
+if (APPLE AND NOT OPTION_APPLE_X11)
- # make the menu structure part of the app
- target_sources(demo PRIVATE demo.menu)
- set_target_properties(demo PROPERTIES MACOSX_BUNDLE TRUE RESOURCE demo.menu )
+ # make the menu structure part of the app
+ target_sources (demo PRIVATE demo.menu)
+ set_target_properties (demo PROPERTIES MACOSX_BUNDLE TRUE RESOURCE demo.menu)
- # add a sample RGB file that otherwise only exists under X11
- target_sources(colbrowser PRIVATE rgb.txt)
- set_target_properties(colbrowser PROPERTIES MACOSX_BUNDLE TRUE RESOURCE rgb.txt )
+ # add a sample RGB file that otherwise only exists under X11
+ target_sources (colbrowser PRIVATE rgb.txt)
+ set_target_properties (colbrowser PROPERTIES MACOSX_BUNDLE TRUE RESOURCE rgb.txt)
- # help_dialog displays an html file as an example
- target_sources(help_dialog PRIVATE help_dialog.html)
- set_target_properties(help_dialog PROPERTIES MACOSX_BUNDLE TRUE RESOURCE help_dialog.html )
+ # help_dialog displays an html file as an example
+ target_sources (help_dialog PRIVATE help_dialog.html)
+ set_target_properties (help_dialog PROPERTIES MACOSX_BUNDLE TRUE RESOURCE help_dialog.html)
-endif(APPLE AND NOT OPTION_APPLE_X11)
+endif (APPLE AND NOT OPTION_APPLE_X11)