Re: features wishes for FOX (1.7.87 or newer) on Linux

JVZ <[email protected]> Wed, 2 Jul 2025 00:27:58 -0500
Newsgroups gmane.comp.lib.fox-toolkit.user
Organization FOX-Toolkit
Message-ID <20250702002758.6763c05a@resurgam>
On Tue, 01 Jul 2025 12:42:08 +0200
Basile Starynkevitch <[email protected]> wrote:

>Hello all
>
>On my Debian/Trixie/x86-64 desktop I did configure FOX 1.7.87 (ie theĀ 
>fox-snapshot.tar.gz2 fetched today near Jul  1 12:00 PM CEST 2025, whose md5sum
>is e250a287d6902ef21b39513a8da3f833) with
>
>     './configure'  '--with-x' '--enable-release' \
>     'CFLAGS=-Dmoncflagsici -O2 -g2' \
>     'CXXFLAGS=-Dmoncxxflagsla -O2 -g2' 'CXX=/usr/local/bin/g++-15'
>
>The G++-15 compiler has been compiled by myself.
>

I suggest:

    export CXX="c++ -Dmoncxxflagsla"

because configure blasts over CXXFLAGS

>The -Dmoncflagsici and -Dmoncxxflagsla preprocessor flags are totally useless,
>but I am adding them to ensure that they are passed. 
>
>Surprisingly make output don't show them.
>
>
>My suggestions (or wishes) are:
>
>1) have the FOX build infrastructure generate some _fox-configure_.h file
>containing all the -DHAVE_* preprocessor flags. This ensure that the compilation
>commands remain short and human readable.
>
>2) provide some API (or generated preprocessor string) containing the
>configuration options. As far as I know GNU autoconf knows how to do that.
>
>3) provide some API to query the (many) optional features (wayland support,
>opengl support, X11 support) and the build time.

That would be useful; we have it in the "About" panel of the FOX projects
like Adie and Pathfinder, but no reason we wouldn't have a published compiled
in string or version number of some kind in the library.

One thing we should check is if shared library and header files "belong to-
gether", i.e. if you're linking to the same library as what you're compiling
to.  It can get confusing if you're working both on applications and on the
library itself.


>4) I have no idea if FOX can be compiled and linked with link-time-optimization
>options. If that is the case please document so.

So, we don't.  I've tried -O3 and obviously, this is faster.  But I feel its
overkill for most code, and highly bloated binary is often generated, where
compiler goes all-out on things which won't matter in terms of user-experience.

Don't forget, we're more influenced by the quality of e.g. device driver
libraries and hardware graphics cards than by our own methods of generating 
the drawing commands.

There's new macros for performance counting [in FOX but also useful for
user generated source code].  It exercises CPU tick counter to measure
time spent in a scope, its great for micro-benchmarking things.

You can also look at google perf [not to be confused with gperf] which makes 
nice call graphs letting you know where the time goes.  This is not 100% useful 
since your typical GUI sits there waiting for a user to do something, but if you
have a few large activities to measure it can be handy.

The design of the public-facing header files in FOX is such that most of
the time, user programs don't need to know the gory platform details [except
that they *are* on Windows vs Linux, for example.  Other special #define's
are set by your compiler automatically, e.g. architecture, o.s. types, etc.

>Regards from near Paris in France (it is terribly hot here).

Hot here too, but that's expected for the Heart of Dixie; I (barely) survived
a heat-stroke last saterday...


   -- JVZ




-- 
+----------------------------------------------------------------------------+
| Copyright (C) 18:50 07/ 1/2025 Jeroen van der Zijp.   All Rights Reserved. |
+----------------------------------------------------------------------------+


_______________________________________________
Foxgui-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/foxgui-users