git: 3c8c052fd63a - 2025Q1 - lang/rexx-imc: link with cc instead of ld

From: Robert Clausecker <fuz_at_FreeBSD.org>
Date: Thu, 20 Feb 2025 23:30:01 UTC
The branch 2025Q1 has been updated by fuz:

URL: https://cgit.FreeBSD.org/ports/commit/?id=3c8c052fd63afd341150e65192dc3f5ff6474219

commit 3c8c052fd63afd341150e65192dc3f5ff6474219
Author:     Robert Clausecker <fuz@FreeBSD.org>
AuthorDate: 2025-02-19 16:38:59 +0000
Commit:     Robert Clausecker <fuz@FreeBSD.org>
CommitDate: 2025-02-20 23:29:19 +0000

    lang/rexx-imc: link with cc instead of ld
    
    This fixes the link on armv7 and makes it build without binutils.
    
    MFH:            2025Q1
    (cherry picked from commit 8a02a5ce5be7f7aa735bc49340e2deb0643d016d)
---
 lang/rexx-imc/Makefile         | 12 +----
 lang/rexx-imc/files/patch-Make | 99 +++++++++++++++++++++++++++++++++++-------
 2 files changed, 85 insertions(+), 26 deletions(-)

diff --git a/lang/rexx-imc/Makefile b/lang/rexx-imc/Makefile
index 85b8ee53d533..6b8ffdbb3d8d 100644
--- a/lang/rexx-imc/Makefile
+++ b/lang/rexx-imc/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	rexx-imc
 PORTVERSION=	1.76
-PORTREVISION=	4
+PORTREVISION=	5
 CATEGORIES=	lang
 MASTER_SITES=	http://www.cs.ox.ac.uk/people/ian.collier/distribution/ \
 		ftp://ftp.sai.msu.su/pub/unix/rexx/
@@ -9,9 +9,6 @@ MAINTAINER=	ports@FreeBSD.org
 COMMENT=	Procedural programming language designed by IBM's UK Laboratories
 WWW=		https://www.cs.ox.ac.uk/people/ian.collier/Rexx/rexximc.html
 
-BROKEN_armv6=		fails to link: /nxb-bin/usr/bin/ld: hidden symbol __aeabi_uidivmod in libgcc.a is referenced by DSO
-BROKEN_armv7=		fails to link: /nxb-bin/usr/bin/ld: hidden symbol __aeabi_uidivmod in libgcc.a is referenced by DSO
-
 CONFLICTS=	rexx-regina-* oorexx
 
 HAS_CONFIGURE=		yes
@@ -22,7 +19,6 @@ CONFIGURE_ARGS=		o all
 # configures and builds in one step
 NO_BUILD=		yes
 USE_LDCONFIG=		yes
-LLD_UNSAFE=		yes
 
 DOCFILES=	rexx.info rexx.ref rexx.summary rexx.tech
 RMEFILES=	README README.Y2K README.bugreport README.docs \
@@ -30,12 +26,6 @@ RMEFILES=	README README.Y2K README.bugreport README.docs \
 
 OPTIONS_DEFINE=	DOCS EXAMPLES
 
-post-patch:
-# CFLAGS safeness for ARCHs other than i386
-	@${REINPLACE_CMD} -e 's|-O2||' ${WRKSRC}/Make
-# CC safeness
-	@${REINPLACE_CMD} -E -e 's|^CC=.+$$|CC=${CC}|' ${WRKSRC}/Make
-
 do-install:
 	(cd ${WRKSRC} && ${INSTALL_PROGRAM} rexx rxque rxstack \
 		${STAGEDIR}${PREFIX}/bin)
diff --git a/lang/rexx-imc/files/patch-Make b/lang/rexx-imc/files/patch-Make
index 1854ab25dee4..b351b4131e46 100644
--- a/lang/rexx-imc/files/patch-Make
+++ b/lang/rexx-imc/files/patch-Make
@@ -1,7 +1,13 @@
 --- Make.orig	2002-02-26 12:29:20 UTC
 +++ Make
-@@ -18,7 +18,7 @@ CC=gcc                     # compiler an
- LD=ld                      # linker for shared objects
+@@ -14,11 +14,11 @@ MAKEFILE=Makefile.REXXimc
+ SRC=.                      # directory containing the source of REXX/imc
+ MAKE=make
+ MAKEFILE=Makefile.REXXimc
+-CC=gcc                     # compiler and linker for programs
+-LD=ld                      # linker for shared objects
++#CC=cc
++LD=$CC                      # linker for shared objects
  COMPILEFLAG=""             # general compilation flags for cc
  LINKFLAG=""                # general linker flags *for cc*
 -#STUFF="-DSTUFF_STACK"     # uncomment if you like queuing stack to keyboard
@@ -19,6 +25,69 @@
          *|unknown)
              PREFIX="/usr/local"
              ;;
+@@ -158,7 +161,7 @@ case ${1:-nothing} in
+         shift
+         ;;
+    o)   # o (optimise)
+-        OPTFLAG="-O2"
++        OPTFLAG=""
+         STRIPFLAG="-s"
+         shift
+         ;;
+@@ -172,7 +175,7 @@ case ${1:-nothing} in
+         shift
+         ;;
+    *)   # <default>
+-        OPTFLAG="-O2"
++        OPTFLAG=""
+         STRIPFLAG="-s"
+         ;;
+ esac
+@@ -184,7 +187,7 @@ fi
+ 
+ #######################################################################
+ # Now calculate system dependent variables for Makefile
+-# Note: if OPTFLAG is -O2 it can be changed to suit the compiler.
++# Note: if OPTFLAG is  it can be changed to suit the compiler.
+ 
+ echo "Processing REXX/imc for $UNAME_S $UNAME_R"
+ 
+@@ -215,7 +218,7 @@ case $UNAME_S:$UNAME_R in
+                 ;;
+             cc)
+                 CCFLAG="-DFSTAT_FOR_CHARS -DHAS_MALLOPT -DDECLARE_RANDOM -DDECLARE_TIMEZONE"
+-                [ "x$OPTFLAG" = x-O2 ] && OPTFLAG="-fast"
++                [ "x$OPTFLAG" = x ] && OPTFLAG="-fast"
+                 PIC="-KPIC"
+                 SOFLAG="-G"
+                 DLLFLAG="-G"
+@@ -246,7 +249,7 @@ case $UNAME_S:$UNAME_R in
+                 ;;
+             cc)
+                 PIC="-PIC"
+-                [ "x$OPTFLAG" = x-O2 ] && OPTFLAG="-O4"
++                [ "x$OPTFLAG" = x ] && OPTFLAG="-O4"
+                 ;;
+             *)  echo "Warning: I don't know the options for $CC"\
+                       "- trying the cc ones" >&2
+@@ -281,7 +284,7 @@ case $UNAME_S:$UNAME_R in
+         REXXLIB="librexx.a"
+         MATH=""
+         PIC=""
+-        [ "x$OPTFLAG" = x-O2 ] && OPTFLAG="+O2"
++        [ "x$OPTFLAG" = x ] && OPTFLAG="+O2"
+         case $CC in
+             cc)
+                 CCFLAG="-DHAS_MALLOPT -D_HPUX_SOURCE -DNO_LDL"
+@@ -338,7 +341,7 @@ case $UNAME_S:$UNAME_R in
+         case $CC in
+             cc) 
+                 CCFLAG="$CCFLAG -Olimit 1400"
+-                [ "x$OPTFLAG" = x-O2 ] && OPTFLAG="-O3"
++                [ "x$OPTFLAG" = x ] && OPTFLAG="-O3"
+                 ;;
+             gcc) # already OK
+                 ;;
 @@ -386,14 +389,14 @@ case $UNAME_S:$UNAME_R in
          esac
          egrep -q tm_gmtoff /usr/include/time.h && CCFLAG="$CCFLAG -DHAS_GMTOFF"
@@ -36,10 +105,14 @@
  #       Uncomment above line if you have problems with LD_LIBRARY_PATH
          case $CC in
              gcc)
-@@ -407,6 +410,48 @@ case $UNAME_S:$UNAME_R in
-                 ;;
-         esac
-         ;;
+@@ -403,6 +406,48 @@ case $UNAME_S:$UNAME_R in
+             *)  echo "Warning: I don't know the options for $CC"\
+                       "- trying the gcc ones" >&2
+                 CCFLAG="-DHAS_TTYCOM -D_REQUIRED -DRENAME_UNDELETE -DHAS_GMTOFF"
++                PIC="-fPIC"
++                ;;
++        esac
++        ;;
 +    FreeBSD:4.*)
 +        REXXLIB="librexx.so"
 +	SOLINK="librexx.so"
@@ -67,9 +140,9 @@
 +        RANLIB=ranlib
 +        MATH=rxmathfn.rxfn
 +        LIBRARIES=""
-+        SOFLAG="-shared --export-dynamic"
++        SOFLAG="-shared -rdynamic"
 +        : ${RUNLIBS='-L$(LIBDIR) -Wl,-rpath,$(PREFIX)/lib'}
-+        DLLFLAG="-shared --export-dynamic"
++        DLLFLAG="-shared -rdynamic -Wl,-soname=$(SONAME)"
 +        case $CC in
 +            gcc)
 +                CCFLAG="${CFLAGS} -DHAS_TTYCOM -DRENAME_UNDELETE -DHAS_GMTOFF"
@@ -78,10 +151,6 @@
 +            *)  echo "Warning: I don't know the options for $CC"\
 +                      "- trying the gcc ones" >&2
 +                CCFLAG="${CFLAGS} -DHAS_TTYCOM -DRENAME_UNDELETE -DHAS_GMTOFF"
-+                PIC="-fPIC"
-+                ;;
-+        esac
-+        ;;
-     unknown:*|*:*)
-         echo "I am not configured for this platform - guessing some options" >&2
-         echo "(You will not be able to use shared libraries)" >&2
+                 PIC="-fPIC"
+                 ;;
+         esac