Re: [pgsql-hackers-win32] Static build of libpq fails - Mailing list pgsql-patches

From Bruce Momjian
Subject Re: [pgsql-hackers-win32] Static build of libpq fails
Date
Msg-id 200410120108.i9C18L318394@candle.pha.pa.us
Whole thread Raw
List pgsql-patches
Dave Page wrote:
> Hi,
>
> I tried building a static libpq with Mingw, which it seems doesn't work
> any more:
>
> make[3]: *** No rule to make target `libpq.a', needed by
> `all-static-lib'.  Stop.
> make[3]: Leaving directory `/cvs/pgsql/src/interfaces/libpq'
> make[2]: *** [all] Error 2
> make[2]: Leaving directory `/cvs/pgsql/src/interfaces'
> make[1]: *** [all] Error 2
> make[1]: Leaving directory `/cvs/pgsql/src'
> make: *** [all] Error 2
>
> I can work around this easily enough, however it should obviously get
> fixed at some point.

I got it working easily by doing 'gmake all-static-lib' from the
src/interfaces/libpq directory.  Is it supposed to work somewhere else?

The attached patch adds some pg_config_paths.h dependencies that are
missing.  I am now wondering if we should have that file generated by
configure, but that defeats the ability to modify Makefile.global to
change settings so I guess we are stuck with what we have currently.

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
Index: src/Makefile.shlib
===================================================================
RCS file: /cvsroot/pgsql/src/Makefile.shlib,v
retrieving revision 1.79
diff -c -c -r1.79 Makefile.shlib
*** src/Makefile.shlib    8 Oct 2004 04:22:59 -0000    1.79
--- src/Makefile.shlib    12 Oct 2004 00:56:46 -0000
***************
*** 245,253 ****

  all-lib: all-static-lib all-shared-lib

! all-static-lib: lib$(NAME).a

! all-shared-lib: $(shlib)

  ifneq ($(PORTNAME), cygwin)
  ifneq ($(PORTNAME), win32)
--- 245,253 ----

  all-lib: all-static-lib all-shared-lib

! all-static-lib: $(PTHREAD_H_WIN32) $(top_srcdir)/src/port/pg_config_paths.h lib$(NAME).a

! all-shared-lib: $(PTHREAD_H_WIN32) $(top_srcdir)/src/port/pg_config_paths.h $(shlib)

  ifneq ($(PORTNAME), cygwin)
  ifneq ($(PORTNAME), win32)
Index: src/interfaces/ecpg/ecpglib/Makefile
===================================================================
RCS file: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/Makefile,v
retrieving revision 1.26
diff -c -c -r1.26 Makefile
*** src/interfaces/ecpg/ecpglib/Makefile    4 Oct 2004 20:36:11 -0000    1.26
--- src/interfaces/ecpg/ecpglib/Makefile    12 Oct 2004 00:56:54 -0000
***************
*** 30,36 ****
  SHLIB_LINK = -L../pgtypeslib -lpgtypes $(libpq) \
      $(filter -lintl -lssl -lcrypto -lkrb5 -lcrypt -lm, $(LIBS)) $(PTHREAD_LIBS)

! all: all-lib

  # Shared library stuff
  include $(top_srcdir)/src/Makefile.shlib
--- 30,36 ----
  SHLIB_LINK = -L../pgtypeslib -lpgtypes $(libpq) \
      $(filter -lintl -lssl -lcrypto -lkrb5 -lcrypt -lm, $(LIBS)) $(PTHREAD_LIBS)

! all: $(top_srcdir)/src/port/pg_config_paths.h all-lib

  # Shared library stuff
  include $(top_srcdir)/src/Makefile.shlib
***************
*** 46,51 ****
--- 46,54 ----
  exec.c: % : $(top_srcdir)/src/port/%
      rm -f $@ && $(LN_S) $< .

+ $(top_srcdir)/src/port/pg_config_paths.h:
+     $(MAKE) -C $(top_srcdir)/src/port pg_config_paths.h
+
  install: all installdirs install-lib

  installdirs:
Index: src/interfaces/libpq/Makefile
===================================================================
RCS file: /cvsroot/pgsql/src/interfaces/libpq/Makefile,v
retrieving revision 1.115
diff -c -c -r1.115 Makefile
*** src/interfaces/libpq/Makefile    6 Oct 2004 16:42:01 -0000    1.115
--- src/interfaces/libpq/Makefile    12 Oct 2004 00:56:54 -0000
***************
*** 31,43 ****
      $(filter crypt.o getaddrinfo.o inet_aton.o open.o snprintf.o strerror.o, $(LIBOBJS))

  ifeq ($(PORTNAME), win32)
! OBJS+=win32.o libpqrc.o
! libpqrc.o: libpq.rc
      windres -i libpq.rc -o libpqrc.o
  ifeq ($(enable_thread_safety), yes)
  # This doesn't work yet because configure test fails.  2004-06-19
! OBJS+=pthread-win32.o
! PTHREAD_H_WIN32=yes
  endif
  endif

--- 31,43 ----
      $(filter crypt.o getaddrinfo.o inet_aton.o open.o snprintf.o strerror.o, $(LIBOBJS))

  ifeq ($(PORTNAME), win32)
! OBJS += win32.o libpqrc.o
! libpqrc.o : libpq.rc
      windres -i libpq.rc -o libpqrc.o
  ifeq ($(enable_thread_safety), yes)
  # This doesn't work yet because configure test fails.  2004-06-19
! OBJS += pthread-win32.o
! PTHREAD_H_WIN32 = yes
  endif
  endif

***************
*** 51,57 ****
  endif


! all: $(PTHREAD_H_WIN32) all-lib

  # Shared library stuff
  include $(top_srcdir)/src/Makefile.shlib
--- 51,57 ----
  endif


! all: $(PTHREAD_H_WIN32) $(top_srcdir)/src/port/pg_config_paths.h all-lib

  # Shared library stuff
  include $(top_srcdir)/src/Makefile.shlib
***************
*** 83,88 ****
--- 83,91 ----
      rm -f $@ && $(LN_S) $< .
  endif

+ $(top_srcdir)/src/port/pg_config_paths.h:
+     $(MAKE) -C $(top_srcdir)/src/port pg_config_paths.h
+
  install: all installdirs install-lib
      $(INSTALL_DATA) $(srcdir)/libpq-fe.h $(DESTDIR)$(includedir)
      $(INSTALL_DATA) $(srcdir)/libpq-int.h $(DESTDIR)$(includedir_internal)

pgsql-patches by date:

Previous
From: Tom Lane
Date:
Subject: Re: libpq.dll on win32
Next
From: Neil Conway
Date:
Subject: contrib/xml,xml2 code cleanup