View Javadoc

1   /*
2    * #%L
3    * Native ARchive plugin for Maven
4    * %%
5    * Copyright (C) 2002 - 2014 NAR Maven Plugin developers.
6    * %%
7    * Licensed under the Apache License, Version 2.0 (the "License");
8    * you may not use this file except in compliance with the License.
9    * You may obtain a copy of the License at
10   * 
11   * http://www.apache.org/licenses/LICENSE-2.0
12   * 
13   * Unless required by applicable law or agreed to in writing, software
14   * distributed under the License is distributed on an "AS IS" BASIS,
15   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16   * See the License for the specific language governing permissions and
17   * limitations under the License.
18   * #L%
19   */
20  package com.github.maven_nar.cpptasks.msvc;
21  
22  import org.apache.tools.ant.types.Environment;
23  
24  import com.github.maven_nar.cpptasks.compiler.LinkType;
25  import com.github.maven_nar.cpptasks.compiler.Linker;
26  import com.github.maven_nar.cpptasks.compiler.Processor;
27  
28  /**
29   * Adapter for the Microsoft(r) C/C++ 8 Optimizing Compiler
30   *
31   * @author David Haney
32   */
33  public final class Msvc2005CCompiler extends MsvcCompatibleCCompiler {
34    private static final Msvc2005CCompiler instance = new Msvc2005CCompiler("cl", false, null);
35  
36    public static Msvc2005CCompiler getInstance() {
37      return instance;
38    }
39  
40    private Msvc2005CCompiler(final String command, final boolean newEnvironment, final Environment env) {
41      super(command, "/bogus", newEnvironment, env);
42    }
43  
44    @Override
45    public Processor changeEnvironment(final boolean newEnvironment, final Environment env) {
46      if (newEnvironment || env != null) {
47        return new Msvc2005CCompiler(getCommand(), newEnvironment, env);
48      }
49      return this;
50    }
51  
52    @Override
53    public Linker getLinker(final LinkType type) {
54      return MsvcLinker.getInstance().getLinker(type);
55    }
56  
57    @Override
58    public int getMaximumCommandLength() {
59      return 32767;
60    }
61  }