1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  package com.github.maven_nar.cpptasks.intel;
21  
22  import com.github.maven_nar.cpptasks.compiler.LinkType;
23  import com.github.maven_nar.cpptasks.compiler.Linker;
24  import com.github.maven_nar.cpptasks.gcc.AbstractLdLinker;
25  import com.github.maven_nar.cpptasks.gcc.GccLibrarian;
26  
27  
28  
29  
30  
31  
32  public final class IntelLinux64Linker extends AbstractLdLinker {
33    private static final String[] discardFiles = new String[0];
34    private static final String[] libtoolObjFiles = new String[] {
35        ".fo", ".a", ".lib", ".dll", ".so", ".sl"
36    };
37    private static final String[] objFiles = new String[] {
38        ".o", ".a", ".lib", ".dll", ".so", ".sl"
39    };
40    private static final IntelLinux64Linker dllLinker = new IntelLinux64Linker("lib", ".so", false,
41        new IntelLinux64Linker("lib", ".so", true, null));
42    private static final IntelLinux64Linker instance = new IntelLinux64Linker("", "", false, null);
43  
44    public static IntelLinux64Linker getInstance() {
45      return instance;
46    }
47  
48    private IntelLinux64Linker(final String outputPrefix, final String outputSuffix, final boolean isLibtool,
49        final IntelLinux64Linker libtoolLinker) {
50      
51      super("ecpc", "-V", objFiles, discardFiles, outputPrefix, outputSuffix, isLibtool, libtoolLinker);
52    }
53  
54    @Override
55    public Linker getLinker(final LinkType type) {
56      if (type.isStaticLibrary()) {
57        return GccLibrarian.getInstance();
58      }
59      if (type.isSharedLibrary()) {
60        return dllLinker;
61      }
62      return instance;
63    }
64  }