From 2aad6bae30e0e87752ad32ba7b70afeee905f451 Mon Sep 17 00:00:00 2001
From: Fred Wright <fw@fwright.net>
Date: Wed, 20 Nov 2024 16:58:29 -0800
Subject: [PATCH] Makefile: Use system tools.

Referencing the "bare" ar, ld, lipo, and install_name_tool
opportunistically uses the MacPorts cctools and ld64 versions, without
explicit dependencies.  This adds the explicit /usr/bin/ prefix to all
but lipo to avoid that.  These are still overridable defaults.

Since LD and AR are standard make defaults, defaulting them doesn't
work.  We switch to LDX and ARX to avoid that.

The lipo reference is left as is (since the system lipo is
inadequate), but is expected to go away in the near future.

TESTED:
Builds (including tests) on all platforms, with all applicable SDKs.
---
 Makefile | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/Makefile b/Makefile
index 945e0f2..3890f57 100644
--- a/Makefile
+++ b/Makefile
@@ -53,7 +53,7 @@ XLIBDIR          = xlib
 XLIBPATH         = $(XLIBDIR)/lib$(OSLIBLINK)$(SOEXT)
 SYSREEXPORTFLAG  = -Wl,-reexport_library,$(OSLIBDIR)/lib$(OSLIBNAME)$(SOEXT)
 BUILDSLIBFLAGS   = -qs
-POSTINSTALL      = install_name_tool
+POSTINSTALL     ?= /usr/bin/install_name_tool
 
 # The defaults for C[XX]FLAGS are defined as XC[XX]FLAGS, so that supplied
 # definitions of C[XX]FLAGS don't override them.  If overriding these defaults
@@ -71,12 +71,12 @@ DLIBCFLAGS      ?= -fPIC
 SLIBCFLAGS      ?=
 XCXXFLAGS       ?= $(DEBUG) $(OPT) -Wall
 ALLCXXFLAGS     := $(ARCHFLAGS) $(XCXXFLAGS) $(CXXFLAGS)
-LD              ?= /usr/bin/ld
+LDX             ?= /usr/bin/ld
 LDFLAGS         ?= $(DEBUG)
 ALLLDFLAGS      := $(ARCHFLAGS) $(LDFLAGS)
 TEST_ARGS       ?=
 
-AR              ?= ar
+ARX             ?= /usr/bin/ar
 UNAME           ?= uname
 SED             ?= /usr/bin/sed
 GREP            ?= /usr/bin/grep
@@ -307,7 +307,7 @@ $(MULTIDLIBOBJS): %$(DLIBOBJEXT): %.c $(ALLHEADERS)
 	$(CC) -c -I$(SRCINCDIR) $(ALLCFLAGS) $(DLIBCFLAGS) -D__DARWIN_UNIX03=1 -D__DARWIN_ONLY_UNIX_CONFORMANCE=1 -D__DARWIN_64_BIT_INO_T=1 -D__DARWIN_ONLY_64_BIT_INO_T=0 $< -o $@.inode64
 	$(CC) -c -I$(SRCINCDIR) $(ALLCFLAGS) $(DLIBCFLAGS) -D__DARWIN_UNIX03=1 -D__DARWIN_ONLY_UNIX_CONFORMANCE=0 -D__DARWIN_64_BIT_INO_T=1 -D__DARWIN_ONLY_64_BIT_INO_T=0 $< -o $@.inode64unix2003
 	# ... and split them up, because ld can only generate single-architecture files ...
-	$(call splitandfilterandmergemultiarch,$@,$(LIPO),$(RM),$(CP),$(LD),$(GREP),$(PLATFORM),$(FORCE_ARCH))
+	$(call splitandfilterandmergemultiarch,$@,$(LIPO),$(RM),$(CP),$(LDX),$(GREP),$(PLATFORM),$(FORCE_ARCH))
 
 $(MULTISLIBOBJS): %$(SLIBOBJEXT): %.c $(ALLHEADERS)
 	# Generate possibly multi-architecture object files ...
@@ -316,7 +316,7 @@ $(MULTISLIBOBJS): %$(SLIBOBJEXT): %.c $(ALLHEADERS)
 	$(CC) -c -I$(SRCINCDIR) $(ALLCFLAGS) $(SLIBCFLAGS) -D__DARWIN_UNIX03=1 -D__DARWIN_ONLY_UNIX_CONFORMANCE=1 -D__DARWIN_64_BIT_INO_T=1 -D__DARWIN_ONLY_64_BIT_INO_T=0 $< -o $@.inode64
 	$(CC) -c -I$(SRCINCDIR) $(ALLCFLAGS) $(SLIBCFLAGS) -D__DARWIN_UNIX03=1 -D__DARWIN_ONLY_UNIX_CONFORMANCE=0 -D__DARWIN_64_BIT_INO_T=1 -D__DARWIN_ONLY_64_BIT_INO_T=0 $< -o $@.inode64unix2003
 	# ... and split them up, because ld can only generate single-architecture files ...
-	$(call splitandfilterandmergemultiarch,$@,$(LIPO),$(RM),$(CP),$(LD),$(GREP),$(PLATFORM),$(FORCE_ARCH))
+	$(call splitandfilterandmergemultiarch,$@,$(LIPO),$(RM),$(CP),$(LDX),$(GREP),$(PLATFORM),$(FORCE_ARCH))
 
 # Generously marking all header files as potential dependencies
 $(DLIBOBJS): %$(DLIBOBJEXT): %.c $(ALLHEADERS)
@@ -354,7 +354,7 @@ $(BUILDSYSLIBPATH): $(ALLSYSLIBOBJS) | $(BUILDLIBDIR)
 
 $(BUILDSLIBPATH): $(SOBJLIST) | $(BUILDLIBDIR)
 	$(RM) $@
-	$(AR) $(BUILDSLIBFLAGS) $@ $$(cat $<)
+	$(ARX) $(BUILDSLIBFLAGS) $@ $$(cat $<)
 
 # To run tests with our syslib, we want to suppress linking with the OS syslib,
 # just to be certain that our replacement is an adequate substitute.
-- 
GitLab