#24 make build error on cygwin with mingw 64



I am getting the following error during make build:

ATL_dnrm2_xp0yp0aXbX.c:5:5: error: #error "This kernel requires x86 gas 32 or 64 bit x86 assembler!"

It's the output of the command:

/cygdrive/c/proj1/ATLAS3.10.1/Linux_C2D64SSE3/mgwgcc -fomit-frame-pointer -mfpmath=sse -O2 -fno-schedule-insns2 -msse3 -m64 -m64 -x assembler-with-cpp -DL2SIZE=4194304 -I/cygdrive/c/proj1/ATLAS3.10.1/Linux_C2D64SSE3/include -I/cygdrive/c/proj1/ATLAS3.10.1/Linux_C2D64SSE3/..//include -I/cygdrive/c/proj1/ATLAS3.10.1/Linux_C2D64SSE3/..//include/contrib -DAdd_ -DF77_INTEGER=int -DStringSunStyle -DATL_OS_Win64 -DATL_ARCH_Corei1 -DATL_CPUMHZ=2394 -DGCCWIN -DUseClock -DATL_SSE3 -DATL_SSE2 -DATL_SSE1 -DATL_USE64BITS -m64 -DPentiumCPS=2400 -DATL_FULL_LAPACK -DATL_NCPU=4 -DDREAL -o ATL_dnrm2_xp0yp0aXbX.o -c ATL_dnrm2_xp0yp0aXbX.c

Thanks for your help.


  • RRCC

    Digging a bit deeper into the C generated files, the error is thrown because the macro ATL_GAS_x8664 is not defined.

    Grepping over this macro in the entire tree of directories, I could find a #define for ATL_GAS_ARM, ATL_GAS_PPC and ATL_GAS_LINUX_PPC; as well as ATL_AS_OSX_PPC and ATL_AS_AIX_PPC.

    But nothing for ATL_GAS_x8664. If I did not miss something, then it seems that this macro was never defined.

    Then either this macro was not supposed to be used in the C generated files and I have some configuration problem. Or something is not yet ready for cygwin under Windows.

    I am stuck!
    I will try manually defining this macro and see if it works (I gave it a quick try but I may need to clean all files and restart).

  • Hi,

    This flag is normally probed for and set during the configure state. However, it does not work on Win64, since Windows made their own assembly ABI rather than following the standard one (unlike Win32, which followed the pre-existing standard).

    So, ATLAS can now run on 64-bit Windows, but you don't get to use all the fast assembly kernels, which hurts your performance :(

    So, have you followed these directions:

    Let me know,

  • RRCC

    Thanks Clint!
    It's working now (I should have checked the errata file).
    Although it hasn't finished building the library yet; it takes several hours it seems.

    I cannot find where the prebuilt libraries are located. Any link?

    Best regards.

  • RRCC

    Hi Clint,

    make build finished.
    But make check failed.
    The last few lines are:

    mql.c:(.text+0x12f): undefined reference to `sormql_'
    collect2: ld returned 1 exit status

    MINGW COMPILER WRAP '/cygdrive/c/proj1/ATLAS3.10.1/Linux_C2D64SSE3/mgwgfortran'
    GAVE ERROR FOR `/usr/bin/x86_64-w64-mingw32-gfortran.exe -O -msse3 -m64 -static
    -o xsqrtst sqrtst.o c://proj1/ATLAS3.10.1/Linux_C2D64SSE3/lib/libtstatlas.a c://
    proj1/ATLAS3.10.1/Linux_C2D64SSE3/lib/liblapack.a c://proj1/ATLAS3.10.1/Linux_C2
    D64SSE3/lib/libcblas.a c://proj1/ATLAS3.10.1/Linux_C2D64SSE3/lib/libf77blas.a c:
    //proj1/ATLAS3.10.1/Linux_C2D64SSE3/lib/libatlas.a -lkernel32 -lm'

    Makefile:1757: recipe for target xsqrtst' failed make[3]: *** [xsqrtst] Error 1 make[3]: Leaving directory/cygdrive/c/proj1/ATLAS3.10.1/Linux_C2D64SSE3/bin'
    Makefile:375: recipe for target sanity_test' failed make[2]: *** [sanity_test] Error 2 make[2]: Leaving directory/cygdrive/c/proj1/ATLAS3.10.1/Linux_C2D64SSE3/bin'
    Make.top:27: recipe for target sanity_test' failed make[1]: *** [sanity_test] Error 2 make[1]: Leaving directory/cygdrive/c/proj1/ATLAS3.10.1/Linux_C2D64SSE3'
    Makefile:577: recipe for target `test' failed
    make: *** [test] Error 2

    If you have a link to a prebuilt library for windows on Intel core i5, let me know.

    Best regards.