|
|
commit 265e5cd77b30581e7701927930d8fa887e0361df
Author: Albrecht Schlosser <albrechts.fltk@online.de>
AuthorDate: Mon Apr 8 18:56:40 2024 +0200
Commit: Albrecht Schlosser <albrechts.fltk@online.de>
CommitDate: Mon Apr 8 18:56:40 2024 +0200
Improve CMake build configuration summary
- simplify and unify build option output
- alignment can be changed in only 2 macros in CMake/fl_summary.cmake
- output system library location of image libraries if applicable
CMake/fl_debug_var.cmake | 2 +
CMake/fl_summary.cmake | 89 ++++++++++++++++++++++++++++++++
CMakeLists.txt | 129 +++++++++++++----------------------------------
3 files changed, 127 insertions(+), 93 deletions(-)
diff --git CMake/fl_debug_var.cmake CMake/fl_debug_var.cmake
index e3423b2..8f42988 100644
--- CMake/fl_debug_var.cmake
+++ CMake/fl_debug_var.cmake
@@ -43,6 +43,8 @@ function(fl_expand_name out in min_len)
set(temp "${in}${spaces}${spaces}")
string(SUBSTRING "${temp}" 0 ${min_len} temp)
set(${out} "${temp}" PARENT_SCOPE)
+ else()
+ set(${out} "${in}" PARENT_SCOPE)
endif()
endfunction(fl_expand_name)
diff --git CMake/fl_summary.cmake CMake/fl_summary.cmake
new file mode 100644
index 0000000..33490a0
--- /dev/null
+++ CMake/fl_summary.cmake
@@ -0,0 +1,89 @@
+#
+# Macros used by the CMake build system for the Fast Light Tool Kit (FLTK).
+#
+# Copyright 2024 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
+#
+
+########################################################################
+# The macros in this file are used to generate the CMake build summary.
+# Fixed widths of title fields are intentionally hard coded in two of
+# these macros so we can easily change the alignment.
+########################################################################
+
+include(${CMAKE_CURRENT_LIST_DIR}/fl_debug_var.cmake)
+
+########################################################################
+# Output a summary line like "<title> <value>"
+########################################################################
+# <title> will be expanded to a fixed width (can be empty)
+# <value> text to be displayed
+########################################################################
+
+macro(fl_summary title value)
+ fl_expand_name(label "${title}" 24)
+ message(STATUS "${label} ${value}")
+endmacro(fl_summary title value)
+
+########################################################################
+# Output a summary line like "<title> will be built ..."
+# or "<title> will not be built ..."
+########################################################################
+# title will be expanded to a fixed width (must not be empty)
+# subdir = relative build directory (e.g. lib or bin/test)
+# build = CMake variable name (bool): whether <title> is built
+# option = option name the user can set to build <title>
+########################################################################
+
+macro(fl_summary_build title subdir build option)
+ if(${build})
+ set(value "will be built in: ${CMAKE_CURRENT_BINARY_DIR}/${subdir}")
+ else()
+ set(value "will not be built (set ${option}=ON to build)")
+ endif()
+ fl_expand_name(label "${title}" 19)
+ message(STATUS "${label} ${value}")
+endmacro(fl_summary_build title var subdir)
+
+########################################################################
+# Output a simple summary line like "<title> {Yes|No}"
+########################################################################
+# title will be expanded to a fixed width (must not be empty)
+# var = CMake variable name, must evaluate to true or false
+########################################################################
+
+macro(fl_summary_yn title var)
+ if(${var})
+ set(value "Yes")
+ else()
+ set(value "No")
+ endif()
+ fl_summary("${title}" ${value})
+endmacro(fl_summary_yn title var)
+
+########################################################################
+# Output summary line for image libs (bundled or system libs)
+########################################################################
+# title = "Image Libraries" or empty
+# name = displayed name = { JPEG | PNG | ZLIB }
+# lib = CMake library name (system library, if it was found)
+########################################################################
+
+macro(fl_summary_image title name lib)
+ fl_expand_name(name4 "${name}" 4)
+ if(FLTK_USE_BUNDLED_${name})
+ set(value "${name4} = Bundled")
+ else()
+ set(value "${name4} = System: ${${lib}}")
+ endif()
+ fl_summary("${title}" "${value}")
+endmacro(fl_summary_image title name lib)
diff --git CMakeLists.txt CMakeLists.txt
index 68ae7e9..8e07881 100644
--- CMakeLists.txt
+++ CMakeLists.txt
@@ -227,136 +227,79 @@ if(FLTK_BUILD_SHARED_LIBS AND GENERATE_EXPORT_HEADERS)
endif(FLTK_BUILD_SHARED_LIBS AND GENERATE_EXPORT_HEADERS)
#######################################################################
-# Output Configuration Summary
+# Output Build Configuration Summary
#######################################################################
-include(FeatureSummary)
+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")
-message(STATUS "Static libraries will be built in ${CMAKE_CURRENT_BINARY_DIR}/lib")
-
-if(FLTK_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 FLTK_BUILD_SHARED_LIBS=ON to build)")
-endif()
-
-if(FLTK_BUILD_FORMS)
- message(STATUS "The forms library will be built in ${CMAKE_CURRENT_BINARY_DIR}/lib")
-else()
- message(STATUS "The forms library will not be built (set FLTK_BUILD_FORMS=ON to build)")
-endif()
-
-if(FLTK_USE_GL)
- message(STATUS "The OpenGL library will be built in ${CMAKE_CURRENT_BINARY_DIR}/lib")
-else()
- message(STATUS "The OpenGL library will not be built (set FLTK_BUILD_GL=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()
+# FLTK specific build configuration and options (see macros in fl_summary.cmake)
-if(FLTK_BUILD_FLTK_OPTIONS)
- message(STATUS "fltk-options will be built in ${CMAKE_CURRENT_BINARY_DIR}/bin/fltk-options")
-else()
- message(STATUS "fltk-options will not be built (set FLTK_BUILD_FLTK_OPTIONS=ON to build)")
-endif()
+# "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("fluid" bin FLTK_BUILD_FLUID FLTK_BUILD_FLUID)
+fl_summary_build("fltk-options" bin FLTK_BUILD_FLTK_OPTIONS FLTK_BUILD_FLTK_OPTIONS)
-if(FLTK_BUILD_TEST)
- message(STATUS "Test programs will be built in ${CMAKE_CURRENT_BINARY_DIR}/bin/test")
-else()
- message(STATUS "Test programs will not be built (set FLTK_BUILD_TEST=ON to build)")
-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()
+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)
message(STATUS "")
if(CMAKE_BUILD_TYPE STREQUAL "")
- message(STATUS "Build configuration : <unspecified>")
+ fl_summary("Build configuration" "<unspecified>")
else()
- message(STATUS "Build configuration : ${CMAKE_BUILD_TYPE}")
+ fl_summary("Build configuration" "${CMAKE_BUILD_TYPE}")
endif()
-message(STATUS "")
-
-if(FLTK_USE_BUNDLED_JPEG)
- message(STATUS "Image Libraries : JPEG = Builtin")
-else()
- message(STATUS "Image Libraries : JPEG = System")
-endif()
-
-if(FLTK_USE_BUNDLED_PNG)
- message(STATUS " : PNG = Builtin")
-else()
- message(STATUS " : PNG = System")
-endif()
+message("")
+# "title" name system library if used
+fl_summary_image("Image Libraries" JPEG LIB_jpeg)
+fl_summary_image("" PNG LIB_png)
+fl_summary_image("" ZLIB LIB_zlib)
-if(FLTK_USE_BUNDLED_ZLIB)
- message(STATUS " : ZLIB = Builtin")
-else()
- message(STATUS " : ZLIB = System")
-endif()
+message("")
if(UNIX AND NOT (APPLE AND NOT FLTK_BACKEND_X11))
if(FLTK_BACKEND_WAYLAND)
if(FLTK_BACKEND_X11)
- message(STATUS "Use Wayland : Yes (can also run as X11 client)")
+ fl_summary("Use Wayland" "Yes (can also run as X11 client)")
else()
- message(STATUS "Use Wayland : Yes (cannot run as X11 client)")
+ fl_summary("Use Wayland" "Yes (cannot run as X11 client)")
endif(FLTK_BACKEND_X11)
- if(USE_SYSTEM_LIBDECOR)
- message(STATUS "Use system libdecor : Yes")
- else()
- message(STATUS "Use system libdecor : No")
- endif(USE_SYSTEM_LIBDECOR)
+ fl_summary_yn("Use system libdecor" USE_SYSTEM_LIBDECOR)
else()
- message(STATUS "Use Wayland : No (therefore, X11 is used)")
+ fl_summary("Use Wayland" "No (X11 is used)")
endif(FLTK_BACKEND_WAYLAND)
- if(FLTK_USE_CAIRO)
- message(STATUS "All drawing uses Cairo : Yes")
- else()
- message(STATUS "All drawing uses Cairo : No")
- endif()
+ fl_summary_yn("All drawing uses Cairo" FLTK_USE_CAIRO)
- if(USE_PANGO)
- message(STATUS "Use Pango : Yes")
- else()
- message(STATUS "Use Pango : No")
- if(USE_XFT)
- message(STATUS "Use Xft : Yes")
- else()
- message(STATUS "Use Xft : No")
- endif()
+ 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)
- message(STATUS "Fl_Cairo_Window support : Yes (extended)")
+ fl_summary("${title}" "Yes (extended)")
elseif(FLTK_HAVE_CAIRO)
- message(STATUS "Fl_Cairo_Window support : Yes (standard)")
+ fl_summary("${title}" "Yes (standard)")
else()
- message(STATUS "Fl_Cairo_Window support : No")
+ fl_summary("${title}" "No")
endif()
-if(FLTK_USE_STD)
- message(STATUS "Use std:: : Yes")
-else()
- message(STATUS "Use std:: : No")
-endif()
+fl_summary_yn("Use std::" FLTK_USE_STD)
message("")
message(STATUS "End of Configuration Summary --\n")
[ Direct Link to Message ] | |
|
| |