<pre style='margin:0'>
Christopher Nielsen (mascguy) pushed a commit to branch master
in repository macports-legacy-support.
</pre>
<p><a href="https://github.com/macports/macports-legacy-support/commit/86a71bfc238cda8577a8abc4f16a1b6e010d7492">https://github.com/macports/macports-legacy-support/commit/86a71bfc238cda8577a8abc4f16a1b6e010d7492</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 86a71bfc238cda8577a8abc4f16a1b6e010d7492
</span>Author: Fred Wright <fw@fwright.net>
AuthorDate: Wed Jun 19 16:32:25 2024 -0700
<span style='display:block; white-space:pre;color:#404040;'> Makefile: Fix CC/CXX/LD flags issues.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> This fixes three issues with specifying flag variables to the Makefile:
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> 1) It attempted to insert ARCHFLAGS into CC and CXX, but it was using ?=,
</span><span style='display:block; white-space:pre;color:#404040;'> which doesn't work for predefined variables.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> 2) It never incorporated ARCHFLAGS into LDFLAGS.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> 3) It provided some defaults in CFLAGS and CXXFLAGS, but any setting of
</span><span style='display:block; white-space:pre;color:#404040;'> these variables removed those defaults. The defaults are now in XCFLAGS
</span><span style='display:block; white-space:pre;color:#404040;'> and XCXXFLAGS, which are added to C[XX]FLAGS, along with ARCHFLAGS, so
</span><span style='display:block; white-space:pre;color:#404040;'> they normally are kept. If removing the defaults is desired, then
</span><span style='display:block; white-space:pre;color:#404040;'> XC[XX]FLAGS can be overridden.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Note that the port build procedure uses FORCE_ARCH, not ARCHFLAGS.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Closes: https://trac.macports.org/ticket/69782
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> TESTED:
</span><span style='display:block; white-space:pre;color:#404040;'> ARCHFLAGS is now respected, and setting CFLAGS doesn't remove
</span><span style='display:block; white-space:pre;color:#404040;'> defaults.
</span>---
Makefile | 64 +++++++++++++++++++++++++++++++++++-----------------------------
1 file changed, 35 insertions(+), 29 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/Makefile b/Makefile
</span><span style='display:block; white-space:pre;color:#808080;'>index ced7189..c26c1d1 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/Makefile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/Makefile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -49,17 +49,23 @@ SYSREEXPORTFLAG = -Wl,-reexport_library,/usr/lib/libSystem.B.dylib
</span> BUILDSLIBFLAGS = -qs
POSTINSTALL = install_name_tool
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# The defaults for C[XX]FLAGS are defined as XC[XX]FLAGS, so that supplied
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# definitions of C[XX]FLAGS don't override them. If overriding these defaults
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# is wanted, then override XC[XX]FLAGS.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Note: Overriding CC or CXX with ?= doesn't work, since they're "defined".
</span> FORCE_ARCH ?=
ARCHFLAGS ?=
LIPO ?= lipo
<span style='display:block; white-space:pre;background:#ffe0e0;'>-CC ?= cc $(ARCHFLAGS)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-CFLAGS ?= -Os -Wall -Wno-deprecated-declarations
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+XCFLAGS ?= -Os -Wall -Wno-deprecated-declarations
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ALLCFLAGS := $(ARCHFLAGS) $(XCFLAGS) $(CFLAGS)
</span> DLIBCFLAGS ?= -fPIC
SLIBCFLAGS ?=
<span style='display:block; white-space:pre;background:#ffe0e0;'>-CXX ?= c++ $(ARCHFLAGS)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-CXXFLAGS ?= -Os -Wall
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+XCXXFLAGS ?= -Os -Wall
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ALLCXXFLAGS := $(ARCHFLAGS) $(XCXXFLAGS) $(CXXFLAGS)
</span> LD ?= ld
LDFLAGS ?=
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ALLLDFLAGS := $(ARCHFLAGS) $(LDFLAGS)
</span> AR ?= ar
UNAME ?= uname
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -98,7 +104,7 @@ ADDOBJS := $(patsubst %.c,%$(SLIBOBJEXT),$(ADDSRCS))
</span> TESTDIR = test
TESTNAMEPREFIX = $(TESTDIR)/test_
TESTRUNPREFIX = run_
<span style='display:block; white-space:pre;background:#ffe0e0;'>-TESTLDFLAGS = -L$(BUILDDLIBDIR) $(LDFLAGS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TESTLDFLAGS = -L$(BUILDDLIBDIR) $(ALLLDFLAGS)
</span> TESTLIBS = -l$(LIBNAME)
TESTSRCS_C := $(wildcard $(TESTNAMEPREFIX)*.c)
TESTSRCS_CPP := $(wildcard $(TESTNAMEPREFIX)*.cpp)
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -112,7 +118,7 @@ TESTRUNS := $(patsubst $(TESTNAMEPREFIX)%,$(TESTRUNPREFIX)%,$(TESTPRGS))
</span> MANTESTDIR = manual_tests
MANTESTPREFIX = $(MANTESTDIR)/
MANRUNPREFIX = mantest_
<span style='display:block; white-space:pre;background:#ffe0e0;'>-MANTESTLDFLAGS = $(LDFLAGS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+MANTESTLDFLAGS = $(ALLLDFLAGS)
</span> MANTESTSRCS_C := $(wildcard $(MANTESTPREFIX)*.c)
MANTESTOBJS_C := $(patsubst %.c,%.o,$(MANTESTSRCS_C))
MANTESTPRGS_C := $(patsubst %.c,%,$(MANTESTSRCS_C))
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -231,45 +237,45 @@ syslib: dlib $(BUILDSYSLIBPATH)
</span> # inode-based one.
$(MULTIDLIBOBJS): %$(DLIBOBJEXT): %.c $(ALLHEADERS)
# Generate possibly multi-architecture object files ...
<span style='display:block; white-space:pre;background:#ffe0e0;'>- $(CC) -c -I$(SRCINCDIR) $(CFLAGS) $(DLIBCFLAGS) -D__DARWIN_UNIX03=0 -D__DARWIN_64_BIT_INO_T=0 -D__DARWIN_ONLY_64_BIT_INO_T=0 $< -o $@.inode32
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- $(CC) -c -I$(SRCINCDIR) $(CFLAGS) $(DLIBCFLAGS) -D__DARWIN_UNIX03=1 -D__DARWIN_ONLY_UNIX_CONFORMANCE=0 -D__DARWIN_64_BIT_INO_T=0 -D__DARWIN_ONLY_64_BIT_INO_T=0 $< -o $@.inode32unix2003
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- $(CC) -c -I$(SRCINCDIR) $(CFLAGS) $(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
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- $(CC) -c -I$(SRCINCDIR) $(CFLAGS) $(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
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $(CC) -c -I$(SRCINCDIR) $(ALLCFLAGS) $(DLIBCFLAGS) -D__DARWIN_UNIX03=0 -D__DARWIN_64_BIT_INO_T=0 -D__DARWIN_ONLY_64_BIT_INO_T=0 $< -o $@.inode32
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $(CC) -c -I$(SRCINCDIR) $(ALLCFLAGS) $(DLIBCFLAGS) -D__DARWIN_UNIX03=1 -D__DARWIN_ONLY_UNIX_CONFORMANCE=0 -D__DARWIN_64_BIT_INO_T=0 -D__DARWIN_ONLY_64_BIT_INO_T=0 $< -o $@.inode32unix2003
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $(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
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $(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
</span> # ... and split them up, because ld can only generate single-architecture files ...
$(call splitandfilterandmergemultiarch,$@,$(LIPO),$(RM),$(CP),$(LD),$(GREP),$(PLATFORM),$(FORCE_ARCH))
$(MULTISLIBOBJS): %$(SLIBOBJEXT): %.c $(ALLHEADERS)
# Generate possibly multi-architecture object files ...
<span style='display:block; white-space:pre;background:#ffe0e0;'>- $(CC) -c -I$(SRCINCDIR) $(CFLAGS) $(SLIBCFLAGS) -D__DARWIN_UNIX03=0 -D__DARWIN_64_BIT_INO_T=0 -D__DARWIN_ONLY_64_BIT_INO_T=0 $< -o $@.inode32
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- $(CC) -c -I$(SRCINCDIR) $(CFLAGS) $(SLIBCFLAGS) -D__DARWIN_UNIX03=1 -D__DARWIN_ONLY_UNIX_CONFORMANCE=0 -D__DARWIN_64_BIT_INO_T=0 -D__DARWIN_ONLY_64_BIT_INO_T=0 $< -o $@.inode32unix2003
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- $(CC) -c -I$(SRCINCDIR) $(CFLAGS) $(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
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- $(CC) -c -I$(SRCINCDIR) $(CFLAGS) $(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
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $(CC) -c -I$(SRCINCDIR) $(ALLCFLAGS) $(SLIBCFLAGS) -D__DARWIN_UNIX03=0 -D__DARWIN_64_BIT_INO_T=0 -D__DARWIN_ONLY_64_BIT_INO_T=0 $< -o $@.inode32
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $(CC) -c -I$(SRCINCDIR) $(ALLCFLAGS) $(SLIBCFLAGS) -D__DARWIN_UNIX03=1 -D__DARWIN_ONLY_UNIX_CONFORMANCE=0 -D__DARWIN_64_BIT_INO_T=0 -D__DARWIN_ONLY_64_BIT_INO_T=0 $< -o $@.inode32unix2003
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $(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
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $(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
</span> # ... and split them up, because ld can only generate single-architecture files ...
$(call splitandfilterandmergemultiarch,$@,$(LIPO),$(RM),$(CP),$(LD),$(GREP),$(PLATFORM),$(FORCE_ARCH))
# Generously marking all header files as potential dependencies
$(DLIBOBJS): %$(DLIBOBJEXT): %.c $(ALLHEADERS)
<span style='display:block; white-space:pre;background:#ffe0e0;'>- $(CC) -c -I$(SRCINCDIR) $(CFLAGS) $(DLIBCFLAGS) $< -o $@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $(CC) -c -I$(SRCINCDIR) $(ALLCFLAGS) $(DLIBCFLAGS) $< -o $@
</span>
$(SLIBOBJS): %$(SLIBOBJEXT): %.c $(ALLHEADERS)
<span style='display:block; white-space:pre;background:#ffe0e0;'>- $(CC) -c -I$(SRCINCDIR) $(CFLAGS) $(SLIBCFLAGS) $< -o $@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $(CC) -c -I$(SRCINCDIR) $(ALLCFLAGS) $(SLIBCFLAGS) $< -o $@
</span>
$(ADDOBJS): %$(SLIBOBJEXT): %.c $(ALLHEADERS)
<span style='display:block; white-space:pre;background:#ffe0e0;'>- $(CC) -c -I$(SRCINCDIR) $(CFLAGS) $(SLIBCFLAGS) $< -o $@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $(CC) -c -I$(SRCINCDIR) $(ALLCFLAGS) $(SLIBCFLAGS) $< -o $@
</span>
$(TESTOBJS_C): %.o: %.c $(ALLHEADERS)
<span style='display:block; white-space:pre;background:#ffe0e0;'>- $(CC) -c -std=c99 -I$(SRCINCDIR) $(CFLAGS) $< -o $@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $(CC) -c -std=c99 -I$(SRCINCDIR) $(ALLCFLAGS) $< -o $@
</span>
$(TESTOBJS_CPP): %.o: %.cpp $(ALLHEADERS)
<span style='display:block; white-space:pre;background:#ffe0e0;'>- $(CXX) -c -I$(SRCINCDIR) $(CXXFLAGS) $< -o $@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $(CXX) -c -I$(SRCINCDIR) $(ALLCXXFLAGS) $< -o $@
</span>
$(BUILDDLIBPATH): $(DLIBOBJS) $(MULTIDLIBOBJS)
$(MKINSTALLDIRS) $(BUILDDLIBDIR)
<span style='display:block; white-space:pre;background:#ffe0e0;'>- $(CC) $(BUILDDLIBFLAGS) $(LDFLAGS) $^ -o $@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $(CC) $(BUILDDLIBFLAGS) $(ALLLDFLAGS) $^ -o $@
</span>
$(BUILDSYSLIBPATH): $(DLIBOBJS) $(MULTIDLIBOBJS) $(ADDOBJS)
$(MKINSTALLDIRS) $(BUILDDLIBDIR)
<span style='display:block; white-space:pre;background:#ffe0e0;'>- $(CC) $(BUILDSYSLIBFLAGS) $(LDFLAGS) $(SYSREEXPORTFLAG) $^ -o $@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $(CC) $(BUILDSYSLIBFLAGS) $(ALLLDFLAGS) $(SYSREEXPORTFLAG) $^ -o $@
</span>
$(BUILDSLIBPATH): $(SLIBOBJS) $(MULTISLIBOBJS)
$(MKINSTALLDIRS) $(BUILDSLIBDIR)
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -303,17 +309,17 @@ tiger-bins:
</span> # succeeds using c++11 -- as desired.
test_cmath: test/test_cmath.cc $(ALLHEADERS)
$(info 1: testing compiler '$(CXX)' for non-legacy cmath using c++03; the build should fail, regardless of the compiler or OS)
<span style='display:block; white-space:pre;background:#ffe0e0;'>- $(info 1: $(CXX) $(CXXFLAGS) -std=c++03 $< -o test/$@_cxx03)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- @-$(CXX) -I$(SRCINCDIR) $(CXXFLAGS) -std=c++03 $< -o test/$@_cxx03 &> /dev/null && echo "1: c++03 no legacy cmath build success (test failed)!" || echo "1: c++03 no legacy cmath build failure (test succeeded)!"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $(info 1: $(CXX) $(ALLCXXFLAGS) -std=c++03 $< -o test/$@_cxx03)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @-$(CXX) -I$(SRCINCDIR) $(ALLCXXFLAGS) -std=c++03 $< -o test/$@_cxx03 &> /dev/null && echo "1: c++03 no legacy cmath build success (test failed)!" || echo "1: c++03 no legacy cmath build failure (test succeeded)!"
</span> $(info 2: testing compiler '$(CXX)' for non-legacy cmath using c++03; the build should fail, regardless of the compiler or OS)
<span style='display:block; white-space:pre;background:#ffe0e0;'>- $(info 2: $(CXX) -I$(SRCINCDIR) $(CXXFLAGS) -std=c++03 $< -o test/$@_cxx03)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- @-$(CXX) -I$(SRCINCDIR) $(CXXFLAGS) -std=c++03 $< -o test/$@_cxx03 &> /dev/null && echo "2: c++03 legacy cmath build success (test failed)!" || echo "2: c++03 legacy cmath build failure (test succeeded)!"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $(info 2: $(CXX) -I$(SRCINCDIR) $(ALLCXXFLAGS) -std=c++03 $< -o test/$@_cxx03)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @-$(CXX) -I$(SRCINCDIR) $(ALLCXXFLAGS) -std=c++03 $< -o test/$@_cxx03 &> /dev/null && echo "2: c++03 legacy cmath build success (test failed)!" || echo "2: c++03 legacy cmath build failure (test succeeded)!"
</span> $(info 3: testing compiler '$(CXX)' for non-legacy cmath using c++11; if the compiler supports this standard, then the build should succeed regardless of OS)
<span style='display:block; white-space:pre;background:#ffe0e0;'>- $(info 3: $(CXX) $(CXXFLAGS) -std=c++11 $< -o test/$@_cxx11)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- @-$(CXX) $(CXXFLAGS) -std=c++11 $< -o test/$@_cxx11 &> /dev/null && echo "3: c++11 no legacy cmath build success (test failed)!" || echo "3: c++11 no legacy cmath build failure (test succeeded)!"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $(info 3: $(CXX) $(ALLCXXFLAGS) -std=c++11 $< -o test/$@_cxx11)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @-$(CXX) $(ALLCXXFLAGS) -std=c++11 $< -o test/$@_cxx11 &> /dev/null && echo "3: c++11 no legacy cmath build success (test failed)!" || echo "3: c++11 no legacy cmath build failure (test succeeded)!"
</span> $(info 4: testing compiler '$(CXX)' for legacy cmath using c++11; if the compiler supports this standard, then the build should succeed regardless of OS)
<span style='display:block; white-space:pre;background:#ffe0e0;'>- $(info 4: $(CXX) -I$(SRCINCDIR) $(CXXFLAGS) -std=c++11 $< -o test/$@_cxx11)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- @-$(CXX) -I$(SRCINCDIR) $(CXXFLAGS) -std=c++11 $< -o test/$@_cxx11 &> /dev/null && echo "4: c++11 legacy cmath build success (test succeeded)!" || echo "4: c++11 legacy cmath build failure (test failed)!"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $(info 4: $(CXX) -I$(SRCINCDIR) $(ALLCXXFLAGS) -std=c++11 $< -o test/$@_cxx11)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @-$(CXX) -I$(SRCINCDIR) $(ALLCXXFLAGS) -std=c++11 $< -o test/$@_cxx11 &> /dev/null && echo "4: c++11 legacy cmath build success (test succeeded)!" || echo "4: c++11 legacy cmath build failure (test failed)!"
</span>
# Special clause for testing faccessat in a setuid program.
# Must be run by root.
</pre><pre style='margin:0'>
</pre>