diff options
| author | maxim nikonov <maxim.nikonov@hqo.co> | 2026-02-05 15:21:34 +0500 |
|---|---|---|
| committer | maxim nikonov <maxim.nikonov@hqo.co> | 2026-02-05 15:21:34 +0500 |
| commit | db214d1145e46d527a46d1fc2519548d2c4d23f1 (patch) | |
| tree | cf0fd9922e4d54f6beb63888f9b28c8e2a787bdf /CMakeLists.txt | |
| parent | 75fc94d6c71fe686f6dde5b41ad91cba2f6bdd6f (diff) | |
wip: fork
Diffstat (limited to 'CMakeLists.txt')
| -rw-r--r-- | CMakeLists.txt | 493 |
1 files changed, 0 insertions, 493 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt deleted file mode 100644 index 347324563..000000000 --- a/CMakeLists.txt +++ /dev/null @@ -1,493 +0,0 @@ -# -# Main CMakeLists.txt to build the FLTK project using CMake -# Originally written by Michael Surette -# -# Copyright 1998-2025 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 -# - -####################################################################### -# Prevent building in the source tree - don't pollute the sources -####################################################################### - -if("${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}") - message("") - message(STATUS "=======================================================================") - message(STATUS " NOTE: In-source builds of FLTK are disabled to prevent writing to the") - message(STATUS " NOTE: source tree. Please create a subfolder (e.g. 'build') and use") - message(STATUS " NOTE: `cmake ..` inside it or use for instance `cmake . -B build`.") - message(STATUS " NOTE: CMake will, however, create CMakeCache.txt and CMakeFiles/* .") - message(STATUS " NOTE: You must delete CMakeCache.txt and CMakeFiles/* manually.") - message(STATUS "=======================================================================") - message("") - message(FATAL_ERROR "*** In-source builds are disabled, please read notes above! ***") -endif() - -####################################################################### -# Set CMake minimum version first: must be set before `project()` -####################################################################### - -# Minimum CMake version required by FLTK 1.5 - -# Note 1: Currently the same as for FLTK 1.4.x but will likely be raised -# depending on new features introduced in FLTK 1.5. - -cmake_minimum_required(VERSION 3.15.0 FATAL_ERROR) - -# Since CMake 3.4: enable symbol export from all executable targets -# cmake_policy(SET CMP0065 OLD) - -####################################################################### -# define the FLTK project and version -####################################################################### - -project(FLTK VERSION 1.5.0) - -####################################################################### -# set the required C++ standard -- may be overridden by the user -####################################################################### - -# Note 1: We don't check if the user sets a standard older than C++11, -# but if they do, the build will fail. -# Note 2: For optimal portability we disable compiler specific -# extensions, but this can also be overridden by the user. -# Note 3: This code is experimental and intentionally undocumented. -# It may be removed or changed w/o notice. - -if(DEFINED CMAKE_CXX_STANDARD) - if(CMAKE_CXX_STANDARD EQUAL 98 OR CMAKE_CXX_STANDARD LESS 11) - message(FATAL_ERROR "The FLTK project requires at least C++11") - endif() -else() - set(CMAKE_CXX_STANDARD 11 CACHE STRING "Minimal C++ Standard") -endif() - -if(NOT DEFINED CMAKE_CXX_STANDARD_REQUIRED) - set(CMAKE_CXX_STANDARD_REQUIRED ON CACHE BOOL "Minimal C++ Standard Required?") -endif() - -if(NOT DEFINED CMAKE_CXX_EXTENSIONS) - set(CMAKE_CXX_EXTENSIONS OFF CACHE BOOL "Use Compiler Specific C++ Extensions") -endif() - -####################################################################### -# include macro and function definitions for general usage -####################################################################### - -include(CMake/fl_debug_var.cmake) -include(CMake/fl_debug_pkg.cmake) -include(CMake/fl_add_library.cmake) - -# right now we don't use compatibility functions -# include(CMake/compatibility.cmake) - -if(0) # debug most important CMake variables and features - # FLTK version - fl_debug_var(FLTK_VERSION_MAJOR) - fl_debug_var(FLTK_VERSION_MINOR) - fl_debug_var(FLTK_VERSION_PATCH) - fl_debug_var(FLTK_VERSION) - # CMake version and C++ standard - fl_debug_var(CMAKE_VERSION) - fl_debug_var(CMAKE_CXX_STANDARD) - fl_debug_var(CMAKE_CXX_STANDARD_REQUIRED) - fl_debug_var(CMAKE_CXX_EXTENSIONS) - # Build platform - fl_debug_var(MSVC) - fl_debug_var(MINGW) - fl_debug_var(MSYS) - fl_debug_var(UNIX) - fl_debug_var(APPLE) - fl_debug_var(CMAKE_CROSSCOMPILING) -endif() - -# Set FLTK_VERSION in the cache so user projects can access it, -# for instance if FLTK is built as a subproject (FetchContent) - -set(FLTK_VERSION ${FLTK_VERSION} CACHE STRING - "FLTK version: generated by CMake, do not change" FORCE) - -####################################################################### -# basic setup -####################################################################### -include(CMake/setup.cmake) - -####################################################################### -# check for headers, libraries and functions -####################################################################### -include(CMake/resources.cmake) - -####################################################################### -# options -####################################################################### -include(CMake/options.cmake) - -####################################################################### -# generate version numbers and config headers -####################################################################### - -include(CMake/gen_config.cmake) - -####################################################################### -# Disable automatic code signing on macOS when using Xcode. -# This *MUST* be done after including CMake/options.cmake. -# Users can still enable code signing if they have a valid certificate. -# Details about code signing are beyond the scope of this document. -####################################################################### -# FIXME: some of the conditions below may be redundant, and the code -# below should be improved in a later version. -####################################################################### - -if(APPLE) # AND NOT FLTK_BACKEND_X11 AND CMAKE_GENERATOR STREQUAL "Xcode") - if(NOT DEFINED CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED) - set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED OFF CACHE BOOL - "Allow Code Signing when using Xcode") - endif() -endif() - -####################################################################### -# print (debug) several build variables and options -####################################################################### - -set(debug_build 0) # set to 1 to show debug info - -if(debug_build) - message("") - message(STATUS "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt: set 'debug_build' to 0 to disable the following info:") - fl_debug_var(WIN32) - fl_debug_var(MINGW) - fl_debug_var(CYGWIN) - fl_debug_var(MSVC) - fl_debug_var(UNIX) - fl_debug_var(APPLE) - fl_debug_var(CMAKE_BUILD_TYPE) - fl_debug_var(CMAKE_SIZEOF_VOID_P) - fl_debug_var(FLTK_OPTION_OPTIM) - fl_debug_var(CMAKE_C_FLAGS) - fl_debug_var(CMAKE_CXX_FLAGS) - fl_debug_var(CMAKE_EXE_LINKER_FLAGS) - message(STATUS "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt: end of debug_build info.") -endif(debug_build) - -unset(debug_build) - -####################################################################### -# build the standard FLTK libraries -####################################################################### - -add_subdirectory(src) - -####################################################################### -# MSVC only: build a special object library for shared libs -####################################################################### - -# When linking programs against the shared FLTK libraries we need to -# compile and link with fl_call_main.c, but this must not be compiled -# with macro FL_DLL, whereas all the other source file(s) *must* be -# compiled with macro FL_DLL to link against the shared libs. -# The latter is ensured by CMake properties of the shared libraries. -# -# Solution: build an extra object library with just this one file and -# link all the "shared" executables additionally against this object -# library to resolve the symbol 'WinMain()'. -# -# The object library is called 'call_main' and is available for fluid, -# fltk-options, and all test programs that link against shared FLTK -# libraries when using MSVC (Microsoft Visual Studio). -# -# ;-) I *love* Visual Studio ;-) - -if(FLTK_BUILD_SHARED_LIBS AND MSVC) - add_library(call_main OBJECT EXCLUDE_FROM_ALL src/fl_call_main.c) -endif() - -####################################################################### -# set CMAKE_INSTALL_RPATH for shared libraries on macOS before -# building executables. This assumes standard install locations like -# - prefix/bin executable (path part 2) or bundle (path part 3) -# - prefix/lib shared library -# These RPATH settings are effective when executables and shared libs -# are *installed*, they don't affect executables in the build folder. -# Affected executables (when linked against the shared FLTK libs): -# - fluid -# - fltk-options -# - test/* (e.g. games) -# Note: Path part 1 ("@loader_path") is used to find shared libraries -# in the same folder as the executable file (everywhere). -####################################################################### - -if(FLTK_BUILD_SHARED_LIBS AND APPLE AND NOT FLTK_BACKEND_X11) - set(CMAKE_INSTALL_RPATH - @loader_path - @loader_path/../lib - @loader_path/../../../../lib) -endif() - -####################################################################### -# build fluid (optional) -####################################################################### - -set(FLTK_FLUID_EXECUTABLE "") - -if(FLTK_BUILD_FLUID) - add_subdirectory(fluid) -endif(FLTK_BUILD_FLUID) - -# Set FLTK_FLUID_EXECUTABLE in the cache for user projects. -# This can be used if FLTK has been built as a subproject. - -set(FLTK_FLUID_EXECUTABLE - "${FLTK_FLUID_EXECUTABLE}" CACHE STRING - "FLTK's 'fluid' executable") - -####################################################################### -# build fltk-options -####################################################################### - -if(FLTK_BUILD_FLTK_OPTIONS) - add_subdirectory(fltk-options) -endif(FLTK_BUILD_FLTK_OPTIONS) - -####################################################################### -# build utilities -####################################################################### - -add_subdirectory(util) - -####################################################################### -# variables shared by export and install -# export.cmake creates configuration files for direct use in a built but uninstalled FLTK -# install.cmake creates these files for an installed FLTK -# these two would only differ in paths, so common variables are set here -####################################################################### - -include(CMake/variables.cmake) - -####################################################################### -# final config and export -####################################################################### - -include(CMake/export.cmake) - -####################################################################### -# options to build test/demo and example programs -####################################################################### - -# general test programs for FLTK development - -if(FLTK_BUILD_TEST) - add_subdirectory(test) -endif(FLTK_BUILD_TEST) - -# example programs for FLTK users - -if(FLTK_BUILD_EXAMPLES) - add_subdirectory(examples) -endif(FLTK_BUILD_EXAMPLES) - -# screenshot programs for FLTK developers - -if(FLTK_BUILD_SCREENSHOTS) - add_subdirectory(screenshots) -endif(FLTK_BUILD_SCREENSHOTS) - -####################################################################### -# Create and install version config file 'FLTKConfigVersion.cmake' -####################################################################### - -include(CMakePackageConfigHelpers) - -write_basic_package_version_file(FLTKConfigVersion.cmake - # [VERSION requiredVersion] # defaults to project version - COMPATIBILITY SameMinorVersion -) - -install(FILES - ${CMAKE_CURRENT_BINARY_DIR}/FLTKConfigVersion.cmake - DESTINATION ${FLTK_CONFIG_PATH} -) - -####################################################################### -# installation -####################################################################### - -include(CMake/install.cmake) - -####################################################################### -# Generate Library Export Headers *** EXPERIMENTAL *** WIP *** -####################################################################### - -# Enable (1) or disable (0) generation of experimental headers (WIP) -set(GENERATE_EXPORT_HEADERS 0) - -if(FLTK_BUILD_SHARED_LIBS AND GENERATE_EXPORT_HEADERS) - - include(GenerateExportHeader) - - generate_export_header(fltk_SHARED - BASE_NAME fl - EXPORT_FILE_NAME FL/fltk_export.h - STATIC_DEFINE FL_STATIC_LIB - ) - - if(NOT MSVC) - - # Visual Studio builds only one shared lib (DLL) - - generate_export_header(fltk_images_SHARED - BASE_NAME fl_images - EXPORT_FILE_NAME FL/fltk_images_export.h - STATIC_DEFINE FL_STATIC_LIB - ) - - generate_export_header(fltk_forms_SHARED - BASE_NAME fl_forms - EXPORT_FILE_NAME FL/fltk_forms_export.h - STATIC_DEFINE FL_STATIC_LIB - ) - - generate_export_header(fltk_gl_SHARED - BASE_NAME fl_gl - EXPORT_FILE_NAME FL/fltk_gl_export.h - STATIC_DEFINE FL_STATIC_LIB - ) - - endif(NOT MSVC) - -endif(FLTK_BUILD_SHARED_LIBS AND GENERATE_EXPORT_HEADERS) - -####################################################################### -# Configure CPack only if this is the top level project. -# The logic may be extended if including CPack is made optional. -# Currently it is included unconditionally for testing purposes. -####################################################################### - -if(FLTK_IS_TOPLEVEL) - - add_subdirectory(package) - -endif() - -####################################################################### -# Output Build Configuration Summary -####################################################################### - -include(FeatureSummary) # CMake Feature Summary -include(CMake/fl_summary.cmake) # special FLTK summary macros - -# CMake Feature Summary - -message("") -set(_descr "${PROJECT_NAME} ${FLTK_VERSION} generated by CMake ${CMAKE_VERSION}") -feature_summary(WHAT ALL DESCRIPTION "Configuration Summary for ${_descr} --\n") - -# FLTK specific build configuration and options (see macros in fl_summary.cmake) - -# "title" dir build (bool) option to set -fl_summary_build("Static libraries" lib TRUE "n/a") -fl_summary_build("Shared libraries" lib FLTK_BUILD_SHARED_LIBS FLTK_BUILD_SHARED_LIBS) -fl_summary_build("The forms library" lib FLTK_BUILD_FORMS FLTK_BUILD_FORMS) -fl_summary_build("The OpenGL library" lib FLTK_USE_GL FLTK_BUILD_GL) -fl_summary_build("Pen/tablet support" lib FLTK_HAVE_PEN_SUPPORT FLTK_OPTION_PEN_SUPPORT) - -message(STATUS "") - -fl_summary_build("fluid" bin FLTK_BUILD_FLUID FLTK_BUILD_FLUID) -fl_summary_build("fltk-options" bin FLTK_BUILD_FLTK_OPTIONS FLTK_BUILD_FLTK_OPTIONS) -fl_summary_build("Test programs" bin/test FLTK_BUILD_TEST FLTK_BUILD_TEST) -fl_summary_build("Example programs" bin/examples FLTK_BUILD_EXAMPLES FLTK_BUILD_EXAMPLES) -fl_summary_build("Screenshot programs" bin/screenshots FLTK_BUILD_SCREENSHOTS FLTK_BUILD_SCREENSHOTS) - -message(STATUS "") - -fl_summary("FLTK Library (API) version" "${FLTK_VERSION}") -fl_summary("ABI version (FL_ABI_VERSION)" "${FL_ABI_VERSION}") - -if(CMAKE_BUILD_TYPE STREQUAL "") - fl_summary("Build configuration" "<unspecified>") -else() - fl_summary("Build configuration" "${CMAKE_BUILD_TYPE}") -endif() -fl_summary("Installation prefix" "${CMAKE_INSTALL_PREFIX}") - -message("") -# "title" name system library if used -fl_summary_image("Bundled Libraries" JPEG LIB_jpeg) -fl_summary_image("" PNG LIB_png) -fl_summary_image("" ZLIB LIB_zlib) - -if(FLTK_USE_WAYLAND) - if(USE_SYSTEM_LIBDECOR) - fl_summary("" "Libdecor = System: ${SYSTEM_LIBDECOR_LINK_LIBRARIES}") - else() - fl_summary("" "Libdecor = Bundled") - endif() - fl_summary_yn("Use DBUS" DBUS_FOUND) -endif(FLTK_USE_WAYLAND) - -message("") - -if(UNIX AND NOT (APPLE AND NOT FLTK_BACKEND_X11)) - - if(FLTK_USE_WAYLAND) - if(FLTK_BACKEND_X11) - fl_summary("Use Wayland" "Yes (can also run as X11 client)") - else() - fl_summary("Use Wayland" "Yes (cannot run as X11 client)") - endif(FLTK_BACKEND_X11) - else() - fl_summary("Use Wayland" "No (X11 is used)") - endif(FLTK_USE_WAYLAND) - - fl_summary_yn("All drawing uses Cairo" FLTK_USE_CAIRO) - - fl_summary_yn("Use Pango" USE_PANGO) - if(NOT USE_PANGO) - fl_summary_yn("Use Xft" USE_XFT) - endif() - -endif() - -set(title "Fl_Cairo_Window support") -if(FLTK_HAVE_CAIROEXT) - fl_summary("${title}" "Yes (extended)") -elseif(FLTK_HAVE_CAIRO) - fl_summary("${title}" "Yes (standard)") -else() - fl_summary("${title}" "No") -endif() - -message("") - -fl_summary( "CMAKE_CXX_STANDARD" "${CMAKE_CXX_STANDARD}") -fl_summary_yn("CMAKE_CXX_STANDARD_REQUIRED" CMAKE_CXX_STANDARD_REQUIRED) -fl_summary_yn("CMAKE_CXX_EXTENSIONS" CMAKE_CXX_EXTENSIONS) - -message("") -message(STATUS "End of Configuration Summary --\n") - -# optional info for "modern CMake" - -if(0) # debug built library and fluid targets - message(STATUS "------------------------ TARGETS ------------------------") - foreach(tgt fltk fluid fluid-cmd options options-cmd images gl forms jpeg png z) - if(TARGET fltk::${tgt}) - message("Target: fltk::${tgt}") - # fl_debug_target(fltk::${tgt}) - endif() - if(TARGET fltk::${tgt}-shared) - message("Target: fltk::${tgt}-shared") - # fl_debug_target(fltk::${tgt}-shared) - endif() - endforeach() - message(STATUS "---------------------------------------------------------") -endif() |
