From: wuyizhong Date: Wed, 27 Sep 2006 05:53:35 +0000 (+0000) Subject: To fix EDKT341. Still existing issues for VfrCompile. X-Git-Tag: edk2-stable201903~24241 X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=commitdiff_plain;h=32c8b5a94765118ae0552b60365f393ebbc41691 To fix EDKT341. Still existing issues for VfrCompile. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1633 6f19259b-4bc3-4df7-8a09-765794883524 --- diff --git a/Tools/Conf/BuildMacro.xml b/Tools/Conf/BuildMacro.xml index 5b0d2a4918..27315073cf 100644 --- a/Tools/Conf/BuildMacro.xml +++ b/Tools/Conf/BuildMacro.xml @@ -76,7 +76,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj" dpath="${CC_DPATH}"> @@ -138,7 +138,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + outputFile="${DEST_DIR_OUTPUT}/AutoGen.h.obj" dpath="${CC_DPATH}"> @@ -183,7 +183,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj" dpath="${CC_DPATH}"> @@ -230,7 +230,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i" dpath="${CC_DPATH}"> @@ -312,7 +312,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - + @@ -335,7 +335,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj" dpath="${ASM_DPATH}"> @@ -386,7 +386,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj" dpath="${ASM_DPATH}"> @@ -445,7 +445,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - + @@ -454,7 +454,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. @@ -490,7 +490,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - + @@ -530,7 +530,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + outputFile="${BIN_DIR}/@{FILENAME}.lib" dpath="${SLINK_DPATH}"> @@ -655,7 +655,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. @@ -712,7 +712,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - + @@ -732,7 +732,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. @@ -799,7 +799,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - @@ -808,7 +808,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + outputFile="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.dll" dpath="${DLINK_DPATH}" > diff --git a/Tools/Source/Cpptasks/net/sf/antcontrib/cpptasks/userdefine/CommandLineUserDefine.java b/Tools/Source/Cpptasks/net/sf/antcontrib/cpptasks/userdefine/CommandLineUserDefine.java index 00e3ac620a..56e82de188 100644 --- a/Tools/Source/Cpptasks/net/sf/antcontrib/cpptasks/userdefine/CommandLineUserDefine.java +++ b/Tools/Source/Cpptasks/net/sf/antcontrib/cpptasks/userdefine/CommandLineUserDefine.java @@ -19,6 +19,7 @@ package net.sf.antcontrib.cpptasks.userdefine; import java.io.File; import java.util.Iterator; import java.util.LinkedHashSet; +import java.util.Map; import java.util.Set; import java.util.StringTokenizer; import java.util.Vector; @@ -31,6 +32,9 @@ import net.sf.antcontrib.cpptasks.types.ConditionalFileSet; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.DirectoryScanner; import org.apache.tools.ant.Project; +import org.apache.tools.ant.types.Environment; +import org.apache.tools.ant.types.Path; +import org.apache.tools.ant.types.Environment.Variable; /** * @@ -40,7 +44,9 @@ public class CommandLineUserDefine { String includePathDelimiter = null; String outputDelimiter = null; - + + private static String pathName = null; + public void command(CCTask cctask, UserDefineDef userdefine) { boolean isGccCommand = userdefine.getFamily().equalsIgnoreCase("GCC"); File workdir; @@ -136,6 +142,7 @@ public class CommandLineUserDefine { // if have source file append source file in command line. // Set allSrcFiles = new LinkedHashSet(); + for (int i = 0; i < srcSets.size(); i++) { ConditionalFileSet srcSet = (ConditionalFileSet) srcSets .elementAt(i); @@ -144,7 +151,6 @@ public class CommandLineUserDefine { // Find matching source files // DirectoryScanner scanner = srcSet.getDirectoryScanner(project); - // // Check each source file - see if it needs compilation // @@ -207,19 +213,57 @@ public class CommandLineUserDefine { for (int j = 0; j < fileNames.length; j++) { cmd[index++] = fileNames[j]; } + +// StringBuffer logLine = new StringBuffer(); +// for(int i = 0; i < cmd.length; i++) { +// logLine.append(cmd[i] + " "); +// } +// project.log(logLine.toString(), Project.MSG_VERBOSE); - int retval = runCommand(cctask, workdir, cmd); + int retval = 0; + if (userdefine.getDpath() == null || userdefine.getDpath().trim().length() == 0) { + retval = runCommand(cctask, workdir, cmd, null); + } else { + String existPath = System.getenv(getPathName()); + Environment newEnv = new Environment(); + Variable var = new Variable(); + var.setKey(getPathName()); + var.setPath(new Path(project, userdefine.getDpath() + ";" + existPath)); + newEnv.addVariable(var); + retval = runCommand(cctask, workdir, cmd, newEnv); + } + + if (retval != 0) { throw new BuildException(userdefine.getCmd() + " failed with return code " + retval, cctask .getLocation()); } } + + private String getPathName() { + if (pathName != null) { + return pathName; + } + Map allEnv = System.getenv(); + Iterator iter = allEnv.keySet().iterator(); + while (iter.hasNext()) { + String key = (String)iter.next(); + if(key.equalsIgnoreCase("PATH")) { + pathName = key; + break ; + } + } + return pathName; + } - protected int runCommand(CCTask task, File workingDir, String[] cmdline) + protected int runCommand(CCTask task, File workingDir, String[] cmdline, Environment env) throws BuildException { - return CUtil.runCommand(task, workingDir, cmdline, false, null); + // + // Write command to File + // + return CUtil.runCommand(task, workingDir, cmdline, false, env); } } diff --git a/Tools/Source/Cpptasks/net/sf/antcontrib/cpptasks/userdefine/UserDefineDef.java b/Tools/Source/Cpptasks/net/sf/antcontrib/cpptasks/userdefine/UserDefineDef.java index bf045d1e58..d983880ac7 100644 --- a/Tools/Source/Cpptasks/net/sf/antcontrib/cpptasks/userdefine/UserDefineDef.java +++ b/Tools/Source/Cpptasks/net/sf/antcontrib/cpptasks/userdefine/UserDefineDef.java @@ -61,6 +61,8 @@ public class UserDefineDef extends ProcessorDef { private String outputFile; private Vector allLibraries = new Vector(); + + private String dpath = null; public void addLibset(LibrarySet libset) { if (isReference()) { @@ -293,4 +295,12 @@ public class UserDefineDef extends ProcessorDef { this.outputDelimiter = outputDelimiter; } + public String getDpath() { + return dpath; + } + + public void setDpath(String dpath) { + this.dpath = dpath; + } + }