mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-25 22:04:51 +02:00
7163863: Updated projectcreator
Enable source browsing for all platform dependent code Reviewed-by: brutisso, coleenp
This commit is contained in:
parent
0bae010a3b
commit
ac3b6a6442
14 changed files with 1018 additions and 1962 deletions
156
hotspot/src/share/tools/ProjectCreator/FileTreeCreatorVC7.java
Normal file
156
hotspot/src/share/tools/ProjectCreator/FileTreeCreatorVC7.java
Normal file
|
@ -0,0 +1,156 @@
|
|||
import static java.nio.file.FileVisitResult.CONTINUE;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.FileSystems;
|
||||
import java.nio.file.FileVisitResult;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.attribute.BasicFileAttributes;
|
||||
import java.util.Stack;
|
||||
import java.util.Vector;
|
||||
|
||||
public class FileTreeCreatorVC7 extends FileTreeCreator {
|
||||
|
||||
public FileTreeCreatorVC7(Path startDir, Vector<BuildConfig> allConfigs, WinGammaPlatform wg) {
|
||||
super(startDir, allConfigs, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FileVisitResult visitFile(Path file, BasicFileAttributes attr) {
|
||||
DirAttributes currentFileAttr = attributes.peek().clone();
|
||||
boolean usePch = false;
|
||||
boolean disablePch = false;
|
||||
boolean useIgnore = false;
|
||||
String fileName = file.getFileName().toString();
|
||||
|
||||
// usePch applies to all configs for a file.
|
||||
if (fileName.equals(BuildConfig.getFieldString(null, "UseToGeneratePch"))) {
|
||||
usePch = true;
|
||||
}
|
||||
|
||||
for (BuildConfig cfg : allConfigs) {
|
||||
if (cfg.lookupHashFieldInContext("IgnoreFile", fileName) != null) {
|
||||
useIgnore = true;
|
||||
currentFileAttr.setIgnore(cfg);
|
||||
} else if (cfg.matchesIgnoredPath(file.toAbsolutePath().toString())) {
|
||||
useIgnore = true;
|
||||
currentFileAttr.setIgnore(cfg);
|
||||
}
|
||||
|
||||
if (cfg.lookupHashFieldInContext("DisablePch", fileName) != null) {
|
||||
disablePch = true;
|
||||
currentFileAttr.setDisablePch(cfg);
|
||||
}
|
||||
|
||||
Vector<String> rv = new Vector<String>();
|
||||
cfg.collectRelevantVectors(rv, "AdditionalFile");
|
||||
for(String addFile : rv) {
|
||||
if (addFile.equals(fileName)) {
|
||||
// supress any ignore
|
||||
currentFileAttr.removeFromIgnored(cfg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!useIgnore && !disablePch && !usePch) {
|
||||
wg.tag("File", new String[] { "RelativePath", vcProjLocation.relativize(file).toString()});
|
||||
} else {
|
||||
wg.startTag(
|
||||
"File",
|
||||
new String[] { "RelativePath", vcProjLocation.relativize(file).toString()});
|
||||
|
||||
for (BuildConfig cfg : allConfigs) {
|
||||
boolean ignore = currentFileAttr.hasIgnore(cfg);
|
||||
String [] fileConfAttr;
|
||||
|
||||
if (ignore) {
|
||||
fileConfAttr = new String[] {"Name", cfg.get("Name"), "ExcludedFromBuild", "TRUE" };
|
||||
} else {
|
||||
fileConfAttr = new String[] {"Name", cfg.get("Name")};
|
||||
}
|
||||
|
||||
if (!disablePch && !usePch && !ignore) {
|
||||
continue;
|
||||
} else if (!disablePch && !usePch) {
|
||||
wg.tag("FileConfiguration", fileConfAttr);
|
||||
} else {
|
||||
wg.startTag("FileConfiguration", fileConfAttr);
|
||||
if (usePch) {
|
||||
// usePch always applies to all configs, might not always be so.
|
||||
wg.tag("Tool", new String[] {
|
||||
"Name", "VCCLCompilerTool", "UsePrecompiledHeader",
|
||||
"1" });
|
||||
assert(!disablePch);
|
||||
}
|
||||
if (disablePch) {
|
||||
if (currentFileAttr.hasDisablePch(cfg)) {
|
||||
wg.tag("Tool", new String[] {
|
||||
"Name", "VCCLCompilerTool", "UsePrecompiledHeader",
|
||||
"0" });
|
||||
}
|
||||
assert(!usePch);
|
||||
}
|
||||
wg.endTag();
|
||||
}
|
||||
}
|
||||
wg.endTag();
|
||||
}
|
||||
|
||||
return CONTINUE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FileVisitResult preVisitDirectory(Path path, BasicFileAttributes attrs)
|
||||
throws IOException {
|
||||
Boolean hide = false;
|
||||
DirAttributes newAttr = attributes.peek().clone();
|
||||
|
||||
String rPath;
|
||||
if (path.toAbsolutePath().toString().equals(this.startDir.toAbsolutePath().toString())){
|
||||
rPath = startDir.toString();
|
||||
} else {
|
||||
rPath = path.getFileName().toString();
|
||||
}
|
||||
|
||||
// check per config ignorePaths!
|
||||
for (BuildConfig cfg : allConfigs) {
|
||||
if (cfg.matchesIgnoredPath(path.toAbsolutePath().toString())) {
|
||||
newAttr.setIgnore(cfg);
|
||||
}
|
||||
|
||||
// Hide is always on all configs. And additional files are never hiddden
|
||||
if (cfg.matchesHidePath(path.toAbsolutePath().toString())) {
|
||||
hide = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!hide) {
|
||||
wg.startTag("Filter", new String[] {
|
||||
"Name", rPath});
|
||||
|
||||
attributes.push(newAttr);
|
||||
return super.preVisitDirectory(path, attrs);
|
||||
} else {
|
||||
return FileVisitResult.SKIP_SUBTREE;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public FileVisitResult postVisitDirectory(Path dir, IOException exc) {
|
||||
//end matching attributes set by ignorepath
|
||||
wg.endTag();
|
||||
attributes.pop();
|
||||
|
||||
return CONTINUE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FileVisitResult visitFileFailed(Path file, IOException exc) {
|
||||
return CONTINUE;
|
||||
}
|
||||
|
||||
public void writeFileTree() throws IOException {
|
||||
Files.walkFileTree(this.startDir, this);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue