byuflowlab / FLOWExaFMM.jl

Julia wrapper of ExaFMM with modifications for a vortex solver
4 stars 3 forks source link

Windows compatibility #6

Open davegelwan opened 1 year ago

davegelwan commented 1 year ago

I was unable to install this package on Windows 10. I worked through some issues compiling/linking the C++ dependency, but was unable to load it in Julia.

I tried using MinGW 64-bit to run the build.sh script (which calls ./configure and make). At first, there was a configure error regarding OpenMP: configure: error: don't know how to enable OpenMP and this error for finding an MPI library: configure: error: could not find mpi library for --enable-mpi

I followed these instructions for combining MSMPI with GCC. I made the following changes to the build.sh script to link against libmsmpi.a: image

Next, there was an error due to a space in the MinGW installation path: image (162) This was resolved by replacing all $(SHELL) with "$(SHELL)" in Makefile.in

Next, the Makefile generated from configure has the JLCXX_H include path commented out image (164)

Finally, srand48 and drand48 functions do not exist on Windows: image This can be addressed via: https://social.msdn.microsoft.com/Forums/vstudio/en-US/9356f151-51d2-412d-8889-d53230cc6ec9/porting-srand48-and-drand48-of-unix-like-platform-based-source?forum=vclanguage

After all those changes, I was able to successfully compile, link, and generate fmm.so. Unfortunately, it does not load in Julia: image (166) I had to add the file extension to @wrapmodule(joinpath(module_path, "fmm")) --> @wrapmodule(joinpath(module_path, "fmm.so.exe"))