The goal is to change the version number for a new release only in
CMakeLists.txt. This is the first step.
Details:
- CMake/gen_config.cmake: this new file is included to generate the
header files config.h (private, root directory), and FL/fl_config.h
(public, can be installed). This file implements also ABI version
checks (removed from FL/Enumerations.H and with more checks).
Warnings are issued if the chosen ABI version is invalid.
- CMake/export.cmake: code to generate 'config.h' was moved to
CMake/gen_config.cmake.
- CMake/options.cmake: set default of FLTK_BUILD_FORMS=OFF + comments
- CMakeLists.txt: move generation of FL/fl_config.h to gen_config.cmake,
add API and ABI versions to CMake summary,
- FL/Enumerations.H: remove most of the version number details which
are now included in FL/fl_config.h. This needed also some doxygen
related changes.
- README.CMake.txt: improve docs of FL_ABI_VERSION and some more.
Reflect the new default of CMake option FLTK_BUILD_FORMS (OFF).
- documentation/Doxyfile.in: add FL/fl_config.h to file list. This
file is created in the build tree (and may be "installed").
- fl_config.h.in: add version number details that have been moved here
from Enumerations.H (used to generate FL/fl_config.h).
Up to FLTK 1.4 we had two distinct input files for each header file:
one for configure and one for CMake. Since 1.5 we have only one input
file for each header which can now have a more appropriate name.
1) configh.cmake.in -> config.h.in
2) fl_config.cmake.in -> fl_config.h.in
Remove references to "current" version numbers, use 1.2.3 as example
for clarity and to simplify version number updates.
Also: minor textual fixes (typos), unwrap lines, etc..
Todo: Documentation states:
"This file is not actively maintained any more, but is left here
as a reference, until the doxygen documentation is completed."
Check if the documentation generated by doxygen from source files
contains everything needed so this file can be removed.
- If shared libraries are built, then fluid, fltk-options, and the
"games" are linked against the shared FLTK libraries. On some
platforms the static and the shared versions of fluid and
fltk-options are built. The games are only built if
FLTK_BUILD_TEST is enabled.
- The CMake 'install' target now installs the games (if built)
and their man pages on all platforms (no matter if that is
useful, for instance on Windows).
- On macOS 'CMAKE_INSTALL_RPATH' is set so *installed* programs
automatically find their shared FLTK libraries. The "shared"
versions of fluid and fltk-options got their own '.plist' files.
This works for both the executables themselves as well as those
included in bundles. There may be more to do on the macOS platform.
This commit removes the unused static method
Fl_Wayland_Window_Driver::resize_after_screen_change(void *data)
and related data as discussed in the context of PR #1248.
When a native window is destroyed, make sure the callback to
Fl_WinAPI_Window_Driver::resize_after_screen_change() is removed.
Added by Albrecht-S:
Thanks for the original fix to Timothy Lee (@timothytylee).
src/drivers/X11/Fl_X11_Window_Driver.cxx: equivalent fix for X11
as discussed on GitHub PR #1248
Prepare for installation of `games` demo programs. Fix inconsistencies
and typos in man pages. In the future the man pages can be installed
together with the executables. This will be done in a later commit.
documentation/src/glpuzzle.man: new file.
Fl_Group::clear() is called in Fl_Group's d'tor anyway.
Technically we don't need to remove hscrollbar and scrollbar because
they are destroyed (and thus removed from Fl_Group) before Fl_Group's
d'tor is executed but this is left for clarity and to guarantee the
order (see comment).
It notably honors SOURCE_DATE_EPOCH if set, making for reproducible
output. For even better reproducibility, use UTC. (Unlike the date
command's output, the result is already always in English.) Extend
this approach to the book, introducing appropriately formatted
PDF_DATE and TODAY variables for its PDF metadata and title page
respectively and making make_pdf configurable.
Debug only, if fl_debug_target() is used:
Prior to CMake 3.19 some properties of "INTERFACE_LIBRARY targets"
can't be read with get_property(). These properties are now
excluded if the CMake version is lower than 3.19.
... so users can enable ABI features designated for the *next* release
when using FLTK from Git (or snapshots) before the API version has
been raised for that release.
Rationale:
1. Building in-source creates a lot of untracked files in the source
tree. We need to take care not to commit any of them, hence we
have to maintain .gitignore files in several directories.
2. Tests reveal that there are even files in git that are modified
in the source tree when building docs etc. which means e.g.
that builds can't be "repeated" after upgrading the sources, and
that those files could be committed by accident. To avoid this
we'd have to reorganize the build procedure and make it even more
complex rather than simplifying it.
3. With autoconf/configure/make we didn't have a choice, i.e. we had
to allow in-source builds with configure/Makefiles anyway. This
is no longer true since we removed configure/make support.
Note, todo: if this commit doesn't introduce unexpected issues, then
we can remove a lot of stuff from the .gitignore files, but this
is left for a later commit.
For details please see description in the source code in
test/checkers.cxx lines 620++
This commit also disables unused code: function dumpnode() which is
used only in VT100 mode.