1 package org.codehaus.mojo.natives.bcc;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 import org.codehaus.mojo.natives.NativeBuildException;
28 import org.codehaus.mojo.natives.linker.AbstractLinker;
29 import org.codehaus.mojo.natives.linker.LinkerConfiguration;
30 import org.codehaus.plexus.util.cli.Commandline;
31
32 import java.io.File;
33 import java.util.List;
34 import org.codehaus.mojo.natives.linker.Linker;
35 import org.codehaus.plexus.component.annotations.Component;
36
37 @Component(role = Linker.class, hint = "tlib", instantiationStrategy = "per-lookup")
38 public class TLibLinker
39 extends AbstractLinker
40 {
41
42 public static final String EXECUTABLE = "tlib";
43
44 protected Commandline createLinkerCommandLine( List objectFiles, LinkerConfiguration config )
45 throws NativeBuildException
46 {
47 Commandline cl = new Commandline();
48
49 cl.setWorkingDirectory( config.getWorkingDirectory().getPath() );
50
51 String executable = EXECUTABLE;
52
53 if ( config.getExecutable() != null && config.getExecutable().trim().length() != 0 )
54 {
55 executable = config.getExecutable();
56 }
57
58 cl.createArg().setValue( executable );
59
60 cl.createArg().setValue( "\"" + config.getOutputFile() + "\"" );
61
62 for ( int i = 0; i < config.getStartOptions().length; ++i )
63 {
64 cl.createArg().setValue( config.getStartOptions()[i] );
65 }
66
67 for ( int i = 0; i < objectFiles.size(); ++i )
68 {
69 File objFile = (File) objectFiles.get( i );
70
71 cl.createArg().setValue( "+\"" + objFile.getPath() + "\"" );
72 }
73
74 return cl;
75
76 }
77
78 }