mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-30 00:54:06 +02:00
add ContextTool to workspace/Tools
In directory: workspace/Tools/bin please type: ContextTool to see the usage help git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1427 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
bb2db65a8e
commit
c74c7a4302
53
Tools/Source/ContextTool/build.xml
Normal file
53
Tools/Source/ContextTool/build.xml
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!--
|
||||||
|
Copyright (c) 2006, Intel Corporation
|
||||||
|
All rights reserved. This program and the accompanying materials
|
||||||
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
|
http://opensource.org/licenses/bsd-license.php
|
||||||
|
|
||||||
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
-->
|
||||||
|
<project name="ContextTool" default="ContextTool" basedir=".">
|
||||||
|
|
||||||
|
<taskdef resource="net/sf/antcontrib/antlib.xml"/>
|
||||||
|
<property environment="env"/>
|
||||||
|
<property name="WORKSPACE" value="${env.WORKSPACE}"/>
|
||||||
|
<path id="classpath">
|
||||||
|
<fileset dir="${WORKSPACE}/Tools/Jars" includes="SurfaceArea.jar"/>
|
||||||
|
<fileset dir="${WORKSPACE}/Tools/Jars" includes="Common.jar"/>
|
||||||
|
<fileset dir="${env.XMLBEANS_HOME}/lib" includes="*.jar"/>
|
||||||
|
</path>
|
||||||
|
<property name="buildDir" value="build"/>
|
||||||
|
<property name="installLocation" value="${WORKSPACE}/Tools/Jars"/>
|
||||||
|
<target name="ContextTool" depends="install"/>
|
||||||
|
<target name="source">
|
||||||
|
<mkdir dir="${buildDir}"/>
|
||||||
|
<javac srcdir="." destdir="${buildDir}">
|
||||||
|
<classpath refid="classpath"/>
|
||||||
|
<compilerarg value="-Xlint"/>
|
||||||
|
</javac>
|
||||||
|
</target>
|
||||||
|
<target name="clean">
|
||||||
|
<delete dir="${buildDir}"/>
|
||||||
|
</target>
|
||||||
|
<target name="cleanall">
|
||||||
|
<delete dir="${buildDir}"/>
|
||||||
|
<delete file="${installLocation}/ContextTool.jar"/>
|
||||||
|
<if>
|
||||||
|
<available file="${installLocation}/ContextTool.jar"/>
|
||||||
|
<then>
|
||||||
|
<echo message="You must manually remove the file: ${installLocation}/ContextTool.jar"/>
|
||||||
|
<echo message="Java has already loaded the file, and cannot remove it within ANT!"/>
|
||||||
|
</then>
|
||||||
|
</if>
|
||||||
|
</target>
|
||||||
|
<target name="install" depends="source">
|
||||||
|
<jar destfile="${installLocation}/ContextTool.jar"
|
||||||
|
basedir="${buildDir}"
|
||||||
|
includes="**"
|
||||||
|
/>
|
||||||
|
</target>
|
||||||
|
</project>
|
||||||
|
|
@ -0,0 +1,17 @@
|
|||||||
|
package org.tianocore.context;
|
||||||
|
|
||||||
|
public class ContextMain {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
if(ParseParameter.checkParameter(args) == false){
|
||||||
|
System.exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (TargetFile.parsePath("target.txt") == false) {
|
||||||
|
System.exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.printf("%n%s", "Target.txt generate successfully!");
|
||||||
|
}
|
||||||
|
}
|
109
Tools/Source/ContextTool/org/tianocore/context/HelpInfo.java
Normal file
109
Tools/Source/ContextTool/org/tianocore/context/HelpInfo.java
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
package org.tianocore.context;
|
||||||
|
|
||||||
|
public class HelpInfo {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* output the tools usage guide
|
||||||
|
* @param no input parameter
|
||||||
|
* @return no return value
|
||||||
|
**/
|
||||||
|
public static void outputUsageInfo() {
|
||||||
|
System.out.printf("\n%s", UsageInfoString);
|
||||||
|
System.out.printf("\n%s", DetailOfOptionString);
|
||||||
|
|
||||||
|
for (int i = 0; i < 6; i++) {
|
||||||
|
outputSubUsageInfo(UsageString[i], UsageStringInfo[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* output the usage info which bases on cmd option
|
||||||
|
* @param String str1 : the cmd option
|
||||||
|
* String str2 : the detail of cmd option
|
||||||
|
* @return no return value
|
||||||
|
**/
|
||||||
|
private static void outputSubUsageInfo(String str1, String str2) {
|
||||||
|
splitString(str2);
|
||||||
|
if (substrnum > 0) {
|
||||||
|
System.out.printf("\n%4s %-30s %s", "", str1, substr[0]);
|
||||||
|
for (int i = 1; i < substrnum; i++) {
|
||||||
|
if (substr[i] != null)
|
||||||
|
System.out.printf("\n%4s %-30s %s", "", "", substr[i]);
|
||||||
|
}
|
||||||
|
substrnum = 0;
|
||||||
|
} else {
|
||||||
|
System.out.printf("\n%4s %-30s %s", "", str1, str2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* according to the output width, split the detail info
|
||||||
|
* @param String str :the detail info
|
||||||
|
* @return no return value
|
||||||
|
**/
|
||||||
|
private static void splitString(String str) {
|
||||||
|
int strlength = str.length();
|
||||||
|
if (strlength > MaxSrtingLength) {
|
||||||
|
|
||||||
|
//we should modify the array to list, for it is strange to + 2
|
||||||
|
substrnum = strlength / MaxSrtingLength + 2;
|
||||||
|
String[] tokens = str.split("[ ]", 0);
|
||||||
|
substr = new String[substrnum];
|
||||||
|
int templength = 0;
|
||||||
|
int j = 0;
|
||||||
|
int start = 0;
|
||||||
|
int end = 0;
|
||||||
|
for (int i = 0; i < tokens.length; i++) {
|
||||||
|
if ((templength = end + tokens[i].length() + 1) < (MaxSrtingLength + start)) {
|
||||||
|
end = templength;
|
||||||
|
} else {
|
||||||
|
substr[j++] = str.substring(start, end);
|
||||||
|
start = end;
|
||||||
|
i = i - 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
substr[j] = str.substring(start, end - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String[] substr = null;
|
||||||
|
|
||||||
|
private static int substrnum = 0;
|
||||||
|
|
||||||
|
private static final int MaxSrtingLength = 40;
|
||||||
|
|
||||||
|
private static final String UsageInfoString = "Usage: context [-option1] [args] [-option2] [args] ...";
|
||||||
|
|
||||||
|
private static final String DetailOfOptionString = "Where options include:";
|
||||||
|
|
||||||
|
private static final String HString = "-h";
|
||||||
|
|
||||||
|
private static final String HStringInfo = "print this help message";
|
||||||
|
|
||||||
|
private static final String AString = "-a <list of Arch>";
|
||||||
|
|
||||||
|
private static final String AStringInfo = "what kind of architechure is the binary target, such as IA32, IA64, X64, EBC, or ARM. Multiple values can be specified on a single line, using space to separate the values.";
|
||||||
|
|
||||||
|
private static final String CString = "-c <tool_definition_file.txt>";
|
||||||
|
|
||||||
|
private static final String CStringInfo = "Assign a txt file, which specify the tools to use for the build and must be located in the path: WORKSPACE/Tools/Conf/. If no file is specified, the default filename is \"tools_def.txt\"";
|
||||||
|
|
||||||
|
private static final String NString = "-n <list of TagNames>";
|
||||||
|
|
||||||
|
private static final String NStringInfo = "Specify the TagName, such as GCC, MSFT, which are defined in the \"tool_definition_file.txt\"";
|
||||||
|
|
||||||
|
private static final String PString = "-p <*.fpd>";
|
||||||
|
|
||||||
|
private static final String PStringInfo = "Specify the WORKSPACE relative Path and Filename of platform FPD file that will be used for the build.";
|
||||||
|
|
||||||
|
private static final String TString = "-t <list of Build Targets>";
|
||||||
|
|
||||||
|
private static final String TStringInfo = "What kind of the version is the binary target, such as DEBUG, RELEASE. Multiple values can be specified on a single line, using space to separate the values.";
|
||||||
|
|
||||||
|
private static final String[] UsageString = { HString, AString, CString,
|
||||||
|
NString, PString, TString };
|
||||||
|
|
||||||
|
private static final String[] UsageStringInfo = { HStringInfo, AStringInfo,
|
||||||
|
CStringInfo, NStringInfo, PStringInfo, TStringInfo };
|
||||||
|
}
|
@ -0,0 +1,86 @@
|
|||||||
|
package org.tianocore.context;
|
||||||
|
|
||||||
|
public class ParseParameter {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* check the validity of user's input args
|
||||||
|
* @param args -- user's input
|
||||||
|
* @return true or false
|
||||||
|
**/
|
||||||
|
public static boolean checkParameter(String[] args) {
|
||||||
|
|
||||||
|
if(args.length == 0){
|
||||||
|
HelpInfo.outputUsageInfo();
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
if( args[0].charAt(0) != '-' ){
|
||||||
|
HelpInfo.outputUsageInfo();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
for(int i=0; i<args.length; i++){
|
||||||
|
if( (args[i].compareToIgnoreCase("-h") == 0) ||
|
||||||
|
(args[i].startsWith("-") && ((args[i].charAt(1) != 'a') && (args[i].charAt(1) != 'c')
|
||||||
|
&& (args[i].charAt(1) != 'n') && (args[i].charAt(1) != 'p') && (args[i].charAt(1) != 't')))){
|
||||||
|
HelpInfo.outputUsageInfo();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
standardizeParameter(args);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* standardize user's input args
|
||||||
|
* @param args -- user's input
|
||||||
|
* @return no return value
|
||||||
|
**/
|
||||||
|
private static void standardizeParameter(String[] args) {
|
||||||
|
|
||||||
|
length = pstr.length();
|
||||||
|
|
||||||
|
StringBuffer InputData = new StringBuffer();
|
||||||
|
for (int i = 0; i < args.length; i++) {
|
||||||
|
InputData.append(args[i]);
|
||||||
|
InputData.append(" ");
|
||||||
|
}
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
while (i < InputData.length()) {
|
||||||
|
int j = InputData.indexOf("-", i + 1);
|
||||||
|
if (j == -1)
|
||||||
|
j = InputData.length();
|
||||||
|
|
||||||
|
String argstr = InputData.substring(i, j);
|
||||||
|
|
||||||
|
if (argstr.charAt(1) == 'p') {
|
||||||
|
pstr += argstr.substring(2);
|
||||||
|
// pstr += "\n";
|
||||||
|
} else if (argstr.charAt(1) == 't') {
|
||||||
|
tstr += argstr.substring(2);
|
||||||
|
// tstr += "\n";
|
||||||
|
} else if (argstr.charAt(1) == 'a') {
|
||||||
|
astr += argstr.substring(2);
|
||||||
|
// astr += "\n";
|
||||||
|
} else if (argstr.charAt(1) == 'c') {
|
||||||
|
cstr += argstr.substring(2);
|
||||||
|
// cstr += "\n";
|
||||||
|
} else if (argstr.charAt(1) == 'n') {
|
||||||
|
nstr += argstr.substring(2);
|
||||||
|
// nstr += "\n";
|
||||||
|
}
|
||||||
|
i = j;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int length = 0;
|
||||||
|
public static String pstr = new String("ACTIVE_PLATFORM = ");
|
||||||
|
public static String tstr = new String("TARGET = ");
|
||||||
|
public static String astr = new String("TARGET_ARCH = ");
|
||||||
|
public static String cstr = new String("TOOL_CHAIN_CONF = ");
|
||||||
|
public static String nstr = new String("TOOL_CHAIN_TAG = ");
|
||||||
|
|
||||||
|
}
|
322
Tools/Source/ContextTool/org/tianocore/context/TargetFile.java
Normal file
322
Tools/Source/ContextTool/org/tianocore/context/TargetFile.java
Normal file
@ -0,0 +1,322 @@
|
|||||||
|
package org.tianocore.context;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.BufferedWriter;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.FileWriter;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.ByteBuffer;
|
||||||
|
import java.nio.channels.FileChannel;
|
||||||
|
|
||||||
|
public class TargetFile {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* check the validity of path and file
|
||||||
|
* @param String filename : the name of target file
|
||||||
|
* @return true or false
|
||||||
|
**/
|
||||||
|
public static boolean parsePath(String filename) {
|
||||||
|
|
||||||
|
String workspacePath = System.getenv("WORKSPACE");
|
||||||
|
|
||||||
|
Fd = new File(workspacePath + File.separator + "Tools" + File.separator + "Conf" + File.separator + filename);
|
||||||
|
|
||||||
|
if (Fd.exists() == true) {
|
||||||
|
if (createTempFile(filename + "tmp") == false) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (readwriteFile() == false) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
Fd.createNewFile();
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.out.printf("%n%s", "Create the file:target.txt failed!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
TargetFile.writeFile(Fd);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* create a empty temp file, which is located at the same directory with target file
|
||||||
|
* @param String filename : the name of target temp file
|
||||||
|
* @return true or false
|
||||||
|
**/
|
||||||
|
private static boolean createTempFile(String filename) {
|
||||||
|
|
||||||
|
String workspacePath = System.getenv("WORKSPACE");
|
||||||
|
|
||||||
|
TempFd = new File(workspacePath + File.separator + "Tools" + File.separator + "Conf" + File.separator + filename);
|
||||||
|
|
||||||
|
if (TempFd.exists() == true) {
|
||||||
|
if (TempFd.delete() == false) {
|
||||||
|
System.out.println("\n# delete file failed !");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
TempFd.createNewFile();
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.out.printf("%n%s",
|
||||||
|
"Create the temp file:target.txttmp failed!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* read from target.txt and write to target.txttmp, del target.txt, rename
|
||||||
|
* @param no paremeter
|
||||||
|
* @return true or false
|
||||||
|
**/
|
||||||
|
private static boolean readwriteFile() {
|
||||||
|
|
||||||
|
if (Fd.canRead() != true)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
BufferedReader br = null;
|
||||||
|
BufferedWriter bw = null;
|
||||||
|
String textLine = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
br = new BufferedReader(new FileReader(Fd));
|
||||||
|
} catch (FileNotFoundException e) {
|
||||||
|
System.out
|
||||||
|
.println("\n# create the BufferedReader failed, because can't find the file:target.txt!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
bw = new BufferedWriter(new FileWriter(TempFd));
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.out.println("\n# create the BufferedWriter failed!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
//TARGET_ARCH must be in front of TARGET!!! according to the target.txt
|
||||||
|
//
|
||||||
|
try {
|
||||||
|
while ((textLine = br.readLine()) != null) {
|
||||||
|
if (textLine.trim().compareToIgnoreCase("") == 0) {
|
||||||
|
bw.write(textLine);
|
||||||
|
bw.newLine();
|
||||||
|
} else if ((textLine.trim().charAt(0) == '#') && (textLine.indexOf("=") == -1)){
|
||||||
|
bw.write(textLine);
|
||||||
|
bw.newLine();
|
||||||
|
} else {
|
||||||
|
if (textLine.indexOf("ACTIVE_PLATFORM") != -1) {
|
||||||
|
if(ParseParameter.pstr.length() > ParseParameter.length) {
|
||||||
|
bw.write(ParseParameter.pstr);
|
||||||
|
} else {
|
||||||
|
bw.write(textLine);
|
||||||
|
}
|
||||||
|
bw.newLine();
|
||||||
|
} else if (textLine.indexOf("TARGET_ARCH") != -1) {
|
||||||
|
if(ParseParameter.astr.length() > ParseParameter.length) {
|
||||||
|
bw.write(ParseParameter.astr);
|
||||||
|
} else {
|
||||||
|
bw.write(textLine);
|
||||||
|
}
|
||||||
|
bw.newLine();
|
||||||
|
} else if (textLine.indexOf("TARGET") != -1) {
|
||||||
|
if(ParseParameter.tstr.length() > ParseParameter.length) {
|
||||||
|
bw.write(ParseParameter.tstr);
|
||||||
|
} else {
|
||||||
|
bw.write(textLine);
|
||||||
|
}
|
||||||
|
bw.newLine();
|
||||||
|
} else if (textLine.indexOf("TOOL_CHAIN_CONF") != -1) {
|
||||||
|
if(ParseParameter.cstr.length() > ParseParameter.length) {
|
||||||
|
bw.write(ParseParameter.cstr);
|
||||||
|
} else {
|
||||||
|
bw.write(textLine);
|
||||||
|
}
|
||||||
|
bw.newLine();
|
||||||
|
} else if (textLine.indexOf("TOOL_CHAIN_TAG") != -1) {
|
||||||
|
if(ParseParameter.nstr.length() > ParseParameter.length) {
|
||||||
|
bw.write(ParseParameter.nstr);
|
||||||
|
} else {
|
||||||
|
bw.write(textLine);
|
||||||
|
}
|
||||||
|
bw.newLine();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.out.println("\n# read or write file error!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
br.close();
|
||||||
|
bw.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.out
|
||||||
|
.println("\n# close BufferedReader&BufferedWriter error");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Fd.delete() == false) {
|
||||||
|
System.out.println("\n# delete file failed !");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (TempFd.renameTo(Fd) == false) {
|
||||||
|
System.out.println("\n# rename file failed !");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* according to user's input args, write the file directly
|
||||||
|
* @param File fd : the File of the target file
|
||||||
|
* @return true or false
|
||||||
|
**/
|
||||||
|
private static boolean writeFile(File fd) {
|
||||||
|
|
||||||
|
if (fd.canWrite() != true)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
FileOutputStream outputFile = null;
|
||||||
|
try {
|
||||||
|
outputFile = new FileOutputStream(fd);
|
||||||
|
} catch (FileNotFoundException e) {
|
||||||
|
System.out
|
||||||
|
.println("\n# can't find the file when open the output stream !");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
FileChannel outputChannel = outputFile.getChannel();
|
||||||
|
|
||||||
|
ByteBuffer[] buffers = new ByteBuffer[5];
|
||||||
|
buffers[0] = ByteBuffer.allocate(ParseParameter.pstr.toString().length());
|
||||||
|
buffers[1] = ByteBuffer.allocate(ParseParameter.tstr.toString().length());
|
||||||
|
buffers[2] = ByteBuffer.allocate(ParseParameter.astr.toString().length());
|
||||||
|
buffers[3] = ByteBuffer.allocate(ParseParameter.cstr.toString().length());
|
||||||
|
buffers[4] = ByteBuffer.allocate(ParseParameter.nstr.toString().length());
|
||||||
|
|
||||||
|
buffers[0].put(ParseParameter.pstr.toString().getBytes()).flip();
|
||||||
|
buffers[1].put(ParseParameter.tstr.toString().getBytes()).flip();
|
||||||
|
buffers[2].put(ParseParameter.astr.toString().getBytes()).flip();
|
||||||
|
buffers[3].put(ParseParameter.cstr.toString().getBytes()).flip();
|
||||||
|
buffers[4].put(ParseParameter.nstr.toString().getBytes()).flip();
|
||||||
|
|
||||||
|
try {
|
||||||
|
ByteBuffer bufofCP = ByteBuffer.allocate(Copyright.length());
|
||||||
|
bufofCP.put(Copyright.getBytes()).flip();
|
||||||
|
outputChannel.write(bufofCP);
|
||||||
|
|
||||||
|
ByteBuffer bufofFI = ByteBuffer.allocate(Fileinfo.length());
|
||||||
|
bufofFI.put(Fileinfo.getBytes()).flip();
|
||||||
|
outputChannel.write(bufofFI);
|
||||||
|
|
||||||
|
ByteBuffer buffer0 = ByteBuffer.allocate(pusage.length());
|
||||||
|
buffer0.put(pusage.getBytes()).flip();
|
||||||
|
outputChannel.write(buffer0);
|
||||||
|
outputChannel.write(buffers[0]);
|
||||||
|
|
||||||
|
ByteBuffer buffer1 = ByteBuffer.allocate(tusage.length());
|
||||||
|
buffer1.put(tusage.getBytes()).flip();
|
||||||
|
outputChannel.write(buffer1);
|
||||||
|
outputChannel.write(buffers[1]);
|
||||||
|
|
||||||
|
ByteBuffer buffer2 = ByteBuffer.allocate(ausage.length());
|
||||||
|
buffer2.put(ausage.getBytes()).flip();
|
||||||
|
outputChannel.write(buffer2);
|
||||||
|
outputChannel.write(buffers[2]);
|
||||||
|
|
||||||
|
ByteBuffer buffer3 = ByteBuffer.allocate(cusage.length());
|
||||||
|
buffer3.put(cusage.getBytes()).flip();
|
||||||
|
outputChannel.write(buffer3);
|
||||||
|
outputChannel.write(buffers[3]);
|
||||||
|
|
||||||
|
ByteBuffer buffer4 = ByteBuffer.allocate(nusage.length());
|
||||||
|
buffer4.put(nusage.getBytes()).flip();
|
||||||
|
outputChannel.write(buffer4);
|
||||||
|
outputChannel.write(buffers[4]);
|
||||||
|
|
||||||
|
outputFile.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.out.println("\n# The operations of file failed !");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
/// point to target.txttmp, a temp file, which is created and deleted during the tool's runtime.
|
||||||
|
///
|
||||||
|
private static File TempFd;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// point to target.txt.
|
||||||
|
///
|
||||||
|
private static File Fd;
|
||||||
|
|
||||||
|
private static final String Copyright = "#\n"
|
||||||
|
+ "# Copyright (c) 2006, Intel Corporation\n"
|
||||||
|
+ "#\n"
|
||||||
|
+ "# All rights reserved. This program and the accompanying materials\n"
|
||||||
|
+ "# are licensed and made available under the terms and conditions of the BSD License\n"
|
||||||
|
+ "# which accompanies this distribution. The full text of the license may be found at\n"
|
||||||
|
+ "# http://opensource.org/licenses/bsd-license.php\n"
|
||||||
|
+ "\n"
|
||||||
|
+ "# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN \"AS IS\" BASIS,\n"
|
||||||
|
+ "# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\n";
|
||||||
|
|
||||||
|
private static final String Fileinfo = "#\n"
|
||||||
|
+ "# Filename: target.template\n"
|
||||||
|
+ "#\n"
|
||||||
|
+ "# ALL Paths are Relative to WORKSPACE\n"
|
||||||
|
+ "\n"
|
||||||
|
+ "# Separate multiple LIST entries with a SINGLE SPACE character, do not use comma characters.\n"
|
||||||
|
+ "# Un-set an option by either commenting out the line, or not setting a value.\n";
|
||||||
|
|
||||||
|
private static final String pusage = "#\n"
|
||||||
|
+ "# PROPERTY Type Use Description\n"
|
||||||
|
+ "# ---------------- -------- -------- -----------------------------------------------------------\n"
|
||||||
|
+ "# ACTIVE_PLATFORM Filename Recommended Specify the WORKSPACE relative Path and Filename\n"
|
||||||
|
+ "# of the platform FPD file that will be used for the build\n"
|
||||||
|
+ "# This line is required if and only if the current working\n"
|
||||||
|
+ "# directory does not contain one or more FPD files.\n";
|
||||||
|
|
||||||
|
private static final String tusage = "\n\n"
|
||||||
|
+ "# TARGET List Optional Zero or more of the following: DEBUG, RELEASE, \n"
|
||||||
|
+ "# UserDefined; separated by a space character. \n"
|
||||||
|
+ "# If the line is missing or no value is specified, all\n"
|
||||||
|
+ "# valid targets specified in the FPD file will attempt \n"
|
||||||
|
+ "# to be built. The following line will build all platform\n"
|
||||||
|
+ "# targets.\n";
|
||||||
|
|
||||||
|
private static final String ausage = "\n\n"
|
||||||
|
+ "# TARGET_ARCH List Optional What kind of architecture is the binary being target for.\n"
|
||||||
|
+ "# One, or more, of the following, IA32, IA64, X64, EBC or ARM.\n"
|
||||||
|
+ "# Multiple values can be specified on a single line, using \n"
|
||||||
|
+ "# space charaters to separate the values. These are used \n"
|
||||||
|
+ "# during the parsing of an FPD file, restricting the build\n"
|
||||||
|
+ "# output target(s.)\n"
|
||||||
|
+ "# The Build Target ARCH is determined by a logical AND of:\n"
|
||||||
|
+ "# FPD BuildOptions: <SupportedArchitectures> tag\n"
|
||||||
|
+ "# If not specified, then all valid architectures specified \n"
|
||||||
|
+ "# in the FPD file, for which tools are available, will be \n"
|
||||||
|
+ "# built.\n";
|
||||||
|
|
||||||
|
private static final String cusage = "\n\n"
|
||||||
|
+ "# TOOL_DEFINITION_FILE Filename Optional Specify the name of the filename to use for specifying \n"
|
||||||
|
+ "# the tools to use for the build. If not specified, \n"
|
||||||
|
+ "# tools_def.txt will be used for the build. This file \n"
|
||||||
|
+ "# MUST be located in the WORKSPACE/Tools/Conf directory.\n";
|
||||||
|
|
||||||
|
private static final String nusage = "\n\n"
|
||||||
|
+ "# TAGNAME List Optional Specify the name(s) of the tools_def.txt TagName to use.\n"
|
||||||
|
+ "# If not specified, all applicable TagName tools will be \n"
|
||||||
|
+ "# used for the build. The list uses space character separation.\n";
|
||||||
|
}
|
15
Tools/bin/ContextTool
Normal file
15
Tools/bin/ContextTool
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#
|
||||||
|
# Copyright (c) 2006, Intel Corporation
|
||||||
|
# All rights reserved. This program and the accompanying materials
|
||||||
|
# are licensed and made available under the terms and conditions of the BSD License
|
||||||
|
# which accompanies this distribution. The full text of the license may be found at
|
||||||
|
# http://opensource.org/licenses/bsd-license.php
|
||||||
|
#
|
||||||
|
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
#
|
||||||
|
|
||||||
|
export CLASSPATH=$CLASSPATH:$WORKSPACE/Tools/bin/ContextTool.jar
|
||||||
|
|
||||||
|
# Run Framework Wizard
|
||||||
|
java org.tianocore.context.ContextMain
|
73
Tools/bin/ContextTool.bat
Normal file
73
Tools/bin/ContextTool.bat
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
@REM
|
||||||
|
@REM Copyright (c) 2006, Intel Corporation
|
||||||
|
@REM All rights reserved. This program and the accompanying materials
|
||||||
|
@REM are licensed and made available under the terms and conditions of the BSD License
|
||||||
|
@REM which accompanies this distribution. The full text of the license may be found at
|
||||||
|
@REM http://opensource.org/licenses/bsd-license.php
|
||||||
|
@REM
|
||||||
|
@REM THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||||
|
@REM WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
@REM
|
||||||
|
|
||||||
|
@echo off
|
||||||
|
|
||||||
|
:check_java
|
||||||
|
if "%JAVA_HOME%"=="" goto no_jdk
|
||||||
|
:check_wks
|
||||||
|
if "%WORKSPACE%"=="" goto no_wks
|
||||||
|
:check_ant
|
||||||
|
if "%ANT_HOME%"=="" goto no_ant
|
||||||
|
:check_xmlbeans
|
||||||
|
if "%XMLBEANS_HOME%"=="" goto no_xmlbeans
|
||||||
|
:check_surfacearea
|
||||||
|
if not exist %WORKSPACE%\Tools\Jars\SurfaceArea.jar (
|
||||||
|
goto no_surfacearea
|
||||||
|
)
|
||||||
|
:check_ContextTool
|
||||||
|
if not exist %WORKSPACE%\Tools\Jars\ContextTool.jar (
|
||||||
|
goto no_ContextTool
|
||||||
|
)
|
||||||
|
|
||||||
|
@REM Run Framework Wizard
|
||||||
|
call "java" -cp %CLASSPATH%;%WORKSPACE%\Tools\Jars\ContextTool.jar org.tianocore.context.ContextMain %*
|
||||||
|
|
||||||
|
goto end
|
||||||
|
|
||||||
|
:no_jdk
|
||||||
|
@echo.
|
||||||
|
@echo !!! Please set JAVA_HOME !!!
|
||||||
|
@echo.
|
||||||
|
goto check_wks
|
||||||
|
|
||||||
|
:no_wks
|
||||||
|
@echo.
|
||||||
|
@echo !!! Please set WORKSPACE !!!
|
||||||
|
@echo.
|
||||||
|
goto check_ant
|
||||||
|
|
||||||
|
:no_ant
|
||||||
|
@echo.
|
||||||
|
@echo !!! Please set ANT_HOME !!!
|
||||||
|
@echo.
|
||||||
|
goto check_xmlbeans
|
||||||
|
|
||||||
|
:no_xmlbeans
|
||||||
|
@echo.
|
||||||
|
@echo !!! Please set XMLBEANS_HOME !!!
|
||||||
|
@echo.
|
||||||
|
goto end
|
||||||
|
|
||||||
|
:no_surfacearea
|
||||||
|
@echo.
|
||||||
|
@echo !!! Please run edksetup.bat to build SurfaceArea.jar !!!
|
||||||
|
@echo.
|
||||||
|
goto end
|
||||||
|
|
||||||
|
:no_ContextTool
|
||||||
|
@echo.
|
||||||
|
@echo !!! Please run edksetup.bat to build ContextTool.jar !!!
|
||||||
|
@echo.
|
||||||
|
goto end
|
||||||
|
|
||||||
|
:end
|
||||||
|
@echo on
|
@ -39,6 +39,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|||||||
Source/Cpptasks/build.xml
|
Source/Cpptasks/build.xml
|
||||||
Source/FrameworkWizard/build.xml
|
Source/FrameworkWizard/build.xml
|
||||||
Source/MigrationTools/build.xml
|
Source/MigrationTools/build.xml
|
||||||
|
Source/ContextTool/build.xml
|
||||||
"/>
|
"/>
|
||||||
</subant>
|
</subant>
|
||||||
<echo message="The EDK II Java Tools build has completed!"/>
|
<echo message="The EDK II Java Tools build has completed!"/>
|
||||||
@ -99,6 +100,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|||||||
Source/SurfaceArea/build.xml
|
Source/SurfaceArea/build.xml
|
||||||
Source/TianoTools/build.xml
|
Source/TianoTools/build.xml
|
||||||
Source/MigrationTools/build.xml
|
Source/MigrationTools/build.xml
|
||||||
|
Source/ContextTool/build.xml
|
||||||
"/>
|
"/>
|
||||||
</subant>
|
</subant>
|
||||||
</target>
|
</target>
|
||||||
@ -131,6 +133,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|||||||
Source/SurfaceArea/build.xml
|
Source/SurfaceArea/build.xml
|
||||||
Source/TianoTools/build.xml
|
Source/TianoTools/build.xml
|
||||||
Source/MigrationTools/build.xml
|
Source/MigrationTools/build.xml
|
||||||
|
Source/ContextTool/build.xml
|
||||||
"/>
|
"/>
|
||||||
</subant>
|
</subant>
|
||||||
</target>
|
</target>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user