diff --git a/src/core/core_chromium.pri b/src/core/core_chromium.pri
index 4d8db0d1e722638642a88f6384a5ab936d2c87c1..d8ef25d8ce1d5f59547447cebf8c61a75d1fb9ea 100644
--- a/src/core/core_chromium.pri
+++ b/src/core/core_chromium.pri
@@ -33,8 +33,6 @@ RCC_DIR = $$OUT_PWD/$$getConfigDir()/.rcc
 # whenever we are cross compiling.
 qtConfig(webengine-embedded-build): DEFINES += QTWEBENGINE_EMBEDDED_SWITCHES
 
-qtConfig(egl): CONFIG += egl
-
 INCLUDEPATH += $$PWD $$PWD/api
 
 clang_cl {
diff --git a/src/core/core_common.pri b/src/core/core_common.pri
index 8375d89e5e04a2ff0eb976da7c35af905e22db2f..51f5e21b0cb70a3c1309ae95f35e69bf52cc148a 100644
--- a/src/core/core_common.pri
+++ b/src/core/core_common.pri
@@ -2,8 +2,8 @@
 # gyp/ninja will take care of the compilation, qmake/make will finish with linking and install.
 
 TARGET = QtWebEngineCore
-QT += qml quick
-QT_PRIVATE += quick-private gui-private core-private webenginecoreheaders-private
+QT += qml-private quick-private gui-private core-private
+QT_PRIVATE += webenginecoreheaders-private
 
 qtConfig(webengine-geolocation): QT += positioning
 qtConfig(webengine-webchannel): QT += webchannel
diff --git a/src/core/core_headers.pro b/src/core/core_headers.pro
index 21b5d58c33db2880d8a2d92b41ca173fb20c9c89..cd5352eb7b10fe5c1af3bf4df1f1ccbaa8b30ca7 100644
--- a/src/core/core_headers.pro
+++ b/src/core/core_headers.pro
@@ -1,5 +1,6 @@
 TARGET = QtWebEngineCore
 CONFIG += no_private_module header_module internal_module no_plist
+QT -= core gui
 MODULE = webenginecoreheaders
 MODULE_CFG_FILE = qtwebenginecore-config
 load(qt_module)
diff --git a/src/core/core_module.pro b/src/core/core_module.pro
index 10169a49e9b4cb7842abe720d50edf64519d1f68..2bfbc65b9f5d467dfe8d26caf6c1f59a865773f8 100644
--- a/src/core/core_module.pro
+++ b/src/core/core_module.pro
@@ -10,8 +10,6 @@ linking_pri = $$OUT_PWD/$$getConfigDir()/$${TARGET}.pri
     error("Could not find the linking information that gn should have generated.")
 }
 
-load(qt_module)
-
 api_library_name = qtwebenginecoreapi$$qtPlatformTargetSuffix()
 api_library_path = $$OUT_PWD/api/$$getConfigDir()
 
@@ -32,10 +30,10 @@ RSP_ARCHIVE_FILE = $$OUT_PWD/$$getConfigDir()/$${TARGET}_a.rsp
 for(archive, NINJA_ARCHIVES): RSP_A_CONTENT += $$archive
 write_file($$RSP_ARCHIVE_FILE, RSP_A_CONTENT)
 macos:LIBS_PRIVATE += -Wl,-filelist,$$shell_quote($$RSP_OBJECT_FILE)
-linux:LIBS_PRIVATE += @$${RSP_OBJECT_FILE}
+linux:QMAKE_LFLAGS += @$${RSP_OBJECT_FILE}
 # QTBUG-58710 add main rsp file on windows
 win32:QMAKE_LFLAGS += @$${RSP_OBJECT_FILE}
-linux: LIBS_PRIVATE += -Wl,--start-group @$${RSP_ARCHIVE_FILE} -Wl,--end-group
+linux:QMAKE_LFLAGS += -Wl,--start-group @$${RSP_ARCHIVE_FILE} -Wl,--end-group
 else: LIBS_PRIVATE += $$NINJA_ARCHIVES
 LIBS_PRIVATE += $$NINJA_LIB_DIRS $$NINJA_LIBS
 # GN's LFLAGS doesn't always work across all the Linux configurations we support.
@@ -74,7 +72,7 @@ osx {
     # API library as response file to the linker.
     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
+    QMAKE_LFLAGS += -Wl,-whole-archive -l$$api_library_name -Wl,-no-whole-archive
 }
 
 win32 {
@@ -87,8 +85,6 @@ win32 {
 # and doesn't let Chromium get access to libc symbols through dlsym.
 CONFIG -= bsymbolic_functions
 
-qtConfig(egl): CONFIG += egl
-
 linux:qtConfig(separate_debug_info): QMAKE_POST_LINK="cd $(DESTDIR) && $(STRIP) --strip-unneeded $(TARGET)"
 
 REPACK_DIR = $$OUT_PWD/$$getConfigDir()
@@ -157,3 +153,6 @@ OTHER_FILES = \
     $$files(../3rdparty/chromium/*.gypi, true) \
     $$files(../3rdparty/chromium/*.gn, true) \
     $$files(../3rdparty/chromium/*.gni, true)
+
+load(qt_module)
+