]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/Cpptasks/net/sf/antcontrib/cpptasks/gcc/GccProcessor.java
Restructuring for better separation of Tool packages.
[mirror_edk2.git] / Tools / Source / Cpptasks / net / sf / antcontrib / cpptasks / gcc / GccProcessor.java
diff --git a/Tools/Source/Cpptasks/net/sf/antcontrib/cpptasks/gcc/GccProcessor.java b/Tools/Source/Cpptasks/net/sf/antcontrib/cpptasks/gcc/GccProcessor.java
deleted file mode 100644 (file)
index 236969f..0000000
+++ /dev/null
@@ -1,299 +0,0 @@
-/*\r
- * \r
- * Copyright 2002-2004 The Ant-Contrib project\r
- *\r
- *  Licensed under the Apache License, Version 2.0 (the "License");\r
- *  you may not use this file except in compliance with the License.\r
- *  You may obtain a copy of the License at\r
- *\r
- *      http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- *  Unless required by applicable law or agreed to in writing, software\r
- *  distributed under the License is distributed on an "AS IS" BASIS,\r
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- *  See the License for the specific language governing permissions and\r
- *  limitations under the License.\r
- */\r
-package net.sf.antcontrib.cpptasks.gcc;\r
-import java.io.BufferedReader;\r
-import java.io.File;\r
-import java.io.FileReader;\r
-import java.io.IOException;\r
-import java.util.Vector;\r
-\r
-import net.sf.antcontrib.cpptasks.CUtil;\r
-import net.sf.antcontrib.cpptasks.compiler.CaptureStreamHandler;\r
-/**\r
- * A add-in class for Gcc processors\r
- * \r
- *  \r
- */\r
-public class GccProcessor {\r
-    //   the results from gcc -dumpmachine\r
-    private static String machine;\r
-    private static String[] specs;\r
-    //   the results from gcc -dumpversion\r
-    private static String version;\r
-    private static int addLibraryPatterns(String[] libnames, StringBuffer buf,\r
-            String prefix, String extension, String[] patterns, int offset) {\r
-        for (int i = 0; i < libnames.length; i++) {\r
-            buf.setLength(0);\r
-            buf.append(prefix);\r
-            buf.append(libnames[i]);\r
-            buf.append(extension);\r
-            patterns[offset + i] = buf.toString();\r
-        }\r
-        return offset + libnames.length;\r
-    }\r
-    /**\r
-     * Converts absolute Cygwin file or directory names to the corresponding\r
-     * Win32 name.\r
-     * \r
-     * @param names\r
-     *            array of names, some elements may be null, will be changed in\r
-     *            place.\r
-     */\r
-    public static void convertCygwinFilenames(String[] names) {\r
-        if (names == null) {\r
-            throw new NullPointerException("names");\r
-        }\r
-        File gccDir = CUtil.getExecutableLocation("gcc.exe");\r
-        if (gccDir != null) {\r
-            String prefix = gccDir.getAbsolutePath() + "/..";\r
-            StringBuffer buf = new StringBuffer();\r
-            for (int i = 0; i < names.length; i++) {\r
-                String name = names[i];\r
-                if (name != null && name.length() > 1 && name.charAt(0) == '/') {\r
-                    buf.setLength(0);\r
-                    buf.append(prefix);\r
-                    buf.append(name);\r
-                    names[i] = buf.toString();\r
-                }\r
-            }\r
-        }\r
-    }\r
-    public static String[] getLibraryPatterns(String[] libnames) {\r
-        StringBuffer buf = new StringBuffer();\r
-        String[] patterns = new String[libnames.length * 2];\r
-        int offset = addLibraryPatterns(libnames, buf, "lib", ".a", patterns, 0);\r
-        if (isHPUX()) {\r
-            offset = addLibraryPatterns(libnames, buf, "lib", ".sl", patterns,\r
-                    offset);\r
-        } else {\r
-            offset = addLibraryPatterns(libnames, buf, "lib", ".so", patterns,\r
-                    offset);\r
-        }\r
-        return patterns;\r
-    }\r
-    public static String getMachine() {\r
-        if (machine == null) {\r
-            String[] args = new String[]{"gcc", "-dumpmachine"};\r
-            String[] cmdout = CaptureStreamHandler.run(args);\r
-            if (cmdout.length == 0) {\r
-                machine = "nomachine";\r
-            } else {\r
-                machine = cmdout[0];\r
-            }\r
-        }\r
-        return machine;\r
-    }\r
-    public static String[] getOutputFileSwitch(String letter, String outputFile) {\r
-        StringBuffer buf = new StringBuffer();\r
-        if (outputFile.indexOf(' ') >= 0) {\r
-            buf.append('"');\r
-            buf.append(outputFile.replace('\\', '/'));\r
-            buf.append('"');\r
-        } else {\r
-            buf.append(outputFile.replace('\\', '/'));\r
-        }\r
-        String[] retval = new String[]{letter, buf.toString()};\r
-        return retval;\r
-    }\r
-    /**\r
-     * Returns the contents of the gcc specs file.\r
-     * \r
-     * The implementation locates gcc.exe in the executable path and then\r
-     * builds a relative path name from the results of -dumpmachine and\r
-     * -dumpversion. Attempts to use gcc -dumpspecs to provide this information\r
-     * resulted in stalling on the Execute.run\r
-     * \r
-     * @returns contents of the specs file\r
-     */\r
-    public static String[] getSpecs() {\r
-        if (specs == null) {\r
-            File gccParent = CUtil.getExecutableLocation("gcc.exe");\r
-            if (gccParent != null) {\r
-                //\r
-                //  build a relative path like\r
-                //    ../lib/gcc-lib/i686-pc-cygwin/2.95.3-5/specs\r
-                //\r
-                StringBuffer buf = new StringBuffer("../lib/gcc-lib/");\r
-                buf.append(getMachine());\r
-                buf.append('/');\r
-                buf.append(getVersion());\r
-                buf.append("/specs");\r
-                //\r
-                //  resolve it relative to the location of gcc.exe\r
-                //\r
-                String relativePath = buf.toString();\r
-                File specsFile = new File(gccParent, relativePath);\r
-                //\r
-                //  found the specs file\r
-                //\r
-                try {\r
-                    //\r
-                    //  read the lines in the file\r
-                    //\r
-                    BufferedReader reader = new BufferedReader(new FileReader(\r
-                            specsFile));\r
-                    Vector lines = new Vector(100);\r
-                    String line = reader.readLine();\r
-                    while (line != null) {\r
-                        lines.addElement(line);\r
-                        line = reader.readLine();\r
-                    }\r
-                    specs = new String[lines.size()];\r
-                    lines.copyInto(specs);\r
-                } catch (IOException ex) {\r
-                }\r
-            }\r
-        }\r
-        if (specs == null) {\r
-            specs = new String[0];\r
-        }\r
-        return specs;\r
-    }\r
-    public static String getVersion() {\r
-        if (version == null) {\r
-            String[] args = new String[]{"gcc", "-dumpversion"};\r
-            String[] cmdout = CaptureStreamHandler.run(args);\r
-            if (cmdout.length == 0) {\r
-                version = "noversion";\r
-            } else {\r
-                version = cmdout[0];\r
-            }\r
-        }\r
-        return version;\r
-    }\r
-    public static boolean isCaseSensitive() {\r
-        return true;\r
-    }\r
-    /**\r
-     * Determines if task is running with cygwin\r
-     * \r
-     * @return true if cygwin was detected\r
-     */\r
-    public static boolean isCygwin() {\r
-        return getMachine().indexOf("cygwin") > 0;\r
-    }\r
-    private static boolean isHPUX() {\r
-        String osname = System.getProperty("os.name").toLowerCase();\r
-        if (osname.indexOf("hp") >= 0 && osname.indexOf("ux") >= 0) {\r
-            return true;\r
-        }\r
-        return false;\r
-    }\r
-    /**\r
-     * \r
-     * Parses the results of the specs file for a specific processor and\r
-     * options\r
-     * \r
-     * @param specsContent\r
-     *            Contents of specs file as returned from getSpecs\r
-     * @param specSectionStart\r
-     *            start of spec section, for example "*cpp:"\r
-     * @param options\r
-     *            command line switches such as "-istart"\r
-     */\r
-    public static String[][] parseSpecs(String[] specsContent,\r
-            String specSectionStart, String[] options) {\r
-        if (specsContent == null) {\r
-            throw new NullPointerException("specsContent");\r
-        }\r
-        if (specSectionStart == null) {\r
-            throw new NullPointerException("specSectionStart");\r
-        }\r
-        if (options == null) {\r
-            throw new NullPointerException("option");\r
-        }\r
-        String[][] optionValues = new String[options.length][];\r
-        StringBuffer optionValue = new StringBuffer(40);\r
-        for (int i = 0; i < specsContent.length; i++) {\r
-            String specLine = specsContent[i];\r
-            //\r
-            //   if start of section then start paying attention\r
-            //\r
-            if (specLine.startsWith(specSectionStart)) {\r
-                Vector[] optionVectors = new Vector[options.length];\r
-                for (int j = 0; j < options.length; j++) {\r
-                    optionVectors[j] = new Vector(10);\r
-                }\r
-                //\r
-                //  go to next line and examine contents\r
-                //     and repeat until end of file\r
-                //\r
-                for (i++; i < specsContent.length; i++) {\r
-                    specLine = specsContent[i];\r
-                    for (int j = 0; j < options.length; j++) {\r
-                        int optionStart = specLine.indexOf(options[j]);\r
-                        while (optionStart >= 0) {\r
-                            optionValue.setLength(0);\r
-                            //\r
-                            //   walk rest of line looking for first non\r
-                            // whitespace\r
-                            //       and then next space\r
-                            boolean hasNonBlank = false;\r
-                            int k = optionStart + options[j].length();\r
-                            for (; k < specLine.length(); k++) {\r
-                                //\r
-                                //  either a blank or a "}" (close of\r
-                                // conditional)\r
-                                //    section will end the path\r
-                                //\r
-                                if (specLine.charAt(k) == ' '\r
-                                        || specLine.charAt(k) == '}') {\r
-                                    if (hasNonBlank) {\r
-                                        break;\r
-                                    }\r
-                                } else {\r
-                                    hasNonBlank = true;\r
-                                    optionValue.append(specLine.charAt(k));\r
-                                }\r
-                            }\r
-                            //\r
-                            //  transition back to whitespace\r
-                            //     value is over, add it to vector\r
-                            if (hasNonBlank) {\r
-                                optionVectors[j].addElement(optionValue\r
-                                        .toString());\r
-                            }\r
-                            //\r
-                            //  find next occurance on line\r
-                            //\r
-                            optionStart = specLine.indexOf(options[j], k);\r
-                        }\r
-                    }\r
-                }\r
-                //\r
-                //   copy vectors over to option arrays\r
-                //\r
-                for (int j = 0; j < options.length; j++) {\r
-                    optionValues[j] = new String[optionVectors[j].size()];\r
-                    optionVectors[j].copyInto(optionValues[j]);\r
-                }\r
-            }\r
-        }\r
-        //\r
-        //   fill in any missing option values with\r
-        //      a zero-length string array\r
-        for (int i = 0; i < optionValues.length; i++) {\r
-            String[] zeroLenArray = new String[0];\r
-            if (optionValues[i] == null) {\r
-                optionValues[i] = zeroLenArray;\r
-            }\r
-        }\r
-        return optionValues;\r
-    }\r
-    private GccProcessor() {\r
-    }\r
-}\r