diff options
| author | Albrecht Schlosser <albrechts.fltk@online.de> | 2020-06-13 15:19:27 +0200 |
|---|---|---|
| committer | Albrecht Schlosser <albrechts.fltk@online.de> | 2020-07-15 00:34:53 +0200 |
| commit | 720b84ef9d086245f5119d143202a2661a78ca53 (patch) | |
| tree | 26bcd11ffa797c3c01917507e9204fbc9f9b45aa /CMake | |
| parent | 54425030774eb04b29c749ffa85d224c8bbfcc34 (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.cmake | 55 | ||||
| -rw-r--r-- | CMake/export.cmake | 138 | ||||
| -rw-r--r-- | CMake/fl_add_library.cmake | 123 | ||||
| -rw-r--r-- | CMake/fl_create_example.cmake | 145 | ||||
| -rw-r--r-- | CMake/fl_debug_var.cmake | 47 | ||||
| -rw-r--r-- | CMake/install.cmake | 121 | ||||
| -rw-r--r-- | CMake/macros.cmake | 204 | ||||
| -rw-r--r-- | CMake/options.cmake | 469 | ||||
| -rw-r--r-- | CMake/resources.cmake | 221 | ||||
| -rw-r--r-- | CMake/setup.cmake | 201 | ||||
| -rw-r--r-- | CMake/variables.cmake | 61 |
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) |
