1 package org.codehaus.mojo.natives.msvc;
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.c.AbstractCCompiler;
29 import org.codehaus.mojo.natives.compiler.Compiler;
30 import org.codehaus.mojo.natives.compiler.CompilerConfiguration;
31 import org.codehaus.plexus.util.cli.Commandline;
32
33 import java.io.File;
34 import java.util.Map;
35 import java.util.Properties;
36 import org.codehaus.plexus.component.annotations.Component;
37
38 @Component(role = Compiler.class, hint = "msvc")
39 public class MSVCCompiler
40 extends AbstractCCompiler
41 {
42 private Map environmentVariables;
43
44 protected void setEnvironmentVariables( Map envs )
45 {
46 this.environmentVariables = envs;
47 }
48
49 protected Map getEnvironmentVariables()
50 {
51 if ( this.environmentVariables == null )
52 {
53 return new Properties();
54 }
55
56 return this.environmentVariables;
57 }
58
59 protected String getOutputFileOption()
60 {
61 return "/Fo";
62 }
63
64 protected Commandline getCommandLine( File src, File dest, CompilerConfiguration config )
65 throws NativeBuildException
66 {
67 if ( config.getExecutable() == null || config.getExecutable().trim().length() == 0 )
68 {
69 config.setExecutable( "cl.exe" );
70 }
71
72 Commandline cl = super.getCommandLine( src, dest, config );
73
74 return cl;
75 }
76
77 }