On 02.10.2025 11:57, R Frith-Macdonald wrote:
On 02/10/2025 09:29, Andreas Fink via Discussion list for the GNUstep
programming environment wrote:
Hello
Im trying to update my gnustep2 packages for Debian13
As Debian 13 comes with gnustep with the old GNU runtime which is
incompatible with modern objective C technologies such as ARC, I
always have to build separate packages.
To separate them from the old runtime so they could coexist on a
Linux system, I use separate directory layouts so applications with
old and new runtimes could coexist.
This worked for many years but now with Debian13 I run into the issue
that GNUstep make always adds -DGNUSTEP_RUNTIME=1 and thus subsequent
code fails to compile as it thinks it uses the old runtime.
From your description, this appears to be gnustep-make doing the
correct thing (-DGNUSTEP_RUNTIME=1 means the new runtim,e is in use),
and the issue would be in the 'subsequent code'
The setup is like this:
export CC="/usr/bin/clang"
export CXX="/usr/bin/clang++"
export PREFIX="/"
export
PATH="/usr/GNUstep2/System/Tools:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"
export PKG_CONFIG_PATH="/usr/lib/pkgconfig/:/usr/local/lib/pkgconfig/"
export RUNTIME_VERSION="gnustep-2.0"
export OBJCFLAGS="-fblocks"
export GNUSTEP_INSTALLATION_DOMAIN="SYSTEM"
./configure \
--with-layout=gnustep2 \
--disable-importing-config-file \
--enable-native-objc-exceptions \
--enable-objc-arc \
--enable-install-ld-so-conf \
--with-library-combo=ng-gnu-gnu \
--with-config-file=/etc/GNUstep/GNUstep.conf \
--with-user-config-file='.GNUstep.conf' \
--with-user-defaults-dir='GNUstep/Library/Defaults' \
--with-objc-lib-flag="-l:libobjc.so.4.6"
especially the RUNTIME_VERSION environment variable and
the --with-library-combo=ng-gnu-gnu should enforce the newer runtime.
but when I install gnustep make and then run
# /usr/GNUstep2/System/Tools/gnustep-config --objc-flags
-MMD -MP -DGNUSTEP_RUNTIME=1 -D_NONFRAGILE_ABI=1
-DGNUSTEP_BASE_LIBRARY=1 -fno-strict-aliasing -fexceptions
-fobjc-exceptions -D_NATIVE_OBJC_EXCEPTIONS -pthread -fPIC -Wall
-DGSWARN -DGSDIAGNOSE -Wno-import -fblocks -fobjc-runtime=gnustep-2.0
-fblocks -I. -I/root/GNUstep/Library/Headers -I/usr/local/include
this is especially troublesome:
-DGNUSTEP_RUNTIME=1 && -fobjc-runtime=gnustep-2.0 ??
Does anyone have an idea whats wrong with GNUstep make here or how
this could be worked around?
I suppose your problem might be that you are using the more recent 2.2
ABI but the default is specifying the 2.0 ABI?
You can override the default using --with-runtime-abi configuration
option.
Thanks for that hint. Indeed I use the latest libobjc2.2.1. I'm
surprised the ABI has changed.
would that mean -fobjc-runtime=gnustep-2.0 has to be changed
to -fobjc-runtime=gnustep-2.2.1 as well?