mirror of https://github.com/acidanthera/audk.git
128 lines
4.4 KiB
Java
128 lines
4.4 KiB
Java
/*
|
|
*
|
|
* Copyright 2002-2004 The Ant-Contrib project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
package net.sf.antcontrib.cpptasks;
|
|
import java.io.File;
|
|
|
|
import net.sf.antcontrib.cpptasks.compiler.ProcessorConfiguration;
|
|
/**
|
|
* A description of a file built or to be built
|
|
*/
|
|
public final class TargetInfo {
|
|
private static final File[] emptyFileArray = new File[0];
|
|
private/* final */ProcessorConfiguration config;
|
|
private/* final */File output;
|
|
private boolean rebuild;
|
|
private/* final */File[] sources;
|
|
private File[] sysSources;
|
|
public TargetInfo(ProcessorConfiguration config, File[] sources,
|
|
File[] sysSources, File output, boolean rebuild) {
|
|
if (config == null) {
|
|
throw new NullPointerException("config");
|
|
}
|
|
if (sources == null) {
|
|
throw new NullPointerException("sources");
|
|
}
|
|
if (output == null) {
|
|
throw new NullPointerException("output");
|
|
}
|
|
this.config = config;
|
|
this.sources = (File[]) sources.clone();
|
|
if (sysSources == null) {
|
|
this.sysSources = emptyFileArray;
|
|
} else {
|
|
this.sysSources = (File[]) sysSources.clone();
|
|
}
|
|
this.output = output;
|
|
this.rebuild = rebuild;
|
|
//
|
|
// if the output doesn't exist, must rebuild it
|
|
//
|
|
if (!output.exists()) {
|
|
rebuild = true;
|
|
}
|
|
}
|
|
public String[] getAllSourcePaths() {
|
|
String[] paths = new String[sysSources.length + sources.length];
|
|
for (int i = 0; i < sysSources.length; i++) {
|
|
paths[i] = sysSources[i].toString();
|
|
}
|
|
int offset = sysSources.length;
|
|
for (int i = 0; i < sources.length; i++) {
|
|
paths[offset + i] = sources[i].toString();
|
|
}
|
|
return paths;
|
|
}
|
|
public File[] getAllSources() {
|
|
File[] allSources = new File[sources.length + sysSources.length];
|
|
for (int i = 0; i < sysSources.length; i++) {
|
|
allSources[i] = sysSources[i];
|
|
}
|
|
int offset = sysSources.length;
|
|
for (int i = 0; i < sources.length; i++) {
|
|
allSources[i + offset] = sources[i];
|
|
}
|
|
return allSources;
|
|
}
|
|
public ProcessorConfiguration getConfiguration() {
|
|
return config;
|
|
}
|
|
public File getOutput() {
|
|
return output;
|
|
}
|
|
public boolean getRebuild() {
|
|
return rebuild;
|
|
}
|
|
/**
|
|
* Returns an array of SourceHistory objects (contains relative path and
|
|
* last modified time) for the source[s] of this target
|
|
*/
|
|
public SourceHistory[] getSourceHistories(String basePath) {
|
|
SourceHistory[] histories = new SourceHistory[sources.length];
|
|
for (int i = 0; i < sources.length; i++) {
|
|
String relativeName = CUtil.getRelativePath(basePath, sources[i]);
|
|
long lastModified = sources[i].lastModified();
|
|
histories[i] = new SourceHistory(relativeName, lastModified);
|
|
}
|
|
return histories;
|
|
}
|
|
public String[] getSourcePaths() {
|
|
String[] paths = new String[sources.length];
|
|
for (int i = 0; i < sources.length; i++) {
|
|
paths[i] = sources[i].toString();
|
|
}
|
|
return paths;
|
|
}
|
|
public File[] getSources() {
|
|
File[] clone = (File[]) sources.clone();
|
|
return clone;
|
|
}
|
|
public String[] getSysSourcePaths() {
|
|
String[] paths = new String[sysSources.length];
|
|
for (int i = 0; i < sysSources.length; i++) {
|
|
paths[i] = sysSources[i].toString();
|
|
}
|
|
return paths;
|
|
}
|
|
public File[] getSysSources() {
|
|
File[] clone = (File[]) sysSources.clone();
|
|
return clone;
|
|
}
|
|
public void mustRebuild() {
|
|
this.rebuild = true;
|
|
}
|
|
}
|