hurdles of ATLAS 3.9.4 build process under windows

View: New views
1 Messages — Rating Filter:   Alert me  

hurdles of ATLAS 3.9.4 build process under windows

by Sébastien Kunz-Jacques-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

While building ATLAS 3.9.4 under windows (with mingw alone or mingw+cl
for interface), I found some small problems with the lib :

* problems carriage returns in compiler version strings
  for some versions of GCC, there is a trailing carriage return in the
version string returned by gcc -v (this is the case for the current
MinGW candidate). In that case, that trailing CR gets added to the macro
definitions of file $blddir\include\atlas_buildinfo.h, and this causes
an error later in the build, which forces to remove these CR and to
restart the build.

* problems with the compiler selected for the wall timer
  when the wall timer is used, the corresponding source files are
compiled. The make definitions for these files (ATL_walltime.o,
ATL_cputime.o and time.o) are in makes/Make.sysinfo; they are compiled
with the "interface" compiler (ICC). Unfortunately they use some gcc
idioms so when the interface compiler is cl or icl, that timer cannot be
used. However, using cl as the interface compiler works well when ICC
and ICCFLAGS are replaced, for the files mentioned, by, say, XCC and
XCCFLAGS (if XCC is gcc). Why not use XCC or GOODGCC by default here?
Btw, the instructions found on
http://math-atlas.sourceforge.net/errata.html#WinPthreads are mostly
outdated (reference to $(BC) correspond to an old version of atlas I guess)
 
* problems with shared libs generation
 "make shared" does not work with MinGW, because libc which is
referenced in lib/Makefile (-lc link option) does not exist for that
target. In fact, it is better to let gcc itself figure out the options
to give to the linker. It is also convenient to generate .def files and
import libraries. For me, the lines below work with a 4.x mingw (these
are for self-contained dlls)
 
        gcc -shared -o libatlas.dll -Wl,--whole-archive libatlas.a
-Wl,--no-whole-archive
-Wl,--output-def,libatlas.def,--out-implib,libatlas_gcc.lib
        gcc -shared -o libf77blas_atlas.dll -Wl,--whole-archive
libf77blas.a -Wl,--no-whole-archive libatlas.a -lgfortran
-Wl,--output-def,libf77blas_atlas.def,--out-implib,libf77blas_atlas_gcc.lib
        gcc -shared -o libcblas_atlas.dll -Wl,--whole-archive libcblas.a
-Wl,--no-whole-archive libatlas.a  
-Wl,--output-def,libcblas_atlas.def,--out-implib,libcblas_atlas_gcc.lib
        gcc -shared -o liblapack_atlas.dll -Wl,--whole-archive
liblapack.a libf77blas.a libcblas.a -Wl,--no-whole-archive libatlas.a
-lgfortran
-Wl,--output-def,liblapack_atlas.def,--out-implib,liblapack_atlas_gcc.lib
        gcc -shared -o libptf77blas_atlas.dll -Wl,--whole-archive
libptf77blas.a -Wl,--no-whole-archive libatlas.a -lgfortran -lpthread
-Wl,--output-def,libptf77blas_atlas.def,--out-implib,libptf77blas_atlas_gcc.lib
        gcc -shared -o libptcblas_atlas.dll -Wl,--whole-archive
libptcblas.a -Wl,--no-whole-archive libatlas.a -lpthread
-Wl,--output-def,libptcblas_atlas.def,--out-implib,libptcblas_atlas_gcc.lib
        gcc -shared -o libptlapack_atlas.dll -Wl,--whole-archive
liblapack.a libptf77blas.a libptcblas.a -Wl,--no-whole-archive
libatlas.a -lgfortran -lpthread  
-Wl,--output-def,libptlapack_atlas.def,--out-implib,libptlapack_atlas_gcc.lib

  - for a cygwin gcc, -lpthreads must be removed
  - for a 3.x gcc, libgfortran must be replaced by libg2c



-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Math-atlas-devel mailing list
Math-atlas-devel@...
https://lists.sourceforge.net/lists/listinfo/math-atlas-devel