Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.apache.maven.plugin.nar;
  
  /*
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you 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.
  */
 
 import java.io.File;
 import java.util.List;
 import java.util.Set;
 
 
 import  org.apache.tools.ant.Project;
Linker tag

Author(s):
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;

    
Options for the linker as a whitespace separated list. Defaults to Architecture-OS-Linker specific values. Will work in combination with <options>.

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;

    
Adds libraries to the linker. Will work in combination with <libs>. 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. Will work in combination with <sysLibs>. The format is comma separated, colon-delimited values (name:type), like "dl:shared, pthread:shared".

Parameter:
expression=""
    private String sysLibSet;

    

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.

Example: <narDependencyLibOrder>someGroup:myProduct, other.group:productB<narDependencyLibOrder>

Parameter:
expression=""
    private String narDependencyLibOrder;
    public Linker()
    {
        // default constructor for use as TAG
    }

    
For use with specific named linker.

Parameters:
name
    public LinkerString name )
    {
        this. = name;
    }
    public final String getName()
    {
        return ;
    }
    public final String getNameNarProperties propertiesString prefix )
    {
        if ( (  == null ) && ( properties != null ) && ( prefix != null ) )
        {
             = properties.getPropertyprefix + "linker" );
        }
        if (  == null )
        {
            throw new MojoExecutionException"NAR: One of two things may be wrong here:\n\n"
                + "1. <Name> tag is missing inside the <Linker> tag of your NAR configuration\n\n"
                + "2. no linker is defined in the aol.properties file for '" + prefix + "linker'\n" );
        }
        return ;
    }
    public final String getVersion() 
    {
        if (  == null )
        {
            throw new MojoFailureException"Cannot deduce linker version if name is null" );
        }
        String version = null;
        TextStream out = new StringTextStream();
        TextStream err = new StringTextStream();
        TextStream dbg = new StringTextStream();
        if ( .equals"g++" ) || .equals"gcc" ) )
        {
            NarUtil.runCommand"gcc"new String[] { "--version" }, nullnullouterrdbg );
            Pattern p = Pattern.compile"\\d+\\.\\d+\\.\\d+" );
            Matcher m = p.matcherout.toString() );
            if ( m.find() )
            {
                version = m.group( 0 );
            }
        }
        else if ( .equals"msvc" ) )
        {
            NarUtil.runCommand"link"new String[] { "/version" }, nullnullouterrdbg );
            Pattern p = Pattern.compile"\\d+\\.\\d+\\.\\d+" );
            Matcher m = p.matcherout.toString() );
            if ( m.find() )
            {
                version = m.group( 0 );
            }
        }
        else if ( .equals"icc" ) || .equals"icpc" ) )
        {
            NarUtil.runCommand"icc"new String[] { "--version" }, nullnullouterrdbg );
            Pattern p = Pattern.compile"\\d+\\.\\d+" );
            Matcher m = p.matcherout.toString() );
            if ( m.find() )
            {
                version = m.group( 0 );
            }
        }
        else if ( .equals"icl" ) )
        {
            NarUtil.runCommand"icl"new String[] { "/QV" }, nullnullouterrdbg );
            Pattern p = Pattern.compile"\\d+\\.\\d+" );
            Matcher m = p.matchererr.toString() );
            if ( m.find() )
            {
                version = m.group( 0 );
            }
        }
        else if ( .equals"CC" ) )
        {
        	NarUtil.runCommand"CC"new String[] { "-V" }, nullnullouterrdbg );
        	Pattern p = Pattern.compile"\\d+\\.d+" );
        	Matcher m = p.matchererr.toString() );
        	if ( m.find() )
        	{ 
        		version = m.group( 0 ); 
        	}
        }
        else
        {
            throw new MojoFailureException"Cannot find version number for linker '" +  + "'" );
        }
        
        if (version == null) {
        	throw new MojoFailureException"Cannot deduce version number from: " + out.toString() );
        }
        return version;
    }
    public final LinkerDef getLinkerAbstractCompileMojo mojo, Project antProjectString osString prefix,
                                      String type )
    {
        if (  == 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 );
        linker.setNamelinkerEnum );
        // incremental, map
        linker.setIncremental );
        linker.setMap );
        // Add definitions (Window only)
        if ( os.equals. ) && ( type.equals. ) || type.equals. ) ) )
        {
            Set defs = new HashSet();
            try
            {
                List cSrcDirs = mojo.getC().getSourceDirectories();
                for ( Iterator i = cSrcDirs.iterator(); i.hasNext(); )
                {
                    File dir = (Filei.next();
                    if ( dir.exists() )
                    {
                        defs.addAll( FileUtils.getFilesdir"**/*.def"null ) );
                    }
                }
            }
            catch ( IOException e )
            {
            }
            try
            {
                List cppSrcDirs = mojo.getCpp().getSourceDirectories();
                for ( Iterator i = cppSrcDirs.iterator(); i.hasNext(); )
                {
                    File dir = (Filei.next();
                    if ( dir.exists() )
                    {
                        defs.addAll( FileUtils.getFilesdir"**/*.def"null ) );
                    }
                }
            }
            catch ( IOException e )
            {
            }
            try
            {
                List fortranSrcDirs = mojo.getFortran().getSourceDirectories();
                for ( Iterator i = fortranSrcDirs.iterator(); i.hasNext(); )
                {
                    File dir = (Filei.next();
                    if ( dir.exists() )
                    {
                        defs.addAll( FileUtils.getFilesdir"**/*.def"null ) );
                    }
                }
            }
            catch ( IOException e )
            {
            }
            for ( Iterator i = defs.iterator(); i.hasNext(); )
            {
                LinkerArgument arg = new LinkerArgument();
                arg.setValue"/def:" + i.next() );
                linker.addConfiguredLinkerArgarg );
            }
        }
        // FIXME, this should be done in CPPTasks at some point, and may not be necessary, but was for VS 2010 beta 2
        if ( os.equals. ) && getNamenullnull ).equals"msvc" ) && !getVersion().startsWith"6." ) )
        {
            LinkerArgument arg = new LinkerArgument();
            arg.setValue"/MANIFEST" );
            linker.addConfiguredLinkerArgarg );
        }
        // Add options to linker
        if (  != null )
        {
            for ( Iterator i = .iterator(); i.hasNext(); )
            {
                LinkerArgument arg = new LinkerArgument();
                arg.setValue( (Stringi.next() );
                linker.addConfiguredLinkerArgarg );
            }
        }
        if (  != null )
        {
            String[] opts = .split"\\s" );
            for ( int i = 0; i < opts.lengthi++ )
            {
                LinkerArgument arg = new LinkerArgument();
                arg.setValueopts[i] );
                linker.addConfiguredLinkerArgarg );
            }
        }
        if ( ! )
        {
            String option = NarProperties.getInstance(mojo.getMavenProject()).getPropertyprefix + "options" );
            if ( option != null )
            {
                String[] opt = option.split" " );
                for ( int i = 0; i < opt.lengthi++ )
                {
                    LinkerArgument arg = new LinkerArgument();
                    arg.setValueopt[i] );
                    linker.addConfiguredLinkerArgarg );
                }
            }
        }
        // record the preference for nar dependency library link order
        if (  != null )
        {
            List libOrder = new LinkedList();
            String[] lib = .split"," );
            for ( int i = 0; i < lib.lengthi++ )
            {
                libOrder.addlib[i].trim() );
            }
            mojo.setDependencyLibOrderlibOrder );
        }
        // Add Libraries to linker
        if ( (  != null ) || (  != null ) )
        {
            if (  != null )
            {
                for ( Iterator i = .iterator(); i.hasNext(); )
                {
                    Lib lib = (Libi.next();
                    lib.addLibSetmojolinkerantProject );
                }
            }
            if (  != null )
            {
                addLibrarieslinkerantProjectfalse );
            }
        }
        else
        {
            String libsList = NarProperties.getInstance(mojo.getMavenProject()).getPropertyprefix + "libs" );
            addLibrarieslibsListlinkerantProjectfalse );
        }
        // Add System Libraries to linker
        if ( (  != null ) || (  != null ) )
        {
            if (  != null )
            {
                for ( Iterator i = .iterator(); i.hasNext(); )
                {
                    SysLib sysLib = (SysLibi.next();
                    linker.addSyslibsetsysLib.getSysLibSetantProject ) );
                }
            }
            if (  != null )
            {
                addLibrarieslinkerantProjecttrue );
            }
        }
        else
        {
            String sysLibsList = NarProperties.getInstance(mojo.getMavenProject()).getPropertyprefix + "sysLibs" );
            addLibrariessysLibsListlinkerantProjecttrue );
        }
        return linker;
    }
    private void addLibrariesString libraryListLinkerDef linker, Project antProjectboolean isSystem )
    {
        if ( libraryList == null )
        {
            return;
        }
        String[] lib = libraryList.split"," );
        for ( int i = 0; i < lib.lengthi++ )
        {
            String[] libInfo = lib[i].trim().split":", 3 );
            LibrarySet librarySet = new LibrarySet();
            if ( isSystem )
            {
                librarySet = new SystemLibrarySet();
            }
            librarySet.setProjectantProject );
            librarySet.setLibsnew CUtil.StringArrayBuilderlibInfo[0] ) );
            if ( libInfo.length > 1 )
            {
                LibraryTypeEnum libType = new LibraryTypeEnum();
                libType.setValuelibInfo[1] );
                librarySet.setTypelibType );
                if ( !isSystem && ( libInfo.length > 2 ) )
                {
                    librarySet.setDirnew FilelibInfo[2] ) );
                }
            }
            if ( !isSystem )
            {
                linker.addLibsetlibrarySet );
            }
            else
            {
                linker.addSyslibset( (SystemLibrarySetlibrarySet );
            }
        }
    }
New to GrepCode? Check out our FAQ X