summaryrefslogtreecommitdiff
path: root/CMake
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 /CMake
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
Diffstat (limited to 'CMake')
-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
11 files changed, 953 insertions, 832 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)