Re: BUG #5960: No rule to make target 'libpq.a', needed by 'all-static-lib' - Mailing list pgsql-bugs

From Robert Haas
Subject Re: BUG #5960: No rule to make target 'libpq.a', needed by 'all-static-lib'
Date
Msg-id BANLkTikmURWoQj1nqb9nR3pgoyGtmvjn9Q@mail.gmail.com
Whole thread Raw
In response to BUG #5960: No rule to make target 'libpq.a', needed by 'all-static-lib'  ("Julia Jacobson" <julia.jacobson@arcor.de>)
List pgsql-bugs
On Wed, Mar 30, 2011 at 9:54 AM, Julia Jacobson <julia.jacobson@arcor.de> wrote:
> When trying to compile PostgreSQL 8.4.6 on Windows 7 using MSys (MinGW) in
> order to build a static version of libpq by the commands
> ./configure --without-zlib --disable-shared
> make
> the compilation process ends with the error message
> "No rule to make target 'libpq.a', needed by 'all-static-lib'".
> This issue was already discussed here on the mailing list more than 6 years
> ago and successfully fixed with a patch:
> http://archives.postgresql.org/pgsql-hackers-win32/2004-10/msg00057.php
> However, it seems to me like there is a similar problem in version 8.4.x.
> Please corrected me if I'm wrong.

I tried this on MacOS X and got a different error:

make -C interfaces all
make -C libpq all
make[3]: *** No rule to make target `libpq.5.4.dylib', needed by
`all-shared-lib'.  Stop.
make[2]: *** [all-libpq-recurse] Error 2
make[1]: *** [all-interfaces-recurse] Error 2
make: *** [all-src-recurse] Error 2

I also tried it on Linux (Fedora 12), where it completed successfully.

Unfortunately, I don't think we have any buildfarm coverage of
--disable-shared, so there is no automatic way for us to notice when
this has gotten broken.

The problem appears to be that the all-shared-lib target in
src/Makefile.shlib depends on $(shlib).  The first two, generic
assignments to that variable are protected like this:

ifeq ($(enable_shared), yes)
shlib       = $(NAME)$(DLSUFFIX)
endif

But the remaining, platform-specific ones are not.  So my guess is
this will work on any platform that uses the default value for shlib,
and fail on any platform that has a platform-specific override,
namely: aix, darwin, freebsd, hpux, irix, cygwin, win32.

Can you see whether the following patch fixes it for you?  It seems to
work on MacOS X, but I don't have a mingw environment handy.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

Attachment

pgsql-bugs by date:

Previous
From: "Kevin Grittner"
Date:
Subject: Re: BUG #5952: SetRWConflict assertion failure
Next
From: "Kevin Grittner"
Date:
Subject: Re: BUG #5952: SetRWConflict assertion failure