[MOAB-dev] Disable fortran in moab-5.0.0

Vijay S. Mahadevan vijay.m at gmail.com
Thu Nov 9 22:17:52 CST 2017


Hi Paul,

The presence of AC_PROG_F77, AC_PROG_FC in our autoconf scripts
informs autoreconf and the configure system to test for a fortran
compiler. This is true even if someone explicitly says
--without-fortran. Its probably a autoconf quirk but I haven't been
able to figure out how to do this cleanly.

With Eigen, all the relevant BLAS/LAPACK routines can be used directly
[1] if you have them installed and used with appropriate defines. But
in the absence of BLAS, Eigen usually provides its custom
implementation which may not be optimal for your system. But that does
potentially remove a dependency on BLAS and substitute it with Eigen.
So I don't see how that helps.

Vijay

[1] https://eigen.tuxfamily.org/dox/TopicUsingBlasLapack.html

On Thu, Nov 9, 2017 at 9:52 PM, Paul Wilson <paul.wilson at wisc.edu> wrote:
> Hi Vijay,
>
> Is it possible to compile with the optional Eigen dependency, thus not
> relying on BLAS/LAPACK at all, and also avoiding the need for FC?
>
> I didn't think so, but this message seems to imply that it is.
>
> Paul
>
>
>
> On 11/09/2017 03:22 PM, Vijay S. Mahadevan wrote:
>>
>> We used to have Eigen as a required dependency, and many of users
>> didn't specifically like this (especially distributing our own copy of
>> Eigen causing header/version conflicts). Its much easier to impose
>> BLAS/LAPACK as a dependency since on 90% of all machines, the
>> libraries are available, and now Eigen is an optional dependency. The
>> only downside is that the symbol is indecipherable without a proper FC
>> compiler. We can try something less rigorous like grepping the symbol
>> table of the library etc. If this is a very hard restriction, I can
>> look into doing a different configure check for the BLAS symbols.
>>
>> Will keep you updated.
>>
>> Vijay
>>
>> On Thu, Nov 9, 2017 at 2:57 PM, Lorenzo Botti <bottilorenzo at gmail.com>
>> wrote:
>>>
>>> Dear all,
>>> thank you for the prompt reply.
>>> May I ask you why we need blas/lapack. I've seen that you also have an
>>> eigen
>>> configure option. Maybe some blas/lapack functionality could be replaced
>>> by
>>> an eigen alternative for those who prefer to avoid fortran linking.
>>> Of coarse a OSX fix would be welcome!
>>> Bests
>>> Lorenzo
>>>
>>>
>>> On Nov 9, 2017 17:11, "Vijay S. Mahadevan" <vijay.m at gmail.com> wrote:
>>>
>>> Hi Lorenzo,
>>>
>>> Yes like Paul mentioned, we require BLAS/LAPACK libraries now for
>>> configuring MOAB, and that unfortunately imposes requirements on the
>>> Fortran compiler to see how the symbol mangling works.
>>>
>>> I am unsure whether we can make an exception with OSX here since the
>>> -framework vecLib linker options should take care of everything we
>>> need. I'll play with this today and let you know whether we can push a
>>> fix for this right away (specific for OSX).
>>>
>>> Vijay
>>>
>>> On Thu, Nov 9, 2017 at 6:46 AM, Paul Wilson <paul.wilson at wisc.edu> wrote:
>>>>
>>>> Hello Lorenzo
>>>>
>>>> As of v5.0 MOAB requires FORTRAN to link to lapack/blas.  I discovered
>>>> this
>>>> issue with building and the master branch does have this change in the
>>>> CMAKE
>>>> files.
>>>>
>>>> Paul
>>>>
>>>> -- ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ --
>>>> Paul P.H. Wilson
>>>> Grainger Professor of Nuclear Engineering
>>>> 608-263-0807
>>>> paul.wilson at wisc.edu
>>>> 443 Engineering Research Bldg
>>>> 1500 Engineering Dr, Madison, WI 53706
>>>> calendar: http://go.wisc.edu/pphw-cal
>>>>
>>>> Computational Nuclear Engineering Research Group
>>>> cnerg.engr.wisc.edu
>>>>
>>>> [sent from my iPad]
>>>>
>>>> On Nov 9, 2017, at 03:57, Lorenzo Botti <bottilorenzo at gmail.com> wrote:
>>>>
>>>> Dear all,
>>>> I’d like to move to the latest moab but I’m having trouble disabling
>>>> fortran.
>>>> I tried to modify compiler.m4 but it seems that this is not enough, see
>>>> below
>>>>
>>>> dlm249-190:moab-5.0.0 digihabia$ ./configure --disable-fortran
>>>> --disable-imesh --with-mpi=/Users/digihabia/src2/openmpi-3.0.0/openmpi/
>>>> --download-hdf5 --prefix=/Users/digihabia/src2/moab-5.0.0/moab/
>>>> checking build system type... x86_64-apple-darwin17.2.0
>>>> checking host system type... x86_64-apple-darwin17.2.0
>>>> checking target system type... x86_64-apple-darwin17.2.0
>>>> checking for a BSD-compatible install... /usr/bin/install -c
>>>> checking whether build environment is sane... yes
>>>> checking for a thread-safe mkdir -p... config/install-sh -c -d
>>>> checking for gawk... no
>>>> checking for mawk... no
>>>> checking for nawk... no
>>>> checking for awk... awk
>>>> checking whether make sets $(MAKE)... yes
>>>> checking whether make supports nested variables... yes
>>>> checking whether make supports nested variables... (cached) yes
>>>> checking for sed... sed
>>>> checking for readlink... yes
>>>> checking for dirname... yes
>>>> checking for basename... yes
>>>> checking for rsync... yes
>>>> checking for wget... no
>>>> checking for scp... yes
>>>> checking for curl... yes
>>>> checking for tar... yes
>>>> checking for unzip... yes
>>>> checking for bzip2... yes
>>>> checking for md5sum... no
>>>> checking for shasum... yes
>>>> checking for shasum... /usr/bin/shasum
>>>> checking whether ln -s works... yes
>>>> checking for mkdir... /bin/mkdir
>>>> checking whether make sets $(MAKE)... (cached) yes
>>>> checking for style of include used by make... GNU
>>>> checking for gcc...
>>>> /Users/digihabia/src2/openmpi-3.0.0/openmpi//bin/mpicc
>>>> checking whether the C compiler works... yes
>>>> checking for C compiler default output file name... a.out
>>>> checking for suffix of executables...
>>>> checking whether we are cross compiling... no
>>>> checking for suffix of object files... o
>>>> checking whether we are using the GNU C compiler... yes
>>>> checking whether /Users/digihabia/src2/openmpi-3.0.0/openmpi//bin/mpicc
>>>> accepts -g... yes
>>>> checking for /Users/digihabia/src2/openmpi-3.0.0/openmpi//bin/mpicc
>>>> option
>>>> to accept ISO C89... none needed
>>>> checking whether /Users/digihabia/src2/openmpi-3.0.0/openmpi//bin/mpicc
>>>> understands -c and -o together... yes
>>>> checking dependency style of
>>>> /Users/digihabia/src2/openmpi-3.0.0/openmpi//bin/mpicc... gcc3
>>>> checking how to run the C preprocessor...
>>>> /Users/digihabia/src2/openmpi-3.0.0/openmpi//bin/mpicc -E
>>>> checking whether we are using the GNU C++ compiler... yes
>>>> checking whether /Users/digihabia/src2/openmpi-3.0.0/openmpi//bin/mpicxx
>>>> accepts -g... yes
>>>> checking dependency style of
>>>> /Users/digihabia/src2/openmpi-3.0.0/openmpi//bin/mpicxx... gcc3
>>>> checking how to run the C++ preprocessor...
>>>> /Users/digihabia/src2/openmpi-3.0.0/openmpi//bin/mpicxx -E
>>>> checking how to get verbose linking output from ... configure: WARNING:
>>>> compilation failed
>>>>
>>>> checking for Fortran 77 libraries of ...
>>>> checking how to get verbose linking output from ... configure: WARNING:
>>>> compilation failed
>>>>
>>>> checking for Fortran libraries of ...
>>>> checking for known C compilers... Clang
>>>> checking for known compiler/OS combinations... Clang:x86_64
>>>> checking for known c++ compilers... Clang
>>>> checking for known compiler/CPU/OS combinations...
>>>> Clang:darwin17.2.0:x86_64
>>>> checking if platform is IBM BlueGene... no
>>>> checking whether ln -s works... yes
>>>> checking whether make sets $(MAKE)... (cached) yes
>>>> checking how to print strings... printf
>>>> checking for a sed that does not truncate output... sed
>>>> checking for grep that handles long lines and -e... /usr/bin/grep
>>>> checking for egrep... /usr/bin/grep -E
>>>> checking for fgrep... /usr/bin/grep -F
>>>> checking for ld used by
>>>> /Users/digihabia/src2/openmpi-3.0.0/openmpi//bin/mpicc...
>>>> /Library/Developer/CommandLineTools/usr/bin/ld
>>>> checking if the linker (/Library/Developer/CommandLineTools/usr/bin/ld)
>>>> is
>>>> GNU ld... no
>>>> checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
>>>> checking the name lister (/usr/bin/nm -B) interface... BSD nm
>>>> checking the maximum length of command line arguments... 196608
>>>> checking how to convert x86_64-apple-darwin17.2.0 file names to
>>>> x86_64-apple-darwin17.2.0 format... func_convert_file_noop
>>>> checking how to convert x86_64-apple-darwin17.2.0 file names to
>>>> toolchain
>>>> format... func_convert_file_noop
>>>> checking for /Library/Developer/CommandLineTools/usr/bin/ld option to
>>>> reload
>>>> object files... -r
>>>> checking for objdump... objdump
>>>> checking how to recognize dependent libraries... pass_all
>>>> checking for dlltool... no
>>>> checking how to associate runtime and link libraries... printf %s\n
>>>> checking for ar... ar
>>>> checking for archiver @FILE support... no
>>>> checking for strip... strip
>>>> checking for ranlib... ranlib
>>>> checking command to parse /usr/bin/nm -B output from
>>>> /Users/digihabia/src2/openmpi-3.0.0/openmpi//bin/mpicc object... ok
>>>> checking for sysroot... no
>>>> checking for a working dd... /bin/dd
>>>> checking how to truncate binary pipes... /bin/dd bs=4096 count=1
>>>> checking for mt... no
>>>> checking if : is a manifest tool... no
>>>> checking for dsymutil... dsymutil
>>>> checking for nmedit... nmedit
>>>> checking for lipo... lipo
>>>> checking for otool... otool
>>>> checking for otool64... no
>>>> checking for -single_module linker flag... yes
>>>> checking for -exported_symbols_list linker flag... yes
>>>> checking for -force_load linker flag... yes
>>>> checking for ANSI C header files... yes
>>>> checking for sys/types.h... yes
>>>> checking for sys/stat.h... yes
>>>> checking for stdlib.h... yes
>>>> checking for string.h... yes
>>>> checking for memory.h... yes
>>>> checking for strings.h... yes
>>>> checking for inttypes.h... yes
>>>> checking for stdint.h... yes
>>>> checking for unistd.h... yes
>>>> checking for dlfcn.h... yes
>>>> checking for objdir... .libs
>>>> checking if /Users/digihabia/src2/openmpi-3.0.0/openmpi//bin/mpicc
>>>> supports
>>>> -fno-rtti -fno-exceptions... yes
>>>> checking for /Users/digihabia/src2/openmpi-3.0.0/openmpi//bin/mpicc
>>>> option
>>>> to produce PIC... -fno-common -DPIC
>>>> checking if /Users/digihabia/src2/openmpi-3.0.0/openmpi//bin/mpicc PIC
>>>> flag
>>>> -fno-common -DPIC works... yes
>>>> checking if /Users/digihabia/src2/openmpi-3.0.0/openmpi//bin/mpicc
>>>> static
>>>> flag -static works... no
>>>> checking if /Users/digihabia/src2/openmpi-3.0.0/openmpi//bin/mpicc
>>>> supports
>>>> -c -o file.o... yes
>>>> checking if /Users/digihabia/src2/openmpi-3.0.0/openmpi//bin/mpicc
>>>> supports
>>>> -c -o file.o... (cached) yes
>>>> checking whether the
>>>> /Users/digihabia/src2/openmpi-3.0.0/openmpi//bin/mpicc
>>>> linker (/Library/Developer/CommandLineTools/usr/bin/ld) supports shared
>>>> libraries... yes
>>>> checking dynamic linker characteristics... darwin17.2.0 dyld
>>>> checking how to hardcode library paths into programs... immediate
>>>> checking for dlopen in -ldl... yes
>>>> checking whether a program can dlopen itself... yes
>>>> checking whether a statically linked program can dlopen itself... yes
>>>> checking whether stripping libraries is possible... yes
>>>> checking if libtool supports shared libraries... yes
>>>> checking whether to build shared libraries... no
>>>> checking whether to build static libraries... yes
>>>> checking how to run the C++ preprocessor...
>>>> /Users/digihabia/src2/openmpi-3.0.0/openmpi//bin/mpicxx -E
>>>> checking for ld used by
>>>> /Users/digihabia/src2/openmpi-3.0.0/openmpi//bin/mpicxx...
>>>> /Library/Developer/CommandLineTools/usr/bin/ld
>>>> checking if the linker (/Library/Developer/CommandLineTools/usr/bin/ld)
>>>> is
>>>> GNU ld... no
>>>> checking whether the
>>>> /Users/digihabia/src2/openmpi-3.0.0/openmpi//bin/mpicxx
>>>> linker (/Library/Developer/CommandLineTools/usr/bin/ld) supports shared
>>>> libraries... yes
>>>> checking for /Users/digihabia/src2/openmpi-3.0.0/openmpi//bin/mpicxx
>>>> option
>>>> to produce PIC... -fno-common -DPIC
>>>> checking if /Users/digihabia/src2/openmpi-3.0.0/openmpi//bin/mpicxx PIC
>>>> flag
>>>> -fno-common -DPIC works... yes
>>>> checking if /Users/digihabia/src2/openmpi-3.0.0/openmpi//bin/mpicxx
>>>> static
>>>> flag -static works... no
>>>> checking if /Users/digihabia/src2/openmpi-3.0.0/openmpi//bin/mpicxx
>>>> supports
>>>> -c -o file.o... yes
>>>> checking if /Users/digihabia/src2/openmpi-3.0.0/openmpi//bin/mpicxx
>>>> supports
>>>> -c -o file.o... (cached) yes
>>>> checking whether the
>>>> /Users/digihabia/src2/openmpi-3.0.0/openmpi//bin/mpicxx
>>>> linker (/Library/Developer/CommandLineTools/usr/bin/ld) supports shared
>>>> libraries... yes
>>>> checking dynamic linker characteristics... darwin17.2.0 dyld
>>>> checking how to hardcode library paths into programs... immediate
>>>> checking whether byte ordering is bigendian... no
>>>> checking for gunzip... gunzip -c
>>>> checking for gzip... (cached) gunzip -c
>>>> checking for zcat... (cached) gunzip -c
>>>> checking if C++ compiler supports template class specialization... yes
>>>> checking if C++ compiler supports template function specialization...
>>>> yes
>>>> checking if /Users/digihabia/src2/openmpi-3.0.0/openmpi//bin/mpicxx
>>>> works...
>>>> yes
>>>> checking for vsnprintf... yes
>>>> checking for vsprintf... yes
>>>> checking for clock... yes
>>>> checking for times... yes
>>>> checking for cbrt... yes
>>>> checking if std::vector has templatized insert method... yes
>>>> checking if std::copy must be old SGI format... no
>>>> checking for ANSI C header files... (cached) yes
>>>> checking fcntl.h usability... yes
>>>> checking fcntl.h presence... yes
>>>> checking for fcntl.h... yes
>>>> checking for strings.h... (cached) yes
>>>> checking sys/file.h usability... yes
>>>> checking sys/file.h presence... yes
>>>> checking for sys/file.h... yes
>>>> checking sys/time.h usability... yes
>>>> checking sys/time.h presence... yes
>>>> checking for sys/time.h... yes
>>>> checking for unistd.h... (cached) yes
>>>> checking for inttypes.h... (cached) yes
>>>> checking for stdint.h... (cached) yes
>>>> checking stddef.h usability... yes
>>>> checking stddef.h presence... yes
>>>> checking for stddef.h... yes
>>>> checking for stdlib.h... (cached) yes
>>>> checking ieeefp.h usability... no
>>>> checking ieeefp.h presence... no
>>>> checking for ieeefp.h... no
>>>> checking termios.h usability... yes
>>>> checking termios.h presence... yes
>>>> checking for termios.h... yes
>>>> checking for sys/types.h... (cached) yes
>>>> checking sys/ioctl.h usability... yes
>>>> checking sys/ioctl.h presence... yes
>>>> checking for sys/ioctl.h... yes
>>>> checking size of void *... 8
>>>> checking for size_t... yes
>>>> checking for ptrdiff_t... yes
>>>> checking for dlopen in -ldl... (cached) yes
>>>> checking for compress in -lz... yes
>>>> checking for pow in -lm... yes
>>>> checking for dummy main to link with Fortran libraries... none
>>>> checking for Fortran name-mangling scheme... configure: error: in
>>>> `/Users/digihabia/src2/moab-5.0.0':
>>>> configure: error: cannot compile a simple Fortran program
>>>> See `config.log' for more details
>>>
>>>
>
> --
> -- ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ --
>
> Paul P.H. Wilson
> Grainger Professor of Nuclear Engineering
> 608-263-0807
> paul.wilson at wisc.edu
> 443 Engineering Research Bldg
> 1500 Engineering Dr, Madison, WI 53706
> calendar: http://go.wisc.edu/pphw-cal
>
> Computational Nuclear Engineering Research Group
> cnerg.engr.wisc.edu
>


More information about the moab-dev mailing list