……
Therefore I propose to drop configure support already in FLTK 1.4.0 and not later (in 1.5, as discussed before).
……
(4) The introduction of "Modern CMake" made it more evident that using old style CMake with FindFLTK.cmake is outdated and error-prone. Modern CMake has so many advantages that it should definitely be preferred. However, to use Modern CMake FLTK must provide a FLTKConfig.cmake (CMake CONFIG file) which we can't provide if FLTK is built with configure/make. Consequently we should "force" system distributors and other users to build FLTK with CMake.
..I propose to drop configure support already in FLTK 1.4.0 and not later (in 1.5, as discussed before).
+1 - cmake works well, and it's all I've used for a while
now.
And I haven't tested FLTK 1.4 on Windows because the .sln files have been removed and I haven't learned how to use cmake yet :-)
I'm more and more convinced that the support of configure + Makefiles (in addition to CMake) makes life for FLTK developers harder than necessary, and for potential users as well. FLTK's CMake support has reached a mature state and can now be used by all users.
Therefore I propose to drop configure support already in FLTK 1.4.0 and not later (in 1.5, as discussed before).
Thanks for all comments and votes. Counting votes, the majority was clearly for dropping configure in 1.4 rather than in 1.5.
However, I withdraw my proposal for several reasons:
(1) IMHO there haven't been enough *user* votes for a clear decision. Other users may still rely on configure/Makefiles.
(2) My own argument (written elsewhere) was: "FLTK 1.4.0 should be as much backwards compatible to 1.3.x as possible, and this includes the build system" (exceptions are IDE project files).
(3) There are still some minor issues (incompatibilities) in our CMake code that I may not be able to fix in 1.4.0 and I want to avoid delaying the release of 1.4.0 more than necessary. For those border cases we need to keep configure support. I hope that we will get more feedback in 1.4.x from users about missing CMake features compared to in configure/make (if there are any). Having configure we can still compare both build systems and fix issues in CMake in 1.4.x maintenance releases or in 1.5.0.
(4) Last but not least: Manolo mentioned that the (additional) work for maintaining two build systems has already been done in our FLTK 1.4 branch (master). Since FLTK 1.4.x (x > 0) will only be maintenance releases we wouldn't gain much by removing configure support now.
'Albrecht Schlosser' via fltk.general wrote:[...] Thanks for all comments and votes. Counting votes, the majority was clearly for dropping configure in 1.4 rather than in 1.5. However, */I withdraw my proposal/* for several reasons:Glad to read that.
My vote is to preserve the old build system. FLTK is one of the few GUI toolkit left that works nicely on old machines too. It allows to write software that can be compiled and used on modern as well as very old systems.
For me this was the main feature to choose FLTK and not Qt or something else. I use it on decades old Workstations and it still works with C90/C++98 compilers and X11 visuals with 8-Bit color.
It works well with X11 display redirection via network.
Additionally it is more lightweight (compiles faster) than anything else I have tested, including Motif.
CMake does not build with old C++ compilers and is not lightweight at all.
[...] FLTK 1.5.0 will be a major step forward anyway, for instance dropping pre-C++11 support (or pre-C++17) and I think also (officially) dropping pre-Windows10 support and maybe more, but this will be the subject of another discussion when time comes.
Bad news for my use case, but I think it will at least be consistent.
FLTK 1.4 itself does not require a modern machine. It would be sad if such a machine would be required only for CMake.
FLTK 1.5 will not be suitable for old systems anymore, if it requires modern C++ for itself. CMake is no problem for systems that can provide such a compiler.
On 3/13/24 09:56, Rob McDonald wrote:
I don't think most *users* consider this kind of vote as open to them. I explicitly keep out at times like this. If you want user votes in what seems like a developer conversation, you should explicitly ask for us to weigh in.
On 3/13/24 09:56, Rob McDonald wrote:
I don't think most *users* consider this kind of vote as open to them. I explicitly keep out at times like this. If you want user votes in what seems like a developer conversation, you should explicitly ask for us to weigh in.He did, actually -- from the OP of this thread, very first sentence:
Conclusion: FLTK 1.4.x will support configure/Makefiles with the warning already implemented, and as soon as we open 1.5 development, configure support will be removed. At that time we will create a new branch `branch-1.4` which will be in maintenance mode (similar to `branch-1.3` today), and the master branch will be used for development of FLTK 1.5.x and later.
FLTK 1.5.0 will be a major step forward anyway, for instance dropping pre-C++11 support (or pre-C++17) and I think also (officially) dropping pre-Windows10 support and maybe more (...)
I want to avoid delaying the release of 1.4.0
Maybe I can run some tests at the weekend. Currently I can test:
- Different CPU architectures including big endian systems like PowerPC
and SPARC (additionally needs aligned memory access)
(...)
'Albrecht Schlosser' via fltk.general wrote:Did you try FLTK 1.4 (git) already?On modern machines I use it on X11 (with Xft and Pango). My old machines are still using 1.3 (X11 without Xft).
Maybe I can run some tests at the weekend.
Currently I can test: - Different CPU architectures including big endian systems like PowerPC and SPARC (additionally needs aligned memory access)
- Some old GCC versions back to the days of egcs (that can build FLTK 1.3)
- The Solaris machine with the SunPro compiler is currently defective (maybe I can repair it for the test)
For me this was the main feature to choose FLTK and not Qt or something else. I use it on decades old Workstations and it still works with C90/C++98 compilers and X11 visuals with 8-Bit color.I'm building FLTK with a modern g++ in C++98 mode from time to time to check that it works. I'll also check this before the release. I'm not sure if there are issues with C90 though, something like C++ comments in C files (which I try to fix as well), but there may be other issues as well although I hope FLTK builds fine with this compiler combo.
I can take a look at the comments too.
[...] the "L" in FLTK was always true. The "F" is another story. I never reached the performance of Motif with FLTK. But it was good enough even for machines with <100 MHz CPU clock.
And the ten year old STR #2961 is still present on NetBSD (approx. one second lag when moving the mouse from one menu bar item to the next, tested again with multi-GHz CPUs). I still avoid Unicode locales on NetBSD to make FLTK happy (no problems with ISO-8859-1).
The documentation of CMake says that C++11 is required to build it. According to <https://gcc.gnu.org/projects/cxx-status.html>: | | GCC 4.8.1 was the first feature-complete implementation of the 2011 | C++ standard, [...] It would be consistent when FLTK 1.5 would use at least that standard.
GCC 4.8 requires a C++98 compiler for bootstrap and most machines from the current century should be able to compile it.
C++17 would require GCC 11, that itself requires C++11 for bootstrap. GCC 9 may be sufficient for partial support in theory, but maybe not in reality. Both versions likely do not compile on old machines at all, or would require an amount of memory that such machines cannot provide.
This means that the choice of C++11 vs. C++17 for FLTK 1.5 makes a big difference for the number of supported systems.
Would cross-compiling be an alternative for your old systems?I don't know how cross-compiling should work e.g. for AIX or HP-UX, where GCC uses native binutils and libraries work different than on ELF-based systems.
I would expect that namespaces and STL are not the problem, they exist since C++98. 'auto' would require at least C++11.
Note: Non-mainstream systems move slower than most people think. Example for NetBSD 9 (version 10 not released yet): | | $ gcc --version | gcc (nb4 20200810) 7.5.0
With some options modern compilers should be able to create warnings, if unwanted language features are used.
……
And the ten year old STR #2961 is still present on NetBSD (approx. one
second lag when moving the mouse from one menu bar item to the next,
tested again with multi-GHz CPUs). I still avoid Unicode locales on
NetBSD to make FLTK happy (no problems with ISO-8859-1).