[Proj] Various fixes and improvements for mingw/cygwin builds
Charles Wilson
proj at cwilson.fastmail.fm
Fri Mar 2 14:03:45 PST 2007
[sorry if this post shows up multiple times; I'm having some trouble
with my mailer...]
INTRODUCTION
===========================================================
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
test).
An expanded version of this message and the actual patch have been
entered as bugzilla #1496:
http://bugzilla.remotesensing.org/show_bug.cgi?id=1496
depends on Sergey Spiridonov's #1378:
http://bugzilla.remotesensing.org/show_bug.cgi?id=1378
LIMITATIONS
===========================================================
(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
http://www.gnu.org/software/libtool/manual.html#Updating-version-info
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
6:0:6.
[ 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
CHANGELOG
===========================================================
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
appropriate.
* configure.ac: declare build-aux directory. Do
variable substitution on test scripts. Add apps/Makefile
to output list. Add other support for building on
cygwin/mingw.
* nad/Makefile.am: Add support for building outside of
source tree. Adapt to the utility programs' new
location.
* 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
geodesic.h.
* 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
functions.
* 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