changeset 3155:43449ab99ea2

[MSVC] enable PROJ compilation
author Michael Goffioul <michael.goffioul@gmail.com>
date Sat, 20 Jul 2013 11:55:26 -0400
parents 6665f8a98e70
children 36ac78f420b4
files src/msvc-proj-1.patch src/proj.mk
diffstat 2 files changed, 89 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/msvc-proj-1.patch	Sat Jul 20 11:55:26 2013 -0400
@@ -0,0 +1,83 @@
+diff -ur proj-4.8.0-orig/src/Makefile.am proj-4.8.0/src/Makefile.am
+--- proj-4.8.0-orig/src/Makefile.am	2012-03-07 00:58:49 -0500
++++ proj-4.8.0/src/Makefile.am	2013-07-20 11:32:41 -0400
+@@ -22,7 +22,8 @@
+ 
+ lib_LTLIBRARIES = libproj.la
+ 
+-libproj_la_LDFLAGS = -no-undefined -version-info 7:0:7
++libproj_la_CPPFLAGS = -DBUILDING_PROJ
++libproj_la_LDFLAGS = -no-undefined -version-info 7:0:7 -Wl,proj.def -export-symbols-regex "xXx"
+ 
+ libproj_la_SOURCES = \
+ 	projects.h pj_list.h \
+diff -ur proj-4.8.0-orig/src/emess.h proj-4.8.0/src/emess.h
+--- proj-4.8.0-orig/src/emess.h	2010-12-05 11:06:29 -0500
++++ proj-4.8.0/src/emess.h	2013-07-20 11:35:24 -0400
+@@ -11,7 +11,7 @@
+ 
+ #ifdef EMESS_ROUTINE	/* use type */
+ /* for emess procedure */
+-struct EMESS emess_dat = { (char *)0, (char *)0, 0 };
++PROJ_EXPORT struct EMESS emess_dat = { (char *)0, (char *)0, 0 };
+ 
+ #ifdef sun /* Archaic SunOs 4.1.1, etc. */
+ extern char *sys_errlist[];
+@@ -20,7 +20,7 @@
+ 
+ #else	/* for for calling procedures */
+ 
+-extern struct EMESS emess_dat;
++extern PROJ_EXPORT struct EMESS emess_dat;
+ void emess(int, char *, ...);
+ 
+ #endif /* use type */
+diff -ur proj-4.8.0-orig/src/proj.def proj-4.8.0/src/proj.def
+--- proj-4.8.0-orig/src/proj.def	2011-05-04 14:50:18 -0400
++++ proj-4.8.0/src/proj.def	2013-07-20 11:38:20 -0400
+@@ -53,4 +53,8 @@
+ 	pj_ctx_set_app_data       @51
+ 	pj_ctx_get_app_data       @52
+ 	pj_log 			  @53
+-	pj_clear_initcache @54
++	pj_clear_initcache 	  @54
++
++	emess			  @55
++	nad_init		  @56
++	nad_cvt			  @57
+diff -ur proj-4.8.0-orig/src/proj_api.h proj-4.8.0/src/proj_api.h
+--- proj-4.8.0-orig/src/proj_api.h	2012-02-20 20:11:24 -0500
++++ proj-4.8.0/src/proj_api.h	2013-07-20 11:35:01 -0400
+@@ -31,6 +31,16 @@
+ #ifndef PROJ_API_H
+ #define PROJ_API_H
+ 
++#ifdef _MSC_VER
++#  ifdef BUILDING_PROJ
++#    define PROJ_EXPORT __declspec(dllexport)
++#  else
++#    define PROJ_EXPORT __declspec(dllimport)
++#  endif
++#else
++#  define PROJ_EXPORT
++#endif
++
+ /* standard inclusions */
+ #include <math.h>
+ #include <stdlib.h>
+@@ -42,13 +52,13 @@
+ /* Try to update this every version! */
+ #define PJ_VERSION 480
+ 
+-extern char const pj_release[]; /* global release id string */
++extern PROJ_EXPORT char const pj_release[]; /* global release id string */
+ 
+ #define RAD_TO_DEG	57.29577951308232
+ #define DEG_TO_RAD	.0174532925199432958
+ 
+ 
+-extern int pj_errno;	/* global error return code */
++extern PROJ_EXPORT int pj_errno;	/* global error return code */
+ 
+ #if !defined(PROJECTS_H)
+     typedef struct { double u, v; } projUV;
--- a/src/proj.mk	Fri Jul 19 13:41:56 2013 -0400
+++ b/src/proj.mk	Sat Jul 20 11:55:26 2013 -0400
@@ -17,11 +17,16 @@
 endef
 
 define $(PKG)_BUILD
+    if [ $(MXE_SYSTEM) = msvc ]; then \
+	mkdir '$(1)/m4'; \
+        cd '$(1)' && autoreconf -f -i -v; \
+    fi
     cd '$(1)' && ./configure \
         $(HOST_AND_BUILD_CONFIGURE_OPTIONS) \
         $(ENABLE_SHARED_OR_STATIC) \
         --prefix='$(HOST_PREFIX)' \
-        --with-mutex
+        --with-mutex \
+	&& $(CONFIGURE_POST_HOOK)
     $(MAKE) -C '$(1)' -j '$(JOBS)'
     # remove header which is not installed since 4.8.0
     rm -f '$(HOST_INCDIR)/projects.h'