diff options
author | Joerg Bornemann <joerg.bornemann@qt.io> | 2017-10-17 14:30:01 +0200 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@qt.io> | 2017-10-17 14:28:10 +0000 |
commit | 94fc71997ca8fb94fb1cba6f36eb9a24b6da4464 (patch) | |
tree | 1c413322cf3e7fc5391c9a610b6c3455fba5ef4b | |
parent | 76583eb3e7656b96e5033bf8e1aba963ff899e19 (diff) | |
download | qtwebengine-94fc71997ca8fb94fb1cba6f36eb9a24b6da4464.tar.gz |
Revert "Use MSVC's /WHOLEARCHIVE linker flag"
This reverts commit 6eae98639730ab1ad1611f1ea61bcaad2fe0f69a.
The /WHOLEARCHIVE flag stopped working in VS 2017 15.4.0.
Use our beloved list of object files again.
Task-number: QTBUG-63701
Change-Id: I9eaf7c92012d6d3c73658f9e06d422c52fa1dc76
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
-rw-r--r-- | src/core/api/core_api.pro | 8 | ||||
-rw-r--r-- | src/core/core_module.pro | 4 |
2 files changed, 11 insertions, 1 deletions
diff --git a/src/core/api/core_api.pro b/src/core/api/core_api.pro index 05166536e..270595378 100644 --- a/src/core/api/core_api.pro +++ b/src/core/api/core_api.pro @@ -55,3 +55,11 @@ unix:!isEmpty(QMAKE_LFLAGS_VERSION_SCRIPT):!static { SOURCES += qtbug-60565.cpp \ qtbug-61521.cpp } + +msvc { + # Create a list of object files that can be used as response file for the linker. + # This is done to simulate -whole-archive on MSVC. + QMAKE_POST_LINK = \ + "if exist $(DESTDIR_TARGET).objects del $(DESTDIR_TARGET).objects$$escape_expand(\\n\\t)" \ + "for %%a in ($(OBJECTS)) do echo $$shell_quote($$shell_path($$OUT_PWD))\\%%a >> $(DESTDIR_TARGET).objects" +} diff --git a/src/core/core_module.pro b/src/core/core_module.pro index 3785ddc46..44e8ac613 100644 --- a/src/core/core_module.pro +++ b/src/core/core_module.pro @@ -47,8 +47,10 @@ CONFIG *= no_smart_library_merge osx { LIBS_PRIVATE += -Wl,-force_load,$${api_library_path}$${QMAKE_DIR_SEP}lib$${api_library_name}.a } else:msvc { + # Simulate -whole-archive by passing the list of object files that belong to the public + # API library as response file to the linker. QMAKE_LFLAGS += /OPT:REF - QMAKE_LFLAGS += /WHOLEARCHIVE:$${api_library_path}$${QMAKE_DIR_SEP}$${api_library_name}.lib + QMAKE_LFLAGS += @$${api_library_path}$${QMAKE_DIR_SEP}$${api_library_name}.lib.objects } else { LIBS_PRIVATE += -Wl,-whole-archive -l$$api_library_name -Wl,-no-whole-archive } |