diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdPlatformDefs.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdPlatformDefs.java index 2881045d61..64201b5aa5 100644 --- a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdPlatformDefs.java +++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdPlatformDefs.java @@ -23,6 +23,7 @@ import javax.swing.ListSelectionModel; import org.tianocore.PlatformSurfaceAreaDocument; import org.tianocore.frameworkwizard.common.Identifications.OpeningPlatformType; import org.tianocore.frameworkwizard.common.ui.IInternalFrame; +import org.tianocore.frameworkwizard.toolchain.ToolChainId; import javax.swing.JCheckBox; import javax.swing.JOptionPane; @@ -44,31 +45,33 @@ import java.util.Vector; public class FpdPlatformDefs extends IInternalFrame { + private static boolean Debug = false; + private final int dialogWidth = 600; private final int oneRowHeight = 20; private final int twoRowHeight = 40; -// private final int threeRowHeight = 60; + // private final int threeRowHeight = 60; private final int fourRowHeight = 80; private final int sepHeight = 6; -// private final int sepWidth = 10; + // private final int sepWidth = 10; private final int buttonWidth = 90; private final int rowOne = 12; - private final int rowTwo = rowOne + oneRowHeight + sepHeight; + private final int rowTwo = rowOne + oneRowHeight + sepHeight * 3; private final int rowThree = rowTwo + oneRowHeight + sepHeight; private final int rowFour = rowThree + oneRowHeight + sepHeight; - private final int rowFive = rowFour + fourRowHeight + sepHeight; + private final int rowFive = rowFour + fourRowHeight + sepHeight * 3; private final int rowSix = rowFive + oneRowHeight + sepHeight; @@ -78,7 +81,7 @@ public class FpdPlatformDefs extends IInternalFrame { private final int rowNine = rowEight + oneRowHeight + sepHeight; - private final int rowTen = rowNine + fourRowHeight + sepHeight + sepHeight; + private final int rowTen = rowNine + fourRowHeight + sepHeight + sepHeight * 3; private final int rowEleven = rowTen + oneRowHeight + sepHeight; @@ -100,11 +103,6 @@ public class FpdPlatformDefs extends IInternalFrame { private final int tableWidth = valueWidth; - /** - * - */ - private static final long serialVersionUID = 1L; - static JFrame frame; private JPanel jContentPane = null; @@ -133,13 +131,15 @@ public class FpdPlatformDefs extends IInternalFrame { private JComboBox jComboBoxInterDir = null; + private JComboBox jBuildTargetComboBox = null; + private JTable jTableBuildTargets = null; private JPanel jArchitectureSelections = null; private JLabel jLabelBuildTargets = null; - private JTextField jTextFieldBuildTarget = null; + // private JTextField jTextFieldBuildTarget = null; private JButton jButtonAddBuildTarget = null; @@ -181,6 +181,13 @@ public class FpdPlatformDefs extends IInternalFrame { private int selectedRow = -1; + /** + * The following are not used by the UI + */ + private static final long serialVersionUID = 1L; + + private ToolChainId tid = new ToolChainId(); + public FpdPlatformDefs() { super(); initialize(); @@ -399,7 +406,9 @@ public class FpdPlatformDefs extends IInternalFrame { jPanelGeneralContainer.add(getArchitectureSelections(), null); jPanelGeneralContainer.add(jLabelBuildTargets, null); - jPanelGeneralContainer.add(getJTextFieldBuildTarget(), null); + // jPanelGeneralContainer.add(getJTextFieldBuildTarget(), null); + jPanelGeneralContainer.add(getJBuildTargetComboBox(), null); + jPanelGeneralContainer.add(getJButtonAddBuildTarget(), null); jPanelGeneralContainer.add(getJButtonDelBuildTarget(), null); jPanelGeneralContainer.add(getJScrollPaneBuildTargets(), null); @@ -441,6 +450,8 @@ public class FpdPlatformDefs extends IInternalFrame { jArchitectureSelections.setBounds(new java.awt.Rectangle(valueColumn, rowOne, valueWidth, oneRowHeight)); jArchitectureSelections.setPreferredSize(new java.awt.Dimension(valueWidth, oneRowHeight)); jArchitectureSelections.setLocation(new java.awt.Point(valueColumn, rowOne)); + jArchitectureSelections.setToolTipText("A Platform may support one or more architectures," + + "
at least one architecture must be selected!"); } return jArchitectureSelections; } @@ -601,21 +612,59 @@ public class FpdPlatformDefs extends IInternalFrame { return jCheckBoxPpc; } + /** + * Use a ComboBox for BuildTargets + * + * @return javax.swing.JComboBox jBuildTargetComboBox + */ + private JComboBox getJBuildTargetComboBox() { + if (jBuildTargetComboBox == null) { + String toolBt = null; + if (tid.getToolsDefTargetNames() == null) + toolBt = "DEBUG RELEASE"; + else + toolBt = tid.getToolsDefTargetNames().trim(); + + if ((toolBt.contains("*")) || (toolBt.length() < 1)) { + toolBt = "DEBUG RELEASE"; + } + if (Debug) + System.out.println("Using Build Targets: " + toolBt.trim()); + + toolBt = toolBt.replaceAll(" ", ":"); + toolBt = " :" + toolBt; + if (Debug) + System.out.println("Using Build Targets: " + toolBt.trim()); + String[] buildTargets = toolBt.trim().split(":"); + + jBuildTargetComboBox = new JComboBox(buildTargets); + jBuildTargetComboBox.setEditable(true); + jBuildTargetComboBox.setPreferredSize(new Dimension(valueWidth, oneRowHeight)); + jBuildTargetComboBox.setBounds(new java.awt.Rectangle(valueColumn, rowTwo, valueWidth, oneRowHeight)); + jBuildTargetComboBox.setLocation(new java.awt.Point(valueColumn, rowTwo)); + jBuildTargetComboBox.setToolTipText("Select a defined Target and then click Add,
" + + "or enter a new, one word TargetName and then click Add.
" + + "Remember to define the Targetname in the tool defintion file." + + ""); + + } + return jBuildTargetComboBox; + } + /** * This method initializes jTextField1 * * @return javax.swing.JTextField */ - private JTextField getJTextFieldBuildTarget() { - if (jTextFieldBuildTarget == null) { - jTextFieldBuildTarget = new JTextField(); - jTextFieldBuildTarget.setPreferredSize(new Dimension(valueWidth, oneRowHeight)); - jTextFieldBuildTarget.setBounds(new java.awt.Rectangle(valueColumn, rowTwo, valueWidth, oneRowHeight)); - jTextFieldBuildTarget.setLocation(new java.awt.Point(valueColumn, rowTwo)); - } - return jTextFieldBuildTarget; - } - + // private JTextField getJTextFieldBuildTarget() { + // if (jTextFieldBuildTarget == null) { + // jTextFieldBuildTarget = new JTextField(); + // jTextFieldBuildTarget.setPreferredSize(new Dimension(valueWidth, oneRowHeight)); + // jTextFieldBuildTarget.setBounds(new java.awt.Rectangle(valueColumn, rowTwo, valueWidth, oneRowHeight)); + // jTextFieldBuildTarget.setLocation(new java.awt.Point(valueColumn, rowTwo)); + // } + // return jTextFieldBuildTarget; + // } /** * This method initializes jButton2 * @@ -633,16 +682,26 @@ public class FpdPlatformDefs extends IInternalFrame { jButtonAddBuildTarget.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { - if (jTextFieldBuildTarget.getText().length() > 0) { - String[] row = { jTextFieldBuildTarget.getText() }; - jTextFieldBuildTarget.setText(""); + // Used with Text Field + // if (jTextFieldBuildTarget.getText().length() > 0) { + // String[] row = { jTextFieldBuildTarget.getText() }; + // jTextFieldBuildTarget.setText(""); + // buildTargetTableModel.addRow(row); + // Vector v = new Vector(); + // for (int i = 0; i < jTableBuildTargets.getRowCount(); ++i) { + // v.add(buildTargetTableModel.getValueAt(i, 0)); + // } + // docConsole.setSaved(false); + // ffc.setPlatformDefsBuildTargets(v); + // } + // Use with ComboBox + if (jBuildTargetComboBox.getSelectedItem().toString().length() > 0) { + String[] row = { jBuildTargetComboBox.getSelectedItem().toString() }; buildTargetTableModel.addRow(row); Vector v = new Vector(); for (int i = 0; i < jTableBuildTargets.getRowCount(); ++i) { v.add(buildTargetTableModel.getValueAt(i, 0)); } - docConsole.setSaved(false); - ffc.setPlatformDefsBuildTargets(v); } } }); @@ -716,6 +775,8 @@ public class FpdPlatformDefs extends IInternalFrame { jTableBuildTargets = new JTable(buildTargetTableModel); jTableBuildTargets.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); jTableBuildTargets.setRowHeight(oneRowHeight); + jTableBuildTargets.setToolTipText("Select one of the Targets from the table and
" + + "click Delete to remove the target from the platform."); buildTargetTableModel.addColumn("Build Target"); jTableBuildTargets.getModel().addTableModelListener(new TableModelListener() { @@ -753,6 +814,7 @@ public class FpdPlatformDefs extends IInternalFrame { jTextFieldSkuId.setPreferredSize(new Dimension(40, oneRowHeight)); jTextFieldSkuId.setBounds(new java.awt.Rectangle(valueColumn, rowSix, 40, oneRowHeight)); jTextFieldSkuId.setLocation(new java.awt.Point(valueColumn, rowSix)); + jTextFieldSkuId.setToolTipText("Enter a unique integer value."); } return jTextFieldSkuId; } @@ -768,6 +830,9 @@ public class FpdPlatformDefs extends IInternalFrame { jTextFieldSkuName.setPreferredSize(new Dimension(valueWidth, oneRowHeight)); jTextFieldSkuName.setBounds(new java.awt.Rectangle(valueColumn, rowSeven, valueWidth, oneRowHeight)); jTextFieldSkuName.setLocation(new java.awt.Point(valueColumn, rowSeven)); + jTextFieldSkuName.setToolTipText("Enter a name to help identify this SKU.
" + + "This entry is not used by the build system, it is
" + + "used only by this user interface."); } return jTextFieldSkuName; } @@ -843,7 +908,10 @@ public class FpdPlatformDefs extends IInternalFrame { jScrollPaneSkuInfo.setPreferredSize(new Dimension(tableWidth - 20, tableHeight - 20)); jScrollPaneSkuInfo.setBounds(new java.awt.Rectangle(valueColumn, rowNine, tableWidth - 5, tableHeight - 5)); jScrollPaneSkuInfo.setLocation(new java.awt.Point(valueColumn, rowNine)); - jScrollPaneSkuInfo.setBorder(null); + + jScrollPaneSkuInfo + .setBorder(javax.swing.BorderFactory + .createEtchedBorder(javax.swing.border.EtchedBorder.RAISED)); jScrollPaneSkuInfo.setViewportView(getJTableSkuInfo()); } @@ -861,6 +929,10 @@ public class FpdPlatformDefs extends IInternalFrame { skuInfoTableModel.addColumn("SKU ID"); skuInfoTableModel.addColumn("Name"); jTableSkuInfo = new JTable(skuInfoTableModel); + jTableSkuInfo.setToolTipText("SKU ID 0 must always be defined as the default.
" + + "0 can mean either SKU disabled, or it can be the
" + + "default value if more than one SKU is defined, and the
" + + "platform is not jumpered to use one of the other SKU values."); jTableSkuInfo.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); @@ -896,6 +968,10 @@ public class FpdPlatformDefs extends IInternalFrame { jComboBoxInterDir.addItem("UNIFIED"); jComboBoxInterDir.addItem("MODULE"); jComboBoxInterDir.setSelectedIndex(0); + jComboBoxInterDir.setToolTipText("Select UNIFIED to generate intermediate directories under
" + + "under platform directory tree.
" + + "Select MODULE to generate intermediate directories under the
" + + "individual module directories."); jComboBoxInterDir.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent e) { if (docConsole != null) { @@ -920,6 +996,7 @@ public class FpdPlatformDefs extends IInternalFrame { jTextFieldOutputDir.setBounds(new java.awt.Rectangle(valueColumn + 30, rowTwelve, valueWidth - 30, oneRowHeight)); jTextFieldOutputDir.setLocation(new java.awt.Point(valueColumn + 30, rowTwelve)); + jTextFieldOutputDir.setToolTipText("Select the name or URL for the output directory tree."); jTextFieldOutputDir.addFocusListener(new java.awt.event.FocusAdapter() { public void focusLost(java.awt.event.FocusEvent e) { docConsole.setSaved(false); diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/toolchain/Preferences.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/toolchain/Preferences.java index d7edcf99db..0c417c53a2 100644 --- a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/toolchain/Preferences.java +++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/toolchain/Preferences.java @@ -42,6 +42,7 @@ import org.tianocore.frameworkwizard.workspace.Workspace; import org.tianocore.frameworkwizard.workspace.WorkspaceTools; import org.tianocore.frameworkwizard.platform.PlatformIdentification; import org.tianocore.PlatformSurfaceAreaDocument; +import org.tianocore.frameworkwizard.toolchain.ToolChainId; /** * The class is used to update the target.txt file. @@ -224,7 +225,7 @@ public class Preferences extends IFrame { private Vector vArchList = null; private Vector vDisableArchList = null; - + // // Not used by UI // @@ -574,7 +575,6 @@ public class Preferences extends IFrame { * Read Current target.txt file first * Read TOOL_CHAIN_CONF file if specified, otherwise use tools_def.txt */ - readTargetTxtFile(); boolean haveBuildTargets = readToolDefinitionFile(); if (!haveBuildTargets) { diff --git a/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/toolchain/ToolChainId.java b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/toolchain/ToolChainId.java new file mode 100644 index 0000000000..992bd2f753 --- /dev/null +++ b/Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/toolchain/ToolChainId.java @@ -0,0 +1,305 @@ +/** @file + + This file is used to init tool chain and tool preference data + 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. + + **/ + +package org.tianocore.frameworkwizard.toolchain; + +import java.io.*; +import java.io.File; +import java.lang.Integer; +import java.util.ArrayList; + +import javax.swing.JOptionPane; + +import org.tianocore.frameworkwizard.common.DataType; +import org.tianocore.frameworkwizard.common.Tools; +import org.tianocore.frameworkwizard.common.Log; +import org.tianocore.frameworkwizard.workspace.Workspace; + +public class ToolChainId { + // + // Define class members + // + + private final boolean Debug = false; + + private String toolDefinitionFile = null; + + private final int toolDefFieldCount = 5; + + private String toolsDefIdentifier = null; + + private String toolsDefTargetNames = null; + + private final int toolsDefTargetNameField = 0; + + private String toolsDefTagNames = null; + + private final int toolsDefTagNameField = 1; + + private String toolsDefArchNames = null; + + private final int toolsDefArchNameField = 2; + + private final int toolsDefToolArgumentField = 4; + + private String toolCommandCodes = null; + + private final int toolsDefCmdCodeArgumentField = 3; + + + private String activePlatform = null; + + private String targetArchs = null; + + private String tagNames = null; + + private String buildTargets = null; + + private String toolFamilies = null; + + private ArrayList toolDefinitionContents = new ArrayList(50); + + private static boolean threadEnabled = false; + + private static int maxThreadCount = 0; + + private String toolsDir = Workspace.getCurrentWorkspace() + System.getProperty("file.separator") + "Tools" + + System.getProperty("file.separator") + "Conf"; + + private String strTargetFile = toolsDir + DataType.FILE_SEPARATOR + "target.txt"; + + private String defaultToolsConf = toolsDir + DataType.FILE_SEPARATOR + "tools_def.txt"; + + public void init() { + readTargetTxtFile(); + readToolDefinitionFile(); + } + + public ToolChainId() { + super(); + init(); + } + + public String getToolDefinitionFile() { + return toolDefinitionFile; + } + + public String getActivePlatform() { + return activePlatform; + } + + public String getBuildTargets() { + return buildTargets; + } + + public String getTagNames() { + return tagNames; + } + + public String getTargetArchitectures() { + return targetArchs; + } + + public boolean getThreadEnabled() { + return threadEnabled; + } + + public int getMaxThreadCount() { + return maxThreadCount; + } + + public String getToolFamilies() { + return toolFamilies; + } + + public String getToolDefinitionIdentifier() { + return toolsDefIdentifier; + } + + public ArrayList getToolDefinitionStatements() { + return toolDefinitionContents; + } + + public String getToolsDefTagNames() { + return toolsDefTagNames; + } + + public String getToolsDefTargetNames() { + return toolsDefTargetNames; + } + + public String getToolsDefCommandCodes() { + return toolCommandCodes; + } + + private void readTargetTxtFile() { + File tFile = new File(strTargetFile); + + if (tFile.exists()) { + try { + FileReader fileReader = new FileReader(strTargetFile); + BufferedReader reader = new BufferedReader(fileReader); + String rLine = null; + String inLine[] = new String[2]; + while ((rLine = reader.readLine()) != null) { + if ((rLine.startsWith("ACTIVE_PLATFORM")) && (activePlatform == null)) { + // Only one active platform is permitted! + inLine = rLine.trim().split("="); + activePlatform = inLine[1].trim(); + } + if ((rLine.startsWith("TARGET" + " ")) || (rLine.startsWith("TARGET" + "\t")) + || (rLine.startsWith("TARGET="))) { + // Handle multiple Target Names + if (rLine.contains(",")) { + inLine = rLine.trim().split("="); + buildTargets = inLine[1].trim().replaceAll(",", " "); + } else { + inLine = rLine.trim().split("="); + buildTargets = inLine[1].trim(); + } + } + if (rLine.startsWith("TARGET_ARCH")) { + // Handle multiple Target Architectures + if (rLine.contains(",")) { + inLine = rLine.trim().split("="); + targetArchs = inLine[1].trim().replaceAll(",", " "); + } else { + inLine = rLine.trim().split("="); + targetArchs = inLine[1].trim(); + } + } + if (rLine.startsWith("TOOL_CHAIN_CONF")) { + // Only one file is permitted + inLine = rLine.trim().split("="); + toolDefinitionFile = inLine[1].trim(); + } + + if (rLine.startsWith("TOOL_CHAIN_TAG")) { + // Handle multiple Tool TagNames + if (rLine.contains(",")) { + inLine = rLine.trim().split("="); + tagNames = inLine[1].trim().replaceAll(",", " "); + } else { + inLine = rLine.trim().split("="); + tagNames = inLine[1].trim(); + } + } + + if (rLine.startsWith("MULTIPLE_THREAD")) { + // Handle Thread Enable flag + if ((rLine.trim().toLowerCase().contains("enabled")) + || (rLine.trim().toLowerCase().contains("true"))) { + threadEnabled = true; + } else { + threadEnabled = false; + } + } + + if (rLine.startsWith("MAX_CONCURRENT_THREAD_NUMBER")) { + // Handle Thread Enable flag + inLine = rLine.trim().split("="); + maxThreadCount = Integer.valueOf(inLine[1].trim()); + } + } + reader.close(); + } catch (IOException e) { + Log.log(this.strTargetFile + " Read Error ", e.getMessage()); + e.printStackTrace(); + } + } else { + JOptionPane.showMessageDialog(null, "" + "Tool Preferences file:
" + strTargetFile + + "
does not exist!"); + } + } + + private void readToolDefinitionFile() { + + // Parse the tool definition file looking for targets and architectures + String toolsConfFile = null; + if (toolDefinitionFile != null) { + String resString = (Tools.convertPathToCurrentOsType(toolDefinitionFile)).trim(); + toolsConfFile = Workspace.getCurrentWorkspace() + System.getProperty("file.separator") + resString.trim(); + File toolsDefFile = new File(toolsConfFile); + if (!toolsDefFile.exists()) { + JOptionPane.showMessageDialog(null, "" + "Tool Definition file, " + toolDefinitionFile + + "
specified in the target.txt file does not exist!" + + "
Using the default Tool Definition File:
" + + defaultToolsConf); + toolsConfFile = defaultToolsConf; + } + } else { + toolsConfFile = defaultToolsConf; + } + String[] toolsDefFields = new String[toolDefFieldCount]; + for (int i = 0; i < toolDefFieldCount; i++) + toolsDefFields[i] = null; + File toolDefFile = new File(toolsConfFile); + if (toolDefFile.exists()) { + try { + FileReader fileReader = new FileReader(toolDefFile); + BufferedReader reader = new BufferedReader(fileReader); + String rLine = null; + String result[]; + while ((rLine = reader.readLine()) != null) { + if ((rLine.startsWith("IDENTIFIER")) && (toolsDefIdentifier == null)) { + result = rLine.split("="); + toolsDefIdentifier = (result[1]).trim(); + } else if ((!rLine.startsWith("#")) && (rLine.contains("="))) { + result = rLine.split("="); + toolsDefFields = ((result[0]).trim()).split("_"); + if (toolsDefTargetNames == null) { + toolsDefTargetNames = (toolsDefFields[toolsDefTargetNameField]).toUpperCase().trim() + " "; + } else if (!toolsDefTargetNames.contains((toolsDefFields[toolsDefTargetNameField]).toUpperCase().trim())) { + toolsDefTargetNames += (toolsDefFields[toolsDefTargetNameField]).toUpperCase().trim() + " "; + } + if (toolsDefTagNames == null) { + toolsDefTagNames = (toolsDefFields[toolsDefTagNameField]).toUpperCase().toUpperCase().trim() + " "; + } else if (!toolsDefTagNames.contains((toolsDefFields[toolsDefTagNameField]).toUpperCase().trim())) { + toolsDefTagNames += (toolsDefFields[toolsDefTagNameField]).toUpperCase().trim() + " "; + } + if (toolsDefArchNames == null) { + toolsDefArchNames = (toolsDefFields[toolsDefArchNameField]).toUpperCase().trim() + " "; + } else if (!toolsDefArchNames.contains((toolsDefFields[toolsDefArchNameField]).toUpperCase().trim())) { + toolsDefArchNames += (toolsDefFields[toolsDefArchNameField]).toUpperCase().trim() + " "; + } + if ((toolFamilies == null) && (rLine.trim().contains("FAMILY"))) { + toolFamilies = (toolsDefFields[toolsDefToolArgumentField]).toUpperCase().trim() + " "; + } else if ((rLine.trim().contains("FAMILY")) + && (!toolFamilies.contains((toolsDefFields[toolsDefToolArgumentField]).toUpperCase().trim()))) { + toolFamilies += (toolsDefFields[toolsDefToolArgumentField]).toUpperCase().trim() + " "; + } + if ((toolCommandCodes == null)) { + toolCommandCodes = (toolsDefFields[toolsDefCmdCodeArgumentField]).toUpperCase().trim() + " "; + } else if ((!toolCommandCodes.contains((toolsDefFields[toolsDefCmdCodeArgumentField]).toUpperCase().trim()))) { + toolCommandCodes += (toolsDefFields[toolsDefCmdCodeArgumentField].toUpperCase().trim()) + " "; + } + + toolDefinitionContents.add(rLine.trim().replaceAll(" ", "")); + } + } + reader.close(); + if (!toolsDefTargetNames.matches("[A-Z]+")) { + toolsDefTargetNames = toolsDefTargetNames.replace("* ", "").trim(); + if (Debug) + System.out.println("tools_def file does not define build targets: '" + toolsDefTargetNames + + "'"); + } + } catch (IOException e) { + Log.log(toolsConfFile + " Read Error ", e.getMessage()); + e.printStackTrace(); + } + } + } + +}