示例#1
0
 public <T extends BinaryToolSpec> Compiler<T> createCCompiler() {
   CommandLineTool<CCompileSpec> commandLineTool =
       commandLineTool("C compiler", install.getCompiler(targetPlatform));
   Transformer<CCompileSpec, CCompileSpec> specTransformer = addIncludePath();
   commandLineTool.withSpecTransformer(specTransformer);
   CCompiler cCompiler = new CCompiler(commandLineTool);
   return (Compiler<T>) new OutputCleaningCompiler<CCompileSpec>(cCompiler, ".obj");
 }
示例#2
0
 public <T extends BinaryToolSpec> Compiler<T> createWindowsResourceCompiler() {
   CommandLineTool<WindowsResourceCompileSpec> commandLineTool =
       commandLineTool("Windows resource compiler", sdk.getResourceCompiler(targetPlatform));
   Transformer<WindowsResourceCompileSpec, WindowsResourceCompileSpec> specTransformer =
       addIncludePath();
   commandLineTool.withSpecTransformer(specTransformer);
   WindowsResourceCompiler windowsResourceCompiler =
       new WindowsResourceCompiler(commandLineTool);
   return (Compiler<T>)
       new OutputCleaningCompiler<WindowsResourceCompileSpec>(windowsResourceCompiler, ".res");
 }
示例#3
0
    private <T extends BinaryToolSpec> CommandLineTool<T> commandLineTool(
        String toolName, File exe) {
      CommandLineTool<T> tool = new CommandLineTool<T>(toolName, exe, execActionFactory);

      // The visual C++ tools use the path to find other executables
      tool.withPath(
          install.getVisualCppBin(targetPlatform),
          sdk.getBinDir(targetPlatform),
          install.getCommonIdeBin());

      return tool;
    }
示例#4
0
  public WorkResult execute(StaticLibraryArchiverSpec spec) {
    deletePreviousOutput(spec);

    MutableCommandLineToolInvocation invocation = baseInvocation.copy();
    invocation.setArgs(arguments.transform(spec));
    return commandLineTool.execute(invocation);
  }
示例#5
0
 public WorkResult execute(WindowsResourceCompileSpec spec) {
   boolean didWork = false;
   boolean windowsPathLimitation = OperatingSystem.current().isWindows();
   MutableCommandLineToolInvocation invocation = baseInvocation.copy();
   spec = specTransformer.transform(spec);
   for (File sourceFile : spec.getSourceFiles()) {
     RcCompilerArgsTransformer argsTransformer =
         new RcCompilerArgsTransformer(sourceFile, windowsPathLimitation);
     invocation.setArgs(argsTransformer.transform(spec));
     invocation.setWorkDirectory(spec.getObjectFileDir());
     WorkResult result = commandLineTool.execute(invocation);
     didWork |= result.getDidWork();
   }
   return new SimpleWorkResult(didWork);
 }
示例#6
0
 public <T extends LinkerSpec> Compiler<T> createLinker() {
   CommandLineTool<LinkerSpec> commandLineTool =
       commandLineTool("Linker", install.getLinker(targetPlatform));
   commandLineTool.withSpecTransformer(addLibraryPath());
   return (Compiler<T>) new LinkExeLinker(commandLineTool);
 }