Fix make build on MinGW
authorPeter Eisentraut <[email protected]>
Fri, 21 Jun 2024 06:17:23 +0000 (08:17 +0200)
committerPeter Eisentraut <[email protected]>
Fri, 21 Jun 2024 06:17:23 +0000 (08:17 +0200)
Revert a couple of the simplifications done in commit 721856ff24b
because platforms without ln -s, where LN_S='cp -pR', such as MinGW,
required the specific previous incantations.

Reported-by: Noah Misch <[email protected]>
Discussion: https://www.postgresql.org/message-id/20240616193448[email protected]

src/backend/Makefile

index 6700aec0396294151e13383d48f6dc35830989cd..84302cc6dab7b12d8452705ec2916696a8b5d4b3 100644 (file)
@@ -133,18 +133,24 @@ submake-utils-headers:
 # Make symlinks for these headers in the include directory. That way
 # we can cut down on the -I options. Also, a symlink is automatically
 # up to date when we update the base file.
+#
+# The point of the prereqdir incantation in some of the rules below is to
+# force the symlink to use an absolute path rather than a relative path.
+# This is needed to support platforms without ln -s.
 
 .PHONY: generated-headers
 
 generated-headers: $(top_builddir)/src/include/storage/lwlocknames.h $(top_builddir)/src/include/utils/wait_event_types.h submake-catalog-headers submake-nodes-headers submake-utils-headers parser/gram.h
 
 $(top_builddir)/src/include/storage/lwlocknames.h: storage/lmgr/lwlocknames.h
-   rm -f '$@'
-   $(LN_S) ../../backend/$< '$@'
+   prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \
+     cd '$(dir $@)' && rm -f $(notdir $@) && \
+     $(LN_S) "$$prereqdir/$(notdir $<)" .
 
 $(top_builddir)/src/include/utils/wait_event_types.h: utils/activity/wait_event_types.h
-   rm -f '$@'
-   $(LN_S) ../../backend/$< '$@'
+   prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \
+     cd '$(dir $@)' && rm -f $(notdir $@) && \
+     $(LN_S) "$$prereqdir/$(notdir $<)" .
 
 utils/probes.o: utils/probes.d $(SUBDIROBJS)
    $(DTRACE) $(DTRACEFLAGS) -C -G -s $(call expand_subsys,$^) -o $@