diff options
author | mattinger <[email protected]> | 2006-11-07 21:16:39 +0000 |
---|---|---|
committer | mattinger <[email protected]> | 2006-11-07 21:16:39 +0000 |
commit | c8da7ec534c959db815f272819dafaf61e49a9bd (patch) | |
tree | 16dfe231dadf33c0829ca23efe8a0021502d99eb /src/net/sf/antcontrib/cpptasks/arm | |
parent | 93d3419f7217a29d266acf2884c6327f1953cb3f (diff) |
Initial import of cpptasks code
git-svn-id: file:///home/sven/projects/JOGL/temp/ant-contrib/svn/ant-contrib-code/trunk/cpptasks@62 32d7a393-a5a9-423c-abd3-5d954feb1f2f
Diffstat (limited to 'src/net/sf/antcontrib/cpptasks/arm')
-rw-r--r-- | src/net/sf/antcontrib/cpptasks/arm/ADSCCompiler.java | 214 | ||||
-rw-r--r-- | src/net/sf/antcontrib/cpptasks/arm/ADSLibrarian.java | 159 | ||||
-rw-r--r-- | src/net/sf/antcontrib/cpptasks/arm/ADSLinker.java | 166 |
3 files changed, 539 insertions, 0 deletions
diff --git a/src/net/sf/antcontrib/cpptasks/arm/ADSCCompiler.java b/src/net/sf/antcontrib/cpptasks/arm/ADSCCompiler.java new file mode 100644 index 0000000..c7e12d5 --- /dev/null +++ b/src/net/sf/antcontrib/cpptasks/arm/ADSCCompiler.java @@ -0,0 +1,214 @@ +/* + * + * Copyright 2003-2004 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.arm; +import java.io.File; +import java.util.Vector; + +import net.sf.antcontrib.cpptasks.CUtil; +import net.sf.antcontrib.cpptasks.OptimizationEnum; +import net.sf.antcontrib.cpptasks.compiler.CommandLineCCompiler; +import net.sf.antcontrib.cpptasks.compiler.LinkType; +import net.sf.antcontrib.cpptasks.compiler.Linker; + +import org.apache.tools.ant.types.Environment; +/** + * Adapter for the ARM C Compilers + * + * See Doc No: ARM DUI 0151A, Issued: Nov 2001 at + * http://www.arm.com/arm/User_Guides?OpenDocument + * + * @author Curt Arnold + * + */ +public class ADSCCompiler extends CommandLineCCompiler { + /** + * Header file extensions + */ + private static final String[] headerExtensions = new String[]{".h", ".hpp", + ".inl"}; + /** + * Source file extensions + */ + private static final String[] sourceExtensions = new String[]{".c", ".cc", + ".cpp", ".cxx", ".c++"}; + /** + * Singleton for ARM 32-bit C compiler + */ + private static final ADSCCompiler armcc = new ADSCCompiler("armcc", false, + null); + /** + * Singleton for ARM 32-bit C++ compiler + */ + private static final ADSCCompiler armcpp = new ADSCCompiler("armcpp", + false, null); + /** + * Singleton for ARM 16-bit C compiler + */ + private static final ADSCCompiler tcc = new ADSCCompiler("tcc", false, null); + /** + * Singleton for ARM 16-bit C++ compiler + */ + private static final ADSCCompiler tcpp = new ADSCCompiler("tcpp", false, + null); + /** + * Singleton for ARM 32-bit C compiler + */ + public static ADSCCompiler getArmCC() { + return armcc; + } + /** + * Singleton for ARM 32-bit C++ compiler + */ + public static ADSCCompiler getArmCpp() { + return armcpp; + } + /** + * Singleton for ARM 16-bit C compiler + */ + public static ADSCCompiler getThumbCC() { + return tcc; + } + /** + * Singleton for ARM 16-bit C++ compiler + */ + public static ADSCCompiler getThumbCpp() { + return tcpp; + } + private static void quoteFile(StringBuffer buf, String outPath) { + if (outPath.indexOf(' ') >= 0) { + buf.append('\"'); + buf.append(outPath); + buf.append('\"'); + } else { + buf.append(outPath); + } + } + /** + * Private constructor + * + * @param command + * executable name + * @param newEnvironment + * Change environment + * @param env + * New environment + */ + private ADSCCompiler(String command, boolean newEnvironment, Environment env) { + super(command, "-vsn", sourceExtensions, headerExtensions, ".o", false, + null, newEnvironment, env); + } + /** + * Adds command switches for generic configuration options + * + * @see net.sf.antcontrib.cpptasks.compiler.CommandLineCompiler#addImpliedArgs(java.util.Vector, + * boolean, boolean, boolean, + * net.sf.antcontrib.cpptasks.compiler.LinkType) + */ + protected void addImpliedArgs(Vector args, + final boolean debug, + final boolean multithreaded, + final boolean exceptions, + final LinkType linkType, + final Boolean rtti, + final OptimizationEnum optimization) { + if (debug) { + args.addElement("-g"); + } + // + // didn't see anything about producing + // anything other than executables in the docs + if (linkType.isExecutable()) { + } else if (linkType.isSharedLibrary()) { + } + } + /** + * Adds flags that customize the warnings reported + * + * Compiler does not appear to have warning levels but ability to turn off + * specific errors by explicit switches, could fabricate levels by + * prioritizing errors. + * + * @see net.sf.antcontrib.cpptasks.compiler.CommandLineCompiler#addWarningSwitch(java.util.Vector, + * int) + */ + protected void addWarningSwitch(Vector args, int warnings) { + } + /** + * Add command line options for preprocessor macro + * + * @see net.sf.antcontrib.cpptasks.compiler.CommandLineCompiler#getDefineSwitch(java.lang.StringBuffer, + * java.lang.String, java.lang.String) + */ + protected void getDefineSwitch(StringBuffer buffer, String define, + String value) { + buffer.append("-D"); + buffer.append(define); + if (value != null) { + buffer.append('='); + buffer.append(value); + } + } + /** + * ARMINC environment variable contains the default include path + * + * @see net.sf.antcontrib.cpptasks.compiler.CommandLineCompiler#getEnvironmentIncludePath() + */ + protected File[] getEnvironmentIncludePath() { + return CUtil.getPathFromEnvironment("ARMINC", ";"); + } + /** + * Returns command line option to specify include directory + * + */ + protected String getIncludeDirSwitch(String source) { + StringBuffer buf = new StringBuffer("-I"); + quoteFile(buf, source); + return buf.toString(); + } + /* + * (non-Javadoc) + * + * @see net.sf.antcontrib.cpptasks.compiler.Processor#getLinker(net.sf.antcontrib.cpptasks.compiler.LinkType) + */ + public Linker getLinker(LinkType type) { + if (type.isStaticLibrary()) { + return ADSLibrarian.getInstance(); + } + if (type.isSharedLibrary()) { + return ADSLinker.getDllInstance(); + } + return ADSLinker.getInstance(); + } + /** + * Maximum command line length + * + * @see net.sf.antcontrib.cpptasks.compiler.CommandLineCompiler#getMaximumCommandLength() + */ + public int getMaximumCommandLength() { + return 1000; + } + /* + * Adds command to undefine preprocessor macro + * + * @see net.sf.antcontrib.cpptasks.compiler.CommandLineCompiler#getUndefineSwitch(java.lang.StringBuffer, + * java.lang.String) + */ + protected void getUndefineSwitch(StringBuffer buffer, String define) { + buffer.append("-U"); + buffer.append(define); + } +} diff --git a/src/net/sf/antcontrib/cpptasks/arm/ADSLibrarian.java b/src/net/sf/antcontrib/cpptasks/arm/ADSLibrarian.java new file mode 100644 index 0000000..65c430f --- /dev/null +++ b/src/net/sf/antcontrib/cpptasks/arm/ADSLibrarian.java @@ -0,0 +1,159 @@ +/* + * + * Copyright 2003-2004 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.arm; + +import java.io.File; +import java.util.Vector; + +import net.sf.antcontrib.cpptasks.compiler.CommandLineLinker; +import net.sf.antcontrib.cpptasks.compiler.LinkType; +import net.sf.antcontrib.cpptasks.compiler.Linker; +import net.sf.antcontrib.cpptasks.types.LibraryTypeEnum; + +/** + * Adapter for ARM Librarian + * + * @author Curt Arnold + */ +public class ADSLibrarian extends CommandLineLinker { + + private static final ADSLibrarian instance = new ADSLibrarian(); + + public static ADSLibrarian getInstance() { + return instance; + } + + private ADSLibrarian() + { + super("armar",null, + new String[] { ".o" }, new String[0], ".lib", false, null); + } + + /* (non-Javadoc) + * @see net.sf.antcontrib.cpptasks.compiler.CommandLineLinker#addBase(long, java.util.Vector) + */ + protected void addBase(long base, Vector args) { + // TODO Auto-generated method stub + + } + + /* (non-Javadoc) + * @see net.sf.antcontrib.cpptasks.compiler.CommandLineLinker#addFixed(java.lang.Boolean, java.util.Vector) + */ + protected void addFixed(Boolean fixed, Vector args) { + // TODO Auto-generated method stub + + } + + /* (non-Javadoc) + * @see net.sf.antcontrib.cpptasks.compiler.CommandLineLinker#addImpliedArgs(boolean, net.sf.antcontrib.cpptasks.compiler.LinkType, java.util.Vector) + */ + protected void addImpliedArgs( + boolean debug, + LinkType linkType, + Vector args) { + // TODO Auto-generated method stub + + } + + /* (non-Javadoc) + * @see net.sf.antcontrib.cpptasks.compiler.CommandLineLinker#addIncremental(boolean, java.util.Vector) + */ + protected void addIncremental(boolean incremental, Vector args) { + // TODO Auto-generated method stub + + } + + /* (non-Javadoc) + * @see net.sf.antcontrib.cpptasks.compiler.CommandLineLinker#addMap(boolean, java.util.Vector) + */ + protected void addMap(boolean map, Vector args) { + // TODO Auto-generated method stub + + } + + /* (non-Javadoc) + * @see net.sf.antcontrib.cpptasks.compiler.CommandLineLinker#addStack(int, java.util.Vector) + */ + protected void addStack(int stack, Vector args) { + // TODO Auto-generated method stub + + } + /* (non-Javadoc) + * @see net.sf.antcontrib.cpptasks.compiler.CommandLineLinker#addEntry(int, java.util.Vector) + */ + protected void addEntry(String entry, Vector args) { + // TODO Auto-generated method stub + + } + + /* (non-Javadoc) + * @see net.sf.antcontrib.cpptasks.compiler.CommandLineLinker#getCommandFileSwitch(java.lang.String) + */ + protected String getCommandFileSwitch(String commandFile) { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see net.sf.antcontrib.cpptasks.compiler.Linker#getLibraryPath() + */ + public File[] getLibraryPath() { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see net.sf.antcontrib.cpptasks.compiler.Linker#getLibraryPatterns(java.lang.String[]) + */ + public String[] getLibraryPatterns(String[] libnames, LibraryTypeEnum libType) { + return new String[0]; + } + + /* (non-Javadoc) + * @see net.sf.antcontrib.cpptasks.compiler.Processor#getLinker(net.sf.antcontrib.cpptasks.compiler.LinkType) + */ + public Linker getLinker(LinkType linkType) { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see net.sf.antcontrib.cpptasks.compiler.CommandLineLinker#getMaximumCommandLength() + */ + protected int getMaximumCommandLength() { + // TODO Auto-generated method stub + return 0; + } + + /* (non-Javadoc) + * @see net.sf.antcontrib.cpptasks.compiler.CommandLineLinker#getOutputFileSwitch(java.lang.String) + */ + protected String[] getOutputFileSwitch(String outputFile) { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see net.sf.antcontrib.cpptasks.compiler.Linker#isCaseSensitive() + */ + public boolean isCaseSensitive() { + // TODO Auto-generated method stub + return false; + } + +} diff --git a/src/net/sf/antcontrib/cpptasks/arm/ADSLinker.java b/src/net/sf/antcontrib/cpptasks/arm/ADSLinker.java new file mode 100644 index 0000000..fda52fa --- /dev/null +++ b/src/net/sf/antcontrib/cpptasks/arm/ADSLinker.java @@ -0,0 +1,166 @@ +/* + * + * Copyright 2003-2004 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.arm; +import java.io.File; +import java.util.Vector; + +import net.sf.antcontrib.cpptasks.CUtil; +import net.sf.antcontrib.cpptasks.compiler.CommandLineLinker; +import net.sf.antcontrib.cpptasks.compiler.LinkType; +import net.sf.antcontrib.cpptasks.compiler.Linker; +import net.sf.antcontrib.cpptasks.types.LibraryTypeEnum; + +/** + * Adapter for the ARM Linker + * + * @author CurtA + */ +public class ADSLinker extends CommandLineLinker { + private static final ADSLinker dllInstance = new ADSLinker(".o"); + private static final ADSLinker instance = new ADSLinker(".axf"); + public static ADSLinker getDllInstance() { + return dllInstance; + } + public static ADSLinker getInstance() { + return instance; + } + private ADSLinker(String outputSuffix) { + super("armlink", "-vsn", new String[]{".o", ".lib", ".res"}, + new String[]{".map", ".pdb", ".lnk"}, outputSuffix, false, null); + } + /* + * (non-Javadoc) + * + * @see net.sf.antcontrib.cpptasks.compiler.CommandLineLinker#addBase(long, + * java.util.Vector) + */ + protected void addBase(long base, Vector args) { + // TODO Auto-generated method stub + } + /* + * (non-Javadoc) + * + * @see net.sf.antcontrib.cpptasks.compiler.CommandLineLinker#addFixed(java.lang.Boolean, + * java.util.Vector) + */ + protected void addFixed(Boolean fixed, Vector args) { + // TODO Auto-generated method stub + } + /* + * (non-Javadoc) + * + * @see net.sf.antcontrib.cpptasks.compiler.CommandLineLinker#addImpliedArgs(boolean, + * net.sf.antcontrib.cpptasks.compiler.LinkType, java.util.Vector) + */ + protected void addImpliedArgs(boolean debug, LinkType linkType, Vector args) { + if (debug) { + args.addElement("-debug"); + } + } + /* + * (non-Javadoc) + * + * @see net.sf.antcontrib.cpptasks.compiler.CommandLineLinker#addIncremental(boolean, + * java.util.Vector) + */ + protected void addIncremental(boolean incremental, Vector args) { + // TODO Auto-generated method stub + } + /* + * (non-Javadoc) + * + * @see net.sf.antcontrib.cpptasks.compiler.CommandLineLinker#addMap(boolean, + * java.util.Vector) + */ + protected void addMap(boolean map, Vector args) { + // TODO Auto-generated method stub + } + /* + * (non-Javadoc) + * + * @see net.sf.antcontrib.cpptasks.compiler.CommandLineLinker#addStack(int, + * java.util.Vector) + */ + protected void addStack(int stack, Vector args) { + // TODO Auto-generated method stub + } + /* (non-Javadoc) + * @see net.sf.antcontrib.cpptasks.compiler.CommandLineLinker#addEntry(int, java.util.Vector) + */ + protected void addEntry(String entry, Vector args) { + // TODO Auto-generated method stub + + } + + /** + * May have to make this String array return + * + * @see net.sf.antcontrib.cpptasks.compiler.CommandLineLinker#getCommandFileSwitch(java.lang.String) + */ + protected String getCommandFileSwitch(String commandFile) { + return "-via" + commandFile; + } + /* + * (non-Javadoc) + * + * @see net.sf.antcontrib.cpptasks.compiler.Linker#getLibraryPath() + */ + public File[] getLibraryPath() { + return CUtil.getPathFromEnvironment("ARMLIB", ";"); + } + /* + * @see net.sf.antcontrib.cpptasks.compiler.Linker#getLibraryPatterns(java.lang.String[]) + */ + public String[] getLibraryPatterns(String[] libnames, LibraryTypeEnum libType) { + // + // TODO: looks like bad extension + // + return new String[]{".o"}; + } + /* + * (non-Javadoc) + * + * @see net.sf.antcontrib.cpptasks.compiler.Processor#getLinker(net.sf.antcontrib.cpptasks.compiler.LinkType) + */ + public Linker getLinker(LinkType linkType) { + return this; + } + /* + * (non-Javadoc) + * + * @see net.sf.antcontrib.cpptasks.compiler.CommandLineLinker#getMaximumCommandLength() + */ + protected int getMaximumCommandLength() { + return 1024; + } + /* + * (non-Javadoc) + * + * @see net.sf.antcontrib.cpptasks.compiler.CommandLineLinker#getOutputFileSwitch(java.lang.String) + */ + protected String[] getOutputFileSwitch(String outputFile) { + return new String[]{"-output", outputFile}; + } + /* + * (non-Javadoc) + * + * @see net.sf.antcontrib.cpptasks.compiler.Linker#isCaseSensitive() + */ + public boolean isCaseSensitive() { + return false; + } +} |