| Bill Allombert on Sat, 19 Dec 2009 15:47:49 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: A patch for native PARI/GP build on Windows (Mingw+Msys) |
Hello Vasili,
I have some questions about your patch.
On Thu, Dec 17, 2009 at 06:07:10PM +0200, Vasili Burdo wrote:
> Index: config/get_dlld
> ===================================================================
> --- config/get_dlld (revision 12034)
> +++ config/get_dlld (working copy)
> @@ -27,6 +27,7 @@
> # On FreeBSD 2.2.5 (Y. Uchikawa) and Cygwin, this does not work.
> case "$osname" in
> freebsd|cygwin) DL_DFLT_NAME="\\\"\$(LIBPARI_DYN)\\\"" ;;
> + mingw) DL_DFLT_NAME="\\\"\$(LIBPARI_SO)\\\"" ;;
> *) DL_DFLT_NAME=NULL ;;
> esac
Do you know why DL_DFLT_NAME=$(LIBPARI_DYN) does not work here ? It did not
work with wine and this is strange because LIBPARI_SO is a symlink to
LIBPARI_DYN. Using LIBPARI_DYN is more correct, because LIBPARI_SO should only
be used by the compile-time linker. Maybe there is a better way.
> @@ -84,6 +85,7 @@
> case "$osname" in
> os2) DLLDFLAGS="$CFLAGS -Zdll" ;; # assume DLLD = gcc
> cygwin) DLLDFLAGS="-Wl,--out-implib=\$(LIBPARI_SO)\$(_A),--export-all-symbols";;
> + mingw) DLLDFLAGS="-Wl,--out-implib=\$(LIBPARI_SO)\$(_A)";;
> esac
> if test -n "$DLLDisGCC"; then
> case "$arch" in
Do you know why this is different from cygwin ?
> Index: config/Makefile.SH
> ===================================================================
> --- config/Makefile.SH (revision 12034)
> +++ config/Makefile.SH (working copy)
> @@ -48,6 +48,10 @@
> export_file=pari.def; export_create="emxexp -u"
> # Actually, the build will fail until the switch to -Zomf
> dlld_ignore=- ;;
> + mingw)
> + CFLAGS="$CFLAGS -fno-omit-frame-pointer"
> + export_file='$(LIBPARI).def'
> + ;;
> esac
What is the purpose of 'CFLAGS="$CFLAGS -fno-omit-frame-pointer"' ?
This cause CFLAGS to have -fno-omit-frame-pointer twice
(at least when cross-compiling).
> +if test "$osname" = "mingw"; then
> +cat >> $file << EOT
> +
> +#undef UNIX
> +#undef GPDATADIR
> +#define GPDATADIR win32_GPDATADIR()
This does not seems correct.
> Index: src/systems/mingw/mingw.c
> ===================================================================
> --- src/systems/mingw/mingw.c (revision 0)
> +++ src/systems/mingw/mingw.c (revision 0)
> @@ -0,0 +1,93 @@
> +#include <windows.h>
> +#include <stdio.h>
> +
> +const char*
> +win32_GPDATADIR()
> +{
> + static char datadir[1024] = {0};
> + if( 0 == *datadir ) {
> + char* slash;
> + GetModuleFileNameA(0, datadir, sizeof(datadir) );
> + slash = strrchr(datadir, '\\');
> + if( slash ) *(slash+1) = 0;
> + //while( (slash = strchr(datadir, '\\')) )
> + // *slash = '/';
> + strcat(datadir, "gp-data");
> + }
> + return datadir;
> +}
I do not understand what this is doing. Cannot you do that in Configure
instead ?
Cheers,
Bill.