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