[Proj] Various fixes and improvements for mingw/cygwin builds

Charles Wilson proj at cwilson.fastmail.fm
Fri Mar 2 17:03:45 EST 2007

[sorry if this post shows up multiple times; I'm having some trouble 
with my mailer...]


This sequence of modifications and patches:
   (1) eliminates the requirement that proj clients
       use --enable-runtime-pseudo-relocs on cygwin/mingw
   (2) uses and extends Sergey Spiridonov's patch to
       add the geod functions to the library
       (a) extends: adds the geod functions to proj_api.h
           in a "clean" way, and eliminates the private
           header geodesic.h
   (3) enables the tests to run successfully when building
       proj outside the source tree.
   (4) Additional changes to support cygwin/mingw

The modified proj distribution has been tested successfully
on Cygwin, MinGW, and Linux.  In each case, test27, test83,
and testvarious pass (didn't have ntv2.gsb for the other

An expanded version of this message and the actual patch have been 
entered as bugzilla #1496:

depends on Sergey Spiridonov's #1378:


(1) I have not updated the Makefile.vc framework
(2) I have not tested or built the jni interfaces, nor
     the com/ or wince/ contributed stuff in CVS.
(3) I did not bump the version number of the library from its current
     value of 5:2:5. According to 
     that should only be done immediately before a public
     release (e.g. 4.5.1).  The changes here (actually,
     it's Sergey Spiridonov's patch that did it) only
     add new entry points to the library, so assuming no
     further changes the next version number should be

[ snipped a bunch of stuff, including various "non-patch" changes, like 
file renames, moves, and removals.  See the attachment to the bugzilla 
entry ]

I hope that this patch (and Mr. Spiridonov's) can be considered for 
application or further discussion.

Charles Wilson
proj maintainer for the cygwin platform

Describes only the changes in the main patch, but does not
describe the changes induced by the instructions above,
such as file renames or autoreconf effects.

2007-02-18  Charles Wilson  <...>

     * Makefile.am: add new subdirectory apps, and
     m4 directory for aclocal.
     * apps/Makefile.am: new file
     * apps/cs2cs.c: include proj_config.h
     * apps/emess.c: include proj_config.h
     * apps/geod.c: include proj_config.h. Do not
     include geodesic.h.
     * apps/nad2bin.c: include proj_config.h. Change
     signature of main().
     * apps/nad2nad.c: include proj_config.h. Change
     signature of main().
     * apps/proj.c: include proj_config.h. Use Win32
     file open modes on cygwin. Flush output when
     * configure.ac: declare build-aux directory. Do
     variable substitution on test scripts. Add apps/Makefile
     to output list. Add other support for building on
     * nad/Makefile.am: Add support for building outside of
     source tree. Adapt to the utility programs' new
     * nad/test27.in: Add support for building outside of
     source tree. Add workaround for MinGW/MSys oddities.
     * nad/test83.in: ditto
     * nad/testntv2.in: Add support for building outside of
     source tree. Add explanatory note for usage.
     * nad/testvarious.in: ditto
     * src/Makefile.am: remove applications. Add support for
     cygwin/mingw (including custom exports file). Remove
     * src/geod_for.c: do not include geodesic.h. Use projGeodesic
     typedef from proj_api.h instead of directly using GEODESIC_T*.
     * src/geod_inv.c: ditto
     * src/geod_set.c: ditto.  Also, remove all references to
     emess() in favor of setting pj_errno.
     * src/pj_gridinfo.c: use same format for both parent and id.
     * src/pj_init.c: Add ugly hack to work around strange
     MSys/MinGW behavior. See detailed notes within file.
     * src/pj_open_lib.c: Add more sophisticated support for Win32-
     style pathnames.
     * src/pj_strerrno.c: include proj_config.h. Add new error
     codes from geod_set.c.
     * src/proj.def: add previously missing symbols nad_init, nad_cvt,
     pj_release.  Add new symbols arising from inclusion of geod
     functions within library.
     * src/proj_api.h: Add typedef for projGeodesic/GEODESIC_T*,
     following pattern of projPJ/PJ*. Add declarations for geod
     * src/proj_config.h.in: autoheader updates.
     * src/projects.h: moved definition of GEODESIC_T from geodesic.h
     (and eliminated geodesic.h).

More information about the Proj mailing list