Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-62521

configure over-quotes library exports from sources with multi-entry-lists

    Details

    • Type: Bug
    • Status: Closed
    • Priority: P1: Critical
    • Resolution: Done
    • Affects Version/s: 5.9
    • Fix Version/s: 5.9.4
    • Component/s: Build System
    • Labels:
      None
    • Environment:
      * Windows 10 x64,
      * mingw-w64 6.3.0,
      * MSVC 2015 Update 3,
      * Windows SDK 10.0.14393.33.
    • Commits:
      79a068c3964db79979821bb9e9bad6eb7ab6211c

      Description

      Hello, everyone,

       

      After -QTBUG-62150- was fixed next blockers appeared.

      For builds using mingw-w64:

      Checking for ICU... 
      Trying source 0 (type inline) of library icu ...
      + cd /d C:\libQT-5.9-dev\build\config.tests\unix\icu && C:\libQT-5.9-dev\build\qtbase\bin\qmake.exe "CONFIG -= qt debug_and_release app_bundle lib_bundle" "CONFIG += static console single_arch" "LIBS += -Lc:\\libQT-5.9-dev\\build\\..\\..\\libICU-59.1\\GCC64RT/lib " "LIBS_DEBUG += -lsicuind -lsicuucd -lsicudtd" "LIBS_RELEASE += -lsicuin -lsicuuc -lsicudt" "INCLUDEPATH *= c:\\libQT-5.9-dev\\build\\..\\..\\libICU-59.1\\GCC64RT/include" C:/libQT-5.9-dev/build/qtbase/config.tests/unix/icu
      + cd /d C:\libQT-5.9-dev\build\config.tests\unix\icu && set MAKEFLAGS=& mingw32-make
      > g++ -c -fno-keep-inline-dllexport -O2 -Wextra -Wall -W -fexceptions -mthreads -DUNICODE -D_UNICODE -IC:\libQT-5.9-dev\build\qtbase\config.tests\unix\icu -I. -IC:\libICU-59.1\GCC64RT\include -IC:\libQT-5.9-dev\build\qtbase\mkspecs\win32-g++  -o icu.o C:\libQT-5.9-dev\build\qtbase\config.tests\unix\icu\icu.cpp
      > g++ -Wl,-s -Wl,-subsystem,console -static -mthreads -o icu.exe icu.o  -LC:\libICU-59.1\GCC64RT\lib -lsicuin -lsicuuc C:\libICU-59.1\GCC64RT\lib\sicudt.a 
       => source accepted.
      test config.corelib.libraries.icu succeeded
      
      <snip>
      
      mingw32-make[4]: Entering directory 'C:/libQT-5.9-dev/build/qtbase/src/tools/qdbusxml2cpp'
      g++ -Wl,--gc-sections -Wl,-s -Wl,-subsystem,console -static -o ..\..\..\bin\qdbusxml2cpp.exe .obj/release/qdbusxml2cpp.o  -LC:\libQT-5.9-dev\build\qtbase\lib C:\libQT-5.9-dev\build\qtbase\lib\libQt5DBus.a -LC:\libICU-59.1\GCC64RT\lib -lnetapi32 C:\libQT-5.9-dev\build\qtbase\lib\libQt5Core.a -lole32 -luuid -lws2_32 -ladvapi32 -lshell32 -luser32 -lkernel32 -lmpr -lversion -lwinmm -lz -l"sicuin -lsicuuc -lsicudt" C:\libQT-5.9-dev\build\qtbase\lib\libqtpcre2.a .obj\release\qdbusxml2cpp_resource_res.o
      mingw32-make[4]: Entering directory 'C:/libQT-5.9-dev/build/qtbase/src/tools/qdbuscpp2xml'
      g++ -Wl,--gc-sections -Wl,-s -Wl,-subsystem,console -static -o ..\..\..\bin\qdbuscpp2xml.exe .obj/release/moc.o .obj/release/preprocessor.o .obj/release/generator.o .obj/release/parser.o .obj/release/token.o .obj/release/qdbuscpp2xml.o  -LC:\libQT-5.9-dev\build\qtbase\lib C:\libQT-5.9-dev\build\qtbase\lib\libQt5DBus.a -LC:\libICU-59.1\GCC64RT\lib -lnetapi32 C:\libQT-5.9-dev\build\qtbase\lib\libQt5Core.a -lole32 -luuid -lws2_32 -ladvapi32 -lshell32 -luser32 -lkernel32 -lmpr -lversion -lwinmm -lz -l"sicuin -lsicuuc -lsicudt" C:\libQT-5.9-dev\build\qtbase\lib\libqtpcre2.a .obj\release\qdbuscpp2xml_resource_res.o
      C:/ProgramData/Mingw64/bin/../lib/gcc/x86_64C-:w64/-ProgramDatamingw32//Mingw646.3.0//bin./../../.lib//.gcc.//x86_64.-.w64/-x86_64mingw32-/w646.3.0-/mingw32./.bin//.ld.exe.:/ .cannot. /find. .-/lsicuinx86_64 --w64lsicuuc- mingw32-/lsicudtbin
      /collect2.exe: error: ld returned 1 exit status
      ld.exe: cannot find -lsicuin -lsicuuc -lsicudt
      collect2.exe: error: ld returned 1 exit status
      Makefile.Release:85: recipe for target '..\..\..\bin\qdbuscpp2xml.exe' failed
      mingw32-make[4]: *** [..\..\..\bin\qdbuscpp2xml.exe] Error 1
      mingw32-make[4]: Leaving directory 'C:/libQT-5.9-dev/build/qtbase/src/tools/qdbuscpp2xml'
      Makefile.Release:63: recipe for target '..\..\..\bin\qdbusxml2cpp.exe' failed
      mingw32-make[4]: *** [..\..\..\bin\qdbusxml2cpp.exe] Error 1
      mingw32-make[4]: Leaving directory 'C:/libQT-5.9-dev/build/qtbase/src/tools/qdbusxml2cpp'
      Makefile:36: recipe for target 'release' failed
      mingw32-make[3]: *** [release] Error 2
      mingw32-make[3]: Leaving directory 'C:/libQT-5.9-dev/build/qtbase/src/tools/qdbuscpp2xml'
      Makefile:36: recipe for target 'release' failed
      mingw32-make[3]: *** [release] Error 2
      mingw32-make[3]: Leaving directory 'C:/libQT-5.9-dev/build/qtbase/src/tools/qdbusxml2cpp'
      Makefile:398: recipe for target 'sub-qdbusxml2cpp-make_first' failed
      mingw32-make[2]: *** [sub-qdbusxml2cpp-make_first] Error 2
      Makefile:423: recipe for target 'sub-qdbuscpp2xml-make_first' failed
      mingw32-make[2]: *** [sub-qdbuscpp2xml-make_first] Error 2
      mingw32-make[4]: Entering directory 'C:/libQT-5.9-dev/build/qtbase/src/gui'
      mingw32-make[4]: Nothing to be done for 'first'.
      mingw32-make[4]: Leaving directory 'C:/libQT-5.9-dev/build/qtbase/src/gui'
      mingw32-make[3]: Leaving directory 'C:/libQT-5.9-dev/build/qtbase/src/gui'
      mingw32-make[2]: Leaving directory 'C:/libQT-5.9-dev/build/qtbase/src'
      Makefile:44: recipe for target 'sub-src-make_first' failed
      mingw32-make[1]: *** [sub-src-make_first] Error 2
      mingw32-make[1]: Leaving directory 'C:/libQT-5.9-dev/build/qtbase'
      Makefile:78: recipe for target 'module-qtbase-make_first' failed
      mingw32-make: *** [module-qtbase-make_first] Error 2

       

      For builds using MSVC:

      Checking for ICU...
      Trying source 0 (type inline) of library icu ...
      + cd /d C:\libQT-5.9-dev\build\config.tests\unix\icu && C:\libQT-5.9-dev\build\qtbase\bin\qmake.exe "CONFIG -= qt debug_and_release app_bundle lib_bundle" "CONFIG += static console single_arch" "LIBS += -Lc:\\libQT-5.9-dev\\build\\..\\..\\libICU-59.1\\MSVC64RT/lib " "LIBS_DEBUG += -lsicuind -lsicuucd -lsicudtd" "LIBS_RELEASE += -lsicuin -lsicuuc -lsicudt" "INCLUDEPATH *= c:\\libQT-5.9-dev\\build\\..\\..\\libICU-59.1\\MSVC64RT/include" C:/libQT-5.9-dev/build/qtbase/config.tests/unix/icu
      + cd /d C:\libQT-5.9-dev\build\config.tests\unix\icu && set MAKEFLAGS=& jom
      > jom 1.1.2 - empower your cores
      >     cl -c -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -O2  -MT -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -EHsc -DUNICODE -D_UNICODE -DWIN32 -DWIN64 -DNDEBUG -IC:\libQT-5.9-dev\build\qtbase\config.tests\unix\icu -I. -IC:\libICU-59.1\MSVC64RT\include -IC:\libQT-5.9-dev\build\qtbase\mkspecs\win32-msvc -Fo @C:\Users\test\AppData\Local\Temp\icu.obj.9372.15.jom
      > icu.cpp
      >     link /NOLOGO /DYNAMICBASE /NXCOMPAT /INCREMENTAL:NO /SUBSYSTEM:CONSOLE "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MANIFEST:embed /OUT:icu.exe @C:\Users\test\AppData\Local\Temp\icu.exe.9372.109.jom
      >    Creating library icu.lib and object icu.exp
      > sicuuc.lib(umapfile.ao) : error LNK2019: unresolved external symbol __imp_InitializeSecurityDescriptor referenced in function uprv_mapFile_59
      > sicuuc.lib(umapfile.ao) : error LNK2019: unresolved external symbol __imp_SetSecurityDescriptorDacl referenced in function uprv_mapFile_59
      > sicuuc.lib(wintz.ao) : error LNK2019: unresolved external symbol __imp_RegCloseKey referenced in function "long __cdecl getSTDName(char const *,char *,int)" (?getSTDName@@YAJPEBDPEADH@Z)
      > sicuuc.lib(wintz.ao) : error LNK2019: unresolved external symbol __imp_RegOpenKeyExA referenced in function "long __cdecl getSTDName(char const *,char *,int)" (?getSTDName@@YAJPEBDPEADH@Z)
      > sicuuc.lib(wintz.ao) : error LNK2019: unresolved external symbol __imp_RegQueryValueExA referenced in function "long __cdecl getSTDName(char const *,char *,int)" (?getSTDName@@YAJPEBDPEADH@Z)
      > icu.exe : fatal error LNK1120: 5 unresolved externals
      > jom: C:\libQT-5.9-dev\build\config.tests\unix\icu\Makefile [icu.exe] Error 1120
       => source failed verification.
      Trying source 1 (type inline) of library icu ...
        => source failed condition 'config.win32 && features.shared'.
      Trying source 2 (type inline) of library icu ...
        => source failed condition '!config.win32'.
      test config.corelib.libraries.icu FAILED

      which could be fixed by adding -ladvapi32 key to lines:

      "debug": "-lsicuind -lsicuucd -lsicudtd",
      "release": "-lsicuin -lsicuuc -lsicudt"

      in file qtbase/src/corelib/configure.json. Then next blocker appeared:

      Checking for ICU...
      Trying source 0 (type inline) of library icu ...
      + cd /d C:\libQT-5.9-dev\build\config.tests\unix\icu && C:\libQT-5.9-dev\build\qtbase\bin\qmake.exe "CONFIG -= qt debug_and_release app_bundle lib_bundle" "CONFIG += static console single_arch" "LIBS += -Lc:\\libQT-5.9-dev\\build\\..\\..\\libICU-59.1\\MSVC64RT/lib " "LIBS_DEBUG += -lsicuind -lsicuucd -lsicudtd" "LIBS_RELEASE += -ladvapi32 -lsicuin -lsicuuc -lsicudt" "INCLUDEPATH *= c:\\libQT-5.9-dev\\build\\..\\..\\libICU-59.1\\MSVC64RT/include" C:/libQT-5.10-dev/build/qtbase/config.tests/unix/icu
      + cd /d C:\libQT-5.9-dev\build\config.tests\unix\icu && set MAKEFLAGS=& jom
      > jom 1.1.2 - empower your cores
      >     cl -c -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -O2  -MT -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -EHsc -DUNICODE -D_UNICODE -DWIN32 -DWIN64 -DNDEBUG -IC:\libQT-5.9-dev\build\qtbase\config.tests\unix\icu -I. -IC:\libICU-59.1\MSVC64RT\include -IC:\libQT-5.9-dev\build\qtbase\mkspecs\win32-msvc -Fo @C:\Users\test\AppData\Local\Temp\icu.obj.9136.0.jom
      > icu.cpp
      >     link /NOLOGO /DYNAMICBASE /NXCOMPAT /INCREMENTAL:NO /SUBSYSTEM:CONSOLE "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MANIFEST:embed /OUT:icu.exe @C:\Users\test\AppData\Local\Temp\icu.exe.9136.94.jom
      >    Creating library icu.lib and object icu.exp
       => source accepted.
      test config.corelib.libraries.icu succeeded
      
      <snip>
      
              link /NOLOGO /DYNAMICBASE /NXCOMPAT /INCREMENTAL:NO /SUBSYSTEM:CONSOLE "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /VERSION:5.9 /MANIFEST:embed /OUT:..\..\..\bin\qlalr.exe @C:\Users\test\AppData\Local\Temp\nm5CF6.tmp
      LINK : fatal error LNK1181: cannot open input file 'advapi32 -lsicuin -lsicuuc -lsicudt.lib'
      NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\link.EXE"' : return code '0x49d'
      Stop.
      NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\nmake.exe"' : return code '0x2'
      Stop.
      NMAKE : fatal error U1077: 'cd' : return code '0x2'
      Stop.
      NMAKE : fatal error U1077: 'cd' : return code '0x2'
      Stop.
      NMAKE : fatal error U1077: 'cd' : return code '0x2'
      Stop.

       

      Reproduced for Qt builds with ICU and Static layout. Not reproduced for builds with Shared layout.

       

       

      Alexander

       

        Attachments

          Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

            Activity

              People

              • Assignee:
                buddenha Oswald Buddenhagen
                Reporter:
                sav sav
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Gerrit Reviews

                  There are no open Gerrit changes