make AC_PROG_OBJC work out-of-the-box on RHEL 9 and compatible systems

Bruno Haible <[email protected]>
Newsgroups gmane.comp.sysutils.autoconf.bugs
Message-ID <3178400.zE8UqtGg2D@nimes>
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
0001-Make-AC_PROG_OBJC-work-out-of-the-box-on-RHEL-9-and-.patch (text/x-patch, 2.4 KB)
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.