summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/net/sf/antcontrib/cpptasks/CCTask.java50
-rw-r--r--src/net/sf/antcontrib/cpptasks/LinkerDef.java11
-rw-r--r--src/net/sf/antcontrib/cpptasks/arm/ADSLibrarian.java2
-rw-r--r--src/net/sf/antcontrib/cpptasks/arm/ADSLinker.java2
-rw-r--r--src/net/sf/antcontrib/cpptasks/borland/BorlandLibrarian.java42
-rw-r--r--src/net/sf/antcontrib/cpptasks/borland/BorlandLinker.java2
-rw-r--r--src/net/sf/antcontrib/cpptasks/compaq/CompaqVisualFortranLibrarian.java2
-rw-r--r--src/net/sf/antcontrib/cpptasks/compaq/CompaqVisualFortranLinker.java2
-rw-r--r--src/net/sf/antcontrib/cpptasks/compiler/AbstractCompiler.java5
-rw-r--r--src/net/sf/antcontrib/cpptasks/compiler/AbstractLinker.java16
-rw-r--r--src/net/sf/antcontrib/cpptasks/compiler/CommandLineCompilerConfiguration.java4
-rw-r--r--src/net/sf/antcontrib/cpptasks/compiler/CommandLineLinker.java10
-rw-r--r--src/net/sf/antcontrib/cpptasks/compiler/CommandLineLinkerConfiguration.java7
-rw-r--r--src/net/sf/antcontrib/cpptasks/compiler/Linker.java2
-rw-r--r--src/net/sf/antcontrib/cpptasks/compiler/LinkerConfiguration.java1
-rw-r--r--src/net/sf/antcontrib/cpptasks/devstudio/DevStudioCompatibleLibrarian.java2
-rw-r--r--src/net/sf/antcontrib/cpptasks/devstudio/DevStudioCompatibleLinker.java4
-rw-r--r--src/net/sf/antcontrib/cpptasks/devstudio/DevStudioLinker.java2
-rw-r--r--src/net/sf/antcontrib/cpptasks/gcc/AbstractArLibrarian.java8
-rw-r--r--src/net/sf/antcontrib/cpptasks/gcc/AbstractLdLinker.java19
-rw-r--r--src/net/sf/antcontrib/cpptasks/gcc/GccCCompiler.java3
-rw-r--r--src/net/sf/antcontrib/cpptasks/gcc/GccLinker.java92
-rw-r--r--src/net/sf/antcontrib/cpptasks/intel/IntelWin32Linker.java2
-rw-r--r--src/net/sf/antcontrib/cpptasks/openwatcom/OpenWatcomLibrarian.java2
-rw-r--r--src/net/sf/antcontrib/cpptasks/openwatcom/OpenWatcomLinker.java2
-rw-r--r--src/net/sf/antcontrib/cpptasks/os390/OS390Linker.java7
-rw-r--r--src/net/sf/antcontrib/cpptasks/os400/IccLinker.java9
-rw-r--r--src/net/sf/antcontrib/cpptasks/sun/C89Linker.java6
-rw-r--r--src/net/sf/antcontrib/cpptasks/ti/ClxxLibrarian.java2
-rw-r--r--src/net/sf/antcontrib/cpptasks/ti/ClxxLinker.java2
30 files changed, 88 insertions, 232 deletions
diff --git a/src/net/sf/antcontrib/cpptasks/CCTask.java b/src/net/sf/antcontrib/cpptasks/CCTask.java
index d5c9f2e..beeed89 100644
--- a/src/net/sf/antcontrib/cpptasks/CCTask.java
+++ b/src/net/sf/antcontrib/cpptasks/CCTask.java
@@ -152,7 +152,6 @@ public class CCTask extends Task {
}
/** The compiler definitions. */
private Vector _compilers = new Vector();
- private CompilerEnum compilerName;
/** The output file type. */
// private LinkType _linkType = LinkType.EXECUTABLE;
/** The library sets. */
@@ -209,10 +208,6 @@ public class CCTask extends Task {
*/
private String outputFileProperty;
/**
- * The prefix to append to the outputFileProperty.
- */
- private String outputFilePrefixProperty;
- /**
* if relentless = true, compilations should attempt to compile as many
* files as possible before throwing a BuildException
*/
@@ -429,14 +424,11 @@ public class CCTask extends Task {
FileVisitor objCollector = null;
FileVisitor sysLibraryCollector = null;
for (int i = 0; i < _linkers.size(); i++) {
- LinkerDef currentLinkerDef = (LinkerDef) _linkers.elementAt(i);
+ LinkerDef currentLinkerDef = (LinkerDef) _linkers.elementAt(i);
if (currentLinkerDef.isActive()) {
-
- selectedLinkerDef = currentLinkerDef;
- if(null != outputFilePrefixProperty){
- selectedLinkerDef.getLinker().setOutputFilePrefix(outputFilePrefixProperty);
- }
- selectedLinker = currentLinkerDef.getProcessor().getLinker(linkType);
+ selectedLinkerDef = currentLinkerDef;
+ selectedLinker = currentLinkerDef.getProcessor().getLinker(
+ linkType);
//
// skip the linker if it doesn't know how to
// produce the specified link type
@@ -471,12 +463,8 @@ public class CCTask extends Task {
}
if (linkerConfig == null) {
linkerConfig = linkerDef.createConfiguration(this, linkType, null, targetPlatform, versionInfo);
-
- selectedLinker = (Linker) linkerDef.getLinker().getLinker(
+ selectedLinker = (Linker) linkerDef.getProcessor().getLinker(
linkType);
- if(null != outputFilePrefixProperty){
- selectedLinker.setOutputFilePrefix(outputFilePrefixProperty);
- }
objCollector = new ObjectFileCollector(selectedLinker, objectFiles);
sysLibraryCollector = new SystemLibraryCollector(selectedLinker,
sysLibraries);
@@ -551,14 +539,7 @@ public class CCTask extends Task {
* if someting goes wrong with the build
*/
public void execute() throws BuildException {
-
- compilerDef.setName(compilerName);
- Processor compiler = compilerDef.getProcessor();
- Linker linker = compiler.getLinker(linkType);
- linker.setOutputFilePrefix(outputFilePrefixProperty);
- linkerDef.setProcessor(linker);
-
- //
+ //
// if link type allowed objdir to be defaulted
// provide it from outfile
if (_objDir == null) {
@@ -788,7 +769,6 @@ public class CCTask extends Task {
log("Starting link");
LinkerConfiguration linkConfig = (LinkerConfiguration) linkTarget
.getConfiguration();
- linkConfig.setOutputFilePrefix(outputFilePrefixProperty);
if (failOnError) {
linkConfig.link(this, linkTarget);
} else {
@@ -861,9 +841,6 @@ public class CCTask extends Task {
File[] sysObjectFileArray = new File[sysObjectFiles.size()];
sysObjectFiles.copyInto(sysObjectFileArray);
String baseName = _outfile.getName();
-
-
- linkerConfig.setOutputFilePrefix(outputFilePrefixProperty);
String[] fullNames = linkerConfig.getOutputFileNames(baseName, versionInfo);
File outputFile = new File(_outfile.getParent(), fullNames[0]);
return new TargetInfo(linkerConfig, objectFileArray,
@@ -1216,8 +1193,10 @@ public class CCTask extends Task {
*
*/
public void setName(CompilerEnum name) {
- compilerName = name;
-
+ compilerDef.setName(name);
+ Processor compiler = compilerDef.getProcessor();
+ Linker linker = compiler.getLinker(linkType);
+ linkerDef.setProcessor(linker);
}
/**
* Do not propagate old environment when new environment variables are
@@ -1267,15 +1246,6 @@ public class CCTask extends Task {
this.outputFileProperty = outputFileProperty;
}
/**
- * Sets the prefix for the output file. Default is dependent on the linker
- * however many linkers prefix the output with lib if the output is a dynamic
- * object. Setting this property to an empty string will remove this prefix.
- */
- public void setOutputFilePrefix(String outputFilePrefixProperty){
- this.outputFilePrefixProperty = outputFilePrefixProperty;
- }
-
- /**
* Sets the output file type. Supported values "executable", "shared", and
* "static".
*/
diff --git a/src/net/sf/antcontrib/cpptasks/LinkerDef.java b/src/net/sf/antcontrib/cpptasks/LinkerDef.java
index 51f3165..af1d307 100644
--- a/src/net/sf/antcontrib/cpptasks/LinkerDef.java
+++ b/src/net/sf/antcontrib/cpptasks/LinkerDef.java
@@ -281,17 +281,6 @@ public class LinkerDef extends ProcessorDef {
}
return linker;
}
- public Linker getLinker() {
- Linker linker = (Linker) super.getProcessor();
- if (linker == null) {
- linker = GccLinker.getInstance();
- }
- if (getLibtool() && linker instanceof CommandLineLinker) {
- CommandLineLinker cmdLineLinker = (CommandLineLinker) linker;
- linker = cmdLineLinker.getLibtoolLinker();
- }
- return linker;
- }
public int getStack(LinkerDef[] defaultProviders, int index) {
if (isReference()) {
return ((LinkerDef) getCheckedRef(LinkerDef.class, "LinkerDef"))
diff --git a/src/net/sf/antcontrib/cpptasks/arm/ADSLibrarian.java b/src/net/sf/antcontrib/cpptasks/arm/ADSLibrarian.java
index 0efc1f6..65c430f 100644
--- a/src/net/sf/antcontrib/cpptasks/arm/ADSLibrarian.java
+++ b/src/net/sf/antcontrib/cpptasks/arm/ADSLibrarian.java
@@ -40,7 +40,7 @@ public class ADSLibrarian extends CommandLineLinker {
private ADSLibrarian()
{
super("armar",null,
- new String[] { ".o" }, new String[0], "", ".lib", false, null);
+ new String[] { ".o" }, new String[0], ".lib", false, null);
}
/* (non-Javadoc)
diff --git a/src/net/sf/antcontrib/cpptasks/arm/ADSLinker.java b/src/net/sf/antcontrib/cpptasks/arm/ADSLinker.java
index 6b42b5c..fda52fa 100644
--- a/src/net/sf/antcontrib/cpptasks/arm/ADSLinker.java
+++ b/src/net/sf/antcontrib/cpptasks/arm/ADSLinker.java
@@ -40,7 +40,7 @@ public class ADSLinker extends CommandLineLinker {
}
private ADSLinker(String outputSuffix) {
super("armlink", "-vsn", new String[]{".o", ".lib", ".res"},
- new String[]{".map", ".pdb", ".lnk"}, "", outputSuffix, false, null);
+ new String[]{".map", ".pdb", ".lnk"}, outputSuffix, false, null);
}
/*
* (non-Javadoc)
diff --git a/src/net/sf/antcontrib/cpptasks/borland/BorlandLibrarian.java b/src/net/sf/antcontrib/cpptasks/borland/BorlandLibrarian.java
index bf9ee13..75846a4 100644
--- a/src/net/sf/antcontrib/cpptasks/borland/BorlandLibrarian.java
+++ b/src/net/sf/antcontrib/cpptasks/borland/BorlandLibrarian.java
@@ -39,7 +39,7 @@ public class BorlandLibrarian extends CommandLineLinker {
return instance;
}
private BorlandLibrarian() {
- super("tlib", "--version", new String[]{".obj"}, new String[0], "", ".lib", false,
+ super("tlib", "--version", new String[]{".obj"}, new String[0], ".lib", false,
null);
}
protected void addBase(long base, Vector args) {
@@ -60,12 +60,12 @@ public class BorlandLibrarian extends CommandLineLinker {
protected void addEntry(String entry, Vector args) {
}
- protected String getCommandFileSwitch(String cmdFile) {
- //
- // tlib requires quotes around paths containing -
- // ilink32 doesn't like them
- StringBuffer buf = new StringBuffer("@");
- BorlandProcessor.quoteFile(buf, cmdFile);
+ protected String getCommandFileSwitch(String cmdFile) {
+ //
+ // tlib requires quotes around paths containing -
+ // ilink32 doesn't like them
+ StringBuffer buf = new StringBuffer("@");
+ BorlandProcessor.quoteFile(buf, cmdFile);
return buf.toString();
}
public File[] getLibraryPath() {
@@ -182,8 +182,8 @@ public class BorlandLibrarian extends CommandLineLinker {
protected String[] prepareResponseFile(File outputFile, String[] args)
throws IOException {
String[] cmdargs = BorlandProcessor.prepareResponseFile(outputFile, args, " & \n");
- cmdargs[cmdargs.length - 1] = getCommandFileSwitch(cmdargs[cmdargs.length -1]);
- return cmdargs;
+ cmdargs[cmdargs.length - 1] = getCommandFileSwitch(cmdargs[cmdargs.length -1]);
+ return cmdargs;
}
/**
@@ -203,17 +203,17 @@ public class BorlandLibrarian extends CommandLineLinker {
// build a new library
super.link(task, outputFile, sourceFiles, config);
}
-
- /**
- * Encloses problematic file names within quotes.
- * @param buf string buffer
- * @param filename source file name
- * @returns filename potentially enclosed in quotes.
- */
- protected String quoteFilename(StringBuffer buf,String filename) {
- buf.setLength(0);
- BorlandProcessor.quoteFile(buf, filename);
- return buf.toString();
- }
+
+ /**
+ * Encloses problematic file names within quotes.
+ * @param buf string buffer
+ * @param filename source file name
+ * @returns filename potentially enclosed in quotes.
+ */
+ protected String quoteFilename(StringBuffer buf,String filename) {
+ buf.setLength(0);
+ BorlandProcessor.quoteFile(buf, filename);
+ return buf.toString();
+ }
}
diff --git a/src/net/sf/antcontrib/cpptasks/borland/BorlandLinker.java b/src/net/sf/antcontrib/cpptasks/borland/BorlandLinker.java
index ea1a523..315761f 100644
--- a/src/net/sf/antcontrib/cpptasks/borland/BorlandLinker.java
+++ b/src/net/sf/antcontrib/cpptasks/borland/BorlandLinker.java
@@ -43,7 +43,7 @@ public final class BorlandLinker extends CommandLineLinker {
}
private BorlandLinker(String outputSuffix) {
super("ilink32", "-r", new String[]{".obj", ".lib", ".res"},
- new String[]{".map", ".pdb", ".lnk"}, "", outputSuffix, false, null);
+ new String[]{".map", ".pdb", ".lnk"}, outputSuffix, false, null);
}
protected void addBase(long base, Vector args) {
if (base >= 0) {
diff --git a/src/net/sf/antcontrib/cpptasks/compaq/CompaqVisualFortranLibrarian.java b/src/net/sf/antcontrib/cpptasks/compaq/CompaqVisualFortranLibrarian.java
index 9522a4b..2488619 100644
--- a/src/net/sf/antcontrib/cpptasks/compaq/CompaqVisualFortranLibrarian.java
+++ b/src/net/sf/antcontrib/cpptasks/compaq/CompaqVisualFortranLibrarian.java
@@ -36,7 +36,7 @@ public class CompaqVisualFortranLibrarian extends CommandLineLinker {
return instance;
}
private CompaqVisualFortranLibrarian() {
- super("lib", "/bogus", new String[]{".obj"}, new String[0], "", ".lib",
+ super("lib", "/bogus", new String[]{".obj"}, new String[0], ".lib",
false, null);
}
protected void addBase(long base, Vector args) {
diff --git a/src/net/sf/antcontrib/cpptasks/compaq/CompaqVisualFortranLinker.java b/src/net/sf/antcontrib/cpptasks/compaq/CompaqVisualFortranLinker.java
index 001d833..c8930f9 100644
--- a/src/net/sf/antcontrib/cpptasks/compaq/CompaqVisualFortranLinker.java
+++ b/src/net/sf/antcontrib/cpptasks/compaq/CompaqVisualFortranLinker.java
@@ -34,7 +34,7 @@ public final class CompaqVisualFortranLinker extends DevStudioCompatibleLinker {
return instance;
}
private CompaqVisualFortranLinker(String outputSuffix) {
- super("DF", "__bogus__.xxx", "", outputSuffix);
+ super("DF", "__bogus__.xxx", outputSuffix);
}
protected void addImpliedArgs(boolean debug, LinkType linkType, Vector args) {
args.addElement("/NOLOGO");
diff --git a/src/net/sf/antcontrib/cpptasks/compiler/AbstractCompiler.java b/src/net/sf/antcontrib/cpptasks/compiler/AbstractCompiler.java
index a572930..e61bd64 100644
--- a/src/net/sf/antcontrib/cpptasks/compiler/AbstractCompiler.java
+++ b/src/net/sf/antcontrib/cpptasks/compiler/AbstractCompiler.java
@@ -41,7 +41,6 @@ public abstract class AbstractCompiler extends AbstractProcessor
Compiler {
private static final String[] emptyIncludeArray = new String[0];
private String outputSuffix;
- private static String outputFilePrefix;
protected AbstractCompiler(String[] sourceExtensions,
String[] headerExtensions, String outputSuffix) {
super(sourceExtensions, headerExtensions);
@@ -206,8 +205,4 @@ public abstract class AbstractCompiler extends AbstractProcessor
}
return false;
}
-
- public void setOutputFilePrefix(String outputFilePrefix){
- this.outputFilePrefix = outputFilePrefix;
- }
}
diff --git a/src/net/sf/antcontrib/cpptasks/compiler/AbstractLinker.java b/src/net/sf/antcontrib/cpptasks/compiler/AbstractLinker.java
index 5b5beaf..9de9491 100644
--- a/src/net/sf/antcontrib/cpptasks/compiler/AbstractLinker.java
+++ b/src/net/sf/antcontrib/cpptasks/compiler/AbstractLinker.java
@@ -32,11 +32,8 @@ import org.apache.tools.ant.types.Environment;
* @author Adam Murdoch
*/
public abstract class AbstractLinker extends AbstractProcessor
- implements Linker {
-
- protected static String outputFilePrefix = null;
-
-
+ implements
+ Linker {
public AbstractLinker(String[] objExtensions, String[] ignoredExtensions) {
super(objExtensions, ignoredExtensions);
}
@@ -67,16 +64,13 @@ public abstract class AbstractLinker extends AbstractProcessor
}
return bid;
}
-
public Processor changeEnvironment(boolean newEnvironment, Environment env) {
return this;
}
-
abstract protected LinkerConfiguration createConfiguration(CCTask task,
LinkType linkType, ProcessorDef[] baseConfigs,
LinkerDef specificConfig, TargetDef targetPlatform,
VersionInfo versionInfo);
-
public ProcessorConfiguration createConfiguration(CCTask task,
LinkType linkType, ProcessorDef[] baseConfigs,
ProcessorDef specificConfig,
@@ -88,17 +82,11 @@ public abstract class AbstractLinker extends AbstractProcessor
return createConfiguration(task, linkType, baseConfigs,
(LinkerDef) specificConfig, targetPlatform, versionInfo);
}
-
public String getLibraryKey(File libfile) {
return libfile.getName();
}
-
public abstract String[] getOutputFileNames(String fileName, VersionInfo versionInfo);
- public void setOutputFilePrefix(String outputFilePrefix){
- this.outputFilePrefix = outputFilePrefix;
-
- }
/**
* Adds source or object files to the bidded fileset to
diff --git a/src/net/sf/antcontrib/cpptasks/compiler/CommandLineCompilerConfiguration.java b/src/net/sf/antcontrib/cpptasks/compiler/CommandLineCompilerConfiguration.java
index 2295a5c..38492ea 100644
--- a/src/net/sf/antcontrib/cpptasks/compiler/CommandLineCompilerConfiguration.java
+++ b/src/net/sf/antcontrib/cpptasks/compiler/CommandLineCompilerConfiguration.java
@@ -47,7 +47,6 @@ public final class CommandLineCompilerConfiguration
private/* final */ProcessorParam[] params;
private/* final */boolean rebuild;
private/* final */File[] sysIncludePath;
- private static String outputFilePrefix;
public CommandLineCompilerConfiguration(CommandLineCompiler compiler,
String identifier, File[] includePath, File[] sysIncludePath,
File[] envIncludePath, String includePathIdentifier, String[] args,
@@ -224,7 +223,4 @@ public final class CommandLineCompilerConfiguration
public String getCommand() {
return compiler.getCommand();
}
- public void setOutputFilePrefix(String outputFilePrefix){
- this.outputFilePrefix = outputFilePrefix;
- }
}
diff --git a/src/net/sf/antcontrib/cpptasks/compiler/CommandLineLinker.java b/src/net/sf/antcontrib/cpptasks/compiler/CommandLineLinker.java
index 52b0d67..f9e4761 100644
--- a/src/net/sf/antcontrib/cpptasks/compiler/CommandLineLinker.java
+++ b/src/net/sf/antcontrib/cpptasks/compiler/CommandLineLinker.java
@@ -54,25 +54,17 @@ public abstract class CommandLineLinker extends AbstractLinker
private boolean newEnvironment = false;
private String outputSuffix;
- protected String outputPrefix;
-
- public void setOutputPrefix(String outputPrefix){
- this.outputPrefix = outputPrefix;
- }
-
-
/** Creates a comand line linker invocation */
public CommandLineLinker(String command,
String identifierArg,
String[] extensions,
- String[] ignoredExtensions, String outputPrefix, String outputSuffix,
+ String[] ignoredExtensions, String outputSuffix,
boolean isLibtool, CommandLineLinker libtoolLinker)
{
super(extensions, ignoredExtensions);
this.command = command;
this.identifierArg = identifierArg;
- this.outputPrefix = outputPrefix;
this.outputSuffix = outputSuffix;
this.isLibtool = isLibtool;
this.libtoolLinker = libtoolLinker;
diff --git a/src/net/sf/antcontrib/cpptasks/compiler/CommandLineLinkerConfiguration.java b/src/net/sf/antcontrib/cpptasks/compiler/CommandLineLinkerConfiguration.java
index d67ffd3..f0aad67 100644
--- a/src/net/sf/antcontrib/cpptasks/compiler/CommandLineLinkerConfiguration.java
+++ b/src/net/sf/antcontrib/cpptasks/compiler/CommandLineLinkerConfiguration.java
@@ -87,13 +87,8 @@ public final class CommandLineLinkerConfiguration
return map;
}
public String[] getOutputFileNames(String inputFile, VersionInfo versionInfo) {
- return linker.getOutputFileNames(inputFile, versionInfo);
+ return linker.getOutputFileNames(inputFile, versionInfo);
}
-
- public void setOutputFilePrefix(String outputFilePrefix) {
- linker.setOutputFilePrefix(outputFilePrefix);
- }
-
public LinkerParam getParam(String name) {
for (int i = 0; i < params.length; i++) {
if (name.equals(params[i].getName()))
diff --git a/src/net/sf/antcontrib/cpptasks/compiler/Linker.java b/src/net/sf/antcontrib/cpptasks/compiler/Linker.java
index 32c29ef..672a0e3 100644
--- a/src/net/sf/antcontrib/cpptasks/compiler/Linker.java
+++ b/src/net/sf/antcontrib/cpptasks/compiler/Linker.java
@@ -77,6 +77,4 @@ public interface Linker extends Processor {
final boolean isDebug,
final File objDir,
final TargetMatcher matcher) throws IOException;
-
- public void setOutputFilePrefix(String outputFilePrefix);
}
diff --git a/src/net/sf/antcontrib/cpptasks/compiler/LinkerConfiguration.java b/src/net/sf/antcontrib/cpptasks/compiler/LinkerConfiguration.java
index c6fe2dc..ff7ac5d 100644
--- a/src/net/sf/antcontrib/cpptasks/compiler/LinkerConfiguration.java
+++ b/src/net/sf/antcontrib/cpptasks/compiler/LinkerConfiguration.java
@@ -28,7 +28,6 @@ import org.apache.tools.ant.BuildException;
public interface LinkerConfiguration extends ProcessorConfiguration {
public LinkerParam getParam(String name);
void link(CCTask task, TargetInfo linkTarget) throws BuildException;
- public void setOutputFilePrefix(String outputFilePrefix);
Linker getLinker();
boolean isDebug();
}
diff --git a/src/net/sf/antcontrib/cpptasks/devstudio/DevStudioCompatibleLibrarian.java b/src/net/sf/antcontrib/cpptasks/devstudio/DevStudioCompatibleLibrarian.java
index f0f7bb8..985dfcf 100644
--- a/src/net/sf/antcontrib/cpptasks/devstudio/DevStudioCompatibleLibrarian.java
+++ b/src/net/sf/antcontrib/cpptasks/devstudio/DevStudioCompatibleLibrarian.java
@@ -30,7 +30,7 @@ import net.sf.antcontrib.cpptasks.types.LibraryTypeEnum;
public abstract class DevStudioCompatibleLibrarian extends CommandLineLinker {
public DevStudioCompatibleLibrarian(String command, String identifierArg) {
super(command, identifierArg, new String[]{".obj"}, new String[0],
- "", ".lib", false, null);
+ ".lib", false, null);
}
protected void addBase(long base, Vector args) {
}
diff --git a/src/net/sf/antcontrib/cpptasks/devstudio/DevStudioCompatibleLinker.java b/src/net/sf/antcontrib/cpptasks/devstudio/DevStudioCompatibleLinker.java
index 07a0aea..c21a6f6 100644
--- a/src/net/sf/antcontrib/cpptasks/devstudio/DevStudioCompatibleLinker.java
+++ b/src/net/sf/antcontrib/cpptasks/devstudio/DevStudioCompatibleLinker.java
@@ -35,9 +35,9 @@ import net.sf.antcontrib.cpptasks.types.LibraryTypeEnum;
*/
public abstract class DevStudioCompatibleLinker extends CommandLineLinker {
public DevStudioCompatibleLinker(String command, String identifierArg,
- String outputPrefix, String outputSuffix) {
+ String outputSuffix) {
super(command, identifierArg, new String[]{".obj", ".lib", ".res"},
- new String[]{".map", ".pdb", ".lnk", ".dll"}, outputPrefix, outputSuffix,
+ new String[]{".map", ".pdb", ".lnk", ".dll"}, outputSuffix,
false, null);
}
protected void addBase(long base, Vector args) {
diff --git a/src/net/sf/antcontrib/cpptasks/devstudio/DevStudioLinker.java b/src/net/sf/antcontrib/cpptasks/devstudio/DevStudioLinker.java
index be89bfa..826074b 100644
--- a/src/net/sf/antcontrib/cpptasks/devstudio/DevStudioLinker.java
+++ b/src/net/sf/antcontrib/cpptasks/devstudio/DevStudioLinker.java
@@ -30,7 +30,7 @@ public final class DevStudioLinker extends DevStudioCompatibleLinker {
return instance;
}
private DevStudioLinker(String outputSuffix) {
- super("link", "/DLL", "", outputSuffix);
+ super("link", "/DLL", outputSuffix);
}
public Linker getLinker(LinkType type) {
if (type.isSharedLibrary()) {
diff --git a/src/net/sf/antcontrib/cpptasks/gcc/AbstractArLibrarian.java b/src/net/sf/antcontrib/cpptasks/gcc/AbstractArLibrarian.java
index 45a8100..2e8d4af 100644
--- a/src/net/sf/antcontrib/cpptasks/gcc/AbstractArLibrarian.java
+++ b/src/net/sf/antcontrib/cpptasks/gcc/AbstractArLibrarian.java
@@ -33,13 +33,15 @@ import org.apache.tools.ant.BuildException;
* @author Curt Arnold
*/
public abstract class AbstractArLibrarian extends CommandLineLinker {
-
+ private/* final */
+ String outputPrefix;
protected AbstractArLibrarian(String command, String identificationArg,
String[] inputExtensions, String[] ignoredExtensions,
String outputPrefix, String outputExtension, boolean isLibtool,
AbstractArLibrarian libtoolLibrarian) {
- super(command, identificationArg, inputExtensions, ignoredExtensions,
- outputPrefix, outputExtension, isLibtool, libtoolLibrarian);
+ super(command, identificationArg, inputExtensions, ignoredExtensions,
+ outputExtension, isLibtool, libtoolLibrarian);
+ this.outputPrefix = outputPrefix;
}
public void addBase(long base, Vector args) {
}
diff --git a/src/net/sf/antcontrib/cpptasks/gcc/AbstractLdLinker.java b/src/net/sf/antcontrib/cpptasks/gcc/AbstractLdLinker.java
index 1465198..a210e7e 100644
--- a/src/net/sf/antcontrib/cpptasks/gcc/AbstractLdLinker.java
+++ b/src/net/sf/antcontrib/cpptasks/gcc/AbstractLdLinker.java
@@ -33,14 +33,14 @@ import net.sf.antcontrib.cpptasks.types.LibraryTypeEnum;
* @author Curt Arnold
*/
public abstract class AbstractLdLinker extends CommandLineLinker {
-
-
+ private String outputPrefix;
protected AbstractLdLinker(String command, String identifierArg,
String[] extensions, String[] ignoredExtensions,
String outputPrefix, String outputSuffix, boolean isLibtool,
AbstractLdLinker libtoolLinker) {
- super(command, identifierArg, extensions, ignoredExtensions, outputPrefix,
+ super(command, identifierArg, extensions, ignoredExtensions,
outputSuffix, isLibtool, libtoolLinker);
+ this.outputPrefix = outputPrefix;
}
public void addBase(long base, Vector args) {
if (base >= 0) {
@@ -235,19 +235,12 @@ public abstract class AbstractLdLinker extends CommandLineLinker {
public int getMaximumCommandLength() {
return Integer.MAX_VALUE;
}
-
-
public String[] getOutputFileNames(String baseName, VersionInfo versionInfo) {
String[] baseNames = super.getOutputFileNames(baseName, versionInfo);
- String currentOutputPrefix = "";
- if(null != outputFilePrefix)
- currentOutputPrefix = outputFilePrefix;
- else
- currentOutputPrefix = outputPrefix;
- if (outputPrefix.length() > 0) {
+ if (outputPrefix.length() > 0) {
for(int i = 0; i < baseNames.length; i++) {
- baseNames[i] = currentOutputPrefix + baseNames[i];
- }
+ baseNames[i] = outputPrefix + baseNames[i];
+ }
}
return baseNames;
}
diff --git a/src/net/sf/antcontrib/cpptasks/gcc/GccCCompiler.java b/src/net/sf/antcontrib/cpptasks/gcc/GccCCompiler.java
index d58d1b3..999ccf7 100644
--- a/src/net/sf/antcontrib/cpptasks/gcc/GccCCompiler.java
+++ b/src/net/sf/antcontrib/cpptasks/gcc/GccCCompiler.java
@@ -234,8 +234,7 @@ public final class GccCCompiler extends GccCompatibleCCompiler {
return identifier;
}
public Linker getLinker(LinkType linkType) {
- GccLinker linker = GccLinker.getInstance();
- return linker.getLinker(linkType);
+ return GccLinker.getInstance().getLinker(linkType);
}
public int getMaximumCommandLength() {
return Integer.MAX_VALUE;
diff --git a/src/net/sf/antcontrib/cpptasks/gcc/GccLinker.java b/src/net/sf/antcontrib/cpptasks/gcc/GccLinker.java
index 6fff653..c4720c8 100644
--- a/src/net/sf/antcontrib/cpptasks/gcc/GccLinker.java
+++ b/src/net/sf/antcontrib/cpptasks/gcc/GccLinker.java
@@ -28,59 +28,32 @@ import net.sf.antcontrib.cpptasks.compiler.Linker;
*/
public class GccLinker extends AbstractLdLinker {
private static final String[] discardFiles = new String[0];
-
private static final String[] objFiles = new String[]{".o", ".a", ".lib",
".dll", ".so", ".sl"};
-
private static final String[] libtoolObjFiles = new String[]{".fo", ".a",
".lib", ".dll", ".so", ".sl"};
-
private static String[] linkerOptions = new String[]{"-bundle",
"-dynamiclib", "-nostartfiles", "-nostdlib", "-prebind", "-s",
"-static", "-shared", "-symbolic", "-Xlinker",
"--export-all-symbols", "-static-libgcc",};
-
- private static GccLinker dllLinker;
- private static Object dllLinkerGaurd = new Object(); //used as a gaurd for dllLinker since you can't synchronize on a null
-
- private static GccLinker instance;
- private static Object instanceGaurd = new Object();//used as a gaurd for instance
-
- private static GccLinker machBundleLinker;
- private static Object machBundleLinkerGaurd = new Object();
-
-
- private static GccLinker machDllLinker;
- private static Object machDllLinkerGaurd = new Object();
-
+ private static final GccLinker dllLinker = new GccLinker("gcc", objFiles,
+ discardFiles, "lib", ".so", false, new GccLinker("gcc", objFiles,
+ discardFiles, "lib", ".so", true, null));
+ private static final GccLinker instance = new GccLinker("gcc", objFiles,
+ discardFiles, "", "", false, null);
+ private static final GccLinker machBundleLinker = new GccLinker("gcc",
+ objFiles, discardFiles, "lib", ".bundle", false, null);
+ private static final GccLinker machDllLinker = new GccLinker("gcc",
+ objFiles, discardFiles, "lib", ".dylib", false, null);
public static GccLinker getInstance() {
- String currentOutputFilePrefix = outputFilePrefix == null ? "lib" : outputFilePrefix;
- synchronized (instanceGaurd)
- {
- if (null == instance)
- instance = new GccLinker("gcc", objFiles, discardFiles, currentOutputFilePrefix, "", false, null);
- }
return instance;
}
-
- public static GccLinker getInstance(String outputFilePrefix) {
- String currentOutputFilePrefix = outputFilePrefix == null ? "lib" : outputFilePrefix;
- synchronized (instanceGaurd)
- {
- if (null == instance)
- instance = new GccLinker("gcc", objFiles, discardFiles, currentOutputFilePrefix, "", false, null);
- }
- return instance;
- }
-
private File[] libDirs;
protected GccLinker(String command, String[] extensions,
String[] ignoredExtensions, String outputPrefix,
String outputSuffix, boolean isLibtool, GccLinker libtoolLinker) {
-
super(command, "-dumpversion", extensions, ignoredExtensions,
outputPrefix, outputSuffix, isLibtool, libtoolLinker);
-
}
protected void addImpliedArgs(boolean debug, LinkType linkType, Vector args) {
super.addImpliedArgs(debug, linkType, args);
@@ -215,60 +188,23 @@ public class GccLinker extends AbstractLdLinker {
return libDirs;
}
public Linker getLinker(LinkType type) {
- String currentOutputFilePrefix = outputFilePrefix == null ? "lib" : outputFilePrefix;
if (type.isStaticLibrary()) {
return GccLibrarian.getInstance();
}
- //The seemingly heavy use of synchronized here is because of the late instanciation of a number of linkers. This, in turn,
- //is to allow for setting the prefix
if (type.isPluginModule()) {
if (isDarwin()) {
- synchronized(machBundleLinkerGaurd)//used as a gaurd for machBundleLinker since you can't synchronize on a null
- {
- if(null == machBundleLinker){
- machBundleLinker = new GccLinker("gcc", objFiles, discardFiles, currentOutputFilePrefix, ".bundle", false, null);
- }
- }
- return machBundleLinker;
-
+ return machBundleLinker;
} else {
- synchronized(dllLinkerGaurd)//used as a gaurd for dllLinker since you can't synchronize on a null
- {
- if(null == dllLinker){
- dllLinker = new GccLinker("gcc", objFiles, discardFiles,
- "lib", ".so", false,
- new GccLinker("gcc", objFiles, discardFiles, currentOutputFilePrefix, ".so", true, null));
- }
- }
- return dllLinker;
+ return dllLinker;
}
}
if (type.isSharedLibrary()) {
if (isDarwin()) {
- synchronized(machDllLinkerGaurd)//used as a gaurd for machDllLinker since you can't synchronize on a null
- {
- if(null == machDllLinker){
- machDllLinker = new GccLinker("gcc", objFiles, discardFiles, currentOutputFilePrefix, ".dylib", false, null);;
- }
- }
- return machDllLinker;
-
-
-
+ return machDllLinker;
} else {
- synchronized(dllLinkerGaurd)//used as a gaurd for dllLinker since you can't synchronize on a null
- {
- if(null == dllLinker){
- dllLinker = new GccLinker("gcc", objFiles, discardFiles,
- "lib", ".so", false,
- new GccLinker("gcc", objFiles, discardFiles, currentOutputFilePrefix, ".so", true, null));
- }
- }
- return dllLinker;
-
+ return dllLinker;
}
}
- return getInstance();
+ return instance;
}
-
}
diff --git a/src/net/sf/antcontrib/cpptasks/intel/IntelWin32Linker.java b/src/net/sf/antcontrib/cpptasks/intel/IntelWin32Linker.java
index 8700c42..66009f0 100644
--- a/src/net/sf/antcontrib/cpptasks/intel/IntelWin32Linker.java
+++ b/src/net/sf/antcontrib/cpptasks/intel/IntelWin32Linker.java
@@ -32,7 +32,7 @@ public final class IntelWin32Linker extends DevStudioCompatibleLinker {
return instance;
}
private IntelWin32Linker(String outputSuffix) {
- super("xilink", "-qv", "", outputSuffix);
+ super("xilink", "-qv", outputSuffix);
}
public Linker getLinker(LinkType type) {
if (type.isStaticLibrary()) {
diff --git a/src/net/sf/antcontrib/cpptasks/openwatcom/OpenWatcomLibrarian.java b/src/net/sf/antcontrib/cpptasks/openwatcom/OpenWatcomLibrarian.java
index d0e09fd..848c395 100644
--- a/src/net/sf/antcontrib/cpptasks/openwatcom/OpenWatcomLibrarian.java
+++ b/src/net/sf/antcontrib/cpptasks/openwatcom/OpenWatcomLibrarian.java
@@ -51,7 +51,7 @@ public final class OpenWatcomLibrarian
*/
private OpenWatcomLibrarian() {
super("wlib", null, new String[] {".obj"}
- , new String[0], "", ".lib", false,
+ , new String[0], ".lib", false,
null);
}
diff --git a/src/net/sf/antcontrib/cpptasks/openwatcom/OpenWatcomLinker.java b/src/net/sf/antcontrib/cpptasks/openwatcom/OpenWatcomLinker.java
index 6daaebb..f0bbe3d 100644
--- a/src/net/sf/antcontrib/cpptasks/openwatcom/OpenWatcomLinker.java
+++ b/src/net/sf/antcontrib/cpptasks/openwatcom/OpenWatcomLinker.java
@@ -44,7 +44,7 @@ public abstract class OpenWatcomLinker
final String outputSuffix) {
super(command, "-r", new String[] {".obj", ".lib", ".res"}
,
- new String[] {".map", ".pdb", ".lnk"}, ""
+ new String[] {".map", ".pdb", ".lnk"}
, outputSuffix, false, null);
}
diff --git a/src/net/sf/antcontrib/cpptasks/os390/OS390Linker.java b/src/net/sf/antcontrib/cpptasks/os390/OS390Linker.java
index 5c66acf..9c4f845 100644
--- a/src/net/sf/antcontrib/cpptasks/os390/OS390Linker.java
+++ b/src/net/sf/antcontrib/cpptasks/os390/OS390Linker.java
@@ -48,15 +48,18 @@ public final class OS390Linker extends CommandLineLinker {
}
private boolean isADatasetLinker;
File outputFile;
+ private String outputPrefix;
CCTask task;
private OS390Linker() {
super("cxx", "/bogus", new String[]{".o", ".a", ".lib", ".xds"},
- new String[]{".dll", ".x"}, "", ".xds", false, null);
+ new String[]{".dll", ".x"}, ".xds", false, null);
+ this.outputPrefix = "";
this.isADatasetLinker = true;
}
private OS390Linker(String outputPrefix, String outputSuffix) {
super("cxx", "/bogus", new String[]{".o", ".a", ".lib", ".x"},
- new String[]{".dll"}, outputPrefix, outputSuffix, false, null);
+ new String[]{".dll"}, outputSuffix, false, null);
+ this.outputPrefix = outputPrefix;
this.isADatasetLinker = false;
}
protected void addBase(long base, Vector args) {
diff --git a/src/net/sf/antcontrib/cpptasks/os400/IccLinker.java b/src/net/sf/antcontrib/cpptasks/os400/IccLinker.java
index 62407a8..ea10bcc 100644
--- a/src/net/sf/antcontrib/cpptasks/os400/IccLinker.java
+++ b/src/net/sf/antcontrib/cpptasks/os400/IccLinker.java
@@ -46,17 +46,18 @@ public final class IccLinker extends CommandLineLinker {
}
private boolean isADatasetLinker;
File outputFile;
-
+ private String outputPrefix;
CCTask task;
private IccLinker() {
super("icc", "/bogus", new String[]{".o", ".a", ".lib", ".xds"},
- new String[]{".dll", ".x"}, "", ".xds", false, null);
-
+ new String[]{".dll", ".x"}, ".xds", false, null);
+ this.outputPrefix = "";
this.isADatasetLinker = true;
}
private IccLinker(String outputPrefix, String outputSuffix) {
super("icc", "/bogus", new String[]{".o", ".a", ".lib", ".x"},
- new String[]{".dll"}, outputPrefix, outputSuffix, false, null);
+ new String[]{".dll"}, outputSuffix, false, null);
+ this.outputPrefix = outputPrefix;
this.isADatasetLinker = false;
}
protected void addBase(long base, Vector args) {
diff --git a/src/net/sf/antcontrib/cpptasks/sun/C89Linker.java b/src/net/sf/antcontrib/cpptasks/sun/C89Linker.java
index 22290fd..6c41c89 100644
--- a/src/net/sf/antcontrib/cpptasks/sun/C89Linker.java
+++ b/src/net/sf/antcontrib/cpptasks/sun/C89Linker.java
@@ -38,11 +38,11 @@ public final class C89Linker extends CommandLineLinker {
public static C89Linker getInstance() {
return instance;
}
-
+ private String outputPrefix;
private C89Linker(String outputPrefix, String outputSuffix) {
super("ld", "/bogus", new String[]{".o", ".a", ".lib", ".x"},
- new String[]{}, outputPrefix, outputSuffix, false, null);
-
+ new String[]{}, outputSuffix, false, null);
+ this.outputPrefix = outputPrefix;
}
protected void addBase(long base, Vector args) {
}
diff --git a/src/net/sf/antcontrib/cpptasks/ti/ClxxLibrarian.java b/src/net/sf/antcontrib/cpptasks/ti/ClxxLibrarian.java
index 2dc9002..c48815a 100644
--- a/src/net/sf/antcontrib/cpptasks/ti/ClxxLibrarian.java
+++ b/src/net/sf/antcontrib/cpptasks/ti/ClxxLibrarian.java
@@ -39,7 +39,7 @@ public class ClxxLibrarian extends CommandLineLinker {
return cl6xInstance;
}
private ClxxLibrarian(String command) {
- super(command, null, new String[]{".o"}, new String[0], "", ".lib", false,
+ super(command, null, new String[]{".o"}, new String[0], ".lib", false,
null);
}
/*
diff --git a/src/net/sf/antcontrib/cpptasks/ti/ClxxLinker.java b/src/net/sf/antcontrib/cpptasks/ti/ClxxLinker.java
index b2976a3..bb644a4 100644
--- a/src/net/sf/antcontrib/cpptasks/ti/ClxxLinker.java
+++ b/src/net/sf/antcontrib/cpptasks/ti/ClxxLinker.java
@@ -52,7 +52,7 @@ public class ClxxLinker extends CommandLineLinker {
}
private ClxxLinker(String command, String outputSuffix) {
super(command, "-h", new String[]{".o", ".lib", ".res"}, new String[]{
- ".map", ".pdb", ".lnk"}, "", outputSuffix, false, null);
+ ".map", ".pdb", ".lnk"}, outputSuffix, false, null);
}
/*
* (non-Javadoc)