diff options
author | Oleg Krasilnikov | 2008-02-28 17:17:38 +0000 |
---|---|---|
committer | Oleg Krasilnikov | 2008-02-28 17:17:38 +0000 |
commit | aaedfd3400d87b4e847348bd99a3f7572a71eba8 (patch) | |
tree | fe0f48cb4f5ec8c42882e566de5dc5d17042dffa | |
parent | a4513baa305ef32348e8588bb6d4f0221780d1d2 (diff) | |
download | org.eclipse.cdt-aaedfd3400d87b4e847348bd99a3f7572a71eba8.tar.gz org.eclipse.cdt-aaedfd3400d87b4e847348bd99a3f7572a71eba8.tar.xz org.eclipse.cdt-aaedfd3400d87b4e847348bd99a3f7572a71eba8.zip |
Bug # 220749 : Performance switches -p -pg should be propagated to linker too
3 files changed, 114 insertions, 0 deletions
diff --git a/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.xml b/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.xml index efada1f6908..990c6dcb294 100644 --- a/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.xml +++ b/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.xml @@ -204,6 +204,22 @@ value="true"/> </enablement> </outputType> + <option + applicabilityCalculator="org.eclipse.cdt.managedbuilder.gnu.ui.GprofAppCalculator" + command="-pg" + defaultValue="false" + id="gnu.c.link.option.debugging.gprof" + name="%Option.Posix.Debug.gprof" + valueType="boolean"> + </option> + <option + applicabilityCalculator="org.eclipse.cdt.managedbuilder.gnu.ui.ProfAppCalculator" + command="-p" + defaultValue="false" + id="gnu.c.link.option.debugging.prof" + name="%Option.Posix.Debug.prof" + valueType="boolean"> + </option> </tool> <tool natureFilter="ccnature" @@ -389,6 +405,22 @@ value="true"/> </enablement> </outputType> + <option + applicabilityCalculator="org.eclipse.cdt.managedbuilder.gnu.ui.GprofAppCalculator" + command="-pg" + defaultValue="false" + id="gnu.cpp.link.option.debugging.gprof" + name="%Option.Posix.Debug.gprof" + valueType="boolean"> + </option> + <option + applicabilityCalculator="org.eclipse.cdt.managedbuilder.gnu.ui.ProfAppCalculator" + command="-p" + defaultValue="false" + id="gnu.cpp.link.option.debugging.prof" + name="%Option.Posix.Debug.prof" + valueType="boolean"> + </option> </tool> <tool natureFilter="both" diff --git a/build/org.eclipse.cdt.managedbuilder.gnu.ui/src/org/eclipse/cdt/managedbuilder/gnu/ui/GprofAppCalculator.java b/build/org.eclipse.cdt.managedbuilder.gnu.ui/src/org/eclipse/cdt/managedbuilder/gnu/ui/GprofAppCalculator.java new file mode 100644 index 00000000000..eee30fe56fc --- /dev/null +++ b/build/org.eclipse.cdt.managedbuilder.gnu.ui/src/org/eclipse/cdt/managedbuilder/gnu/ui/GprofAppCalculator.java @@ -0,0 +1,19 @@ +/******************************************************************************* + * Copyright (c) 2008 Intel Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Intel Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.cdt.managedbuilder.gnu.ui; + +import org.eclipse.cdt.managedbuilder.core.IOptionApplicability; + +public class GprofAppCalculator extends ProfAppCalculator implements IOptionApplicability { + protected String getOptionIdPattern() { + return ".compiler.option.debugging.gprof"; + } +} diff --git a/build/org.eclipse.cdt.managedbuilder.gnu.ui/src/org/eclipse/cdt/managedbuilder/gnu/ui/ProfAppCalculator.java b/build/org.eclipse.cdt.managedbuilder.gnu.ui/src/org/eclipse/cdt/managedbuilder/gnu/ui/ProfAppCalculator.java new file mode 100644 index 00000000000..5d6e7dae646 --- /dev/null +++ b/build/org.eclipse.cdt.managedbuilder.gnu.ui/src/org/eclipse/cdt/managedbuilder/gnu/ui/ProfAppCalculator.java @@ -0,0 +1,63 @@ +/******************************************************************************* + * Copyright (c) 2008 Intel Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Intel Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.cdt.managedbuilder.gnu.ui; + +import org.eclipse.cdt.managedbuilder.core.BuildException; +import org.eclipse.cdt.managedbuilder.core.IBuildObject; +import org.eclipse.cdt.managedbuilder.core.IConfiguration; +import org.eclipse.cdt.managedbuilder.core.IHoldsOptions; +import org.eclipse.cdt.managedbuilder.core.IOption; +import org.eclipse.cdt.managedbuilder.core.IOptionApplicability; +import org.eclipse.cdt.managedbuilder.core.ITool; + +public class ProfAppCalculator implements IOptionApplicability { + + protected static final String COMPILER_PATTERN = ".compiler."; + + protected String getOptionIdPattern() { + return ".compiler.option.debugging.gprof"; + } + + public boolean isOptionEnabled(IBuildObject configuration, + IHoldsOptions holder, IOption option) { + return true; + } + + public boolean isOptionUsedInCommandLine(IBuildObject configuration, + IHoldsOptions holder, IOption option) { + + if (! (configuration instanceof IConfiguration)) + return false; // not probable. + + IConfiguration cfg = (IConfiguration)configuration; + outer: + for (ITool t : cfg.getFilteredTools()){ + if (t.getId().indexOf(COMPILER_PATTERN) < 0) + continue; + for (IOption op : t.getOptions()) { + if (op.getId().indexOf(getOptionIdPattern()) < 0) + continue; + try { + if (op.getBooleanValue() != option.getBooleanValue()) + cfg.setOption(holder, option, op.getBooleanValue()); + } catch (BuildException e) {} + break outer; + } + } + return true; + } + + public boolean isOptionVisible(IBuildObject configuration, + IHoldsOptions holder, IOption option) { + return false; + } + +} |