diff options
author | Jeff Johnston | 2018-07-04 21:03:29 +0000 |
---|---|---|
committer | Jeff Johnston | 2018-07-05 14:22:19 +0000 |
commit | ee5f57d536f67b9b4bddcc32774761babca5c41e (patch) | |
tree | 7e7ff75db9ef7f12248ef59b5987f4f0d4dd5895 | |
parent | a1ed9cdb397468e428c81342cd99c547352e8f57 (diff) | |
download | org.eclipse.cdt-CDT_9_5_1.tar.gz org.eclipse.cdt-CDT_9_5_1.tar.xz org.eclipse.cdt-CDT_9_5_1.zip |
- fix GCCToolChain and ContainerGCCToolChain to not blindly
take the first token in the command string when processing
scannerinfo; if it is "ccache", take the second token instead
Change-Id: I4b2b7dfaccae6f3ec968bbe4217c57994ad71963
(cherry picked from commit a5ed8ea2a4631882321b04e72afa95e6896fcf3e)
2 files changed, 19 insertions, 4 deletions
diff --git a/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/GCCToolChain.java b/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/GCCToolChain.java index fb521623dae..ff39a61a99b 100644 --- a/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/GCCToolChain.java +++ b/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/GCCToolChain.java @@ -256,7 +256,14 @@ public class GCCToolChain extends PlatformObject implements IToolChain { try { Path buildDirectory = Paths.get(buildDirectoryURI); - Path command = Paths.get(commandStrings.get(0)); + int offset = 0; + Path command = Paths.get(commandStrings.get(offset)); + + // look for ccache being used + if (command.toString().contains("ccache")) { //$NON-NLS-1$ + command = Paths.get(commandStrings.get(++offset)); + } + List<String> commandLine = new ArrayList<>(); if (command.isAbsolute()) { commandLine.add(command.toString()); @@ -283,7 +290,7 @@ public class GCCToolChain extends PlatformObject implements IToolChain { } addDiscoveryOptions(commandLine); - commandLine.addAll(commandStrings.subList(1, commandStrings.size())); + commandLine.addAll(commandStrings.subList(offset + 1, commandStrings.size())); // Strip surrounding quotes from the args on Windows if (Platform.OS_WIN32.equals(Platform.getOS())) { diff --git a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ui/launchbar/ContainerGCCToolChain.java b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ui/launchbar/ContainerGCCToolChain.java index 9d6524e43e1..9fce12031fd 100644 --- a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ui/launchbar/ContainerGCCToolChain.java +++ b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/ui/launchbar/ContainerGCCToolChain.java @@ -186,7 +186,14 @@ public class ContainerGCCToolChain extends PlatformObject try { Path buildDirectory = Paths.get(buildDirectoryURI); - Path command = Paths.get(commandStrings.get(0)); + int offset = 0; + Path command = Paths.get(commandStrings.get(offset)); + + // look for ccache being used + if (command.toString().contains("ccache")) { //$NON-NLS-1$ + command = Paths.get(commandStrings.get(++offset)); + } + List<String> commandLine = new ArrayList<>(); if (command.isAbsolute()) { commandLine.add(command.toString()); @@ -213,7 +220,8 @@ public class ContainerGCCToolChain extends PlatformObject } addDiscoveryOptions(commandLine); - commandLine.addAll(commandStrings.subList(1, commandStrings.size())); + commandLine.addAll( + commandStrings.subList(offset + 1, commandStrings.size())); // Strip surrounding quotes from the args on Windows if (Platform.OS_WIN32.equals(Platform.getOS())) { |