mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-06-08 18:26:01 +02:00
set the filename for include directives
This commit is contained in:
parent
51c39598f1
commit
abf050d657
4 changed files with 32 additions and 4 deletions
|
@ -45,7 +45,7 @@ public abstract class AbstractMakefile extends Parent implements IMakefile {
|
||||||
public abstract IDirective[] getBuiltins();
|
public abstract IDirective[] getBuiltins();
|
||||||
|
|
||||||
public IRule[] getRules() {
|
public IRule[] getRules() {
|
||||||
IDirective[] stmts = getDirectives();
|
IDirective[] stmts = getDirectives(true);
|
||||||
List array = new ArrayList(stmts.length);
|
List array = new ArrayList(stmts.length);
|
||||||
for (int i = 0; i < stmts.length; i++) {
|
for (int i = 0; i < stmts.length; i++) {
|
||||||
if (stmts[i] instanceof IRule) {
|
if (stmts[i] instanceof IRule) {
|
||||||
|
@ -111,7 +111,7 @@ public abstract class AbstractMakefile extends Parent implements IMakefile {
|
||||||
}
|
}
|
||||||
|
|
||||||
public IMacroDefinition[] getMacroDefinitions() {
|
public IMacroDefinition[] getMacroDefinitions() {
|
||||||
IDirective[] stmts = getDirectives();
|
IDirective[] stmts = getDirectives(true);
|
||||||
List array = new ArrayList(stmts.length);
|
List array = new ArrayList(stmts.length);
|
||||||
for (int i = 0; i < stmts.length; i++) {
|
for (int i = 0; i < stmts.length; i++) {
|
||||||
if (stmts[i] instanceof IMacroDefinition) {
|
if (stmts[i] instanceof IMacroDefinition) {
|
||||||
|
|
|
@ -28,6 +28,10 @@ public abstract class Parent extends Directive implements IParent {
|
||||||
super(parent);
|
super(parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IDirective[] getDirectives(boolean expand) {
|
||||||
|
return getDirectives();
|
||||||
|
}
|
||||||
|
|
||||||
public IDirective[] getDirectives() {
|
public IDirective[] getDirectives() {
|
||||||
children.trimToSize();
|
children.trimToSize();
|
||||||
return (IDirective[]) children.toArray(new IDirective[0]);
|
return (IDirective[]) children.toArray(new IDirective[0]);
|
||||||
|
|
|
@ -18,6 +18,7 @@ import java.io.InputStreamReader;
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Stack;
|
import java.util.Stack;
|
||||||
import java.util.StringTokenizer;
|
import java.util.StringTokenizer;
|
||||||
|
@ -765,6 +766,21 @@ public class GNUMakefile extends AbstractMakefile implements IGNUMakefile {
|
||||||
return new InferenceRule(this, new Target(tgt));
|
return new InferenceRule(this, new Target(tgt));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IDirective[] getDirectives(boolean expand) {
|
||||||
|
if (!expand) {
|
||||||
|
return getDirectives();
|
||||||
|
}
|
||||||
|
IDirective[] dirs = getDirectives();
|
||||||
|
ArrayList list = new ArrayList(Arrays.asList(dirs));
|
||||||
|
for (int i = 0; i < dirs.length; ++i) {
|
||||||
|
if (dirs[i] instanceof Include) {
|
||||||
|
Include include = (Include)dirs[i];
|
||||||
|
list.addAll(Arrays.asList(include.getDirectives()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (IDirective[]) list.toArray(new IDirective[list.size()]);
|
||||||
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.make.internal.core.makefile.AbstractMakefile#getBuiltins()
|
* @see org.eclipse.cdt.make.internal.core.makefile.AbstractMakefile#getBuiltins()
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -47,7 +47,11 @@ public class Include extends Parent implements IInclude {
|
||||||
// Try the current directory.
|
// Try the current directory.
|
||||||
try {
|
try {
|
||||||
gnu.parse(filenames[i]);
|
gnu.parse(filenames[i]);
|
||||||
addDirectives(gnu.getStatements());
|
Directive[] subdirs = gnu.getStatements();
|
||||||
|
addDirectives(subdirs);
|
||||||
|
for (int k = 0; k < subdirs.length; ++k) {
|
||||||
|
subdirs[k].setFilename(filenames[i]);
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
}
|
}
|
||||||
|
@ -56,7 +60,11 @@ public class Include extends Parent implements IInclude {
|
||||||
try {
|
try {
|
||||||
String filename = dirs[j] + GNUMakefile.FILE_SEPARATOR + filenames[i];
|
String filename = dirs[j] + GNUMakefile.FILE_SEPARATOR + filenames[i];
|
||||||
gnu.parse(filename);
|
gnu.parse(filename);
|
||||||
addDirectives(gnu.getStatements());
|
Directive[] subdirs = gnu.getStatements();
|
||||||
|
addDirectives(subdirs);
|
||||||
|
for (int k = 0; k < subdirs.length; ++k) {
|
||||||
|
subdirs[k].setFilename(filename);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue