Cross-compile of 3rd-party extensions fails

Started by Boszormenyi Zoltanover 14 years ago4 messageshackers
Jump to latest
#1Boszormenyi Zoltan
zb@cybertec.at

Hi,

I am trying to cross-compile PostgreSQL 9.0.4 and a few
3rd-party external modules using Mingw32-w64 on Fedora 15
for 64-bit Windows. 64-bit Wine can be used to run the
64-bit pg_config.exe under Linux, so the USE_PGXS=1
machinery works. However, mingw64-make fails with the
following error:

[zozo@localhost postgis-1.5.3]$ mingw64-make

make -C liblwgeom
make[1]: Entering directory `/home/zozo/Sch�nig-sz�ml�k/w64/nsis/9.0/postgis-1.5.3/liblwgeom'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/zozo/Sch�nig-sz�ml�k/w64/nsis/9.0/postgis-1.5.3/liblwgeom'
make -C postgis
make[1]: Entering directory `/home/zozo/Sch�nig-sz�ml�k/w64/nsis/9.0/postgis-1.5.3/postgis'
/home/zozo/.wine/dosdevices/z:/usr/x86_64-w64-mingw32/sys-root/mingw/lib/postgresql/pgxs/src/makefiles/../../src/Makefile.port:63:
*** target pattern contains no `%'. Stop.
make[1]: Leaving directory `/home/zozo/Sch�nig-sz�ml�k/w64/nsis/9.0/postgis-1.5.3/postgis'
make: *** [postgis] Error 2

Line 63 in Makefile.port (src/makefiles/Makefile.win32 in this case) is this:

63: win32ver.rc: $(top_srcdir)/src/port/win32ver.rc
64: sed -e 's;FILEDESC;$(PGFILEDESC);' -e 's;VFT_APP;$(PGFTYPE);' -e
's;_ICO_;$(PGICOSTR);' -e 's;\(VERSION.*\),0 *$$;\1,'`date '+%y%j' | sed 's/^0*//'`';' $< >$@
65:
66: win32ver.o: win32ver.rc
67: $(WINDRES) -i $< -o $@ --include-dir=$(top_builddir)/src/include
--include-dir=$(srcdir)

Do we actually need win32ver.rc for the external MODULES/MODULE_big/PROGRAM?
win32ver.rc is not actually installed from the PostgreSQL source tree.
Commenting out the above lines in the installed Makefile.port allows make
to continue without errors.

Best regards,
Zolt�n B�sz�rm�nyi

--
----------------------------------
Zolt�n B�sz�rm�nyi
Cybertec Sch�nig & Sch�nig GmbH
Gr�hrm�hlgasse 26
A-2700 Wiener Neustadt, Austria
Web: http://www.postgresql-support.de
http://www.postgresql.at/

#2Peter Eisentraut
peter_e@gmx.net
In reply to: Boszormenyi Zoltan (#1)
Re: Cross-compile of 3rd-party extensions fails

On mån, 2011-09-19 at 10:16 +0200, Boszormenyi Zoltan wrote:

[zozo@localhost postgis-1.5.3]$ mingw64-make

make -C liblwgeom
make[1]: Entering directory `/home/zozo/Schönig-számlák/w64/nsis/9.0/postgis-1.5.3/liblwgeom'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/zozo/Schönig-számlák/w64/nsis/9.0/postgis-1.5.3/liblwgeom'
make -C postgis
make[1]: Entering directory `/home/zozo/Schönig-számlák/w64/nsis/9.0/postgis-1.5.3/postgis'
/home/zozo/.wine/dosdevices/z:/usr/x86_64-w64-mingw32/sys-root/mingw/lib/postgresql/pgxs/src/makefiles/../../src/Makefile.port:63:
*** target pattern contains no `%'. Stop.
make[1]: Leaving directory `/home/zozo/Schönig-számlák/w64/nsis/9.0/postgis-1.5.3/postgis'
make: *** [postgis] Error 2

Having a colon in a file name is not going to work with make.

#3Marko Kreen
markokr@gmail.com
In reply to: Peter Eisentraut (#2)
Re: Cross-compile of 3rd-party extensions fails

On Mon, Sep 19, 2011 at 11:27 AM, Peter Eisentraut <peter_e@gmx.net> wrote:

On mån, 2011-09-19 at 10:16 +0200, Boszormenyi Zoltan wrote:

[zozo@localhost postgis-1.5.3]$ mingw64-make

make -C liblwgeom
make[1]: Entering directory `/home/zozo/Schönig-számlák/w64/nsis/9.0/postgis-1.5.3/liblwgeom'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/zozo/Schönig-számlák/w64/nsis/9.0/postgis-1.5.3/liblwgeom'
make -C postgis
make[1]: Entering directory `/home/zozo/Schönig-számlák/w64/nsis/9.0/postgis-1.5.3/postgis'
/home/zozo/.wine/dosdevices/z:/usr/x86_64-w64-mingw32/sys-root/mingw/lib/postgresql/pgxs/src/makefiles/../../src/Makefile.port:63:
*** target pattern contains no `%'.  Stop.
make[1]: Leaving directory `/home/zozo/Schönig-számlák/w64/nsis/9.0/postgis-1.5.3/postgis'
make: *** [postgis] Error 2

Having a colon in a file name is not going to work with make.

I guess there is 'make' instead of '$(MAKE)' in Makefile somewhere?

--
marko

#4Boszormenyi Zoltan
zb@cybertec.at
In reply to: Peter Eisentraut (#2)
Re: Cross-compile of 3rd-party extensions fails

2011-09-19 10:27 keltezéssel, Peter Eisentraut írta:

On mån, 2011-09-19 at 10:16 +0200, Boszormenyi Zoltan wrote:

[zozo@localhost postgis-1.5.3]$ mingw64-make

make -C liblwgeom
make[1]: Entering directory `/home/zozo/Schönig-számlák/w64/nsis/9.0/postgis-1.5.3/liblwgeom'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/zozo/Schönig-számlák/w64/nsis/9.0/postgis-1.5.3/liblwgeom'
make -C postgis
make[1]: Entering directory `/home/zozo/Schönig-számlák/w64/nsis/9.0/postgis-1.5.3/postgis'
/home/zozo/.wine/dosdevices/z:/usr/x86_64-w64-mingw32/sys-root/mingw/lib/postgresql/pgxs/src/makefiles/../../src/Makefile.port:63:
*** target pattern contains no `%'. Stop.
make[1]: Leaving directory `/home/zozo/Schönig-számlák/w64/nsis/9.0/postgis-1.5.3/postgis'
make: *** [postgis] Error 2

Having a colon in a file name is not going to work with make.

Actually, it does work nicely. make has problems with a colon in the body of
a target name (IIRC, it's invalid, anyway but may be accepted if escaped),
but it doesn't complain if the filesystem give it filenames with colons in them.

What it really complains about it the "win32ver.rc:" target in the Makefile.port.

For cross-compiling postGIS, turns out that I only need the attached
patches applied in
/usr/x86_64-w64-mingw32/sys-root/mingw/lib/postgresql/pgxs/src
on the PostgreSQL side along with similar
OPTION = $(winepath -u `$PG_CONFIG --option` | dos2unix)
treatments in the configure.ac where needed.

Best regards,
Zoltán Böszörményi

--
----------------------------------
Zoltán Böszörményi
Cybertec Schönig & Schönig GmbH
Gröhrmühlgasse 26
A-2700 Wiener Neustadt, Austria
Web: http://www.postgresql-support.de
http://www.postgresql.at/

Attachments:

Makefile.global.patchtext/plain; name=Makefile.global.patchDownload+10-10
Makefile.port.patchtext/plain; name=Makefile.port.patchDownload+5-5