Hi Patrick!

Patrick Cardona wrote:
Hi Riccardo,
Hi Richard,

:-) it makes me smile

- Building GNUstep (last Runtime 2.1 with clang-14 and linker gold) works fine 
the first time on a fresh updated lite system (Debian Bookworm 12.12) - I am 
using a set of scripts inspired by Patryck Laurent: namely his tip about 
Libdispatch (removing some headers related to Blocks before building libobjc2). 
I needed also to install cmake 4 because the debian default release is 
outdated. So after the first pass all seems ok (no errors in the logs).

- The side effect of the above method is that the GNUstep tools-make are built 
and installed several times: if you try to install again the whole GNUstep on 
the same system, weird things begin to happen and the build process will fail 
(too many errors in the logs. One reason seems that the PATH to cmake 4 
($HOME/.local/bin) which was right the first time was overriden in the 
following attempts. I am also guessing about the last GNUstep.sh sourced which 
may not be accurate to rebuild...
- I added a test to warn the user about this risk. But what if another script 
fails - and really I need often to iterate. So if we cannot reinstall GNUstep, 
maybe a removing method should be necessary. I remove the building folders, use 
a dirty 'sudo rm -fR /usr/GNUstep'... I clean also ~/GNUstep, ~/.bashrc, log 
out and log in again.

I wonder of this issue. I have few installation using libobjc2 because it is troublesome for me and doesn't compile out-of-the-box or fails to work properly on several OS-Architectures combination I use. However in GCC environments I have no issue "reinstalling" tools-make several times! I often do only incremental builds (make && make install in make, base, gui, back) and it works.
I source GNUstep.sh "before" installing make.


About the matter to build only with gcc, I am very very curious: I was never able 
to make the new ABI (objc2, runtime >= 2) with only gcc. Do you mean you don't 
install libdispatch/objc2 and you only use the old ABI (runtime 1.9)? Is the last 
release of GWorkspace building on this runtime?

Yes, latest GWorkspace and all software I maintain works with GCC runtime. It uses threads and processes directly. libdispatch is needed directly if GCD is used. I don't know though if in case of GCD presence "normal" threads change. Richard or other more base experts can tell you perhaps.

I have a multicore proc (`nproc` returns 4 on the pi 400) so I wonder if we 
loose the multithreading hability without Libdispatch and if it is a matter of 
performance.
Could you please tell us your building environment settings with only gcc and 
the config args you use for each GNUstep lib?

I don't precisely know of performance when using one or the other, but using threads and processes GWorkspace will exploit multi-core or multi-CPU setups.

With gcc the setup should be very simple, the only changes are in make and base to make sure the gnu-gnu-gnu runtime is selected and GCC is used. Should be picked up by default

My setup on Linux is:

make:  /configure --with-layout=gnustep --prefix=/
base, gui, back:  "configure"

gcc and runtime get picked up automatically for me.

On OpenBSD where clang is the default compiler to "coerence" it to use GCC I do:

For make: configure --with-layout=gnustep --with-library-combo=gnu-gnu-gnu CC=egcc CXX=eg++
The rest base, gui, back should be just plain configure && make

Riccardo

Reply via email to