summaryrefslogtreecommitdiff
path: root/src/main/java/org/apache/maven/plugin/nar/Linker.java
diff options
context:
space:
mode:
authorMark Donszelmann <Mark.Donszelmann@gmail.com>2009-10-06 14:44:29 +0200
committerMark Donszelmann <Mark.Donszelmann@gmail.com>2009-10-06 14:44:29 +0200
commit3dca89f0015613ab3f287945965e9f92a6079cd8 (patch)
treea00619a63c55b74c16ac8116d04b21f322e1747b /src/main/java/org/apache/maven/plugin/nar/Linker.java
parent75b9fcffc6709f9c65990f6d04d593d3bfb4743d (diff)
downloadmaven-nar-plugin-3dca89f0015613ab3f287945965e9f92a6079cd8.tar.gz
maven-nar-plugin-3dca89f0015613ab3f287945965e9f92a6079cd8.tar.bz2
maven-nar-plugin-3dca89f0015613ab3f287945965e9f92a6079cd8.tar.xz
maven-nar-plugin-3dca89f0015613ab3f287945965e9f92a6079cd8.zip
Reformat all source files and add licenses to tests
Diffstat (limited to 'src/main/java/org/apache/maven/plugin/nar/Linker.java')
-rw-r--r--src/main/java/org/apache/maven/plugin/nar/Linker.java463
1 files changed, 246 insertions, 217 deletions
diff --git a/src/main/java/org/apache/maven/plugin/nar/Linker.java b/src/main/java/org/apache/maven/plugin/nar/Linker.java
index 253c047..26256cb 100644
--- a/src/main/java/org/apache/maven/plugin/nar/Linker.java
+++ b/src/main/java/org/apache/maven/plugin/nar/Linker.java
@@ -46,319 +46,348 @@ import org.codehaus.plexus.util.FileUtils;
*
* @author Mark Donszelmann
*/
-public class Linker {
-
- /**
- * The Linker Some choices are: "msvc", "g++", "CC", "icpc", ... Default is
- * Architecture-OS-Linker specific: FIXME: table missing
- *
- * @parameter expression=""
- */
- private String name;
-
- /**
- * Enables or disables incremental linking.
- *
- * @parameter expression="" default-value="false"
- * @required
- */
- private boolean incremental = false;
-
- /**
- * Enables or disables the production of a map file.
- *
- * @parameter expression="" default-value="false"
- * @required
- */
- private boolean map = false;
-
- /**
- * Options for the linker Defaults to Architecture-OS-Linker specific
- * values. FIXME table missing
- *
- * @parameter expression=""
- */
- private List options;
+public class Linker
+{
/**
- * Options for the linker as a whitespace separated list.
- * Defaults to Architecture-OS-Linker specific values.
- * Will work in combination with &lt;options&gt;.
- *
+ * The Linker Some choices are: "msvc", "g++", "CC", "icpc", ... Default is Architecture-OS-Linker specific: FIXME:
+ * table missing
+ *
+ * @parameter expression=""
+ */
+ private String name;
+
+ /**
+ * Enables or disables incremental linking.
+ *
+ * @parameter expression="" default-value="false"
+ * @required
+ */
+ private boolean incremental = false;
+
+ /**
+ * Enables or disables the production of a map file.
+ *
+ * @parameter expression="" default-value="false"
+ * @required
+ */
+ private boolean map = false;
+
+ /**
+ * Options for the linker Defaults to Architecture-OS-Linker specific values. FIXME table missing
+ *
+ * @parameter expression=""
+ */
+ private List options;
+
+ /**
+ * Options for the linker as a whitespace separated list. Defaults to Architecture-OS-Linker specific values. Will
+ * work in combination with &lt;options&gt;.
+ *
* @parameter expression=""
*/
private String optionSet;
/**
- * Clears default options
- *
- * @parameter expression="" default-value="false"
- * @required
- */
- private boolean clearDefaultOptions;
-
- /**
- * Adds libraries to the linker.
- *
- * @parameter expression=""
- */
- private List/* <Lib> */libs;
+ * Clears default options
+ *
+ * @parameter expression="" default-value="false"
+ * @required
+ */
+ private boolean clearDefaultOptions;
/**
- * Adds libraries to the linker. Will work in combination with &lt;libs&gt;.
- * The format is comma separated, colon-delimited values (name:type:dir),
- * like "myLib:shared:/home/me/libs/, otherLib:static:/some/path".
- *
+ * Adds libraries to the linker.
+ *
+ * @parameter expression=""
+ */
+ private List/* <Lib> */libs;
+
+ /**
+ * Adds libraries to the linker. Will work in combination with &lt;libs&gt;. The format is comma separated,
+ * colon-delimited values (name:type:dir), like "myLib:shared:/home/me/libs/, otherLib:static:/some/path".
+ *
* @parameter expression=""
*/
private String libSet;
/**
- * Adds system libraries to the linker.
- *
- * @parameter expression=""
- */
- private List/* <SysLib> */sysLibs;
+ * Adds system libraries to the linker.
+ *
+ * @parameter expression=""
+ */
+ private List/* <SysLib> */sysLibs;
/**
- * Adds system libraries to the linker. Will work in combination with &lt;sysLibs&gt;.
- * The format is comma separated, colon-delimited values (name:type),
- * like "dl:shared, pthread:shared".
- *
+ * Adds system libraries to the linker. Will work in combination with &lt;sysLibs&gt;. The format is comma
+ * separated, colon-delimited values (name:type), like "dl:shared, pthread:shared".
+ *
* @parameter expression=""
*/
private String sysLibSet;
/**
* <p>
- * Specifies the link ordering of libraries that come from nar dependencies. The format is
- * a comma separated list of dependency names, given as groupId:artifactId.
+ * Specifies the link ordering of libraries that come from nar dependencies. The format is a comma separated list of
+ * dependency names, given as groupId:artifactId.
* </p>
- *
* <p>
* Example: &lt;narDependencyLibOrder&gt;someGroup:myProduct, other.group:productB&lt;narDependencyLibOrder&gt;
* </p>
- *
- * @parameter expression=""
+ *
+ * @parameter expression=""
*/
private String narDependencyLibOrder;
+ public Linker()
+ {
+ // default constructor for use as TAG
+ }
- public Linker() {
- // default constructor for use as TAG
- }
-
- /**
- * For use with specific named linker.
- *
- * @param name
- */
- public Linker(String name) {
- this.name = name;
- }
-
- public String getName(Properties defaults, String prefix)
- throws MojoFailureException {
- if ((name == null) && (defaults != null) && (prefix != null)) {
- name = defaults.getProperty(prefix + "linker");
- }
- if (name == null) {
- throw new MojoFailureException(
- "NAR: Please specify a <Name> as part of <Linker>");
- }
- return name;
- }
-
- public LinkerDef getLinker(AbstractCompileMojo mojo, Project antProject,
- String os, String prefix, String type) throws MojoFailureException,
- MojoExecutionException {
- if (name == null) {
- throw new MojoFailureException(
- "NAR: Please specify a <Name> as part of <Linker>");
- }
-
- LinkerDef linker = new LinkerDef();
- linker.setProject(antProject);
- LinkerEnum linkerEnum = new LinkerEnum();
- linkerEnum.setValue(name);
- linker.setName(linkerEnum);
-
- // incremental, map
- linker.setIncremental(incremental);
- linker.setMap(map);
-
- // Add definitions (Window only)
- if (os.equals(OS.WINDOWS)
- && (type.equals(Library.SHARED) || type.equals(Library.JNI))) {
- Set defs = new HashSet();
- try {
- File cSrcDir = mojo.getC().getSourceDirectory();
- if (cSrcDir.exists())
- defs.addAll(FileUtils.getFiles(cSrcDir, "**/*.def", null));
- } catch (IOException e) {
- }
- try {
- File cppSrcDir = mojo.getCpp().getSourceDirectory();
- if (cppSrcDir.exists())
- defs
- .addAll(FileUtils.getFiles(cppSrcDir, "**/*.def",
- null));
- } catch (IOException e) {
- }
- try {
- File fortranSrcDir = mojo.getFortran().getSourceDirectory();
- if (fortranSrcDir.exists())
- defs.addAll(FileUtils.getFiles(fortranSrcDir, "**/*.def",
- null));
- } catch (IOException e) {
- }
-
- for (Iterator i = defs.iterator(); i.hasNext();) {
- LinkerArgument arg = new LinkerArgument();
- arg.setValue("/def:" + (File) i.next());
- linker.addConfiguredLinkerArg(arg);
- }
- }
-
- // Add options to linker
- if (options != null) {
- for (Iterator i = options.iterator(); i.hasNext();) {
- LinkerArgument arg = new LinkerArgument();
- arg.setValue((String) i.next());
- linker.addConfiguredLinkerArg(arg);
- }
- }
-
- if (optionSet != null) {
-
- String[] opts = optionSet.split("\\s");
-
- for (int i = 0; i < opts.length; i++) {
+ /**
+ * For use with specific named linker.
+ *
+ * @param name
+ */
+ public Linker( String name )
+ {
+ this.name = name;
+ }
+ public String getName( Properties defaults, String prefix )
+ throws MojoFailureException
+ {
+ if ( ( name == null ) && ( defaults != null ) && ( prefix != null ) )
+ {
+ name = defaults.getProperty( prefix + "linker" );
+ }
+ if ( name == null )
+ {
+ throw new MojoFailureException( "NAR: Please specify a <Name> as part of <Linker>" );
+ }
+ return name;
+ }
+
+ public LinkerDef getLinker( AbstractCompileMojo mojo, Project antProject, String os, String prefix, String type )
+ throws MojoFailureException, MojoExecutionException
+ {
+ if ( name == null )
+ {
+ throw new MojoFailureException( "NAR: Please specify a <Name> as part of <Linker>" );
+ }
+
+ LinkerDef linker = new LinkerDef();
+ linker.setProject( antProject );
+ LinkerEnum linkerEnum = new LinkerEnum();
+ linkerEnum.setValue( name );
+ linker.setName( linkerEnum );
+
+ // incremental, map
+ linker.setIncremental( incremental );
+ linker.setMap( map );
+
+ // Add definitions (Window only)
+ if ( os.equals( OS.WINDOWS ) && ( type.equals( Library.SHARED ) || type.equals( Library.JNI ) ) )
+ {
+ Set defs = new HashSet();
+ try
+ {
+ File cSrcDir = mojo.getC().getSourceDirectory();
+ if ( cSrcDir.exists() )
+ defs.addAll( FileUtils.getFiles( cSrcDir, "**/*.def", null ) );
+ }
+ catch ( IOException e )
+ {
+ }
+ try
+ {
+ File cppSrcDir = mojo.getCpp().getSourceDirectory();
+ if ( cppSrcDir.exists() )
+ defs.addAll( FileUtils.getFiles( cppSrcDir, "**/*.def", null ) );
+ }
+ catch ( IOException e )
+ {
+ }
+ try
+ {
+ File fortranSrcDir = mojo.getFortran().getSourceDirectory();
+ if ( fortranSrcDir.exists() )
+ defs.addAll( FileUtils.getFiles( fortranSrcDir, "**/*.def", null ) );
+ }
+ catch ( IOException e )
+ {
+ }
+
+ for ( Iterator i = defs.iterator(); i.hasNext(); )
+ {
LinkerArgument arg = new LinkerArgument();
+ arg.setValue( "/def:" + (File) i.next() );
+ linker.addConfiguredLinkerArg( arg );
+ }
+ }
- arg.setValue(opts[i]);
- linker.addConfiguredLinkerArg(arg);
+ // Add options to linker
+ if ( options != null )
+ {
+ for ( Iterator i = options.iterator(); i.hasNext(); )
+ {
+ LinkerArgument arg = new LinkerArgument();
+ arg.setValue( (String) i.next() );
+ linker.addConfiguredLinkerArg( arg );
}
}
- if (!clearDefaultOptions) {
- String options = NarUtil.getDefaults().getProperty(
- prefix + "options");
- if (options != null) {
- String[] option = options.split(" ");
- for (int i = 0; i < option.length; i++) {
- LinkerArgument arg = new LinkerArgument();
- arg.setValue(option[i]);
- linker.addConfiguredLinkerArg(arg);
- }
- }
- }
+ if ( optionSet != null )
+ {
+
+ String[] opts = optionSet.split( "\\s" );
+
+ for ( int i = 0; i < opts.length; i++ )
+ {
+
+ LinkerArgument arg = new LinkerArgument();
+
+ arg.setValue( opts[i] );
+ linker.addConfiguredLinkerArg( arg );
+ }
+ }
+
+ if ( !clearDefaultOptions )
+ {
+ String options = NarUtil.getDefaults().getProperty( prefix + "options" );
+ if ( options != null )
+ {
+ String[] option = options.split( " " );
+ for ( int i = 0; i < option.length; i++ )
+ {
+ LinkerArgument arg = new LinkerArgument();
+ arg.setValue( option[i] );
+ linker.addConfiguredLinkerArg( arg );
+ }
+ }
+ }
// record the preference for nar dependency library link order
- if (narDependencyLibOrder != null) {
+ if ( narDependencyLibOrder != null )
+ {
List libOrder = new LinkedList();
- String[] libs = narDependencyLibOrder.split(",");
+ String[] libs = narDependencyLibOrder.split( "," );
- for (int i = 0; i < libs.length; i++) {
- libOrder.add(libs[i].trim());
+ for ( int i = 0; i < libs.length; i++ )
+ {
+ libOrder.add( libs[i].trim() );
}
- mojo.setDependencyLibOrder(libOrder);
+ mojo.setDependencyLibOrder( libOrder );
}
// Add Libraries to linker
- if ((libs != null) || (libSet != null)) {
+ if ( ( libs != null ) || ( libSet != null ) )
+ {
- if (libs != null) {
+ if ( libs != null )
+ {
- for (Iterator i = libs.iterator(); i.hasNext();) {
+ for ( Iterator i = libs.iterator(); i.hasNext(); )
+ {
Lib lib = (Lib) i.next();
- lib.addLibSet(mojo, linker, antProject);
+ lib.addLibSet( mojo, linker, antProject );
}
}
- if (libSet != null) {
- addLibraries(libSet, linker, antProject, false);
+ if ( libSet != null )
+ {
+ addLibraries( libSet, linker, antProject, false );
}
}
- else {
+ else
+ {
- String libsList = NarUtil.getDefaults()
- .getProperty(prefix + "libs");
+ String libsList = NarUtil.getDefaults().getProperty( prefix + "libs" );
- addLibraries(libsList, linker, antProject, false);
+ addLibraries( libsList, linker, antProject, false );
}
// Add System Libraries to linker
- if ((sysLibs != null) || (sysLibSet != null)) {
+ if ( ( sysLibs != null ) || ( sysLibSet != null ) )
+ {
- if (sysLibs != null) {
+ if ( sysLibs != null )
+ {
- for (Iterator i = sysLibs.iterator(); i.hasNext();) {
+ for ( Iterator i = sysLibs.iterator(); i.hasNext(); )
+ {
SysLib sysLib = (SysLib) i.next();
- linker.addSyslibset(sysLib.getSysLibSet(antProject));
+ linker.addSyslibset( sysLib.getSysLibSet( antProject ) );
}
}
- if (sysLibSet != null) {
- addLibraries(sysLibSet, linker, antProject, true);
+ if ( sysLibSet != null )
+ {
+ addLibraries( sysLibSet, linker, antProject, true );
}
}
- else {
+ else
+ {
- String sysLibsList = NarUtil.getDefaults().getProperty(
- prefix + "sysLibs");
+ String sysLibsList = NarUtil.getDefaults().getProperty( prefix + "sysLibs" );
- addLibraries(sysLibsList, linker, antProject, true);
+ addLibraries( sysLibsList, linker, antProject, true );
}
- return linker;
- }
-
+ return linker;
+ }
- private void addLibraries(String libraryList, LinkerDef linker, Project antProject, boolean isSystem) {
+ private void addLibraries( String libraryList, LinkerDef linker, Project antProject, boolean isSystem )
+ {
- if (libraryList == null) {
+ if ( libraryList == null )
+ {
return;
}
- String[] lib = libraryList.split(",");
+ String[] lib = libraryList.split( "," );
- for (int i = 0; i < lib.length; i++) {
+ for ( int i = 0; i < lib.length; i++ )
+ {
- String[] libInfo = lib[i].trim().split(":", 3);
+ String[] libInfo = lib[i].trim().split( ":", 3 );
LibrarySet librarySet = new LibrarySet();
- if (isSystem) {
+ if ( isSystem )
+ {
librarySet = new SystemLibrarySet();
}
- librarySet.setProject(antProject);
- librarySet.setLibs(new CUtil.StringArrayBuilder(libInfo[0]));
+ librarySet.setProject( antProject );
+ librarySet.setLibs( new CUtil.StringArrayBuilder( libInfo[0] ) );
- if (libInfo.length > 1) {
+ if ( libInfo.length > 1 )
+ {
LibraryTypeEnum libType = new LibraryTypeEnum();
- libType.setValue(libInfo[1]);
- librarySet.setType(libType);
+ libType.setValue( libInfo[1] );
+ librarySet.setType( libType );
- if (!isSystem && (libInfo.length > 2)) {
- librarySet.setDir(new File(libInfo[2]));
+ if ( !isSystem && ( libInfo.length > 2 ) )
+ {
+ librarySet.setDir( new File( libInfo[2] ) );
}
}
- if (!isSystem) {
- linker.addLibset(librarySet);
+ if ( !isSystem )
+ {
+ linker.addLibset( librarySet );
}
- else {
- linker.addSyslibset((SystemLibrarySet)librarySet);
+ else
+ {
+ linker.addSyslibset( (SystemLibrarySet) librarySet );
}
}
}