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.gcc;
21
22 import java.io.File;
23
24 import com.github.maven_nar.cpptasks.compiler.LinkType;
25 import com.github.maven_nar.cpptasks.compiler.Linker;
26
27
28
29
30
31
32 public final class LdLinker extends AbstractLdLinker {
33 private static final String[] discardFiles = new String[0];
34 private static final String[] objFiles = new String[] {
35 ".o", ".a", ".lib", ".dll", ".so", ".sl"
36 };
37 private static final LdLinker dllLinker = new LdLinker("ld", objFiles, discardFiles, "lib", ".so", false,
38 new LdLinker("ld", objFiles, discardFiles, "lib", ".so", true, null));
39 private static final LdLinker instance = new LdLinker("ld", objFiles, discardFiles, "", "", false, null);
40 private static final String[] libtoolObjFiles = new String[] {
41 ".fo", ".a", ".lib", ".dll", ".so", ".sl"
42 };
43
44 public static LdLinker getInstance() {
45 return instance;
46 }
47
48 private File[] libDirs;
49
50 private LdLinker(final String command, final String[] extensions, final String[] ignoredExtensions,
51 final String outputPrefix, final String outputSuffix, final boolean isLibtool, final LdLinker libtoolLinker) {
52 super(command, "-version", extensions, ignoredExtensions, outputPrefix, outputSuffix, isLibtool, libtoolLinker);
53 }
54
55 @Override
56 public Linker getLinker(final LinkType type) {
57 if (type.isStaticLibrary()) {
58 return GccLibrarian.getInstance();
59 }
60 if (type.isSharedLibrary()) {
61 return dllLinker;
62 }
63 return instance;
64 }
65 }