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