<pre style='margin:0'>
Ken (kencu) pushed a commit to branch master
in repository macports-legacy-support.
</pre>
<p><a href="https://github.com/macports/macports-legacy-support/commit/78a441678ae3de6988d6bf45b422d17fa1c31e96">https://github.com/macports/macports-legacy-support/commit/78a441678ae3de6988d6bf45b422d17fa1c31e96</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 78a441678ae3de6988d6bf45b422d17fa1c31e96
</span>Author: Mihai Moldovan <ionic@ionic.de>
AuthorDate: Tue Oct 8 01:57:09 2019 +0200
<span style='display:block; white-space:pre;color:#404040;'> Makefile: compile fdopendir multiple times to create variations.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> We want:
</span><span style='display:block; white-space:pre;color:#404040;'> - _fdopendir (32-bit struct stat)
</span><span style='display:block; white-space:pre;color:#404040;'> - _fdopendir$UNIX2003 (32-bit struct stat, SUS/UNIX conformance)
</span><span style='display:block; white-space:pre;color:#404040;'> (not on x86_64 or ppc64)
</span><span style='display:block; white-space:pre;color:#404040;'> - _fdopendir$INODE64 (64-bit struct stat) (not on i386 or ppc or 10.4-)
</span><span style='display:block; white-space:pre;color:#404040;'> - _fdopendir$INODE64$UNIX2003 (64-bit struct stat with UNIX/SUS-conformance)
</span><span style='display:block; white-space:pre;color:#404040;'> (not on x86_64 or ppc64 or 10.4-)
</span>---
Makefile | 31 ++++++++++++++++++++++++++++---
1 file changed, 28 insertions(+), 3 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 94c00f0..08a2106 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;'>@@ -70,11 +70,14 @@ FIND_LIBHEADERS := find $(SRCINCDIR) -type f \( -name '*.h' -o \
</span> \( -name 'c*' ! -name '*.*' \) \)
LIBHEADERS := $(shell $(FIND_LIBHEADERS))
ALLHEADERS := $(LIBHEADERS) $(wildcard $(SRCDIR)/*.h)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-LIBSRCS := $(wildcard $(SRCDIR)/*.c)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+MULTISRCS := $(SRCDIR)/fdopendir.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+LIBSRCS := $(filter-out $(MULTISRCS),$(wildcard $(SRCDIR)/*.c))
</span> DLIBOBJEXT = .dl.o
SLIBOBJEXT = .o
DLIBOBJS := $(patsubst %.c,%$(DLIBOBJEXT),$(LIBSRCS))
<span style='display:block; white-space:pre;background:#e0ffe0;'>+MULTIDLIBOBJS := $(patsubst %.c,%$(DLIBOBJEXT),$(MULTISRCS))
</span> SLIBOBJS := $(patsubst %.c,%$(SLIBOBJEXT),$(LIBSRCS))
<span style='display:block; white-space:pre;background:#e0ffe0;'>+MULTISLIBOBJS := $(patsubst %.c,%$(SLIBOBJEXT),$(MULTISRCS))
</span>
TESTDIR = test
TESTNAMEPREFIX = $(TESTDIR)/test_
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -192,6 +195,28 @@ all: dlib slib
</span> dlib: $(BUILDDLIBPATH)
slib: $(BUILDSLIBPATH)
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# Special rules for special implementations.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# For instance, functions using struct stat need to be implemented multiple
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# times with different stat structs - a 32-bit-inode based one and a 64-bit-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# inode-based one.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$(MULTIDLIBOBJS): %$(DLIBOBJEXT): %.c $(ALLHEADERS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Generate possibly multi-architecture object files ...
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $(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:#e0ffe0;'>+ $(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:#e0ffe0;'>+ $(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:#e0ffe0;'>+ $(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;'>+ # ... and split them up, because ld can only generate single-architecture files ...
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $(call splitandfilterandmergemultiarch,$@,$(LIPO),$(RM),$(CP),$(LD),$(GREP),$(PLATFORM),$(FORCE_ARCH))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$(MULTISLIBOBJS): %$(SLIBOBJEXT): %.c $(ALLHEADERS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Generate possibly multi-architecture object files ...
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $(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:#e0ffe0;'>+ $(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:#e0ffe0;'>+ $(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:#e0ffe0;'>+ $(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;'>+ # ... and split them up, because ld can only generate single-architecture files ...
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $(call splitandfilterandmergemultiarch,$@,$(LIPO),$(RM),$(CP),$(LD),$(GREP),$(PLATFORM),$(FORCE_ARCH))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> # Generously marking all header files as potential dependencies
$(DLIBOBJS): %$(DLIBOBJEXT): %.c $(ALLHEADERS)
$(CC) -c -I$(SRCINCDIR) $(CFLAGS) $(DLIBCFLAGS) $< -o $@
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -205,11 +230,11 @@ $(TESTOBJS_C): %.o: %.c $(ALLHEADERS)
</span> $(TESTOBJS_CPP): %.o: %.cpp $(ALLHEADERS)
$(CXX) -c -I$(SRCINCDIR) $(CXXFLAGS) $< -o $@
<span style='display:block; white-space:pre;background:#ffe0e0;'>-$(BUILDDLIBPATH): $(DLIBOBJS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$(BUILDDLIBPATH): $(DLIBOBJS) $(MULTIDLIBOBJS)
</span> $(MKINSTALLDIRS) $(BUILDDLIBDIR)
$(CC) $(BUILDDLIBFLAGS) $(LDFLAGS) $^ -o $@
<span style='display:block; white-space:pre;background:#ffe0e0;'>-$(BUILDSLIBPATH): $(SLIBOBJS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$(BUILDSLIBPATH): $(SLIBOBJS) $(MULTISLIBOBJS)
</span> $(MKINSTALLDIRS) $(BUILDSLIBDIR)
$(RM) $@
$(AR) $(BUILDSLIBFLAGS) $@ $^
</pre><pre style='margin:0'>
</pre>