Hi,
The AC_PROG_OBJC macro does not work out-of-the-box on RHEL 9, AlmaLinux 9,
etc. because on these systems, the /usr/bin/gcc program does not support
Objective-C [1]. There is a package in EPEL 9 (the "community"-driven
package repository for RHEL-based distributions) that contains the GNU
Objective-C compiler [2] (provided by Robert Scheck [3]), under the name
/usr/bin/gobjc.
However, this is still not sufficient for packages that invoke AC_PROG_OBJC
without arguments, because the configure script will find the 'gcc' program
(from its list of tries: gcc objcc objc cc CC clang), and the gcc program
does not support Objective-C even after the EPEL 9 package is installed.
Two workarounds are possible:
a) The package maintainer can use
AC_PROG_OBJC([gobjc gcc objcc objc cc CC clang])
instead of
AC_PROG_OBJC
b) The user can set the OBJC environment variable to 'gobjc'
before running configure.
However, it would be better if this worked out-of-the-box,
because RHEL 9 and compatible systems are not just some random
system like Haiku or AIX; these distros are some of the most
important distributions of GNU systems.
Find attached a proposed patch that makes this work out-of-the-box.
Bruno
[1] https://bugzilla.redhat.com/show_bug.cgi?id=1826731
[2] https://packages.fedoraproject.org/pkgs/gcc-epel/gcc-objc/
[3] https://fedoraproject.org/wiki/User:Robert
>From e19f43b9bdefd8547d9056ae99de3e20e311e1e4 Mon Sep 17 00:00:00 2001
From: Bruno Haible <[email protected]>
Date: Tue, 16 Jul 2024 04:59:23 +0200
Subject: [PATCH] Make AC_PROG_OBJC work out-of-the-box on RHEL 9 and
compatible systems.
* lib/autoconf/c.m4 (AC_PROG_OBJC): Search for gobjc before gcc.
* NEWS: Mention the change.
---
NEWS | 3 +++
lib/autoconf/c.m4 | 13 ++++++++-----
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/NEWS b/NEWS
index bca11391..e0d35099 100644
--- a/NEWS
+++ b/NEWS
@@ -28,6 +28,9 @@ GNU Autoconf NEWS - User visible changes.
The autom4te, autoscan and ifnames programs now recognize the two
preprocessor directives, which were introduced in C23 and C++23.
+*** AC_PROG_OBJC now finds the GNU Objective-C compiler, as packaged in
+ EPEL 9, by default, without the user having to set the OBJC variable.
+
* Noteworthy changes in release 2.72 (2023-12-22) [release]
** Backward incompatibilities
diff --git a/lib/autoconf/c.m4 b/lib/autoconf/c.m4
index 456a6ba7..1727961e 100644
--- a/lib/autoconf/c.m4
+++ b/lib/autoconf/c.m4
@@ -854,10 +854,13 @@ AC_DEFUN([AC_LANG_COMPILER(Objective C)],
# search for (if not specified, a default list is used). This just gives
# the user an opportunity to specify an alternative search list for the
# Objective C compiler.
-# objcc StepStone Objective-C compiler (also "standard" name for OBJC)
-# objc David Stes' POC. If you installed this, you likely want it.
-# cc Native C compiler (for instance, Apple).
-# CC You never know.
+# gobjc GNU Objective-C compiler packaged in EPEL (for systems where gcc
+# does not support Objective-C)
+# gcc GNU Objective-C compiler on most systems
+# objcc StepStone Objective-C compiler (also "standard" name for OBJC)
+# objc David Stes' POC. If you installed this, you likely want it.
+# cc Native C compiler (for instance, Apple).
+# CC You never know.
AN_MAKEVAR([OBJC], [AC_PROG_OBJC])
AN_PROGRAM([objcc], [AC_PROG_OBJC])
AN_PROGRAM([objc], [AC_PROG_OBJC])
@@ -870,7 +873,7 @@ _AC_ARG_VAR_LIBS()dnl
_AC_ARG_VAR_CPPFLAGS()dnl
_AC_ARG_VAR_PRECIOUS([OBJC])dnl
AC_CHECK_TOOLS(OBJC,
- [m4_default([$1], [gcc objcc objc cc CC clang])],
+ [m4_default([$1], [gobjc gcc objcc objc cc CC clang])],
gcc)
# Provide some information about the compiler.
_AS_ECHO_LOG([checking for _AC_LANG compiler version])
--
2.34.1