--- /dev/null
+/*\r
+ * \r
+ * Copyright 2001-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.compiler;\r
+import java.io.File;\r
+\r
+import net.sf.antcontrib.cpptasks.CCTask;\r
+import net.sf.antcontrib.cpptasks.LinkerDef;\r
+import net.sf.antcontrib.cpptasks.ProcessorDef;\r
+import net.sf.antcontrib.cpptasks.TargetDef;\r
+\r
+\r
+import org.apache.tools.ant.types.Environment;\r
+/**\r
+ * An abstract Linker implementation.\r
+ * \r
+ * @author Adam Murdoch\r
+ */\r
+public abstract class AbstractLinker extends AbstractProcessor\r
+ implements\r
+ Linker {\r
+ public AbstractLinker(String[] objExtensions, String[] ignoredExtensions) {\r
+ super(objExtensions, ignoredExtensions);\r
+ }\r
+ /**\r
+ * Returns the bid of the processor for the file.\r
+ * \r
+ * A linker will bid 1 on any unrecognized file type.\r
+ * \r
+ * @param inputFile\r
+ * filename of input file\r
+ * @return bid for the file, 0 indicates no interest, 1 indicates that the\r
+ * processor recognizes the file but doesn't process it (header\r
+ * files, for example), 100 indicates strong interest\r
+ */\r
+ public int bid(String inputFile) {\r
+ int bid = super.bid(inputFile);\r
+ switch (bid) {\r
+ //\r
+ // unrecognized extension, take the file\r
+ //\r
+ case 0 :\r
+ return 1;\r
+ //\r
+ // discard the ignored extensions\r
+ //\r
+ case 1 :\r
+ return 0;\r
+ }\r
+ return bid;\r
+ }\r
+ public Processor changeEnvironment(boolean newEnvironment, Environment env) {\r
+ return this;\r
+ }\r
+ abstract protected LinkerConfiguration createConfiguration(CCTask task,\r
+ LinkType linkType, ProcessorDef[] baseConfigs,\r
+ LinkerDef specificConfig, TargetDef targetPlatform);\r
+ public ProcessorConfiguration createConfiguration(CCTask task,\r
+ LinkType linkType, ProcessorDef[] baseConfigs,\r
+ ProcessorDef specificConfig,\r
+ TargetDef targetPlatform) {\r
+ if (specificConfig == null) {\r
+ throw new NullPointerException("specificConfig");\r
+ }\r
+ return createConfiguration(task, linkType, baseConfigs,\r
+ (LinkerDef) specificConfig, targetPlatform);\r
+ }\r
+ public String getLibraryKey(File libfile) {\r
+ return libfile.getName();\r
+ }\r
+ public abstract String getOutputFileName(String fileName);\r
+}\r