*/\r
package net.sf.antcontrib.cpptasks.userdefine;\r
\r
-import org.apache.tools.ant.Project;\r
-\r
import net.sf.antcontrib.cpptasks.CCTask;\r
-import org.tianocore.build.toolchain.*;\r
\r
public class UserDefineCompiler extends CommandLineUserDefine {\r
\r
public UserDefineCompiler(CCTask cctask, UserDefineDef userdefineDef) {\r
- String arch = null;\r
- String os = null;\r
- String vendor = null;\r
- String commandType = null;\r
- Project project = cctask.getProject();\r
- // get command string\r
- if (cctask.getArch() == null) {\r
- arch = project.getProperty("ARCH");\r
- if (arch == null) {\r
- arch = System.getProperty("os.arch");\r
- }\r
- } else {\r
- arch = cctask.getArch();\r
- }\r
- arch = arch.toUpperCase();\r
- if (cctask.getOs() == null) {\r
- os = project.getProperty("OS");\r
- if (os == null) {\r
- os = System.getProperty("os.name");\r
- }\r
+ String cmdType = userdefineDef.getType();\r
+ String toolchainFamily = userdefineDef.getFamily();\r
+ UserDefineMapping mapping = new UserDefineMapping();\r
+ \r
+ if (userdefineDef.getIncludepathDelimiter() == null) {\r
+ includePathDelimiter = mapping.getIncludePathDelimiter(toolchainFamily, cmdType); \r
} else {\r
- os = cctask.getOs();\r
- }\r
-\r
- commandType = userdefineDef.getType();\r
-\r
- if (commandType != null) {\r
- if (ToolChainFactory.getValue(arch + "_" + commandType + "_VENDOR") != null\r
- && ToolChainFactory.getValue(\r
- arch + "_" + commandType + "_VENDOR").trim()\r
- .length() > 0) {\r
- vendor = ToolChainFactory.getValue(arch + "_" + commandType\r
- + "_VENDOR");\r
- } else if (ToolChainFactory.getValue(arch + "_VENDOR") != null) {\r
- vendor = ToolChainFactory.getValue(arch + "_VENDOR");\r
- }\r
- }\r
-\r
- // look if ARCH_VENDOR_OS_COMMANDTYPE is existed\r
- if (arch != null && vendor != null && os != null && commandType != null) {\r
- command = project.getProperty(arch + "_" + vendor + "_" + os + "_"\r
- + commandType);\r
- }\r
- // look if ARCH_VENDOR_COMMANDTYPE is existed\r
- if (command == null) {\r
- if (arch != null && vendor != null && commandType != null) {\r
- command = project.getProperty(arch + "_" + vendor + "_"\r
- + commandType);\r
- }\r
- }\r
- // look if ARCH_COMMANDTYPE is existed\r
- if (command == null) {\r
- if (arch != null && commandType != null) {\r
- command = project.getProperty(arch + "_" + commandType);\r
- }\r
- }\r
- // look if COMMANDTYPE is existed\r
- if (command == null) {\r
- if (commandType != null) {\r
- command = project.getProperty(commandType);\r
- }\r
- }\r
- // using the default value from VENDOR_OS_COMMANDTYPE or\r
- // VENDOR_COMMANDTYPE\r
- if (command == null) {\r
- if (vendor != null && os != null && commandType != null) {\r
- String str = vendor + "_" + os + "_" + commandType;\r
- command = UserDefineMapping.getDefaultCommand(str);\r
- }\r
- }\r
- // VENDOR_COMMANDTYPE\r
- if (command == null) {\r
- if (vendor != null && commandType != null) {\r
- String str = vendor + "_" + commandType;\r
- command = UserDefineMapping.getDefaultCommand(str);\r
- }\r
- }\r
- // just give the name whatever\r
- if (command == null) {\r
- command = "cl";\r
- }\r
-\r
- // initialize the includePathDelimiter\r
- if (userdefineDef.getIncludepathDelimiter() != null) {\r
includePathDelimiter = userdefineDef.getIncludepathDelimiter();\r
}\r
- // else find VENDOR\r
- else {\r
- if (vendor != null) {\r
- includePathDelimiter = UserDefineMapping\r
- .getIncludePathDelimiter(vendor, commandType);\r
- }\r
- }\r
- if (includePathDelimiter == null) {\r
- includePathDelimiter = "-I";\r
- }\r
- /*\r
- * Set libSet.\r
- */\r
- if (userdefineDef.getLibSet() != null\r
- && userdefineDef.getLibSet().size() > 0) {\r
- String[] libList;\r
- if (vendor.equalsIgnoreCase("GCC")) {\r
- libSetList.add("-(");\r
- for (int i = 0; i < userdefineDef.getLibSet().size(); i++) {\r
- libList = userdefineDef.getLibSet().get(i).getLibs();\r
- for (int j = 0; j < libList.length; j++) {\r
- libSetList.add(libList[j]);\r
- }\r
- }\r
- libSetList.add("-)");\r
- } else {\r
- for (int i = 0; i < userdefineDef.getLibSet().size(); i++) {\r
- libList = userdefineDef.getLibSet().get(i).getLibs();\r
- for (int j = 0; j < libList.length; j++) {\r
- libSetList.add(libList[j]);\r
- }\r
- }\r
- }\r
- }\r
- /*\r
- * set includeFileFlag\r
- */\r
- if (userdefineDef.getIncludeFile() != null) {\r
- if (userdefineDef.getIncludeFileFlag() != null) {\r
- includeFileFlag = userdefineDef.getIncludeFileFlag();\r
- } else {\r
- includeFileFlag = UserDefineMapping.getCompellingIncFileFlag(\r
- vendor, commandType);\r
- }\r
- }\r
- /*\r
- * set entryPointFlag\r
- */\r
- if (userdefineDef.getEntryPointvalue() != null) {\r
- if (userdefineDef.getEntryPointFlag() != null) {\r
- entryPointFlag = userdefineDef.getEntryPointFlag();\r
- } else {\r
- entryPointFlag = UserDefineMapping.getEntryPointFlag(vendor,\r
- commandType);\r
- }\r
- }\r
- /*\r
- * set subSystemFlag\r
- */\r
- if (userdefineDef.getSubSystemvalue() != null) {\r
- if (userdefineDef.getSubSystemFlag() != null) {\r
- subSystemFlag = userdefineDef.getSubSystemFlag();\r
- } else {\r
- subSystemFlag = UserDefineMapping.getSubSystemFlag(vendor,\r
- commandType);\r
- }\r
- }\r
- /*\r
- * set mapFlag\r
- */\r
- if (userdefineDef.getMapvalue() != null) {\r
- if (userdefineDef.getMapFlag() != null) {\r
- mapFlag = userdefineDef.getMapFlag();\r
- } else {\r
- mapFlag = UserDefineMapping.getMapFlag(vendor, commandType);\r
- }\r
- }\r
- /*\r
- * set pdbFlag\r
- */\r
- if (userdefineDef.getPdbvalue() != null) {\r
- if (userdefineDef.getPdbFlag() != null) {\r
- pdbFlag = userdefineDef.getPdbFlag();\r
- } else {\r
- pdbFlag = UserDefineMapping.getPdbFlag(vendor, commandType);\r
- }\r
- }\r
- /*\r
- * set outputFileFlag\r
- */\r
- if (userdefineDef.getOutputFile() != null) {\r
- if (userdefineDef.getOutPutFlag() != null) {\r
- outputFileFlag = userdefineDef.getOutPutFlag();\r
- } else {\r
- outputFileFlag = UserDefineMapping.getOutputFileFlag(vendor,\r
- arch, commandType);\r
- }\r
- }\r
-\r
- /*\r
- * set fileList\r
- */\r
- if (userdefineDef.getFileList() != null) {\r
- fileList = userdefineDef.getFileList();\r
+ \r
+ if (userdefineDef.getOutputDelimiter() == null) {\r
+ outputDelimiter = mapping.getOutputFileFlag(toolchainFamily, cmdType);\r
+ } else {\r
+ outputDelimiter = userdefineDef.getOutputDelimiter();\r
}\r
+ \r
}\r
}\r