On Sat, Mar 21, 2020 at 07:30:48PM +0000, Dagfinn Ilmari Mannsåker wrote:
> Bruce Momjian <br...@momjian.us> writes:
> 
> > On Sat, Mar 21, 2020 at 02:14:44PM -0400, Bruce Momjian wrote:
> >> On Tue, Mar 10, 2020 at 01:47:14PM +0100, Filip Janus wrote:
> >> > Hello,
> >> > After upgrade from 11.2 to 12.2 I found, that build of ecpg component 
> >> > depends
> >> > on pgcommon_shlib and pgport_shlib.  But build of ecpg doesn't include 
> >> > build
> >> > of pgcommon_shlib and pgport_shlib. That means, if I want to build ecpg, 
> >> > first
> >> > I need to build  pgcommon_shlib and pgport_shlib and after that I am 
> >> > able to
> >> > build ecpg.
> >> > 
> >> > I would like to ask if this behavior is expected or not ? Because 
> >> > previous
> >> > version doesn't require this separate builds.
> >> 
> >> Ah, I see the problem, and this is a new bug in PG 12.  The attached
> >> patch fixes PG 12 and master.
> >
> >> + all-lib: | submake-libpgport
> >
> > Oh, I forgot to mention I got this line from
> > src/interfaces/libpq/Makefile:
> 
> And that line is wrong, but my patch to fix it¹ seems to have fallen
> between the cracks.
> 
> [1] 
> https://www.postgresql.org/message-id/flat/871rsa13ae.fsf%40wibble.ilmari.org 
> 
> Adding the dependency to `all-lib` only fixes it for serial builds. To
> fix it properly, so it works with parallel builds (e.g. 'make -j4 -C
> src/interfaces/ecpg', the dependency needs to be declared via
> SHLIB_PREREQS, as attached

Oh, good catch.  I did not notice that patch before.  Adding that change
to src/interfaces/ecpg/pgtypeslib/Makefile fixes the stand-alone
compile.

The attached patch does this, and changes libpq to use it too, so
parallel Make works there too.

-- 
  Bruce Momjian  <br...@momjian.us>        https://momjian.us
  EnterpriseDB                             https://enterprisedb.com

+ As you are, so once was I.  As I am, so you will be. +
+                      Ancient Roman grave inscription +
diff --git a/src/interfaces/ecpg/pgtypeslib/Makefile b/src/interfaces/ecpg/pgtypeslib/Makefile
index 530b580d7c..ae79ead7a7 100644
--- a/src/interfaces/ecpg/pgtypeslib/Makefile
+++ b/src/interfaces/ecpg/pgtypeslib/Makefile
@@ -24,6 +24,7 @@ override CFLAGS += $(PTHREAD_CFLAGS)
 
 SHLIB_LINK_INTERNAL = -lpgcommon_shlib -lpgport_shlib
 SHLIB_LINK += $(filter -lintl -lm, $(LIBS))
+SHLIB_PREREQS = submake-libpgport
 
 SHLIB_EXPORTS = exports.txt
 
diff --git a/src/interfaces/libpq/Makefile b/src/interfaces/libpq/Makefile
index a06882651f..d4919970f8 100644
--- a/src/interfaces/libpq/Makefile
+++ b/src/interfaces/libpq/Makefile
@@ -85,13 +85,12 @@ endif
 ifeq ($(PORTNAME), win32)
 SHLIB_LINK += -lshell32 -lws2_32 -lsecur32 $(filter -leay32 -lssleay32 -lcomerr32 -lkrb5_32, $(LIBS))
 endif
+SHLIB_PREREQS = submake-libpgport
 
 SHLIB_EXPORTS = exports.txt
 
 all: all-lib
 
-all-lib: | submake-libpgport
-
 # Shared library stuff
 include $(top_srcdir)/src/Makefile.shlib
 backend_src = $(top_srcdir)/src/backend

Reply via email to