Re: cygwin build failure - Mailing list pgsql-hackers

From Bruce Momjian
Subject Re: cygwin build failure
Date
Msg-id 200411072047.iA7KlNH14952@candle.pha.pa.us
Whole thread Raw
In response to Re: cygwin build failure  (Bruce Momjian <pgman@candle.pha.pa.us>)
Responses Re: cygwin build failure  (Bruce Momjian <pgman@candle.pha.pa.us>)
List pgsql-hackers
I am all wrong on the following.  It turns out we need a special linker
flag on Cygwin to allow the linker to link to the first available symbol
in the library (like Unix), and MinGW has a similar flag that we can use
to prevent the pg_dump/Makefile hack on MinGW too!

Working on a patch now.

---------------------------------------------------------------------------

Bruce Momjian wrote:
> Andrew Dunstan wrote:
> > 
> > 
> > Reini Urban wrote:
> > 
> > >>
> > >> ...
> > >>  >Info: resolving _optarg by linking to __imp__optarg (auto-import)
> > >>  >Info: resolving _optind by linking to __imp__optind (auto-import)
> > >
> > >
> > > ok, i'm sure now.
> > > there's no way to ignore those diagnostics on the ld side.
> > 
> > 
> > It's a minor annoyance at worst. Not worth spending effort on.  The 
> > issue in these lines is the important one:
> > 
> > ccache gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Wendif-labels -fno-strict-aliasing -g pg_dump.o common.o
pg_dump_sort.opg_backup_archiver.o pg_backup_db.o pg_backup_custom.o pg_backup_files.o pg_backup_null.o pg_backup_tar.o
dumputils.o ../../../src/backend/parser/keywords.o -L../../../src/interfaces/libpq -lpq -L../../../src/port
-L/usr/local/lib -lpgport -lz -lreadline -lcrypt -o pg_dump.exe
 
> > ../../../src/port/libpgport.a(pgstrcasecmp.o)(.text+0x1b0): In function `pg_tolower':
> > /home/adunstan/pgbf/root/HEAD/pgsql.4040/src/port/pgstrcasecmp.c:119: multiple definition of `_pg_tolower'
> > ../../../src/interfaces/libpq/libpq.a(dqgds00145.o)(.text+0x0): first defined here
> > 
> 
> Agreed.  What could be the solution?  I know it is caused by calling
> pg_strcasecmp in exec.c.
> 
> I think I see it now.  I added this to pg_dump/Makefile:
>     
>     # Not sure why MinGW needs this but it prevents a link failure
>     # of duplicate definitions for pg_tolower().  2004-10-06
>     ifeq ($(PORTNAME), win32)
>     EXTRA_OBJS += $(top_builddir)/src/port/exec.o
>     endif
> 
> Now, the big question is if you remove this from the Makefile, does
> Cygwin compile OK, and if not, why does that fail?  I am thinking we
> need to run ranlib on Cygwin to fix this properly.  My BSD ranlib manual
> page has:
> 
> ---------------------------------------------------------------------------
> 
>        ranlib [-v|-V] archive
> 
> DESCRIPTION
>        ranlib  generates  an index to the contents of an archive,
>        and stores it in the archive.  The index lists each symbol
>        defined  by  a  member of an archive that is a relocatable
>        object file.
> 
>        An archive with such an index speeds up linking to the li-
>        brary,  and  allows  routines  in the library to call each
>        other without regard to their placement in the archive.
> 
>        The GNU ranlib program is another form of GNU ar;  running
>        ranlib is completely equivalent to executing `ar -s'.
> 
> 
> -- 
>   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
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
> 
>                http://www.postgresql.org/docs/faqs/FAQ.html
> 

--  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,
Pennsylvania19073
 


pgsql-hackers by date:

Previous
From: Greg Stark
Date:
Subject: Re: Documentation on PITR still scarce
Next
From: Tom Lane
Date:
Subject: Re: pg_resetxlog options