[gmx-developers] Minor CMAKE/fftw3 problem VS2010 x64 - finally solved

Mirco Wahab mirco.wahab at chemie.tu-freiberg.de
Tue Feb 28 00:42:08 CET 2012

Am 28.02.2012 00:02, schrieb Roland Schulz:
>     cmake -G "Visual Studio 10 Win64"       ^
>       -DCMAKE_INSTALL_PREFIX="D:/Gromacs46"  ^
>       -DCMAKE_PREFIX_PATH=D:/Lib64           ^
>       -DGMX_GSL=ON                           ^
>       -DCMAKE_C_FLAGS=" /openmp /wd4273 /DGSL_DLL /DFFTW_DLL /DWIN32
>     /D_WINDOWS /W3 /Zm1000" ^
>        ..\gromacs
> Why do you need the /D(GSL|FFTW)_DLL options? For FFTW it seems to work
> without (never tried GSL on Windows)?

If you use the same header file on windows for building
the shared library (dll) and using the library (gsl.h, fftw3.h),
the  functions exported get different signatures, eg. (from fftw3.h)

    FFTW_EXTERN void X(execute_dft)(const X(plan) p, C *in, C *out);

For building the shared library:
    define FFTW_EXTERN extern __declspec(dllexport)
for using the shared library:
    define FFTW_EXTERN extern __declspec(dllimport)

When using static linkage, it's simply
    define FFTW_EXTERN extern
for either one.

If the libraries are build as dll, then
(eg.) FFTW_DLL and COMPILING_FFTW are defined,
if they are "used" (like here), FFTW_DLL generates
the correct signature  __declspec(dllexport) (same with GSL).

This wouldn't be necessary if we had patched header files
with the correct exports hard coded. This would be possible too.

>     devenv Gromacs.sln /build Release ^
>         /project ALL_BUILD /projectconfig Release ^
>         /project RUN_TESTS /project INSTALL
>     (with '^' beeing the "line continuation" in windows cmd scripts.)
>     To make this happen, there are two minor patches in src/tools/geminate.c
>     and src/tools/gmx_kinetics.c necessary.
>     (http://spule.compch.tu-freiberg.de/~wahab/gromacs/win.4.6-dev-20120226.diff)
>     I already "comitted" them to a newly created gerrit-account
>     but I'm not sure if I made no mistake.
> I can't see them on https://gerrit.gromacs.org . Let me know if you need
> help.

I can't push any modification from windows git due to ssh error I can't
figure out:
   $ git push origin HEAD:refs/for/master
     The server's host key is not cached in the registry. You
     have no guarantee that the server is the computer you
     think it is.
     The server's rsa2 key fingerprint is:
     ssh-rsa 2048 fe:0d:87:74:37:7b:44:76:7b:0b:04:67:1a:4b:86:d1
     Connection abandoned.
     fatal: The remote end hung up unexpectedly

But is *is* cached in  ~/.ssh/known_hosts (copied from "my" gerrit page):
    $ cat ~/.ssh/known_hosts
    gerrit.gromacs.org, ssh-rsa

But what's meant by "not cached in the registry"? Hmmm ...

The windows git/ssh (under mingw32) seems fragile. I'll try to figure ...

   $ git --version
   git version 1.7.9.msysgit.0

Thanks & Regards


More information about the gromacs.org_gmx-developers mailing list