diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2015-07-09 19:24:05 +0200 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2015-07-09 19:24:05 +0200 |
| commit | 9f05b2dd07712d35fe3fa78934631b6a0142891f (patch) | |
| tree | 7f60956bddca449be290ffda0298e40e524e9d98 | |
| parent | d895a12eee04c04a254f2a5a759f763e2fc28519 (diff) | |
| download | PROJ-9f05b2dd07712d35fe3fa78934631b6a0142891f.tar.gz PROJ-9f05b2dd07712d35fe3fa78934631b6a0142891f.zip | |
Make multistresstext.exe compile, and work, with mingw cross compiler (autoconf build)
| -rw-r--r-- | Makefile.in | 1 | ||||
| -rw-r--r-- | cmake/Makefile.in | 1 | ||||
| -rwxr-xr-x | configure | 47 | ||||
| -rw-r--r-- | configure.in | 6 | ||||
| -rw-r--r-- | jniwrap/Makefile.in | 1 | ||||
| -rw-r--r-- | jniwrap/org/Makefile.in | 1 | ||||
| -rw-r--r-- | jniwrap/org/proj4/Makefile.in | 1 | ||||
| -rw-r--r-- | man/Makefile.in | 1 | ||||
| -rw-r--r-- | man/man1/Makefile.in | 1 | ||||
| -rw-r--r-- | man/man3/Makefile.in | 1 | ||||
| -rw-r--r-- | nad/Makefile.in | 1 | ||||
| -rw-r--r-- | src/Makefile.am | 4 | ||||
| -rw-r--r-- | src/Makefile.in | 5 | ||||
| -rw-r--r-- | src/multistresstest.c | 24 |
14 files changed, 89 insertions, 6 deletions
diff --git a/Makefile.in b/Makefile.in index 5fe6be41..7d3fbcc0 100644 --- a/Makefile.in +++ b/Makefile.in @@ -289,6 +289,7 @@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ +THREAD_LIB = @THREAD_LIB@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ diff --git a/cmake/Makefile.in b/cmake/Makefile.in index bd9b8629..c7108fd3 100644 --- a/cmake/Makefile.in +++ b/cmake/Makefile.in @@ -177,6 +177,7 @@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ +THREAD_LIB = @THREAD_LIB@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ @@ -635,6 +635,7 @@ ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS +THREAD_LIB MUTEX_SETTING JNI_INCLUDE CPP @@ -12575,8 +12576,52 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mutexes" >&5 $as_echo_n "checking for mutexes... " >&6; } +THREAD_LIB="" if test "$with_mutex" = yes -o x"$with_mutex" = x ; then MUTEX_SETTING=pthread + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5 +$as_echo_n "checking for pthread_create in -lpthread... " >&6; } +if ${ac_cv_lib_pthread_pthread_create+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpthread $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_create (); +int +main () +{ +return pthread_create (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_pthread_pthread_create=yes +else + ac_cv_lib_pthread_pthread_create=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_create" >&5 +$as_echo "$ac_cv_lib_pthread_pthread_create" >&6; } +if test "x$ac_cv_lib_pthread_pthread_create" = xyes; then : + PTHREAD_EXISTS=YES +fi + + if test -n "$PTHREAD_EXISTS" ; then + THREAD_LIB="-lpthread" + fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_mutexattr_settype in -lpthread" >&5 $as_echo_n "checking for pthread_mutexattr_settype in -lpthread... " >&6; } if ${ac_cv_lib_pthread_pthread_mutexattr_settype+:} false; then : @@ -12632,6 +12677,8 @@ fi MUTEX_SETTING=$MUTEX_SETTING +THREAD_LIB=$THREAD_LIB + ac_config_files="$ac_config_files Makefile cmake/Makefile src/Makefile man/Makefile man/man1/Makefile man/man3/Makefile nad/Makefile jniwrap/Makefile jniwrap/org/Makefile jniwrap/org/proj4/Makefile" diff --git a/configure.in b/configure.in index b0f7176b..20e929ca 100644 --- a/configure.in +++ b/configure.in @@ -90,8 +90,13 @@ AC_ARG_WITH([mutex], [Disable real mutex locks (lacking pthreads)]),,) AC_MSG_CHECKING([for mutexes]) +THREAD_LIB="" if test "$with_mutex" = yes -o x"$with_mutex" = x ; then MUTEX_SETTING=pthread + AC_CHECK_LIB(pthread,pthread_create,PTHREAD_EXISTS=YES,,,) + if test -n "$PTHREAD_EXISTS" ; then + THREAD_LIB="-lpthread" + fi AC_CHECK_LIB(pthread,pthread_mutexattr_settype,,,) AC_MSG_RESULT([enabled, pthread]) else @@ -100,6 +105,7 @@ else fi AC_SUBST(MUTEX_SETTING,$MUTEX_SETTING) +AC_SUBST(THREAD_LIB,$THREAD_LIB) AC_OUTPUT(Makefile cmake/Makefile src/Makefile man/Makefile man/man1/Makefile \ man/man3/Makefile nad/Makefile \ diff --git a/jniwrap/Makefile.in b/jniwrap/Makefile.in index 07463d22..4b1dc5c8 100644 --- a/jniwrap/Makefile.in +++ b/jniwrap/Makefile.in @@ -237,6 +237,7 @@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ +THREAD_LIB = @THREAD_LIB@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ diff --git a/jniwrap/org/Makefile.in b/jniwrap/org/Makefile.in index c5dc6a9b..289f9b79 100644 --- a/jniwrap/org/Makefile.in +++ b/jniwrap/org/Makefile.in @@ -237,6 +237,7 @@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ +THREAD_LIB = @THREAD_LIB@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ diff --git a/jniwrap/org/proj4/Makefile.in b/jniwrap/org/proj4/Makefile.in index d2691e2a..b3465be2 100644 --- a/jniwrap/org/proj4/Makefile.in +++ b/jniwrap/org/proj4/Makefile.in @@ -177,6 +177,7 @@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ +THREAD_LIB = @THREAD_LIB@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ diff --git a/man/Makefile.in b/man/Makefile.in index 835acba8..178eeb41 100644 --- a/man/Makefile.in +++ b/man/Makefile.in @@ -237,6 +237,7 @@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ +THREAD_LIB = @THREAD_LIB@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ diff --git a/man/man1/Makefile.in b/man/man1/Makefile.in index 9652baa7..aff916d0 100644 --- a/man/man1/Makefile.in +++ b/man/man1/Makefile.in @@ -208,6 +208,7 @@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ +THREAD_LIB = @THREAD_LIB@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ diff --git a/man/man3/Makefile.in b/man/man3/Makefile.in index bd5ebd67..24007b03 100644 --- a/man/man3/Makefile.in +++ b/man/man3/Makefile.in @@ -208,6 +208,7 @@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ +THREAD_LIB = @THREAD_LIB@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ diff --git a/nad/Makefile.in b/nad/Makefile.in index 6cc682cb..4cc945c5 100644 --- a/nad/Makefile.in +++ b/nad/Makefile.in @@ -207,6 +207,7 @@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ +THREAD_LIB = @THREAD_LIB@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ diff --git a/src/Makefile.am b/src/Makefile.am index a996cbae..e53e7082 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -24,8 +24,8 @@ proj_LDADD = libproj.la cs2cs_LDADD = libproj.la nad2bin_LDADD = libproj.la geod_LDADD = libproj.la -multistresstest_LDADD = libproj.la -lpthread -test228_LDADD = libproj.la -lpthread +multistresstest_LDADD = libproj.la @THREAD_LIB@ +test228_LDADD = libproj.la @THREAD_LIB@ lib_LTLIBRARIES = libproj.la diff --git a/src/Makefile.in b/src/Makefile.in index a71265df..856cd107 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -324,6 +324,7 @@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ +THREAD_LIB = @THREAD_LIB@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ @@ -398,8 +399,8 @@ proj_LDADD = libproj.la cs2cs_LDADD = libproj.la nad2bin_LDADD = libproj.la geod_LDADD = libproj.la -multistresstest_LDADD = libproj.la -lpthread -test228_LDADD = libproj.la -lpthread +multistresstest_LDADD = libproj.la @THREAD_LIB@ +test228_LDADD = libproj.la @THREAD_LIB@ lib_LTLIBRARIES = libproj.la libproj_la_LDFLAGS = -no-undefined -version-info 9:0:0 libproj_la_SOURCES = \ diff --git a/src/multistresstest.c b/src/multistresstest.c index d9c9aea0..e9da3323 100644 --- a/src/multistresstest.c +++ b/src/multistresstest.c @@ -287,8 +287,11 @@ static void *PosixTestThread( void *pData ) /************************************************************************/ /* main() */ /************************************************************************/ -int main( int argc, char **argv ) - +#ifdef _WIN32 +static DWORD WINAPI do_main( LPVOID unused ) +#else +int do_main(void) +#endif { /* -------------------------------------------------------------------- */ /* Our first pass is to establish the correct answers for all */ @@ -393,3 +396,20 @@ int main( int argc, char **argv ) return 0; } + + +int main( int argc, char **argv ) +{ +#ifdef _WIN32 + /* This is an incredible weirdness but with mingw cross-compiler */ + /* 1. - b/a; where double a = 6378206.4; and double b = 6356583.8; */ + /* does not evaluate the same in the main thread or in a thread forked */ + /* by CreateThread(), so run the main in a thread... */ + HANDLE thread = CreateThread(NULL, 0, do_main, NULL, 0, NULL); + WaitForSingleObject(thread, INFINITE); + CloseHandle( thread ); +#else + do_main(); +#endif + return 0; +} |
