# # Main CMakeLists.txt to build the FLTK project using CMake (www.cmake.org) # Originally written by Michael Surette # # Copyright 1998-2022 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 # ####################################################################### # set CMake minimum version (must be before `project()` ####################################################################### # Minimum CMake version required by FLTK 1.4 (06/2020, work in progress) cmake_minimum_required (VERSION 3.2.3 FATAL_ERROR) ####################################################################### # Use "legacy mode" of FindOpenGL (avoid CMake developer warning). # Note: we're using FindOpenGL with `OPENGL_LIBRARIES` and not (yet) # the `OpenGL::GL` target. This may be changed in the future. # See https://cmake.org/cmake/help/latest/policy/CMP0072.html # Update Feb 28, 2021: To avoid a warning about "OLD" policies we set # OpenGL_GL_PREFERENCE directly to "LEGACY" (other option: "GLVND"). # if (POLICY CMP0072) # cmake_policy (SET CMP0072 OLD) # endif () set (OpenGL_GL_PREFERENCE LEGACY) ####################################################################### # define the FLTK project and version ####################################################################### project (FLTK VERSION 1.4.0) ####################################################################### # 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) include (CMake/compatibility.cmake) if (0) fl_debug_var (FLTK_VERSION_MAJOR) fl_debug_var (FLTK_VERSION_MINOR) fl_debug_var (FLTK_VERSION_PATCH) fl_debug_var (FLTK_VERSION) fl_debug_var (CMAKE_VERSION) endif () ####################################################################### # basic setup ####################################################################### include (CMake/setup.cmake) ####################################################################### # check for headers, libraries and functions ####################################################################### include (CMake/resources.cmake) ####################################################################### # options ####################################################################### include (CMake/options.cmake) ####################################################################### # 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 (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 FLTK libraries ####################################################################### add_subdirectory(src) ####################################################################### # build fluid ####################################################################### if (FLTK_BUILD_FLUID) add_subdirectory (fluid) endif (FLTK_BUILD_FLUID) ####################################################################### # 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) configure_file ( ${CMAKE_CURRENT_SOURCE_DIR}/fl_config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/FL/fl_config.h @ONLY ) ####################################################################### # options to build test/demo and example programs ####################################################################### if (FLTK_BUILD_TEST) add_subdirectory (test) endif (FLTK_BUILD_TEST) if (FLTK_BUILD_EXAMPLES) add_subdirectory (examples) endif (FLTK_BUILD_EXAMPLES) ####################################################################### # 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 (OPTION_BUILD_SHARED_LIBS AND GENERATE_EXPORT_HEADERS) include (GenerateExportHeader) generate_export_header (fltk_SHARED BASE_NAME fl EXPORT_FILE_NAME FL/fltk_export.h STATIC_DEFINE FL_STATIC_LIB ) if (NOT MSVC) # Visual Studio builds only one shared lib (DLL) generate_export_header (fltk_images_SHARED BASE_NAME fl_images EXPORT_FILE_NAME FL/fltk_images_export.h STATIC_DEFINE FL_STATIC_LIB ) generate_export_header (fltk_forms_SHARED BASE_NAME fl_forms EXPORT_FILE_NAME FL/fltk_forms_export.h STATIC_DEFINE FL_STATIC_LIB ) generate_export_header (fltk_gl_SHARED BASE_NAME fl_gl EXPORT_FILE_NAME FL/fltk_gl_export.h STATIC_DEFINE FL_STATIC_LIB ) endif (NOT MSVC) endif (OPTION_BUILD_SHARED_LIBS AND GENERATE_EXPORT_HEADERS) ####################################################################### # Output Configuration Summary ####################################################################### include (FeatureSummary) message ("") set (_descr "${PROJECT_NAME} ${FLTK_VERSION} generated by CMake ${CMAKE_VERSION}") feature_summary (WHAT ALL DESCRIPTION "Configuration Summary for ${_descr} --\n") message (STATUS "Static libraries will be built in ${CMAKE_CURRENT_BINARY_DIR}/lib") if (OPTION_BUILD_SHARED_LIBS) message (STATUS "Shared libraries will be built in ${CMAKE_CURRENT_BINARY_DIR}/lib") else () message (STATUS "Shared libraries will not be built (set OPTION_BUILD_SHARED_LIBS=ON to build)") endif () if (FLTK_BUILD_FLUID) message (STATUS "FLUID will be built in ${CMAKE_CURRENT_BINARY_DIR}/bin/fluid") else () message (STATUS "FLUID will not be built (set FLTK_BUILD_FLUID=ON to build)") endif () if (FLTK_BUILD_TEST) message (STATUS "Test programs will be built in ${CMAKE_CURRENT_BINARY_DIR}/bin/test") endif () if (FLTK_BUILD_EXAMPLES) message (STATUS "Example programs will be built in ${CMAKE_CURRENT_BINARY_DIR}/bin/examples") else () message (STATUS "Example programs will not be built (set FLTK_BUILD_EXAMPLES=ON to build)") endif () if (FLTK_USE_BUILTIN_JPEG) message (STATUS "Image Libraries: JPEG = Builtin") else () message (STATUS "Image Libraries: JPEG = System") endif () if (FLTK_USE_BUILTIN_PNG) message (STATUS " PNG = Builtin") else () message (STATUS " PNG = System") endif () if (FLTK_USE_BUILTIN_ZLIB) message (STATUS " ZLIB = Builtin") else () message (STATUS " ZLIB = System") endif () if (UNIX AND NOT (APPLE AND NOT OPTION_APPLE_X11)) if (OPTION_USE_WAYLAND) message (STATUS "Use Wayland: Yes (when available at run-time)") else () message (STATUS "Use Wayland: No (therefore, X11 is used)") endif () if (FLTK_USE_CAIRO) message (STATUS "All drawing uses Cairo: Yes") else () message (STATUS "All drawing uses Cairo: No") endif () if (USE_PANGO) message (STATUS "Use Pango: Yes") else (USE_PANGO) message (STATUS "Use Pango: No") if (USE_XFT) message (STATUS "Use Xft: Yes") else () message (STATUS "Use Xft: No") endif (USE_XFT) endif (USE_PANGO) endif (UNIX AND NOT (APPLE AND NOT OPTION_APPLE_X11)) if (FLTK_HAVE_CAIROEXT) message (STATUS "Fl_Cairo_Window support: Yes (extended)") elseif (FLTK_HAVE_CAIRO) message (STATUS "Fl_Cairo_Window support: Yes (standard)") else () message (STATUS "Fl_Cairo_Window support: No") endif () message ("") message (STATUS "End of Configuration Summary --\n")