示例#1
0
 /**
  * Tests that the rebuild attribute in the base processor is effective when creating the command
  * line for a processor that extends it.
  *
  * @param baseProcessor processor under test
  */
 protected final void testExtendsRebuild(final ProcessorDef baseProcessor) {
   baseProcessor.setRebuild(true);
   ProcessorDef extendedLinker = createExtendedProcessorDef(baseProcessor);
   ProcessorConfiguration config = getConfiguration(extendedLinker);
   boolean rebuild = config.getRebuild();
   assertEquals(true, rebuild);
 }
 public void update(ProcessorConfiguration config, String[] sources, VersionInfo versionInfo) {
   String configId = config.getIdentifier();
   String[] onesource = new String[1];
   String[] outputNames;
   for (int i = 0; i < sources.length; i++) {
     onesource[0] = sources[i];
     outputNames = config.getOutputFileNames(sources[i], versionInfo);
     for (int j = 0; j < outputNames.length; j++) {
       update(configId, outputNames[j], onesource);
     }
   }
 }
 public void visit(File parentDir, String filename) throws BuildException {
   File fullPath = new File(parentDir, filename);
   //
   //   see if any processor wants to bid
   //       on this one
   ProcessorConfiguration selectedCompiler = null;
   int bid = 0;
   if (processors != null) {
     for (int k = 0; k < processors.length; k++) {
       int newBid = processors[k].bid(fullPath.toString());
       if (newBid > bid) {
         bid = newBid;
         selectedCompiler = processors[k];
       }
     }
   }
   //
   //   no processor interested in file
   //      log diagnostic message
   if (bid <= 0) {
     if (linker != null) {
       int linkerbid = linker.bid(filename);
       if (linkerbid > 0) {
         objectFiles.addElement(fullPath);
         if (linkerbid == 1) {
           task.log("Unrecognized file type " + fullPath.toString() + " will be passed to linker");
         }
       }
     }
   } else {
     //
     //  get output file name
     //
     String[] outputFileNames = selectedCompiler.getOutputFileNames(filename, versionInfo);
     sourceFiles[0] = fullPath;
     //
     //   if there is some output for this task
     //      (that is a source file and not an header file)
     //
     for (int i = 0; i < outputFileNames.length; i++) {
       //
       //   see if the same output file has already been registered
       //
       TargetInfo previousTarget = (TargetInfo) targets.get(outputFileNames[i]);
       if (previousTarget == null) {
         targets.put(
             outputFileNames[i],
             new TargetInfo(
                 selectedCompiler,
                 sourceFiles,
                 null,
                 new File(outputDir, outputFileNames[i]),
                 selectedCompiler.getRebuild()));
       } else {
         if (!previousTarget.getSources()[0].equals(sourceFiles[0])) {
           StringBuffer builder = new StringBuffer("Output filename conflict: ");
           builder.append(outputFileNames[i]);
           builder.append(" would be produced from ");
           builder.append(previousTarget.getSources()[0].toString());
           builder.append(" and ");
           builder.append(filename);
           throw new BuildException(builder.toString());
         }
       }
     }
   }
 }