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