[Partially Solved] [Compiling Qt 5.4] MingW Intrinsic / conflicting declaration of '__m64 _m_pswapd(__m64)' with 'C' linkage



  • EDIT: Changed Thread Title as it seems to be a Compiler related Bug. Will do a Full Bug Report in Jira later today.

    If anyone has found a Solution for that 4 years old Bug, please let me know. Thanks :)

    Hello Forum.

    I have a strange Problem since the 5.4 Alpha [I have not tested the Beta or RC]:

    Whenever I try to compile Qt 5.4, it fails after 5 Minutes with the above Error.
    And before someone is asking: Compiling Qt Source prior to 5.4 (incl. 5.3.2) with all Examples and Tests, is working fine without any kind of Error (well, besides the usual "bad escape sequence" Stuff in some Files - but this is existent since 5.0 (the first Version I started to use).

    My System:

    • Windows 7 x64 SP1
    • CPU: AMD Phenom II 965 BE
    • RAM: 16GB
    • Source HDD: 50+ GB Space Free
    • Target HDD: 85+ GB Free

    The Following Tools were fresh installed just yesterday (clean removed with Revo Uninstaller plus a dozen of restarts and all those things):

    • Ruby Version: 2.1.5p273 [i386-MingW32] - Path correctly set

    • ActivePerl Version: 5.20.1.2000 x86 (32-bit) - Path correctly set

    • ActivePython Version: 3.4.2 x86 (32-bit) - Path correctly set

    • ICU: 54.1 Final

    • GitSCM: 1.9.4 - sh.exe renamed before i started the compiling and also removed git from the Path Settings

    • OpenSSL Libraries: Version 1.0.1j

    • OpenSSL Binaries for Win32 + Win64: 1.0.1j - removed the OPENSSLx64_Conf Setting from the Path as it gave Errors when compiling Qt with the Win32 OpenSSL Library.

    • DirectX SDK June 2010 - Path is correctly set

    • Microsoft Windows 8.1 SDK (only the SDK Main Files plus the Debugging Tools)

    The Bison, GPerf, Flex etc. Tools are used from the Qt Source Folder and are within the System and the User Environment Path correctly set.

    Qt Version I want to build:

    • Qt 5.4.0 x86 directly from the Source Archive (Zip File)

    Used Compiler:

    • MingW32 4.9.2-Release-Posix-Dwarf-rt_V3_Rev0
      [Yes I tried older Compiler Versions but it also has the same Result: 5.4 fails, older Qt Versions compile fine.]

    My Configure Line looks as follows:
    c:\qt-everywhere-opensource-src-5.4.0\configure -opensource -confirm-license -prefix d:\qt-build -skip webengine -opengl dynamic -debug-and-release -developer-build -icu -I C:\icu\dist\include -L C:\icu\dist\lib -openssl -I C:\OpenSSL-Win32\include -L c:\OpenSSL-Win32\lib\MinGW -platform win32-g++

    But even when I dont use "-opengl dynamic", it still fails and give the same Error.

    More Details about the Error:
    @
    In file included from C:\qt-everywhere-opensource-src-5.4.0\qtbase\src\3rdparty\angle\src/common/platform.h:51:0,
    from C:\qt-everywhere-opensource-src-5.4.0\qtbase\src\3rdparty\angle\src/common/angleutils.h:12,
    from C:\qt-everywhere-opensource-src-5.4.0\qtbase\src\3rdparty\angle\src/common/debug.h:15,
    from C:\qt-everywhere-opensource-src-5.4.0\qtbase\src\3rdparty\angle\src/common/mathutil.h:12,
    from C:\qt-everywhere-opensource-src-5.4.0\qtbase\src\3rdparty\angle\src\common\blocklayout.cpp:11:
    C:/mingw32/i686-w64-mingw32/include/intrin.h:791:5: error: conflicting declaration of '__m64 _m_pswapd(__m64)' with 'C' linkage
    __MACHINEX86X_NOWIN64(__m64 _m_pswapd(__m64))
    ^
    In file included from C:/mingw32/lib/gcc/i686-w64-mingw32/4.9.2/include/x86intrin.h:48:0,
    from C:/mingw32/i686-w64-mingw32/include/c++/i686-w64-mingw32/bits/opt_random.h:33,
    from C:/mingw32/i686-w64-mingw32/include/c++/random:50,
    from C:/mingw32/i686-w64-mingw32/include/c++/bits/stl_algo.h:66,
    from C:/mingw32/i686-w64-mingw32/include/c++/algorithm:62,
    from C:\qt-everywhere-opensource-src-5.4.0\qtbase\src\3rdparty\angle\include/GLSLANG/ShaderVars.h:15,
    from C:\qt-everywhere-opensource-src-5.4.0\qtbase\src\3rdparty\angle\include/GLSLANG/ShaderLang.h:47,
    from C:\qt-everywhere-opensource-src-5.4.0\qtbase\src\3rdparty\angle\src/common/blocklayout.h:17,
    from C:\qt-everywhere-opensource-src-5.4.0\qtbase\src\3rdparty\angle\src\common\blocklayout.cpp:10:
    C:/mingw32/lib/gcc/i686-w64-mingw32/4.9.2/include/mm3dnow.h:206:1: note: previous declaration with 'C++' linkage
    _m_pswapd (__m64 __A)
    ^
    Makefile.Debug:1045: recipe for target '.obj/debug/blocklayout.o' failed
    mingw32-make[6]: *** [.obj/debug/blocklayout.o] Error 1
    mingw32-make[6]: Leaving directory 'D:/xxqts/qtbase/src/angle/src/libGLESv2'
    Makefile:38: recipe for target 'debug-all' failed
    mingw32-make[5]: *** [debug-all] Error 2
    mingw32-make[5]: Leaving directory 'D:/xxqts/qtbase/src/angle/src/libGLESv2'
    Makefile:83: recipe for target 'sub-libGLESv2-make_first-ordered' failed
    mingw32-make[4]: *** [sub-libGLESv2-make_first-ordered] Error 2
    mingw32-make[4]: Leaving directory 'D:/xxqts/qtbase/src/angle/src'
    Makefile:38: recipe for target 'sub-src-make_first' failed
    mingw32-make[3]: *** [sub-src-make_first] Error 2
    mingw32-make[3]: Leaving directory 'D:/xxqts/qtbase/src/angle'
    Makefile:361: recipe for target 'sub-angle-make_first' failed
    mingw32-make[2]: *** [sub-angle-make_first] Error 2
    mingw32-make[2]: Leaving directory 'D:/xxqts/qtbase/src'
    Makefile:41: recipe for target 'sub-src-make_first' failed
    mingw32-make[1]: *** [sub-src-make_first] Error 2
    mingw32-make[1]: Leaving directory 'D:/xxqts/qtbase'
    makefile:64: recipe for target 'module-qtbase-make_first' failed
    mingw32-make: *** [module-qtbase-make_first] Error 2
    @

    Did I miss to install some Tools / Libraries for Angle or OpenGL? I see no additional Requirements for Qt 5.4.

    I really appreciate every single Tip you very nice People have for me :)

    Thanks in advance
    Oliver


  • Lifetime Qt Champion

    Hi,

    Since 5.4 is officially out, you should try again with that one. Anyway, it looks like there's a problem between ANGLE and MinGW



  • [quote author="SGaist" date="1418242558"]Hi,

    Since 5.4 is officially out, you should try again with that one. Anyway, it looks like there's a problem between ANGLE and MinGW[/quote]

    Well it IS the 5.4.0 Final Release (Master) that I try to build ;) But thanks

    I looked through the Internet and found a few hints, that it is a Bug within the Compiler itself. A Bug that has been patched years ago in the MingW 4.8.x Branch and is now coming back in the 4.9.x Branch. But no one knows why only Qt 5.4.0 can not be built. All other Qt Versions get compiled fine.

    Strange. Only Solution seems to switch to a MSVC Compiler or stick with
    Qt 5.3.2.

    Has anyone else found some kind of Workaround yet?


  • Lifetime Qt Champion

    That I don't know, but you can try the "bug report system":http://bugreports.qt-project.org to see if it's something known



  • [quote author="SGaist" date="1418243537"]That I don't know, but you can try the "bug report system":http://bugreports.qt-project.org to see if it's something known[/quote]

    Will do a Bug Report later today. For now I have changed the Thread Title: It seems this Bug can not be solved from Digia's Side.

    Thanks for trying to help anyway.
    Oliver



  • Evening.

    The Bug Report in JIRA got closed as invalid as it turns out, I could not even compile it MSVC in the first run. Later it worked - too late. BR is closed now.

    Anyway:
    In addition, I filed a Bug Report yesterday at the MinGW64 SourceForge Project Site.

    I could not find an answer yet, why that dumb Bug has made it back to the 4.9.x Branch of MinGW64 - and why I am still able to compile 5.3.2 (did a test compile just yesterday again with all Examples and Tests without any Problem; 5.4.0 still fails. Even when I try to Build it from Git.).

    Some change in the Qt Framework must have made the Bug Fix in the Compiler invalid.

    Oliver


  • Lifetime Qt Champion

    What's the link to the report ?



  • Evening:

    The Bug Report (its more like a quick Copy+Paste of this Thread) is here:
    https://bugreports.qt-project.org/browse/QTBUG-43268


  • Lifetime Qt Champion

    Do you have all these versions of MinGW installed on your computer at the same time ?



  • Nope. Of course not. I unzip the different Compiler Versions when I want to test them, to C:\MinGW32\

    After that, I restart my PC (normally not necessary but Murphy strikes out of the blue) and do the usual compile tests.



  • Morning Forum.

    I finally found some time to test a few things out. Besides from the Compiler Bug:

    If I disable Angle AND OpenGL completely, 5.4.0 got build. Very strange.
    [BTW: If I disable both: Will my own Executables run? I dont think so or is there any kind of Alternative?]

    Does Qt 5.4.0 need specific / newer DirectX Files than 5.3.2? Or does anyone know an Alternative to try out? Must I install the DirectX SDK and the Windows 7 and and Windows 8 SDK in a specific order? Like I said, I am out of Ideas.

    I re-installed the Windows 7 OS, DirectX SDK (June 2010), Windows 7.1 SDK and the Windows 8.1 SDK fresh (in that particular Order). Windows Update says "No Updates Available".

    5.3.2 (and older Versions) still compiles fine.

    Thanks!



  • Time for another check:

    Compilation of the 64-bit Version of Libglesv2*.dll (and therefore Qt 5.4.0 64-bit as a whole) works.

    32-bit keeps failing.



  • Morning everybody.

    After a few replies in the BugReport from Kai Köhne, I was able to build Qt 5.4.0 x86 with the '-opengl desktop' Switch:
    @
    -opensource -confirm-license -prefix d:\qt-build -skip webengine -opengl desktop -debug-and-release -icu -I C:\icu32bit\include -L C:\icu32bit\lib -openssl -I C:\OpenSSL-Win32\include -L c:\OpenSSL-Win32\lib\MinGW -platform win32-g++ -nomake tests
    @

    I also was finally able to build a 64-Bit Variant with '-opengl dynamic' with the following Switches:
    @
    -opensource -confirm-license -prefix d:\qt-build-64bit -skip webengine -opengl dynamic -debug-and-release -icu -I C:\icu64bit\include -L C:\icu64bit\lib -openssl -I C:\OpenSSL-64bit\include -L c:\OpenSSL-64bit\lib -platform win32-g++ -nomake tests
    @

    One Problem remains:
    I can not do a '-Developer-Build' or even a normal Build with Tests. QMutex and QVariant will always give hundreds of '__machine__x86_declaration' errors. Which results in 'corelib cannot be build'. This is valid for MinGW x86 and MinGW x64.

    When 5.4.1 is out, I will see if can disable QMutex and QVariant.

    Both Compiler Versions (x86 Posix-DWARF and x64 Posix-SEH) are updated to 4.9.2-RtV3-Rev1.

    In the end, it is a Problem with the Compiler and the double / triple call of 'Intrinsic.h' from the compiler Directory.

    As this kind of Bug exists for a few years now, it seems that it will never be changed / fixed.

    Only Solution / Work-Around for me is to switch to x64 completely in the long run. The main Userbase is still running a x86 OS. But this is another Long-Term-Wannabe-Problem.

    Have a good one :)
    Oliver


  • Lifetime Qt Champion

    Usually you don't build the tests even when doing a developer build it eats time and space for no real benefits unless you plan to run them all. If you need to run one or more of them just build them on a as needed basis



  • [quote author="SGaist" date="1422491056"]Usually you don't build the tests even when doing a developer build it eats time and space for no real benefits unless you plan to run them all. If you need to run one or more of them just build them on a as needed basis[/quote]

    Yeah I know and I wish it would work this way. But for some strange reason, the Switch 'developer-build' keeps ignoring '-nomake tests'.

    I will look into customising some Makefiles when 5.4.1 is out.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.