I tried building MUMPS.jl against the shared MUMPS library built via Homebrew. An advantage is that we can call brew to discover the location of the library, so there's no need to package the MUMPS source code. Here's a sample Makefile:
prefix = $(shell brew --prefix mumps)
libdir = $(prefix)/lib
incdir = $(prefix)/include
SRC = mumps_cmplx_p.f90 mumps_p.f90 call_mumps_cmplx_p.f90 call_mumps_p.f90
LIB = -L$(libdir) -ldmumps -lzmumps -lmumps_common -lpord
%.o: %.f90
gfortran -I$(incdir) -fPIC -fcray-pointer -c $<
all: ${SRC:.f90=.o}
libtool -dynamic -undefined dynamic_lookup ${SRC:.f90=.o} -o ../lib/MUMPS $(LIB)
clean:
rm ../lib/MUMPS
This Makefile assumes that the parallel MUMPS library was built. If the sequential library was built (with brew install mumps --without-mpi), incdir becomes $(prefix)/libexec/include and we must add -lmpiseq to LIB.
This compiles but it seems something needs to be updated in the interface:
$ julia ../tests/testTwoSystem.jl
Factorize complex matrix
WARNING: convert{T}(p::Type{Ptr{T}},a::Array) is deprecated, use convert(p,pointer(a)) instead.
(sorry I'm too new to Julia to know what that message means). I'm also getting a bunch of messages of the form:
** On entry to ZGEMM parameter number 4 had an illegal value
I tried building
MUMPS.jlagainst the shared MUMPS library built via Homebrew. An advantage is that we can callbrewto discover the location of the library, so there's no need to package the MUMPS source code. Here's a sampleMakefile:This
Makefileassumes that the parallel MUMPS library was built. If the sequential library was built (withbrew install mumps --without-mpi),incdirbecomes$(prefix)/libexec/includeand we must add-lmpiseqtoLIB.This compiles but it seems something needs to be updated in the interface:
(sorry I'm too new to Julia to know what that message means). I'm also getting a bunch of messages of the form: