diff --git a/cmake/FindExpat.cmake b/cmake/FindExpat.cmake
new file mode 100644
index 0000000000..cdba26e72e
--- /dev/null
+++ b/cmake/FindExpat.cmake
@@ -0,0 +1,9 @@
+set(Expat_FOUND 0)
+
+find_package(PkgConfig QUIET)
+
+pkg_check_modules(EXPAT expat IMPORTED_TARGET)
+
+if(TARGET PkgConfig::EXPAT)
+    set(Expat_FOUND 1)
+endif()
diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt
index b29be1a768..7446d7b1ae 100644
--- a/src/gui/CMakeLists.txt
+++ b/src/gui/CMakeLists.txt
@@ -673,6 +673,14 @@ qt_internal_extend_target(Gui CONDITION QT_FEATURE_cssparser
         text/qcssparser.cpp text/qcssparser_p.h
 )
 
+qt_internal_extend_target(Gui CONDITION QT_FEATURE_fontconfig AND QT_FEATURE_freetype AND UNIX AND NOT APPLE
+    SOURCES
+        text/unix/qfontconfigdatabase.cpp text/unix/qfontconfigdatabase_p.h
+        text/unix/qfontenginemultifontconfig.cpp text/unix/qfontenginemultifontconfig_p.h
+    LIBRARIES
+        Fontconfig::Fontconfig
+)
+
 qt_internal_extend_target(Gui CONDITION QT_FEATURE_freetype
     SOURCES
         text/freetype/qfontengine_ft.cpp text/freetype/qfontengine_ft_p.h
@@ -681,17 +689,14 @@ qt_internal_extend_target(Gui CONDITION QT_FEATURE_freetype
         WrapFreetype::WrapFreetype
 )
 
-qt_internal_extend_target(Gui CONDITION UNIX AND NOT APPLE
-    SOURCES
-        text/unix/qgenericunixfontdatabase_p.h
+qt_internal_extend_target(Gui CONDITION QT_FEATURE_fontconfig AND UNIX AND NOT APPLE
+    LIBRARIES
+        PkgConfig::EXPAT
 )
 
-qt_internal_extend_target(Gui CONDITION QT_FEATURE_fontconfig AND QT_FEATURE_freetype AND UNIX AND NOT APPLE
+qt_internal_extend_target(Gui CONDITION UNIX AND NOT APPLE
     SOURCES
-        text/unix/qfontconfigdatabase.cpp text/unix/qfontconfigdatabase_p.h
-        text/unix/qfontenginemultifontconfig.cpp text/unix/qfontenginemultifontconfig_p.h
-    LIBRARIES
-        Fontconfig::Fontconfig
+        text/unix/qgenericunixfontdatabase_p.h
 )
 
 qt_internal_extend_target(Gui CONDITION APPLE AND NOT MACOS
diff --git a/src/gui/configure.cmake b/src/gui/configure.cmake
index d8319c120b..1ff24eebaf 100644
--- a/src/gui/configure.cmake
+++ b/src/gui/configure.cmake
@@ -43,6 +43,7 @@ if(QT_FEATURE_system_zlib)
     qt_add_qmake_lib_dependency(freetype zlib)
 endif()
 qt_find_package(Fontconfig PROVIDED_TARGETS Fontconfig::Fontconfig MODULE_NAME gui QMAKE_LIB fontconfig)
+qt_find_package(Expat PROVIDED_TARGETS PkgConfig::EXPAT MODULE_NAME gui QMAKE_LIB expat)
 qt_add_qmake_lib_dependency(fontconfig freetype)
 qt_find_package(gbm PROVIDED_TARGETS gbm::gbm MODULE_NAME gui QMAKE_LIB gbm)
 qt_find_package(WrapSystemHarfbuzz 2.6.0 PROVIDED_TARGETS WrapSystemHarfbuzz::WrapSystemHarfbuzz MODULE_NAME gui QMAKE_LIB harfbuzz)
-- 
2.41.0