diff --git a/mkspecs/features/default_post.prf b/mkspecs/features/default_post.prf
index 938670b2a8b1c693825ba1cc716c1c26367f11da..6fb140b252df54db62ab79a297768ce54064cd26 100644
--- a/mkspecs/features/default_post.prf
+++ b/mkspecs/features/default_post.prf
@@ -83,8 +83,8 @@ silent {
 
 breakpad {
     load(resolve_target)
-    DEBUGFILENAME = $$shell_quote($$shell_path($$QMAKE_RESOLVED_TARGET))
-    PROJECTPATH = $$shell_quote($$shell_path($$OUT_PWD))
+    DEBUGFILENAME = $$shell_quote($$system_path($$QMAKE_RESOLVED_TARGET))
+    PROJECTPATH = $$shell_quote($$system_path($$OUT_PWD))
 
     !isEmpty(QMAKE_POST_LINK):QMAKE_POST_LINK = $$QMAKE_POST_LINK$$escape_expand(\\n\\t)
     QMAKE_POST_LINK = $$QMAKE_POST_LINK$$quote($${QT_BREAKPAD_ROOT_PATH}$${QMAKE_DIR_SEP}qtbreakpadsymbols $$DEBUGFILENAME $$PROJECTPATH)
diff --git a/mkspecs/features/incredibuild_xge.prf b/mkspecs/features/incredibuild_xge.prf
index b43ecf28097be4942354676f1a638d6f71b953f5..75c7a9a75b47105f42536a3c07fed917a504536e 100644
--- a/mkspecs/features/incredibuild_xge.prf
+++ b/mkspecs/features/incredibuild_xge.prf
@@ -3,6 +3,6 @@ contains(TEMPLATE, "vc.*") {
     EOC = $$escape_expand(\\r\\h)
 
     for(xge, INCREDIBUILD_XGE) {
-        $${xge}.commands = Rem IncrediBuild_AllowRemote $$EOC Rem IncrediBuild_OutputFile $$shell_path($${xge}.output) $$EOC $$eval($${xge}.commands)
+        $${xge}.commands = Rem IncrediBuild_AllowRemote $$EOC Rem IncrediBuild_OutputFile $$system_path($${xge}.output) $$EOC $$eval($${xge}.commands)
     }
 }
diff --git a/mkspecs/features/java.prf b/mkspecs/features/java.prf
index eeaafcc883e707ba45c1fb1eeefd61f94d4b09dc..790724cec9cb1e5c27984ddfb275a8de9ef19757 100644
--- a/mkspecs/features/java.prf
+++ b/mkspecs/features/java.prf
@@ -44,7 +44,7 @@ CONFIG += plugin no_plugin_name_prefix
 javac.input = JAVASOURCES
 javac.output = $$CLASS_DIR
 javac.CONFIG += combine
-javac.commands = javac -source 6 -target 6 -Xlint:unchecked -bootclasspath $$ANDROID_JAR_FILE -cp $$shell_quote($$shell_path($$join(JAVACLASSPATH, $$QMAKE_DIRLIST_SEP))) -d $$shell_quote($$CLASS_DIR) ${QMAKE_FILE_IN}
+javac.commands = javac -source 6 -target 6 -Xlint:unchecked -bootclasspath $$ANDROID_JAR_FILE -cp $$shell_quote($$system_path($$join(JAVACLASSPATH, $$DIRLIST_SEP))) -d $$shell_quote($$CLASS_DIR) ${QMAKE_FILE_IN}
 # Force rebuild every time, because we don't know the paths of the destination files
 # as they depend on the code.
 javac.depends = FORCE
diff --git a/mkspecs/features/qt_functions.prf b/mkspecs/features/qt_functions.prf
index 1dacfedd02821df051dbab43ff82d6c40d282f1c..64b9fee3615ea49eb8abd9b456efac9b52c967fd 100644
--- a/mkspecs/features/qt_functions.prf
+++ b/mkspecs/features/qt_functions.prf
@@ -210,7 +210,7 @@ defineTest(qtPrepareTool) {
         $$1$$3 = $$system_path($$eval($$1))
         qtAddTargetEnv($$1$$3, QT_TOOL.$${2}.depends, system)
     }
-    $$1 = $$shell_path($$eval($$1))
+    $$1 = $$system_path($$eval($$1))
     qtAddTargetEnv($$1, QT_TOOL.$${2}.depends, )
 }
 
diff --git a/mkspecs/features/testcase.prf b/mkspecs/features/testcase.prf
index 40ec7cff30372349dabaeaf6ef49f164c7a62d0a..6656d1b8986bc3ff0fca8f727f634265037260fc 100644
--- a/mkspecs/features/testcase.prf
+++ b/mkspecs/features/testcase.prf
@@ -22,7 +22,7 @@ debug_and_release:debug_and_release_target {
 }
 
 !isEmpty(TESTRUN_CWD):!contains(TESTRUN_CWD,^\\./?): \
-    check.commands = cd $$system_path($$TESTRUN_CWD) &&
+    check.commands = cd $$shell_path($$TESTRUN_CWD) &&
 
 # Allow for a custom test runner script
 check.commands += $(TESTRUNNER)
diff --git a/mkspecs/features/win32/windeployqt.prf b/mkspecs/features/win32/windeployqt.prf
index f49df47ffefe73c7e21b210874f1c6eb9c64bb80..22253f6299d00c88353759a87aaaa8f3bfeaa5f0 100644
--- a/mkspecs/features/win32/windeployqt.prf
+++ b/mkspecs/features/win32/windeployqt.prf
@@ -3,9 +3,9 @@ qtPrepareTool(QMAKE_WINDEPLOYQT, windeployqt)
 build_pass {
     load(resolve_target)
 
-    isEmpty(WINDEPLOYQT_OPTIONS): WINDEPLOYQT_OPTIONS = -qmldir $$shell_quote($$shell_path($$_PRO_FILE_PWD_))
-    WINDEPLOYQT_TARGET = $$shell_quote($$shell_path($$QMAKE_RESOLVED_TARGET))
-    WINDEPLOYQT_OUTPUT = $$shell_quote($$shell_path($$dirname(QMAKE_RESOLVED_TARGET)/$$basename(TARGET).windeployqt))
+    isEmpty(WINDEPLOYQT_OPTIONS): WINDEPLOYQT_OPTIONS = -qmldir $$shell_quote($$system_path($$_PRO_FILE_PWD_))
+    WINDEPLOYQT_TARGET = $$shell_quote($$system_path($$QMAKE_RESOLVED_TARGET))
+    WINDEPLOYQT_OUTPUT = $$shell_quote($$system_path($$dirname(QMAKE_RESOLVED_TARGET)/$$basename(TARGET).windeployqt))
     windeployqt.target = windeployqt
     windeployqt.commands = $$QMAKE_WINDEPLOYQT $$WINDEPLOYQT_OPTIONS -list target $$WINDEPLOYQT_TARGET > $$WINDEPLOYQT_OUTPUT
 
diff --git a/qtbase.pro b/qtbase.pro
index ed6fc394cb4755132b573e2ed92eba5f8d9901ff..d6861cf09fbf743cdd51d155d299ad2120cb96db 100644
--- a/qtbase.pro
+++ b/qtbase.pro
@@ -87,7 +87,7 @@ INSTALLS += syncqt
 # qtPrepareTool() to find the non-installed syncqt.
 prefix_build|!equals(PWD, $$OUT_PWD) {
 
-    cmd = perl -w $$shell_path($$PWD/bin/syncqt.pl)
+    cmd = perl -w $$system_path($$PWD/bin/syncqt.pl)
 
     TOOL_PRI = $$OUT_PWD/mkspecs/modules/qt_tool_syncqt.pri